LaTeX - 放错对齐制表符 &

LaTeX - 放错对齐制表符 &

我正在努力使用 LaTeX,这是美国物理研究所的模板。我处理一个带有标题的文档:

\documentclass{aip-cp}


\usepackage[numbers]{natbib}
\usepackage{rotating}
\usepackage{graphicx}

只要我不输入以下命令,它似乎就可以正常工作:

\[    
{\mathbf{sign}{(d)}}=
\begin{cases}
1, & \text{if the number of indices $k$ satisfying $d_k=a_k$ is even}, \\
-1, & \text{if the number of indices $k$ satisfying $d_k=a_k$ is odd}.
\end{cases}
\]

其中 pdf 文件编译失败,显示:Misplaced alignment tab character &

据我所知,解决此问题最常见的方法是插入\usepackage{amsmath}。问题是,当我这样做时,编译再次失败,只是这次弹出以下错误:

LaTeX Error: Command \iint already defined. Or name \end... illegal, see p.192 of the manual

总而言之,无论使用 \usepackage{amsmath}上述cases命令,我都无法编译 pdf 文件。到目前为止,我尝试过的所有方法都无法解决问题。

如果有人遇到过这种情况,请分享经验并给出解决方法。

答案1

实际上,问题似乎是txfonts 由类的加载引起的。如果您将 .cls 文件的第 98 行替换为以下内容,即可解决:

\usepackage{txfonts,graphicx}

\usepackage{graphicx}
\AtBeginDocument{\usepackage{txfonts}}

这段代码可以顺利编译:

\documentclass{aip-cp}

\usepackage{mathtools}
\usepackage[numbers]{natbib}
\usepackage{rotating}
\DeclareMathOperator{\sgn}{\mathbf{sign}}

\begin{document}

\[
\sgn(d) =
\begin{cases*}
1, & if the number of indices $k$ satisfying $d_k=a_k$ is even, \\
-1, & if the number of indices $k$ satisfying $d_k=a_k$ is odd.
\end{cases*}
\]

\end{document}

在此处输入图片描述

添加:据我所知,txfonts已被弃用,取而代之的是几个软件包newtxtext, newtxmath

答案2

这与课程无关aip-cp。使用简单的文档

\documentclass{article}

\begin{document}

\[    
{\mathbf{sign}{(d)}}=
\begin{cases}
1, & \text{if the number of indices $k$ satisfying $d_k=a_k$ is even}, \\
-1, & \text{if the number of indices $k$ satisfying $d_k=a_k$ is odd}.
\end{cases}
\]

\end{document}

错误是

! Misplaced alignment tab character &.
l.8 1, &
         \text{if the number of indices $k$ satisfying $d_k=a_k$ is even}, \\

其次是

! Undefined control sequence.
l.8 1, & \text
              {if the number of indices $k$ satisfying $d_k=a_k$ is even}, \\

事实上,cases标准 LaTeX 中没有定义环境(它有一个\cases由普通 TeX 继承的命令)。你必须添加

\usepackage{amsmath}

这也将提供\text

我还建议定义一个\sign命令(看起来像一个操作员):

\documentclass{article}
\usepackage{amsmath}

\DeclareMathOperator{\sign}{\mathbf{sign}}

\begin{document}

\[    
\sign(d)=
\begin{cases}
1, & \text{if the number of indices $k$ satisfying $d_k=a_k$ is even}, \\
-1, & \text{if the number of indices $k$ satisfying $d_k=a_k$ is odd}.
\end{cases}
\]

\end{document}

在此处输入图片描述

但是,对于你的情况,类会加载txfonts,这是一个很大的麻烦,因为它是一个过时的包,存在问题amsmath。解决方案是加载amsmath 班上。

\RequirePackage{amsmath}
\documentclass{aip-cp}

\DeclareMathOperator{\sign}{\mathbf{sign}}

\begin{document}

\[
\sign(d)=
\begin{cases}
1, & \text{if the number of indices $k$ satisfying $d_k=a_k$ is even}, \\
-1, & \text{if the number of indices $k$ satisfying $d_k=a_k$ is odd}.
\end{cases}
\]

\end{document}

在此处输入图片描述

相关内容