本地设置俱乐部处罚

本地设置俱乐部处罚

是否超出\clubpenalty\widowpenalty发布条款的范围?具体来说,如果我把

   First paragraph blah blah \clubpenalty10000 blah blah...

   Next paragraph blah blah blah...

   Next paragraph blah blah blah...

第一段中设定的惩罚值是否会延续到后续段落?我相信这不是什么秘密,但我找不到相关文献。

\enlargethispage{-\baselineskip}我的目标是纠正一份很长、很复杂的文档中的一个错误分页符。我想在本地解决这个问题,我认为这比在这种双面格式中放入对开页的方法更省力。

答案1

你问,

是否\clubpenalty超出\widowpenalty发布它们的段落?

一般来说,任何 TeX 宏的范围是(其余部分)团体它被设置(或重置),其中“组”是按照 TeX 的含义使用的。段落中断(通常)不会触发“组结束”标准。

请考虑以下示例:

\documentclass{article}
\clubpenalty10000
\begin{document}

bla bla bla \the\clubpenalty

\begingroup % start a group
\clubpenalty1000 
bla bla bla \the\clubpenalty
\endgroup

$ % start a math group
\clubpenalty100 
\mbox{bla bla bla }
\the\clubpenalty
$ % paragraph ends after end of math group

bla bla bla \the\clubpenalty % 10000? 1000? 100?
\end{document}

您认为的最终值\clubpenalty是多少:100?1000?10000?

需要澄清两点。首先,正如 David Carlisle 在评论中指出的那样,有些宏(例如\looseness)会为每个段落自动重置。对于此类宏,段落分隔符的作用(隐式地)类似于组结束标记。

其次,如果宏仅在 TeX 执行其段落构建算法时才起作用(\clubpenalty就是此类宏的一个示例),则该段落末尾的宏的值将用于该段落。在上面显示的示例代码的中间段落中,数学组在段落结束之前结束。因此,\clubpenalty用于该段落的宏的值是 10000,而不是 100。

相关内容