Eu quero produzir um documento latex que possa ser compilado com poucos pacotes, digamos que xcolor
pode estar faltando como exemplo (suponha que seja um documento que meus chefes irão compilar e eu não controlo quais pacotes eles instalaram e devo evitar erros de compilação) , mas ainda assim gostaria de usar o comando com segurança \color
se o pacote estiver disponível. Se possível, gostaria de uma solução que não envolvesse a instalação de novos pacotes.
Para ser mais preciso, gostaria de escrever 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}
Where \useIFpackage{xcolor}
não faz nada se xcolor
não estiver disponível e \IFundefcommand{\color}[1]{}
define o comando \color
somente se ainda não estiver definido.
Suspeito que esse comportamento específico possa não ser possível. Nesse caso, agradeceria se você pudesse me indicar recursos adicionais quepoderser útil/interessante para algo semelhante.
Responder1
obrigado a @moewe por fornecer informações suficientes nos comentários para me ajudar a encontrar esta solução.
Para o exemplo da pergunta, acredito agora que este documento deve cobrir meu 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}
Tive problemas estranhos ao usar \providecommand
, mas o branch else é um lugar perfeito para a \newcommand
no meu caso.