\@ifpackageloaded
我想这个命令不只是被调用的原因\ifpackageloaded
但是使用@还需要做一些额外的工作:
\makeatletter
\@ifpackageloaded{geometry}
{ % i the package was loaded
\newcommand*{\qw}{\itshape} % this is enabled, else is not enabled.
}{}
\makeatother
这是一个安全功能吗?
答案1
LaTeX2e 将诸如此类的函数定义\@ifpackageloaded
为“非面向用户的”:它们仅供在包或类中使用,编写文档的用户不应依赖它们。这也使得重新定义此类命令变得非常困难,尤其是在不知道有人这样做的情况下。
基本上,如果宏中有“@”,那么只有真正知道自己在做什么的人才能使用它,更不用说重新定义它了。特别是,编写文档的用户在不知情的情况下重新定义 LaTeX 内核或软件包内部使用的东西是一个坏主意,而 @ 约定排除了这种可能性。
使用“@”约定的另一个原因是避免名称冲突,特别是与用户可能想要使用的其他命令。