我正在使用iopart
类进行 IOP 出版,我想使用该mhchem
包来编写化学方程式。我遇到了与这里和那里,老话题,没有答案。我在 Texmaker 中使用 pdflatex 编译了以下代码:
\documentclass[12pt]{iopart}
%Uncomment next line if AMS fonts required
%\usepackage{iopams}
\usepackage[version=3]{mhchem}
\begin{document}
\title[mytitle]{mytitle}
\author{myauthor}
\begin{abstract}
A minimal non-working iopart + mhchem example
\end{abstract}
\ce{P ->[\sigma_{P}] T}
\end{document}
这会抛出错误
! LaTeX Error: Command \equation* 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.2664 }
我添加了建议这里:
\makeatletter
\@namedef{[email protected]}{}
\makeatother
\usepackage{amstext}
之前\usepackage[version=3]{mhchem}
。我不知道这意味着什么。但它引发了很多错误:
! Undefined control sequence.
<argument> \rightarrowfill@
\displaystyle
l.18 \ce{P ->[\sigma_{P}] T}
?
! Missing $ inserted.
<inserted text>
$
l.18 \ce{P ->[\sigma_{P}] T}
?
! Extra }, or forgotten $.
\@begin@tempboxa ...begingroup #2\color@endgroup }
\def \width {\wd \@tempbox...
l.18 \ce{P ->[\sigma_{P}] T}
?
! Missing $ inserted.
<inserted text>
$
l.18 \ce{P ->[\sigma_{P}] T}
?
! Missing } inserted.
<inserted text>
}
l.18 \ce{P ->[\sigma_{P}] T}
编辑:根据下面的评论我尝试了:
\documentclass[12pt]{iopart}
%Uncomment next line if AMS fonts required
%\usepackage{iopams}
\makeatletter
\@namedef{[email protected]}{}
\makeatother
\usepackage{amstext}
\usepackage{chemformula}
\begin{document}
\title[mytitle]{mytitle}
\author{myauthor}
\begin{abstract}
A minimal working iopart + chemformula example
\end{abstract}
\ch{P ->[$\sigma$] T} \par
\end{document}
它确实完成了工作!
答案1
形成文件ioplatexguidelines.pdf
:
由于mhchem
加载,更重要的是需要amsmath
,您有两个选择:坚持使用iopart.cls
而不是使用mhchem
另一个提供类似功能的包,或者更改您的文档类并使用mhchem
;正如指南所提到的,这不是问题,因为他们会接受使用任何其他文档类编写的文档。
答案2
下面两种方法对我很有效。它们真的有很大帮助。
(1)
\expandafter\let\csname equation*\endcsname\relax
\expandafter\let\csname endequation*\endcsname\relax
将这些放在 \usepackage{amsmath} 之前
(2)
或者,编辑 iopart.cls 并删除(或注释)这两行(我的副本中的第 788 行和第 789 行):
\@namedef{equation*}{\[}
\@namedef{endequation*}{\]}
最初是从
答案3
我最近在 iopart 和 amsmath 之间遇到了同样的问题。我看到的警告是“命令 \equation* 已定义”。我通过注释掉以下两行来解决这个问题:
\@namedef{equation*}{\[}
\@namedef{endequation*}{\]}
在 iopart.cls 中(对我来说是第 788-789 行)。他们似乎想要
\begin{equation*}
F=ma
\end{equation*}
公正
\[F=ma\]
出于某种愚蠢的原因。我不认为注释掉这些行会破坏其他任何东西,但我不确定。