マクロが不要なスペースの前にある場合、\@ifnextchar と \@gobble を使用する場合、% は必要ありません。
次のようなものを考えてみてください (もちろん、序文で):
\makeatletter
\let\oldtodo\todo
\renewcommand\todo[1]{%
\oldtodo{#1}%
\@ifnextchar\par{\@gobble}{}}
\makeatother
そうすれば、次のようなものがある場合:
\todo{Stuff}
Things
と同じように動作します
\todo{Stuff}
%
Things
また
\todo{Stuff}
Things
このようなことは、次のようなマクロで一般化できます
\makeatletter
\newcommand\gobblepars{%
\@ifnextchar\par%
{\expandafter\gobblepars\@gobble}%
{}}
\makeatother
\gobblepars
その後、スペースを食べたい場所ならどこでも使用できます (todo の後など)。todo を (上記のように) 再定義して、\gobblepars
その後に a を自動的に配置することもできます。
先頭の空きスペースを処理します。も使用できます\gobblepars
が、明示する必要があります。例えば:
Some text\gobblepars
\todo{Stuff}
\par が 2 行の間に現れないようにします。