我需要让构建在\section
占用多个页面时崩溃(在给定环境中)。我该如何实现?
答案1
\section
您可以在后面和结尾处添加标签,然后比较页码,例如使用包\vrefpagenum
的宏varioref
。在我看来,这比直接使用更安全,\pageref
因为它可以包含其他材料,如超链接,但我可能错了。
\documentclass{article}
\usepackage{varioref}
\makeatletter
\newcommand*{\checksection}[2]{%
\begingroup
\vrefpagenum\@tempa{#1}%
\vrefpagenum\@tempb{#2}%
\ifx\@tempa\@tempb\else
\GenericError{}{Section longer than one page!}{}{}%
\fi
\endgroup
}
\makeatother
\begin{document}
....
\section{Some section}\label{sec:some}
...
\label{sec:some-end}
\checksection{sec:some}{sec:some-end}
\section{Other section}\label{sec:other}
% Alternative:
\checksection{sec:some}{sec:other}
\end{document}
您还可以创建一个环境,将这些标签放置在和\begin
处\end
并自动运行检查。我可能需要使用\refstepcounter{dummy}
(其中dummy
是一些虚拟计数器)来使生成\label
正确的页码。
此解决方案的一个问题是,可能会因.aux
文件过期而导致错误。