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