每个部分都从新页面开始。我想在部分末尾绘制一些形状(放置文本或图像)。这没关系。为了清晰起见,\char"2055
如果到页面末尾有足够的可用空间(超过 80 毫米),请绘制较大的部分
哪个脚本在该部分结束时运行?
我怎么知道我有足够的可用空间来结束?
\newcommand{\sectionbreak}{
\clearpage\thispagestyle{headings}\vspace*{1pc}
}
将代码放在这里而不是那个。这会在第一部分开始前调用,如果新部分开始则不会调用。
答案1
您可以使用领导者。
该\sectionbreak
命令检查可用空间是否大于设置的最小值(此处为 2cm)。如果是,它会添加一团胶水,它实际上是一个装有装饰物的盒子,高度与可用空间一样高,这样我们就可以将装饰物放在其中居中。
\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage{fix-cm}
\usepackage{adforn} % for ornaments
\usepackage{lipsum} % for mock text
\newlength{\ornamentheight}
\newcommand{\sectionbreak}{%
\par
\setlength{\ornamentheight}{\dimexpr\pagegoal-\pagetotal\relax}%
\ifdim\ornamentheight>2cm
\cleaders\vbox to \ornamentheight{
\vfill
\centering
\fontsize{30}{30}\selectfont
\adforn{21}\quad\adforn{11}\quad\adforn{49}
\vfill}%
\vskip\ornamentheight
\fi
\clearpage
}
\begin{document}
\section{First}
\lipsum[1-4]
\sectionbreak
\section{Second}
\lipsum[1-5]
\sectionbreak
\section{Third}
\lipsum[2]
\sectionbreak
\end{document}
答案2
以下代码提供了两件事:(1)mysection
用于部分的环境表单()和(2)计算页面上剩余的空间(\calcspaceleft
)以及它们的使用示例。
% secprob.tex SE 524061 Text at end of section
\documentclass{article}
\usepackage{lipsum}
\usepackage{ifmtarg}
\makeatletter
% calculate the space left (\spaceleft) on the page
\newlength{\spaceleft}
\newcommand{\calcspaceleft}{\par \penalty-100
\setlength{\spaceleft}{\pagegoal}
\addtolength{\spaceleft}{-\pagetotal}}
\newcommand{\printlogo}{\calcspaceleft\ifdim\spaceleft>1in
\center LOGO \par \fi}
% an environmental form for \section
\newenvironment{mysection}[2][]%
{\@ifmtarg{#1}{\section{#2}}{\section[#1]{#2}}}%
{\printlogo}
\makeatother
\begin{document}
\tableofcontents
\begin{mysection}{First}
\lipsum[1]
\calcspaceleft Space left is \the\spaceleft.
\end{mysection}
\begin{mysection}[Short]{Long}
%\begin{mysection}{Long}
\lipsum[2]
\calcspaceleft Space left is \the\spaceleft.
\end{mysection}
\begin{mysection}{Third}
\lipsum[3]
\calcspaceleft Space left is \the\spaceleft.
\end{mysection}
\end{document}
您可以用来\calcspaceleft ... \spaceleft
决定是否在您的部分的“末尾”添加一些内容(甚至将其添加到环境定义的末尾)mysection
。
该\calcspaceleft
宏基于needspace
包代码。