零 \parskip 和不寻常的 \paragraph 导致段落重叠

零 \parskip 和不寻常的 \paragraph 导致段落重叠

我正在尝试调试某个期刊提供的课程。有时,文本会完全乱码,或者根本不显示(我相信它是打印的某处但可能超出了页面范围)。此类是 的完整(且无用的)重新实现article,但我认为我缩小了问题范围。

请考虑以下文档:

 \documentclass[a4paper,10pt,twoside]{article}
 \usepackage{lipsum}

 \makeatletter
 \renewcommand\paragraph{\@startsection{paragraph}
                               {4}{\z@}{12pt \@plus -3pt}{-.5em}
                               {\normalfont\normalsize\bfseries}}
 \parskip\z@
 \makeatother

 \begin{document}
 \lipsum[1-3]
 \paragraph{New Par} \footnote{Oh}\lipsum[1-2]
 \end{document}

虽然我认为该\paragraph定义是无害的,但与 结合时\parskip\z@,结果似乎会出错:

在此处输入图片描述

问题:我应该对编辑器进行什么修复?不要设置\parskip为零?这真的是问题吗?问题出在 \paragraph 的定义上吗?

答案1

问题在于 的定义\paragraph:第四个参数 ("beforeskip") 包含一个负plus分量,而它不应该包含负分量。将其更改为 即可12pt \@plus 3pt解决此问题。

负向拉伸(或收缩)几乎没有用处,除了某些情况

通常情况下,我会就此打住——但因为我怀疑这种负面延伸是有原因的(而且因为你要求这样做……),所以可能值得深入研究一下其复杂性\@startsection

根据来源2e中,“beforeskip”参数用于指定以下内容:

绝对值 = 跳过标题上方的段落。如果为负数,则标题后面的文本的段落缩进将被抑制。

现在,如果latex遇到负值(第一部分:例如-12pt),它将 (1) 反转跳过的符号(这意味着反转此跳过的所有组件的符号:其自然宽度、拉伸和收缩),并且 (2) 将段落缩进开关设置为 false。因此,例如,-12pt \@plus -3pt \@minus -3pt实际上意味着:beforeskip of12pt \@plus 3pt \@minus 3pt和“下一个段落没有缩进”。由于负拉伸或收缩组件通常没有多大意义(见上文),全部成分应该是正的或者负的,但不能混合。

第五个参数(“afterskip”)指定:

如果为正,则跳至下方标题,否则为负,跳至进入标题的右侧。

在 的定义中\paragraph,第五个参数为负数,表示它应该是插入标题,而不是开始新段落。因此,“beforeskip”是正数还是负数实际上并不重要,因为插入标题后面的文本当然不会缩进。

相关内容