可选装饰

可选装饰

对于以空白页结尾的章节,我想插入某种形式的装饰。如果页面空间不足,则不应插入装饰。有没有办法测试可用的垂直空间?

(我不需要任何帮助来插入装饰物本身,只需要测试当前页面中垂直空间的可用性。我想避免的是装饰物最终出现在无用的空白页面上。)

答案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{长度}{如果空间足够怎么办}{否则怎么办}

相关内容