Ich möchte ein Latex-Dokument erstellen, das mit sehr wenigen Paketen kompiliert werden kann. Nehmen wir xcolor
als Beispiel an, dass einige fehlen könnten (nehmen wir an, es ist ein Dokument, das meine Chefs kompilieren werden, und ich habe keine Kontrolle darüber, welche Pakete sie installiert haben, und ich muss Kompilierungsfehler vermeiden), aber ich möchte den Befehl trotzdem sicher verwenden können, \color
wenn das Paket verfügbar ist. Wenn möglich hätte ich gerne eine Lösung, bei der keine neuen Pakete installiert werden müssen.
Genauer gesagt möchte ich ein solches Dokument schreiben
\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}
Wobei \useIFpackage{xcolor}
nichts passiert, wenn xcolor
es nicht verfügbar ist, und \IFundefcommand{\color}[1]{}
der Befehl \color
nur definiert wird, wenn er nicht bereits definiert ist.
Ich vermute, dass dieses spezielle Verhalten nicht möglich ist. In diesem Fall wäre ich Ihnen dankbar, wenn Sie mir weitere Ressourcen nennen könnten, diekönntefür etwas Ähnliches nützlich/interessant sein.
Antwort1
Danke an @moewe für die ausreichenden Informationen in den Kommentaren, die mir bei der Suche nach dieser Lösung geholfen haben.
Ich bin nun der Meinung, dass dieses Dokument für das Beispiel in der Frage meinen Anwendungsfall abdecken sollte:
\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}
Ich hatte seltsame Probleme bei der Verwendung , aber in meinem Fall \providecommand
ist der Else-Zweig der perfekte Ort für ein .\newcommand