我正在写一本关于消极格言的书。由于这些格言很简短,我将它们包装起来samepage
,如果可以的话,每页可以放多条。
这种布局得益于项目之间的某种分隔符/装饰。
但是,如果分隔符是此页面上的第一个或最后一个元素,则可以省略它。保留所有分隔符看起来不一致 - 有些页面以分隔符开头,有些则没有,有些页面以分隔符结尾,有些则没有。
- 如果分隔符是此页面上的第一个元素,我想省略它并继续下一个项目。
- 如果下一个项目太大,无法在分隔符后的页面上容纳,我想省略分隔符并将其替换为
\newpage
。(仅省略分隔符是行不通的,因为没有分隔符,下一个项目可能会适合。)
这是一个简单的例子:
\documentclass{report}
\usepackage[layoutheight = 105 mm, layoutwidth = 74 mm, paperheight = 105 mm, paperwidth = 74 mm]{geometry}
\usepackage[none]{hyphenat}
\usepackage{pifont}
\hbadness = 10000
\newcommand\Separator{
\vspace{1em}
\begin{center}
\ding{91} \ding{91} \ding{91}
\end{center}
\vspace{1em}}
\sloppy
\begin{document}
\begin{samepage}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\end{samepage}
\Separator
\begin{samepage}
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
\end{samepage}
\Separator
\begin{samepage}
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
\end{samepage}
\Separator
\begin{samepage}
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\end{samepage}
\Separator
\begin{samepage}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
\end{samepage}
\Separator
\begin{samepage}
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
\end{samepage}
\Separator
\begin{samepage}
Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\end{samepage}
\Separator
\begin{samepage}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
\end{samepage}
\Separator
\begin{samepage}
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\end{samepage}
\Separator
\begin{samepage}
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
\end{samepage}
\end{document}
答案1
你可以\Separator
通过将 打扮成 来让 消失在页面的顶部和底部\cleaders
,它的作用就像胶水一样,但是(引用 TeXbook 第 21 章)
[不要]用虚无填充空间,[他们]用任何想要的东西填充空间。
\newbox\sepbox
\newcommand\Separator{
\setbox\sepbox=\vbox{
\vspace{1em}
\begin{center}
\ding{91} \ding{91} \ding{91}
\end{center}
\vspace{1em}
}
\cleaders\copy\sepbox\vskip\ht\sepbox}
的数量\vskip
等于 的高度\vbox
,因此\cleaders
(如果它们仍在页面上)恰好显示 的一个实例\vbox
。
TeX 总是抑制出现在页面顶部的粘连(或分隔符)。页面永远不会在\Separator
和下面的格言之间断开,因为 TeX 认为粘连(或分隔符)和文本行之间没有合法的断点。因此发生断点前,\Separator
但您使用的文档类或包\glue 0.0 plus 0.0001fil
在底部插入了额外的内容(这是我通过跟踪观察到的)。因此页面底部不平整。