章节末尾的半页很好地表明了章节的结束。但是,有时章节的最后一页如果只有 5-10 行,看起来会有点太空。在一些较旧的书中,你会发现章节末尾的空白处被某种装饰线填充,如下图所示。
有没有办法定义一个命令,测量fill
章节最后一页的长度,如果长度超过一定长度,就添加装饰.7\textwidth
?
\documentclass{book}
\usepackage{kantlipsum}
\begin{document}
\chapter{Chapter one}
\kant[1-3]
%\decoration
\chapter{Chapter two}
\kant[1-3]
\end{document}
答案1
这是一个解决方案
\documentclass{book}
\usepackage{kantlipsum}
\begin{document}
\chapter{Chapter one}
\kant[1-3]
%\decoration
\ifdim\dimexpr\pagegoal-\pagetotal-\baselineskip\relax>.7\textheight
\begin{center}
\rule{3cm}{2pt}
\end{center}
\fi
\chapter{Chapter two}
\kant[1-3]
\end{document}
答案2
以下使用 x,y 坐标标签/标记来测量章节末尾的填充,当剩余\chapterdecoration
部分超过 70% 时插入(您可以更改它)\textheight
。
\documentclass{book}
\usepackage{kantlipsum}
\usepackage{eso-pic,zref-savepos}
\AtBeginDocument{%
\AddToShipoutPictureFG*{%
\AtTextLowerLeft{%
\zsaveposy{page-bottom}% Save text lower y coordinate
}%
}%
}
\let\oldchapter\chapter
\renewcommand{\chapter}{%
\ifnum\value{chapter}>0\relax
\unskip
\zsaveposy{chap-\thechapter-y}% Save chapter's last line y coordinate
\fi
\insertchapterdecoration
\oldchapter
}
\AtEndDocument{%
\zsaveposy{chap-\thechapter-y}% Save last chapter's last line y coordinate
\insertchapterdecoration}
\newcommand{\insertchapterdecoration}{%
\ifdim\dimexpr\zposy{chap-\thechapter-y}sp-\zposy{page-bottom}sp+\baselineskip>.7\textheight
\chapterdecoration
\fi
}
\newcommand{\chapterdecoration}{%
\vfill
\noindent\makebox[\textwidth]{\rule{.3\textwidth}{5pt}}\par%
\vfill
}
\begin{document}
\chapter{Chapter one}
\kant[1-3]
\chapter{Chapter two}
\kant[1-4]
\end{document}