! \@Aboxed 的参数有一个额外的 }

! \@Aboxed 的参数有一个额外的 }

\Aboxed我在以下环境中使用时遇到问题align*

\begin{align*}
\omega(\sigma_{ij}) &\equiv 1 - \left(\frac{27J_3}{2\sigma_e^3}\right)^2 \\
& = \omega(L) = 1 - \frac{\left( 9L - L^3\right)^2}{\left(L^2+3\right)^3}. 
\end{align*}

我想用\Aboxed把最后一个等式的最后一部分放在一个框里,即

\begin{align*}
\omega(\sigma_{ij}) &\equiv 1 - \left(\frac{27J_3}{2\sigma_e^3}\right)^2 \\
& = \Aboxed{ \omega(L) = 1 - \frac{\left( 9L - L^3\right)^2}{\left(L^2+3\right)^3}. }
\end{align*}

这给了我标题中的错误消息。但是,\Aboxed在的上部方程中使用align*根本不会引起任何问题。我也在我的文档中的其他和的\Aboxed最后一个方程中使用了。在这种情况下是什么导致了错误?align*align

答案1

\Aboxed(从mathtools)旨在将一个框放在对齐点上(请参阅mathtools文档,第 3.4.5 节,第 18 页)。因此,

\Aboxed{\omega(\sigma_{ij}) &\equiv 1 - \left(\frac{27J_3}{2\sigma_e^3}\right)^2 }\

有效。该\Aboxed命令定义为(来自mathtools.sty

\newcommand\Aboxed[1]{\@Aboxed#1\ENDDNE}
\def\@Aboxed#1&#2\ENDDNE{%
  \settowidth\@tempdima{$\displaystyle#1{}$}%
  \addtolength\@tempdima{\fboxsep}%
  \addtolength\@tempdima{\fboxrule}%
  \global\@tempdima=\@tempdima
  \kern\@tempdima
  &
  \kern-\@tempdima
  \boxed{#1#2}
}

因此,当您使用时\Aboxed,TeX 将贪婪地寻找&(对齐字符),如果未找到,则会返回错误。

如果你只想要一个盒子,里面没有对齐点,你可以使用boxed(基本上从amsmathmathtools加载amsmath也可以)作为

& = \boxed{ \omega(L) = 1 - \frac{\left( 9L - L^3\right)^2}{\left(L^2+3\right)^3}. }

boxed命令定义为(来自amsmath.sty

\newcommand{\boxed}[1]{\fbox{\m@th$\displaystyle#1$}}

它与对齐字符 无关&。(因此它无法跨越 起作用&。)

结论:如果希望框穿过对齐点,请使用\Aboxed。另一方面,如果框仅用于没有对齐点的部分,请使用\boxed

完整的 MWE 将是:

\documentclass{article}
\usepackage{mathtools}
\begin{document}

\begin{align*}
\Aboxed{\omega(\sigma_{ij}) &\equiv 1 - \left(\frac{27J_3}{2\sigma_e^3}\right)^2 }\\
& = \boxed{ \omega(L) = 1 - \frac{\left( 9L - L^3\right)^2}{\left(L^2+3\right)^3}. }
\end{align*}


\end{document}

在此处输入图片描述

相关内容