![amsrefs 包与期刊的文档类别之间的冲突](https://linux22.com/image/401985/amsrefs%20%E5%8C%85%E4%B8%8E%E6%9C%9F%E5%88%8A%E7%9A%84%E6%96%87%E6%A1%A3%E7%B1%BB%E5%88%AB%E4%B9%8B%E9%97%B4%E7%9A%84%E5%86%B2%E7%AA%81.png)
程序包 amsrefs 与文档类冲突qt2018作者(关于日记帐)。
我收到以下错误:! LaTeX Error: Command \eprint already defined.
我猜问题出在字段\eprint
应该同时出现在两者中。
如何在不删除 amsrefs 的情况下解决这个问题?
下面是出现问题的一个简单示例:
\documentclass{qt2018author}
\usepackage{amsrefs}
\begin{document}
\begin{bibdiv}
\begin{biblist}
\bib{p3}{article}{
author={Palcoux, Sebastien},
title={Euler totient of subfactor planar algebras},
journal={Proc. Am. Math. Soc.}
volume={146},
number={11},
date={2018},
pages={4775--4786},
doi={10.1090/proc/14167}
}
\end{biblist}
\end{bibdiv}
\end{document}
错误信息如下:
! LaTeX Error: Command \eprint already defined.
Or name \end... illegal, see p.192 of the manual.
See the LaTeX manual or LaTeX Companion for explanation.
Type H <return> for immediate help.
...
l.2820 \newcommand{\eprint}[1]{\url{#1}}
答案1
在qt2018author
类中\eprint
,命令仅出现两次,第一次是在定义时,第二次是在命令中使用时\arXiv
。因此,您可以取消定义命令(例如,请参阅https://tex.stackexchange.com/a/35967/),用不同的名称重新定义它,并更改命令中的调用\arXiv
。重新定义应该在加载amsrefs
包之前执行。
梅威瑟:
\documentclass{qt2018author}
\let\eprint\undefined
\newcommand*{\eprintnew}[2][arXiv]{%
\ifstrequal{#1}{arXiv}%
{\href{http://arxiv.org/abs/#2}{arXiv:#2}}%
{\mbox{#1:#2}}}
\renewcommand*{\arXiv}[1]{\eprintnew[arXiv]{#1}}
\usepackage{amsrefs}
\begin{document}
\begin{bibdiv}
\begin{biblist}
\bib{p3}{article}{
author={Palcoux, Sebastien},
title={Euler totient of subfactor planar algebras},
journal={Proc. Am. Math. Soc.},
volume={146},
number={11},
date={2018},
pages={4775--4786},
doi={10.1090/proc/14167}
}
\end{biblist}
\end{bibdiv}
\end{document}
结果:
请注意,原始代码中第 12 行缺少一个逗号,从而触发警告Package rkeyval Warning: Missing comma on input line 13
。
还请注意(如链接问题中所述),使用时\let\eprint\undefined
,宏\undefined
不是特殊的 LaTeX 命令,它只是不存在的东西(\let\eprint\foo
也可以工作)。这足以绕过对已定义命令的检查,从而导致您遇到的错误消息。