当章节超过 2 页时发出错误

当章节超过 2 页时发出错误

我需要让构建在\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文件过期而导致错误。

相关内容