阻止附录后的附加文档内容

阻止附录后的附加文档内容

我正在使用appendix包的appendices环境,由于附录的样式发生变化,在附录后放置任何内容都没有意义。如果在环境后放置任何内容appendices(或阻止其他内容),我想引发错误。也许通过在 中执行某些etoolbox操作\AfterEndEnvironment{appendices}{...}

我可以重新定义\section以给出错误,但我想知道是否还有更全面的内容。评论提到模拟序言中的内容如何引发错误,该怎么做?

答案1

如果在 之前进行排版, LaTeX 使用内部宏\@nodocument来引发错误\begin{document}。它包含在其他一些宏中,以及 中\everypar,但在 begin-document 中,它被删除\everypar并重新定义为不执行任何操作。您想在附录结束时将其反转。

% in a .sty or after \makeatletter
% LaTeX defines:
%\gdef\@nodocument{%
%  \@latex@error{Missing \protect\begin{document}}\@ehd}
% similarly:
\gdef\@afterappendix{%
    \@latex@error{Text found after the appendices}\@ehd}
\g@addto@macro\endappendices{\global\let\@nodocument\@afterappendix
    \global\everypar{\@afterappendix}}
% or use \AfterEndEnvironment

似乎\end{appendices}没有结束正在进行的段落,因此可以与添加错误消息一起进行修补。错误帮助文本可以更具体,但通用的文本也\@ehd不错。强制结束文档可以在错误消息之后完成,并且需要更具体的错误帮助文本。

使用这些附加内容,并假设这是由文档类 xxxxxx 定义的

\gdef\@afterappendix{%
  \global\let\@afterappendix\relax
  \ClassError{xxxxxx}{Text found after the appendices}%
      {Placing anything after the appendices doesn't make sense,\MessageBreak
       so the document will be forcibly ended here.}\enddocument}
\g@addto@macro\endappendices{\par
    \global\let\@nodocument\@afterappendix
    \global\everypar{\@afterappendix}}

相关内容