行の先頭をチェックするマクロ

行の先頭をチェックするマクロ

行の最初の単語とその他のケースを区別する新しいコマンドを追加するにはどうすればよいですか?

たとえば、\etc行の先頭の場合は「etcetera」を印刷し、そうでない場合は「etc」だけを印刷するマクロです。

答え1

TeX では、すべてのマクロが展開され、文字が水平リストにタイプセットされた後に段落が行に分割されるため、これを完全に一般化することは実際には不可能です。

これは可能ですが、主な欠点は、改行がない場合、単語の前のスペースが行上の他のスペースのように伸縮されないことです。

ここに画像の説明を入力してください

\documentclass{article}

\newcommand\etc{\ifhmode\unskip\fi\discretionary{}{etcetera}{\hbox{ etc.}}}
\begin{document}

word \etc\ wordword \etc\ wordword \etc\ word
word \etc\ wordword \etc\ wordword \etc\ word
word \etc\ wordword \etc\ wordword \etc\ word
word \etc\ wordword \etc\ wordword \etc\ word
word \etc\ wordword \etc\ wordword \etc\ word


\end{document}

関連情報