下面的代码运行良好。
\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
旨在充当方程式的整个主体,或align
orgather
环境的整行。在同一封闭结构中,其前后不能有任何印刷材料。
但是(加载eqnarray
时不应该使用,请参阅amsmath
eqnarray 与 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