编写类/包时,如果/当另一个包被加载时,我该如何运行代码?

编写类/包时,如果/当另一个包被加载时,我该如何运行代码?

我正在写一个论文类文件,我想延迟代码的运行加载特定的包:

\AtEndOfOtherPackage{listings}{%
  \lstset{language=Python}}

是否有针对该任务的现有命令?如果没有,该如何执行?

答案1

使用scrlfileget \AfterPackage,只有在包加载后才会执行,并且在包结束时执行。所以

\RequirePackage{scrlfile}

\AfterPackage{listings}{\lstset{language=Python}}

应该是你想要的。

答案2

如果您需要加载包裹,请按照 Herbert 所示进行操作,

\RequirePackage{listings}
\lstset{language=Python}

如果你想有条件地运行包后面的东西如果用户在序言中加载它,那么默认情况下没有可用于此的包结束钩子(在\AtEndOfPackage加载包时清除所使用的钩子)因此正常的做法是使用开始文档钩子

\AtBeginDocument{\@ifpackageloaded{listings}%
   {\typeout{yes}}%
   {\typeout{no}}%
 }

答案3

\RequirePackage{listings}
\lstset{language=Python}

如果之前已经加载,\RequirePackage则不会发生任何事情并\lstset会照常使用。

相关内容