\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}