在“文档结束前”插入一些内容

在“文档结束前”插入一些内容

\nameofcompany我在文档末尾使用命令插入名称和许可证,如下所示:

\nameofcompany
\end{document}

现在,我想将其推广到一些文档,因为我找到了,\AtEndDocument{\nameofcompany}但它的结果与并不完全相同\nameofcompany \end{document}。似乎使用\AtEndDocument,命令仅在之后执行\end{document},而我希望它在之前执行。

我也尝试document像这样重新定义环境

\renewenvironment{document}%
  {\begin{document}}
  {%
  \nameofcompany
%
  \end{document}%
  }

但它也不起作用。

是否有类似的命令\beforTheEndDocument

答案1

\AtEndDocument{<stuff>}

简写相当于

<stuff>
\end{document}

为什么?看看\enddocument(来自latex.ltx):

\def\enddocument{%
   \let\AtEndDocument\@firstofone
   \@enddocumenthook
   \@checkend{document}%
   \clearpage
   \begingroup
     \if@filesw
       \immediate\closeout\@mainaux
       \let\@setckpt\@gobbletwo
       \let\@newl@bel\@testdef
       \@tempswafalse
       \makeatletter \@@input\jobname.aux
     \fi
     \@dofilelist
     \ifdim \font@submax >\fontsubfuzz\relax
       \@font@warning{Size substitutions with differences\MessageBreak
                  up to \font@submax\space have occurred.\@gobbletwo}%
     \fi
     \@defaultsubs
     \@refundefined
     \if@filesw
       \ifx \@multiplelabels \relax
         \if@tempswa
           \@latex@warning@no@line{Label(s) may have changed.
               Rerun to get cross-references right}%
         \fi
       \else
         \@multiplelabels
       \fi
     \fi
   \endgroup
   \deadcycles\z@\@@end}

\@enddocumenthook是通过以下方式更新的钩子\AtEndDocument

\def\AtEndDocument{\g@addto@macro\@enddocumenthook}

您可以通过查看以下链接来考虑其他文档结尾钩子:atveryend包裹。它提供了以下钩子,所有钩子都会被执行钩子\AtEndDocument,除了第一个:

BeforeClearDocument{<code>}

\clearpage该代码在最终的之前被调用\enddocument。然而,目前尚不清楚最后一页是否已经发出,或者这是否会由最终的触发\clearpage

\AfterLastShipout{<code>}

该代码在主文件关闭之前 或之后调用。 例如,这是记住文件中最后一页\clearpage的正确位置。\enddocument.aux.aux

\AtVeryEndDocument{<code>}

文件关闭并再次读入后会调用此代码.aux。它是进行最终检查、重新运行提示和最终消息的地方。

\AtEndAfterFileList{<code>}

在文件关闭和读取之后,.aux如果 请求,LaTeX 会打印文件列表 \listfiles。然后执行此钩子。

\AtVeryVeryEnd{<code>}

此代码在最终之前被调用\@@end

请参阅的定义\enddocument以了解上述挂钩的大致位置。

相关内容