我希望有一个纯 TeX 格式的描述列表,其中如果标签宽度超过某个值,则项目标签后只有一个换行符。假设标签的缩进为零,项目文本的缩进为 3em。因此,如果标签文本加上 1em 小于或等于 3em,则以下文本应直接跟随(对齐在 3em),如果大于 3em,则标签后应该有一个换行符。列表的 ASCII 示例:
A <text1>
AB <text2>
ABC
<text3>
上述所有文本均应以 3em 对齐。
项目宏的使用形式应为
\item{<tag>} <text>
因此,只有标签是参数,而不是后面的文本。
我看了 TeXbook 第 106 页,那里有类似的内容,但没有帮助。
答案1
这里我使用 0.5em 作为最小分离度,请根据你的情况进行更改。
\def\fitem#1{%
\par\noindent
\hangindent 3em
\setbox0=\hbox{#1}%
\hbox to\hangindent{#1\hss}%
\ifdim\wd0>2.5em \hfil\break \fi
\ignorespaces
}
\def\a{some text }
\def\b{\a\a\a\a}
\def\test{Some text \b\b\b\b}
\test
\fitem{A} \test
\fitem{AB} \test
\fitem{ABC} \test
\fitem{ABCD} \test
\fitem{ABCDE} \test
\test
\bye