条件“如果有包可用”

条件“如果有包可用”

我想做类似以下的事情(使用伪 TeX)

\ifpackageavailable{packagefoo}
\usefoo
\else
\usefooreplacement
\fi

例如,我知道我编写的模板文件被没有该mdframed包的人使用。所以我想写:

\ifpackageavailable{mdframed}
\usepackage{mdframed}
\newenvironment{framedbox}...
\else
\usepackage{framed}
\newenvironment{framedbox}... 
\fi

有什么东西可以提供这种功能吗?

答案1

使用\IfFileExists。以下是我的idxlayout测试可用性的包ragged2e

\AtBeginDocument{%
  \IfFileExists{ragged2e.sty}{%
    \RequirePackage{ragged2e}%
    \renewcommand*{\ila@RaggedRight}{\RaggedRight}%
  }{%
    \PackageWarning{idxlayout}{%
      Package ragged2e not available, therefore\MessageBreak
      substituting command raggedright for RaggedRight\MessageBreak
    }%
    \renewcommand*{\ila@RaggedRight}{\raggedright}%
  }%
}

答案2

\documentclass{article}

\IfFileExists{mdframed.sty}
  {\usepackage{mdframed}
   %\newenvironment{framedbox}
   \let\framed\mdframed
   \let\endframed\endmdframed
  }
  {\usepackage{framed}
   %\newenvironment{framedbox}... 
  }

\begin{document}

\begin{framed}
foo
\end{framed}

\end{document}

相关内容