名称冲突,“\ifpdf 已定义”在 JHEP3.cls 和 ifpdf.sty 之间

名称冲突,“\ifpdf 已定义”在 JHEP3.cls 和 ifpdf.sty 之间

你可能会感兴趣,似乎存在冲突JHEP3.cls版本 3.1.5(来自http://jhep.sissa.it/jhep/help/JHEP/TeXclass/tools_JHEPlog.html)和ifpdf包裹。我认为两个包都使用了变量\ifpdf,这会产生冲突。

当我编译时:

\documentclass{JHEP3}
\usepackage{graphics}

\author{Kuba}
\date{14/12/2012}
\abstract{ble}
\title{ble}
\keywords{ble bel}
\preprint{10932}

\begin{document} ble ble \end{document}

我明白了

Package ifpdf Error: Name clash, \ifpdf is already defined.

但是,当我将所有替换为\ifpdf、将所有替换为以及将所有替换为时,它工作正常!JHEP3.cls\ifpddf\pdftrue\pddftrue\pdffalse\pddffalse

我还会写信通知 JHEP。

包括\let\ifpdf\relax(如建议的软件包 ifpdf 错误) 没有帮助,因为Extra \fi \begin{document}出现了类似的错误消息。

您还有其他/更好的想法吗,如何处理这个问题?

答案1

是的,\ifpdf在类文件和ifpdf加载的包中都有定义graphics.cfg。解决方法:

\RequirePackage{ifpdf}
\documentclass{JHEP3}

然后\ifpdf将由 类覆盖,但含义类似( 的类对于 的负数是错误的\pdfoutput)。但 的警告ifpdf不会被触发,并且包稍后不会再次加载,因为包已经加载。

答案2

您的示例文档对我来说编译得很好,可能是因为它不包含\usepackage{ifpdf}。除此之外,您是对的,该类JHEP3确实定义了\ifpdf。只是不要将包ifpdf与此类一起使用。如果您必须使用某个加载的包ifpdf,则将其插入\let\ifpdf\relax之前,甚至直接插入之后\documentclass{JHEP3}

相关内容