Макрос, проверяющий начало строки

Макрос, проверяющий начало строки

Как добавить новую команду, которая различает первое слово в строке и любой другой случай?

Например, макрос \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}

Связанный контент