我正在编写一个双栏文档,我用它\hrule
来分隔不同的部分。一旦\hrule
到达页面的顶部或底部,它就会停留在那里。出于美观的原因,它不应该放在其他地方,以便在它的上方和下方有文字吗?Tex 不应该考虑到这一点,所以要相应地设置规则?我不知道当有人排版文档时这是否是正确的做法,但在我看来就是这样。我错了吗?
我不想更改文档中的某些内容,所以我不想要代码解决方案或其他解决方案。我的问题的目的是,当尝试排版这样的文档时,正确的做法是什么?您应该在页面顶部或底部留下一条规则,还是应该尝试根据排版美学“规则”来修复它?此外,TeX 不应该对此做些什么(如果这确实是错误的),比如当我们有一个发出警告的不足或过满的框时?
答案1
TeX 只是遵循指令。你的问题其实无法回答,你展示的只是一些你不想要的输出的图像,所以解决方案是更改标记,但你没有给出任何提示。在评论中,你建议它就像换行符一样,但如果你发布一长行并询问为什么它不换行,可能是因为你使用了~
空格,或者文本是\mbox
错误的语言,或者设置了连字符。你刚刚显示了一条水平线,它在那里是因为宏指定它应该在那里,如果你指定了其他东西,TeX 会做其他事情。
\documentclass{article}
\addtolength\textheight{-30\baselineskip}
\def\a{One two three four five six seven eight nine ten eleven twelve. }
\def\b{Red. \a Blue green \a\a Yellow \a}
\begin{document}
\b\b\b
\b\a
\bigskip
\hrule
\section{zzz}
\b\b
\end{document}
生产
如果你告诉 TeX 不要违反规则,将文档更改为如下形式
\nopagebreak% added this line
\bigskip
\hrule
然后 TeX 调整分页符,你会得到
如果你告诉它该规则是可丢弃的,并将标记更改为
\bigskip
\leaders \hrule \vskip0.4pt
\section{zzz}
然后通常你会得到一条规则,但在分页符处它会被丢弃,就像标题上方的空白在分页符处被丢弃一样,你会得到