`split` 无法与自定义命令一起使用

`split` 无法与自定义命令一起使用

我定义了一个方便的小宏来以括号符号排版矩阵元素,现在想将下一行与该矩阵元素的一部分对齐,因为方程式很长,与等号对齐会浪费大量空间。但是,只需将其放入&宏的参数中,我就会得到:

! Misplaced alignment tab character &.
<argument> u_1u_2u_3L&
                  P
l.21  \end{split}

所以,我想知道,有没有更好的方法可以定义宏来做到这一点,或者这根本就不可能,我必须处理\hspace{-10ex}或其他什么。

最小不起作用的示例:

\documentclass[a4paper,10pt]{report}
\usepackage{amsmath}

\newcommand{\matrixel}[3]{\left< #1\vphantom{#2#3}\right| #2\left| #3\vphantom{#1#2}\right>}

\begin{document}
 \begin{equation}
 \begin{split}
   \matrixel{u_1u_2u_3L}{&P}{u_1'u_2'u_3'L'} = (a +b)\\
   &\times (c+d)
 \end{split}
 \end{equation}
\end{document}          

注意:我对术语有点困惑。这真的是我在这里定义的“宏”吗?如果有更好的词,请随意编辑。

答案1

您不能&在 里面使用\vphantom,这会混淆对齐过程并产生许多错误。这里有一个解决方法:对于这种特殊情况,您可以使用宏\alignmentpoint(如果您愿意,可以选择其他名称),该宏在 的特殊形式中被制成 noop \vphantom

\documentclass[a4paper,10pt]{report}
\usepackage{amsmath}

\newcommand{\matrixel}[3]{\left< #1\mvph{#2#3}\right| #2\left| #3\mvph{#1#2}\right>}
\newcommand{\alignmentpoint}{&}
\newcommand{\mvph}[1]{\vphantom{\def\alignmentpoint{}#1}}


\begin{document}
 \begin{equation}
 \begin{split}
   \matrixel{u_1u_2u_3L}{\alignmentpoint P}{u_1'u_2'u_3'L'} = (a +b)\\
   &\times (c+d)
 \end{split}
 \end{equation}
\end{document}

\matrixel不在对齐中使用时,该设置不会造成任何损害。

在此处输入图片描述

相关内容