我想生成一个可以用很少的软件包进行编译的 latex 文档,假设xcolor
可能缺少一些软件包(假设这是我的老板将要编译的文档,我无法控制他们安装了哪些软件包,并且我必须避免编译错误),但\color
如果软件包可用,我仍然想安全地使用该命令。如果可能的话,我想要一个不涉及安装新软件包的解决方案。
更准确地说,我想写这种文件
\documentclass{article}
%%%%%%
%%% Huge blobs of definitions
%%% for \useIFpackage
%%% and \IFundefcommand
%%%%%%
\useIFpackage{xcolor}
\IFundefcommand{\color}[1]{}
\begin{document}
{
\color{red} This package always
compiles and if \emph{xcolor}
is available this text should be red
}
\end{document}
\useIFpackage{xcolor}
如果xcolor
不可用则不执行任何操作,并且仅当尚未定义时才\IFundefcommand{\color}[1]{}
定义命令。\color
我怀疑这种特定的行为可能无法实现,在这种情况下,如果您能向我指出其他资源,我将不胜感激。可能对于类似的东西来说有用/有趣。
答案1
感谢@moewe 在评论中提供足够的信息来帮助我找到这个解决方案。
对于问题中的例子,我现在认为该文档应该涵盖我的用例:
\documentclass{article}
\IfFileExists{xcolor.sty}
{\usepackage{xcolor}}
{\newcommand{\color}[1]{}}
\begin{document}
{\color{red} This package always compiles and if \emph{xcolor} is available this text should be red }
\end{document}
我在使用时遇到了一些奇怪的问题\providecommand
,但对我来说, else 分支是完美的位置\newcommand
。