我正在尝试创建一个包含我使用的常用包和宏的文件。它是这样的。
公共定义.tex
\interdisplaylinepenalty=2500
\usepackage{algorithmic}
\usepackage{cite}
\usepackage{appendix}
... other packages and macros
但有些软件包在组合时会相互冲突。例如,当我尝试使用
\documentclass[journal]{IEEEtran}
\usepackage{appendix}
由于 IEEEtran 已经创建了命令附录,因此出现错误。
我希望得到类似下面的解决这个问题的方法。
if document class is not IEEEtran
\usepackage{appendix}
end if
答案1
一种方法是
\makeatletter
\@ifclassloaded{IEEEtran}{}{\usepackage{appendix}}
\makeatother
但我认为,提交的文件应该不是有任何与冲突的软件包相关的内容(以及类似这样的技巧)。appendix
如果文档类是,您将如何使用提供的命令IEEEtran
?
答案2
有人曾建议我测试功能而不是类名。问题是和都appendix.sty
定义IEEEtran.cls
了。因此,只有在尚未定义命令时才\appendices
加载包。这是一个有效示例:appendix
\appendices
\documentclass{IEEEtran}
\title{Test of conditional use of the appendix package}
\usepackage{lipsum} % just for dummy text
\ifcsname appendices\endcsname
% do nothing
\else
\usepackage{appendix}
\fi
\begin{document}
\maketitle
\section{Foo}
\lipsum
\section{Bar}
\lipsum
\appendix
\section{Appendix}
\lipsum
\end{document}
\ifcsame
在所有 e-TeX 版本上可用且有文档记录(以及检查命令是否定义的其他方法)这里。