Как безопасно проверить доступность команды/пакета во время компиляции?

Как безопасно проверить доступность команды/пакета во время компиляции?

Я хочу создать документ 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

Связанный контент