\smashoperator 的问题:限制控件必须遵循数学运算符

\smashoperator 的问题:限制控件必须遵循数学运算符
\documentclass[a4paper]{report}

\usepackage{mleftright}
\usepackage{amsmath}
\usepackage{stackengine}
\usepackage{scalerel}
\usepackage{mathtools}
\usepackage{braket}

\newcommand\equalhat{\mathrel{\stackon[1.5pt]{=}{\stretchto{%
    \scalerel*[\widthof{=}]{\wedge}{\rule{1ex}{3ex}}}{0.5ex}}}}

\DeclareMathOperator{\Tr}{Tr}

\begin{document}

\begin{align}
\underbrace{\hat{\rho'}_{ss}^{ \mleft( 2 \mright) } \equalhat \hat{\rho'}_{ss}^{ \mleft( 1 \mright) }}_{\smashoperator[b]{of \, equivalent \, form}} & = \Tr^{ \mleft( 2 \mright) } \mleft( \hat{\rho}_{ss} \mright) = \sum_{\bullet \in \{ \uparrow, \downarrow \} } \bra{\bullet}^{ \mleft( 2 \mright) } \mleft( \ket{ss} \bra{ss} \mright) \ket{\bullet}^{ \mleft( 2 \mright) } \nonumber \\
        & = \frac{1}{2} ( \bra{\uparrow}^{ \mleft( 2 \mright) } \mleft( \ket{\uparrow \downarrow} \bra{\uparrow \downarrow} - \ket{\uparrow \downarrow} \bra{\downarrow \uparrow} - \ket{\downarrow \uparrow} \bra{\uparrow \downarrow} + \ket{\downarrow \uparrow} \bra{\downarrow \uparrow} \mright) \ket{\uparrow}^{ \mleft( 2 \mright) } \nonumber \\
        & \quad \, + \bra{\downarrow}^{ \mleft( 2 \mright) } \mleft( \ket{\uparrow \downarrow} \bra{\uparrow \downarrow} - \ket{\uparrow \downarrow} \bra{\downarrow \uparrow} - \ket{\downarrow \uparrow} \bra{\uparrow \downarrow} + \ket{\downarrow \uparrow} \bra{\downarrow \uparrow} \mright) \ket{\downarrow}^{ \mleft( 2 \mright) } ) \nonumber \\
        & = \frac{1}{2} \mleft( \ket{\downarrow}^{ \mleft( 1 \mright) } \bra{\downarrow}^{ \mleft( 1 \mright) } + \ket{\uparrow}^{ \mleft( 1 \mright) } \bra{\uparrow}^{ \mleft( 1 \mright) } \mright) \, .
\end{align}

\end{document}

产生错误:限制控制必须遵循数学运算符。

我需要改变什么?我有水平空间,下部支撑下方的空间被其他物体所忽略(它们是正确的)。

[此处出现相同错误的其他问题都是拼写错误或建议不要加载某些干扰包。A) 应该是哪个包;B) 由于这是大型文档的一部分,我不确定这是否是一个可行的选择。

编辑:我现在记得我打算使用 \smash[b] 并且它可以工作。正如 Mico 指出的那样,\smashoperator 仅接受 [l] 和 [r] 作为参数。

答案1

\smashoperator产生水平的粉碎,因此可选参数可以是[l][r](默认为[c])。也许这个代码经过一些轻微的改进(例如,使用中等大小的分数作为数值系数)就能产生您想要的结果?

\documentclass[a4paper]{report}

\usepackage{mleftright}
\usepackage{amsmath}
\usepackage{stackengine}
\usepackage{scalerel}
\usepackage{nccmath, mathtools}
\usepackage{braket}

\newcommand\equalhat{\mathrel{\stackon[1.5pt]{=}{\stretchto{%
    \scalerel*[\widthof{=}]{ ∧ }{\rule{1ex}{3ex}}}{0.5ex}}}}

\DeclareMathOperator{\Tr}{Tr}

\begin{document}

\begin{align}
\underbrace{\hat{\rho'}_{ss}^{ \mleft( 2 \mright) } \equalhat \hat{\rho'}_{ss}^{ \mleft( 1 \mright) }}_{%\smashoperator[b]{
\clap{\footnotesize of equivalent form}}
 & = \Tr^{ \mleft( 2 \mright) } \mleft( \hat{ρ}_{ss} \mright) = \smashoperator{\sum_{\bullet \in \{ \uparrow, \downarrow \} } }\bra{\bullet}^{ \mleft( 2 \mright) } \mleft( \ket{ss} \bra{ss} \mright) \ket{\bullet}^{ \mleft( 2 \mright) } \nonumber \\
        & = \smash{\mfrac{1}{2}}\mleft( \bra{\uparrow}^{ \mleft( 2 \mright) } \mleft( \ket{\uparrow \downarrow} \bra{\uparrow \downarrow} - \ket{\uparrow \downarrow} \bra{\downarrow \uparrow} - \ket{\downarrow \uparrow} \bra{\uparrow \downarrow} + \ket{\downarrow \uparrow} \bra{\downarrow \uparrow} \mright) \ket{\uparrow}^{ \mleft( 2 \mright) }\mright. \nonumber \\
        & \quad \mleft. + \bra{\downarrow}^{ \mleft( 2 \mright) } \mleft( \ket{\uparrow \downarrow} \bra{\uparrow \downarrow} - \ket{\uparrow \downarrow} \bra{\downarrow \uparrow} - \ket{\downarrow \uparrow} \bra{\uparrow \downarrow} + \ket{\downarrow \uparrow} \bra{\downarrow \uparrow} \mright) \ket{\downarrow}^{ \mleft( 2 \mright) }\mright) \nonumber \\
        & = \mfrac{1}{2} \mleft( \ket{\downarrow}^{ \mleft( 1 \mright) } \bra{\downarrow}^{ \mleft( 1 \mright) } + \ket{\uparrow}^{ \mleft( 1 \mright) } \bra{\uparrow}^{ \mleft( 1 \mright) } \mright) \, .
\end{align}

\end{document} 

在此处输入图片描述

答案2

\smashoperator是包提供的一个宏mathtools。它的参数必须包含一个“运算符”,例如\sum\prod\int及其参数,例如求和的指标或积分的下限和上限。\smashoperator可以采用可选参数——或[l]——[r]来指示“粉碎”应该限制在左侧还是右侧。

相反,您的代码包含

\underbrace{...}_{\smashoperator[b]{of \, equivalent \, form}}

看不到操作员,是吗?此外,该[b]选项也无法顺利通过。

应该写作是

\underbrace{...}_{\mathclap{\text{of equivalent form}}}

\mathclap也由包定义mathtools


附录:这是方程的完整版本,它同时适用于\smash[b]\mathclap下支撑项\smashoperator针对该术语的指令。\sum我还删除了所有\mleft\mright包装器,因为它们要么不执行任何操作(除了造成代码混乱),要么无法生成更大的括号。

在此处输入图片描述

\documentclass[a4paper]{report}
\usepackage{stackengine, % 'amsmath' is loaded by 'mathtools'
            scalerel,mathtools,braket}
\newcommand\equalhat{\mathrel{\stackon[1.5pt]{=}{\stretchto{%
    \scalerel*[\widthof{=}]{\wedge}{\rule{1ex}{3ex}}}{0.5ex}}}}
\DeclareMathOperator{\Tr}{Tr}

\begin{document}

\begin{align}
\smash[b]{\underbrace{\hat{\rho'}_{ss}^{(2)} \equalhat \hat{\rho'}_{ss}^{(1)}}_{%
   \mathclap{\text{of equivalent form}}}}
&= \Tr^{(2)} (\hat{\rho}_{ss}) = 
\smashoperator{\sum_{\bullet \in \{ \uparrow,\downarrow \} }} \bra{\bullet}^{(2)} 
\bigl( \ket{ss} \bra{ss} \bigr) \ket{\bullet}^{(2)} \nonumber \\
&= \frac{1}{2} \Bigl[ \bra{\uparrow}^{(2)} 
\bigl(  \ket{\uparrow\downarrow} \bra{\uparrow\downarrow} 
      - \ket{\uparrow\downarrow} \bra{\downarrow\uparrow} 
      - \ket{\downarrow\uparrow} \bra{\uparrow\downarrow} 
      + \ket{\downarrow\uparrow} \bra{\downarrow\uparrow} 
      \bigr) \ket{\uparrow}^{(2)} \nonumber \\
&\qquad + \bra{\downarrow}^{(2)} 
\bigl( \ket{\uparrow\downarrow} \bra{\uparrow\downarrow} 
     - \ket{\uparrow\downarrow} \bra{\downarrow\uparrow} 
     - \ket{\downarrow\uparrow} \bra{\uparrow\downarrow} 
     + \ket{\downarrow\uparrow} \bra{\downarrow\uparrow} 
     \bigr) \ket{\downarrow}^{(2)} \Bigr] \nonumber \\[1ex]
&= \frac{1}{2} \bigl( \ket{\downarrow}^{(1)} \bra{\downarrow}^{(1)} 
   + \ket{\uparrow}^{(1)} \bra{\uparrow}^{(1)} \bigr) \, .
\end{align}
\end{document}

相关内容