我想產生一個可以用很少的包進行編譯的乳膠文檔,比如說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
我來說是一個完美的地方。