如何新增一個命令來區分一行的第一個單字和任何其他情況?
例如,\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}