我想做类似以下的事情(使用伪 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}