几周前我在这里找到了一个关于如何在段落只有一行时不缩进的讨论帖。现在我找不到这个讨论帖了。
我想要的是,它只适用于两行或两行以上的段落,与在那些单行段落之前\parindent
发出相同,但以自动的方式。\noindent
答案1
如果您愿意将文档包装在 \vbox 中,则以下方法似乎可行。(因此,这仅适用于一页。)
\vbox{\let\Par=\par
\parindent=20pt
\def\par{\Par
\ifnum \prevgraf=1
\setbox0=\lastbox
\nointerlineskip
\moveleft \parindent\copy0 \fi}%
One line.
Two lines blah blah
blah blah blah blah blah
blah blah blah blah blah
blah blah blah blah blah
blah blah blah blah blah
blah blah blah blah blah
}
\bye
“\prevgraf” 是一个原始的 TeX 整数变量,它给出最后一段或当前段落的行数。
“\lastbox” 是另一个原始命令,它删除当前垂直或水平列表中的最后一个 \vbox 或 \hbox,然后该框将成为 \lastbox。它不能在垂直模式下使用,但可以在内部垂直模式下使用;因此需要将内容包装在 vbox 中。
我不知道在垂直模式下是否可以用 \prevgraf 做类似的事情。
上述内容适用于 Plain TeX,但它应该在任何地方都能工作,因为它只使用原始控制序列(我认为)。