寻找 \\ 的(旧?)问题

寻找 \\ 的(旧?)问题

(不,我不是在寻找解决方案。我真的是在寻找问题。)

我记得很久以前,我遇到过一种情况,\\(换行符)命令会插入一个空白的如果换行符之前的行已满,则删除该行。也就是说,

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}

答案2

如果单词以连字符结尾,则可以得到以下结果:

\documentclass[]{article}
\textwidth=1mm
\begin{document}
margin-\\xyz
\end{document}

在此处输入图片描述

相关内容