接受的答案这个问题得到了我想要的答案的一半。我想为我的所有(许多)章节自动实现这种章节结尾装饰。MWE 基于提供的解决方案图哈米:
\documentclass{book}
\usepackage{kantlipsum}
\begin{document}
\chapter{Chapter one}
\kant[1-3]
%\decoration
\ifdim\dimexpr\pagegoal-\pagetotal-\baselineskip\relax>.05\textheight
\begin{center}
\rule{3cm}{0.5pt}
\end{center}
\fi
\chapter{Chapter two}
\kant[1-3]
\end{document}
只有在这个例子中,这才会在第 1 章的结尾产生装饰,而不是第 2 章的结尾 -\relax
我相信这不是因为值。我希望我的所有章节(不包括前言和后记)都有这种装饰。我真的需要在每章末尾手动输入这个或自定义宏吗?
答案1
此代码将在每章末尾添加装饰。
\makedecoration
在每个 之前执行\chapter
,修饰前一章,如果 backmater 不存在,则在文档末尾执行,以修饰最后一章。如果未编号的章节后面跟着编号的章节,则也适用于未编号的章节。
前言材料(例如\tableofcontents
或章节)将不会被装饰;后记也不会被装饰。
\documentclass{book}
\usepackage{kantlipsum}
%%**************************************************** added <<<<<<<<<<<<
\usepackage{etoolbox}% needed <<<<<<<<<<<<<
\newcommand{\insertdecoratation}{% define the decoration
\begin{center}
\rule{3cm}{0.5pt}
\end{center}}
\newcommand{\makedecoration}{%
\ifnum\value{chapter}>1%% decorate from chapter 2 to before last
\ifdim\dimexpr\pagegoal-\pagetotal-\baselineskip\relax>.05\textheight%
\insertdecoratation%
\fi\fi%
\ifnum\value{chapter}=1%decorate chapter 1
\ifdim\dimexpr\pagegoal-\pagetotal-\baselineskip\relax>.05\textheight%
\insertdecoratation%
\fi\fi%
}
\makeatletter
\renewcommand\mainmatter{%
\pretocmd{\chapter}{\makedecoration}{}{}% decorate previous chapter
\AtEndDocument{\makedecoration}% decorate the last chapter if no back matter
\cleardoublepage
\@mainmattertrue
\pagenumbering{arabic}}
\renewcommand\backmatter{%
\makedecoration % decorate last chapter of mainmatter
\renewcommand{\makedecoration}{}% now do nothing
\if@openright
\cleardoublepage
\else
\clearpage
\fi
\@mainmatterfalse}
\makeatother
%%************************************************
\begin{document}
\frontmatter
\tableofcontents
\chapter{Introduction}
\kant[1-2]
\mainmatter
\chapter{Chapter One}
\kant[1-3]
\chapter{Chapter Two}
\kant[1-3]
\chapter{Chapter Three}
\kant[1-3]
\chapter*{Chapter Four}
\kant[1-2]
% BACK MATTER
\backmatter
\chapter{Appendix}
\kant[1-2]
\end{document}