Как добавить новую команду, которая различает первое слово в строке и любой другой случай?
Например, макрос \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}