我正在使用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
阻止加载。amsmath
equation*
\AtBeginDocument
amsmath
无需强迫您使用损坏的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
的标准软件包已经存在多久了?