IEEEtrantools 与 cleveref 发生冲突

IEEEtrantools 与 cleveref 发生冲突

我有两个相当复杂的方程式,我想将它们对齐在“=”符号左侧和右侧的两个点。

我在文档的其他地方使用了cleveref命令\cref,但该包与 发生冲突IEEEtrantools

\documentclass{report}

\usepackage[retainorgcmds]{IEEEtrantools} 
\usepackage{cleveref}

\begin{document}

\begin{IEEEeqnarray}{rCl}
   a & = & 3\\
   b & = & 4
\end{IEEEeqnarray}

\end{document}

此外,我想给这两个方程式一个标签,该标签应右对齐并垂直居中显示。

我从一本书(Bohren and Huffman,2004)中取出了这些方程式,并希望保留它们的编号和格式,如下所示:

摘自 Bohren & Hoffmann,2004 年,第 100 页

如何才能实现并cleveref保持这一目标?

答案1

这是 中的一个错误,cleveref它没有考虑到 的一些更改IEEEtrantools.sty。特别是,条件\if@IEEEissubequation不再包含在包中。 所做的修补程序cleveref参考 的 1.2 版IEEEtrantools,但您可能拥有 1.3 版(2012/12/27)。

您可以尝试添加一些代码来避免错误:

\usepackage[retainorgcmds]{IEEEtrantools} 
\usepackage{cleveref}

\makeatletter
\let\if@IEEEissubequation\iffalse
\makeatother

然而,我不确定这不会产生奇怪的后果。

至于为两个方程式确定一个唯一的数字的中心,我相信 并未涵盖这一点IEEEeqnarray,但aligned可以amsmath做到:

\begin{equation}
\begin{aligned}
a &= b \\
c & = d
\end{aligned}
\end{equation}

我认为你加载amsmathIEEEtrantools

答案2

更改包的顺序:

\documentclass{report}
\usepackage{cleveref}
\usepackage[retainorgcmds]{IEEEtrantools} 
\begin{document}

\begin{IEEEeqnarray}{rCl}
  & \begin{array}{rcl}
   a & = & 3\\
   b & = & 4
  \end{array}
\end{IEEEeqnarray}

\end{document}

amsmath但是,使用包然后使用环境更有意义align

\documentclass{report}
\usepackage{cleveref}
\usepackage{amsmath}
\usepackage[retainorgcmds]{IEEEtrantools} 
\begin{document}

\begin{align}
  \begin{aligned}
   a & =  3\\
   b & =  4
  \end{aligned}
\end{align}

\end{document}

答案3

与较新版本的兼容性IEEEtrantools应该在我的网站提供的最新预发布版本 (0.21) 中得到修复:http://www.dr-qubit.org/latex.html

相关内容