仅当可以找到包时才使用 \usepackage

仅当可以找到包时才使用 \usepackage

可能重复:
条件“如果有包可用”

我正在使用一个包“mcode.sty”,它可以增强/着色列表输出;即使没有它,排版也可以完美运行。但是,我经常在这样的环境中排版,除了当前目录之外,我无法在 LaTeX 可以找到的任何地方包含包文件。我想\usepackage在我的默认序言中包含该语句(我使用的是 LyX),但通常该文件不会在那里,并且 LaTeX 会因错误而退出,即使我当前项目中不需要该功能。实际上,我只想在 .sty 文件位于当前目录中或 LaTeX 路径中的某个位置时包含该包,如果找不到它,则不退出。类似\begin{ignore_errors} \usepackage{mcode} \end{ignore_errors}。有办法吗?

答案1

如果您不需要该软件包,则不应包含它。也就是说,这可以满足您的要求。

\IfFileExists{foo.sty}{\usepackage{foo}}{}

如果您想要一个宏,那么您可以使用类似下面的内容。

\newcommand*\usepackageifpresent[2][]{%
    \IfFileExists{#2.sty}{\usepackage[#1]{#2}}{}%
}

它支持可选参数,

\usepackageifpresent[margin=3in]{geometry}

例如。

相关内容