컴파일 타임에 명령/패키지를 사용할 수 있는지 안전하게 확인하는 방법은 무엇입니까?

컴파일 타임에 명령/패키지를 사용할 수 있는지 안전하게 확인하는 방법은 무엇입니까?

아주 적은 수의 패키지로 컴파일할 수 있는 라텍스 문서를 생성하고 싶습니다. 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}

를 사용하는 데 이상한 문제가 있었지만 내 경우에는 \providecommandelse 분기가 완벽한 장소입니다 .\newcommand

관련 정보