![当在类文件中调用时,是否可以强制在整个 LaTeX 中最后调用一个包?](https://linux22.com/image/393732/%E5%BD%93%E5%9C%A8%E7%B1%BB%E6%96%87%E4%BB%B6%E4%B8%AD%E8%B0%83%E7%94%A8%E6%97%B6%EF%BC%8C%E6%98%AF%E5%90%A6%E5%8F%AF%E4%BB%A5%E5%BC%BA%E5%88%B6%E5%9C%A8%E6%95%B4%E4%B8%AA%20LaTeX%20%E4%B8%AD%E6%9C%80%E5%90%8E%E8%B0%83%E7%94%A8%E4%B8%80%E4%B8%AA%E5%8C%85%EF%BC%9F.png)
我设计了一个需要泽佩斯安包。此包的独特之处在于它需要最后调用,这样它才不会被覆盖。我通常使用“\RequirePackage”在类文件中定义包。有没有办法强制在 .cls 文件中最后调用包,同时可以使用 .tex 文件中的 \usepackage 调用其他包?
答案1
您可以使用以下方法延迟包加载\AtBeginDocument
:
\AtBeginDocument{\RequirePackage{xepersian}}
这将使包加载在.aux
文件读取之后但在前导码的“正确结束”之前,其中所有仅前导码命令都被重新定义为引发错误;从此时起任何\usepackage
(或\RequirePackage
)都将不起作用。
如果由于某种原因,需要在活动\begin{document}
开始之前加载该包,那么您可以加载该etoolbox
包并使用:
\BeforeBeginEnvironment{document}{\RequirePackage{xepersian}}
这将\RequirePackage
在执行 中的任何内容之前执行 。效果与你将行放在文件之前\begin{document}
的效果相同。\RequirePackage
\begin{document}
.tex