在数学模式中使用 Split 的问题

在数学模式中使用 Split 的问题

下面的代码运行良好。

\begin{eqnarray*}
\begin{split}
    (U\ket{v},U\ket{w}) & = (\ket{v},\ket{w}) \\
    || \ket{Uv} || & = || \ket{v} ||
\end{split}
\end{eqnarray*}

但是如果我在宏中定义方程环境,则会出现错误“Split 无法在数学模式下工作”。

在序言中,

\newcommand{\benn}{\begin{equation*}}
\newcommand{\eenn}{\end{equation*}}

在里面使用它,

\benn
\begin{split}
        (U\ket{v},U\ket{w}) & = (\ket{v},\ket{w}) \\
        || \ket{Uv} || & = || \ket{v} ||
\end{split}
\eenn

编辑:最小不起作用的示例

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{graphicx}
\usepackage{float}
\usepackage[margin=0.8in]{geometry}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{gensymb}

\usepackage{amsthm}
\usepackage{braket}



\newcommand{\beann}{\begin{eqnarray*}}
\newcommand{\eeann}{\end{eqnarray*}}

\begin{document}

    \beann
        \begin{split}
            (U\ket{v},U\ket{w}) & = (\ket{v},\ket{w}) \\
            || \ket{Uv} || & = || \ket{v} ||
        \end{split}
    \eeann
\end{document}

答案1

请注意:将来请提供 MWE 和精确的错误/警告。在你的问题中你说编译器

出现错误“Split 无法在数学模式下工作”。

运行代码时警告

Package amsmath Warning: Cannot use `split' here;
(amsmath)                trying to recover with `aligned' on input line 19.

对于那些想弄清楚发生了什么的人来说,这有很大的不同:-)

现在来谈谈这个问题:amsmath用户指南指出

环境split旨在充当方程式的整个主体,或alignorgather环境的整行。在同一封闭结构中,其前后不能有任何印刷材料。

但是(加载eqnarray时不应该使用,请参阅amsmatheqnarray 与 align) 就是这样做的,所以这就是为什么它失败了。

在这个特殊情况下,我认为没有必要将其封闭split在提供对齐点的环境中。您可以使用align*(不带split),或者\[ ... \]

\documentclass{article}

\usepackage{mathtools} % loads amsmath
\DeclarePairedDelimiter{\norm}{\Vert}{\Vert}
\usepackage{amssymb}
\usepackage{gensymb}
\usepackage{braket}

\begin{document}

Either
\begin{align*}
(U\ket{v},U\ket{w}) & = (\ket{v},\ket{w}) \\
\norm{\ket{Uv}} & = \norm{\ket{v}}
\end{align*}
or
\[
\begin{split}
(U\ket{v},U\ket{w}) & = (\ket{v},\ket{w}) \\
\norm{\ket{Uv}} & = \norm{\ket{v}}
\end{split}
\]
\end{document}
  • 我删除了几个与 MWE 无关的软件包
  • 我加载了mathtools(加载了amsmath)并定义了一个宏\norm

相关内容