Quiero producir un documento de látex que pueda compilarse con muy pocos paquetes, digamos xcolor
que podría faltar como ejemplo (supongamos que es un documento que mis jefes compilarán y no controlo qué paquetes han instalado y debo evitar errores de compilación) , pero aun así me gustaría utilizar el comando de forma segura \color
si el paquete está disponible. Si es posible, me gustaría una solución que no implique instalar nuevos paquetes.
Para ser más preciso, me gustaría escribir este tipo de documento.
\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}
Donde \useIFpackage{xcolor}
no hace nada si xcolor
no está disponible y \IFundefcommand{\color}[1]{}
define el comando \color
solo si aún no está definido.
Sospecho que este comportamiento específico podría no ser posible; en ese caso, le agradecería que me indicara recursos adicionales quepodríaser útil/interesante para algo similar.
Respuesta1
gracias a @moewe por proporcionar suficiente información en los comentarios para ayudarme a encontrar esta solución.
Para el ejemplo de la pregunta, ahora creo que este documento debería cubrir mi caso de uso:
\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}
Tuve problemas extraños al usar , pero en mi caso \providecommand
la rama else es un lugar perfecto para a .\newcommand