如果包尚未加载,是否可以发出警告?
如果可能的话,我希望解决方案不需要,\usepackage{ifthen}
因为它无法发出缺少ifthen
包的警告。
编辑:感谢 Martin 和 Joseph 的回复。我想澄清一下我的问题:是否可以在文档主体内进行此操作?
、\AtBeginDocument
和\RequirePackage
仅\@ifpackageloaded
在前言中可用。ltxcmds
软件包\ltx@ifpackageloaded
在正文中可用,但随后ltxcmds
需要 软件包才能使其工作。
我希望这种情况是,我正在使用xtable
中的包生成表格,R
并且当floating.environment='sidewaystable'
使用参数时,rotating
包是必需的。为了让用户轻松完成此操作,我想让他们简单地\input{<path_to_xtable>}
。但是,如果rotating
未加载包,pdflatex 会给出类似这样的错误消息
l.3 \begin{sidewaystable}
[ht]
?
我希望它发出更具信息性的警告,告知您rotating
包裹丢失。这可能吗?
答案1
大多数情况下,您不会以这种方式进行测试,而只是需要那些您需要的包,但当然也有一些情况,加载顺序很尴尬,测试很有用。执行此操作的标准方法是在文档开头进行测试
\AtBeginDocument{%
\@ifpackageloaded{OtherPackage}% Fill in name here
{}% Nothing to say
{%
\PackageWarning{MyPackage}
{You have not loaded the 'OtherPackage' package!}%
}%
}
为了允许在文档主体中进行检查,通常的方法是定义一个条件
\newif\ifmy@check@OtherPackage@loaded
\AtBeginDocument{%
\@ifpackageloaded{OtherPackage}% Fill in name here
{\my@check@OtherPackage@loadedtrue}% Nothing to say
{\my@check@OtherPackage@loadedfalse}%
}
然后使用该条件检查包是否可用。