如果文档类等于某些内容则不要使用包

如果文档类等于某些内容则不要使用包

我正在尝试创建一个包含我使用的常用包和宏的文件。它是这样的。

公共定义.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 版本上可用且有文档记录(以及检查命令是否定义的其他方法)这里

相关内容