方程环境已定义

方程环境已定义

我正在使用iopart.cls并且iopams.sty没有使用其他数学包,正如这里的指导方针所言:https://publishingsupport.iopscience.iop.org/questions/latex-template/

但是,我收到了令人厌烦的“命令 \equation* 已定义”。

有人能帮助我找出错误吗?或者更准确地说,下面的序言中有什么错误?

\documentclass[12pt]{iopart}
\newcommand{\gguide}{{\it Preparing graphics for IOP Publishing journals}}
%Uncomment next line if AMS fonts required
\usepackage{iopams}  
\usepackage{color}

\newcommand{\N}{\mathbb{N}}
\newcommand{\Z}{\mathbb{Z}}
\newcommand{\Q}{\mathbb{Q}}
\newcommand{\R}{\mathbb{R}}
\newcommand{\C}{\mathbb{C}}
\newcommand{\bbE}{\mathbb{E}}
\newcommand{\bbP}{\mathbb{P}}

\usepackage{geometry}
\usepackage{mathdots}
\usepackage{yhmath}
\usepackage{ytableau}
\usepackage{youngtab}
\usepackage{tikz}

答案1

yhmath包有\RequirePackage{amsmath},所以你不能加载它,除非你amsmath按照如下所述加载。

出于神秘的原因,通过提供未加载时可以移动的定义来iopart阻止加载。amsmathequation*\AtBeginDocumentamsmath

无需强迫您使用损坏的eqnarray,您可以轻松加载amsmath

\documentclass[12pt]{iopart}

% allow loading amsmath
\expandafter\let\csname equation*\endcsname\relax
\expandafter\let\csname endequation*\endcsname\relax
%%%
\usepackage{amsmath}

%Uncomment next line if AMS fonts required
\usepackage{iopams}
\usepackage{color}
\usepackage{geometry}
\usepackage{mathdots}
\usepackage{yhmath}
\usepackage{ytableau}
\usepackage{youngtab}
\usepackage{tikz}

\newcommand{\N}{\mathbb{N}}
\newcommand{\Z}{\mathbb{Z}}
\newcommand{\Q}{\mathbb{Q}}
\newcommand{\R}{\mathbb{R}}
\newcommand{\C}{\mathbb{C}}
\newcommand{\bbE}{\mathbb{E}}
\newcommand{\bbP}{\mathbb{P}}

\newcommand{\gguide}{{\itshape Preparing graphics for IOP Publishing journals}}

的第 788-789 行iopart.cls,而不是

\@namedef{equation*}{\[}
\@namedef{endequation*}{\]}

应该

\AtBeginDocument{%
  \@ifpackageloaded{amsmath}{}{%
    \@namedef{equation*}{\[}%
    \@namedef{endequation*}{\]}%
  }%
}

这是仅有的iopart和之间不兼容amsmath。我不知道开发人员为什么要把它放进去。

答案2

在你的课程文件第 2 页上:

amsmath.sty还请注意,和之间存在不兼容性iopart.cls,无法完全解决。如果您的文章依赖于中amsmath.sty不可用的命令iopart.cls,您可能希望考虑使用不同的类文件。

因此任何加载的包amsmath都会使文档无法编译。

说实话,这有点令人惊讶。LaTeXamsmath的标准软件包已经存在多久了?

相关内容