多个连续的 \par 相当于一个吗?

多个连续的 \par 相当于一个吗?

我认为这个问题的答案应该是肯定的,但我在其他地方找不到答案:多个连续的 是否\par与单个 相同\par?例如,是否\par\par与 相同\par

更一般地,由于空行相当于\par任何连续的 和空行(或它们的任意混合)的有限序列是否\par等同于单个\par(或单个空行)?

我知道这个问题可能看起来微不足道,但我确实想知道它是如何定义宏的。任何帮助都感激不尽!

答案1

之后\par,TeX 处于垂直模式。然后 TeXbook 第 283 页,第二条,解释了

当 TeX 处于垂直模式时,原始\par命令不起作用,除非在贡献列表中存在某些内容时执行页面构建器,并且清除段落形状参数。

第 281 页解释了“使用页面构建器”:

TeX 定期将已放入主垂直列表的材料从“贡献列表”移至“当前页面”。此时可能会调用输出例程。我们称 TeX练习页面构建器每当它尝试清空当前贡献列表时。贡献列表的概念仅存在于最外层的垂直模式中,因此当 TeX 在内部垂直模式下运行页面构建器时,什么也不会发生。

段落形状参数是赋予\parshape\hangindent或 的任意值\hangafter

\par因此,除非您重新定义了 ,否则您不必担心连续的标记\par。两个连续的空行计为两个\par标记,如以下 Plain TeX 示例所示:

\def\par{X\endgraf}
a


b
\bye

产生

在此处输入图片描述

答案2

引用的文本(在 egreg 的回答中)是关于 tex 原语的,但空白行实际上是一个\par可以随时重新定义的标记(在 latex 中经常重新定义)。因此,连续是否\par等同于一取决于定义。例如,在任何列表(或列表定义的环境,例如)的开头,center您可以有 1 或 2 或 1000,\par但不要再冒险了:

\documentclass{article}

\begin{document}

\def\cpar{\par\par\par\par\par\par\par\par\par\par
\par\par\par\par\par\par\par\par\par\par
\par\par\par\par\par\par\par\par\par\par
\par\par\par\par\par\par\par\par\par\par
\par\par\par\par\par\par\par\par\par\par
\par\par\par\par\par\par\par\par\par\par
\par\par\par\par\par\par\par\par\par\par
\par\par\par\par\par\par\par\par\par\par
\par\par\par\par\par\par\par\par\par\par
\par\par\par\par\par\par\par\par\par\par}

\begin{center}
\par
\end{center}

\begin{center}
\cpar\cpar\cpar\cpar\cpar\cpar\cpar\cpar\cpar\cpar
\end{center}

\begin{center}
\cpar\cpar\cpar\cpar\cpar\cpar\cpar\cpar\cpar\cpar
\par% straw camel back....
\end{center}


\end{document}

相关内容