对于以空白页结尾的章节,我想插入某种形式的装饰。如果页面空间不足,则不应插入装饰。有没有办法测试可用的垂直空间?
(我不需要任何帮助来插入装饰物本身,只需要测试当前页面中垂直空间的可用性。我想避免的是装饰物最终出现在无用的空白页面上。)
答案1
由于 TeX 不理解章节或节,我们只能在排版时进行测试下一个章节标题,即当我们输入时\chapter
。
因此,在排版新章节标题之前,我们会检查页面的剩余空间。如果页面上有足够的剩余空间,我们会添加装饰,否则我们只会打印章节标题。
\documentclass{book}
\usepackage{lipsum}
\usepackage{fourier}
\textheight380pt
\def\PrintPageParameters{\noindent\hskip5cm\vbox{\tt
\noindent vsize: \the\vsize;\\
\noindent pagetotal: \the\pagetotal; \\
pagegoal: \the\pagegoal\\ }%
}
\def\ornament{\vspace{10pt}\hfill\aldineright\aldineleft\hfill\hfill}
\def\Chapter#1{%
\ifdim\pagetotal<350pt \PrintPageParameters\\ \ornament\chapter{#1}
\else
\chapter{#1}
\fi
}
\begin{document}
\chapter{Introduction}
\lipsum[1-4]
\Chapter{After Ornaments}
\end{document}
这对于书的最后一章不起作用,但也许在那时您可能需要不同类型的装饰品。
'\Chapter
为了演示该技术,我尽可能简化了宏。需要对其进行扩展以适应带星号的命令版本。
答案2
受到 memoir.cls 中的代码的启发并写了这个小命令:
\newcommand{\ifenoughspace}[3]{%
\@tempdimc\pagegoal \advance\@tempdimc-\pagetotal%
\ifdim #1>\@tempdimc #3 \else #2\fi}
用法:\ifenoughspace{长度}{如果空间足够怎么办}{否则怎么办}