有没有办法可以查明当前排版的材料是否会出现在页面顶部?
我正在尝试编写一个宏,当调用该宏时,它会排版一个水平分隔线以将后续内容与前一个内容分开。但是,如果后续内容移到下一页的顶部,则应隐藏水平分隔线。我该怎么做?
我知道\pagetotal
并且\thepage
这不是要走的路(分页算法通常在材料已经排版并且我的宏已被调用时决定在哪里放置分页符)。
答案1
TeX 提供了一种非常有用但相对较少使用的方法来排版水平规则,具体取决于它们是否恰好是页面上文本块中的最后一个元素。那就是将您的规则合并到垂直粘连中(请记住,TeX 通常会忽略文本块中的最终垂直粘连)。调用\leaders
命令系列之一应该可以到达您想要的位置。例如,使用\cleaders
,您可以编写:
\documentclass{article}
\newcommand*{\divider}{%
\medskip%
\cleaders\vbox to 0.4pt{\hrule width\linewidth}\vskip0.4pt%
\medskip%
}
\newcommand{\text}{
I am trying to write a macro which, when invoked, typesets a
horizontal divider to separate the subsequent content from
the preceding one.\par\divider}
\begin{document}
\text\text\text\text\text\text\text\text\text\text\text
\text\text\text\text\text\text\text\text\text\text\text
\text\text\text\text\text\text\text\text\text\text\text
That's all!
\end{document}