(不,我不是在寻找解决方案。我真的是在寻找问题。)
我记得很久以前,我遇到过一种情况,\\
(换行符)命令会插入一个空白的如果换行符之前的行已满,则删除该行。也就是说,
abc\\xyz
导致
ABC
XYZ
如所愿,但是
this is a really long line reaching the right margin\\xyz
导致
这条线很长,一直延伸到右边
坐标
而不是期望的
这是一条很长的线,到达了右边距
xyz
当时,我可以使用\par\noindent
代替 来解决问题\\
(当然,这会带来其他问题,特别是当 parskip 或 parsep 非零时)。但我不记得这种情况是在什么情况下发生的,使用了哪个文档类和哪些宏包,事实上,它甚至可能是旧版 LaTeX,而不是 LaTeX2e。奇怪的是:问题已经消失。我再也无法重现它了。
这是否让任何人想起了什么?是否有任何参数设置可能导致这种行为?\\
标准 LaTeX 软件包中的定义是否有任何变化(特别是从旧 LaTeX 到 LaTeX2e)可以解释这一点?
答案1
你的记忆力很好,这个变化早于 LaTeX2e,但在乳胶源中你发现......
\begin{macro}{\@gnewline}
\changes{v1.2u}{1996/10/29}{Added macro}
The |\nobreak| added to prevent null lines when |\\|
ends an overfull line. Change made 24 May 89 as suggested by
Frank Mittelbach and Rainer Sch\"opf
同样,在 latex2.09 的最终源代码中(latex.tex
)
% \nobreak added to \newline to prevent null lines when \newline
% ends an overfull line. Change made 24 May 89 as suggested by
% Frank Mittelbach and Rainer Sch\"opf
%
\def\newline{\ifvmode \@nolnerr \else \unskip\nobreak\hfil
\penalty -\@M\fi}