数学模式下的 \sbox

数学模式下的 \sbox

我想提取一个方程的宽度,但是它给出了一个错误。

! Missing $ inserted.
<inserted text> 
                $

我不明白缺少了什么。

\documentclass{article}

\usepackage{mathtools}

\newcommand{\insertTableMybox}{}
\renewcommand{\insertTableMybox}{%
    \begin{equation*}
        W =
        \begin{bmatrix}
            0                 & w_{1,2} & \ldots & w_{1,U} \\
            w_{2,1}           & 0       & \ldots & w_{2,U} \\
            \vdots            & \vdots  & \ddots & \vdots  \\
            w_{U,1} & w_{U,2} & \ldots  & 0                \\
        \end{bmatrix},
        \text{ where } W \in [0,1]^{U\times U}.
    \end{equation*}
}

\begin{document}
    \insertTableMybox
    %\sbox0{\insertTableMybox} % <- not working
    \fbox{\begin{minipage}{\wd0}
        bla 
    \end{minipage}}
\end{document}

答案1

\documentclass{article}
\usepackage{mathtools,varwidth}
\newsavebox\myBox
\newcommand\insertTableMybox{%
  \varwidth{\linewidth}
    \[
    W =
    \begin{bmatrix}
    0                 & w_{1,2} & \ldots & w_{1,U} \\
    w_{2,1}           & 0       & \ldots & w_{2,U} \\
    \vdots            & \vdots  & \ddots & \vdots  \\
    w_{U,1} & w_{U,2} & \ldots  & 0                \\
    \end{bmatrix},
    \text{ where } W \in [0,1]^{U\times U}.
    \]
\endvarwidth
}

\begin{document}
    \insertTableMybox

    \fbox{\insertTableMybox}

    \sbox\myBox{\insertTableMybox}  \the\wd\myBox

\end{document}

答案2

类似于\sbox\mbox其内容为水平 (LR) 模式,因此不能显示方程式之类的内容。您可以将minipage包含方程式的 放入框中,但其宽度就是您为小页面指定的宽度。

要装箱显示,请参见\boxed中的命令amsmath

答案3

如果您想要的只是测量方程的宽度,请使用内联数学模式\displaystyle;无需启动显示数学模式。

\documentclass{article}

\usepackage{mathtools}

\newcommand{\insertTableMybox}{}
\renewcommand{\insertTableMybox}{%
  W =
  \begin{bmatrix}
  0                 & w_{1,2} & \ldots & w_{1,U} \\
  w_{2,1}           & 0       & \ldots & w_{2,U} \\
  \vdots            & \vdots  & \ddots & \vdots  \\
  w_{U,1} & w_{U,2} & \ldots  & 0                \\
  \end{bmatrix},
  \text{ where } W \in [0,1]^{U\times U}.
}

\begin{document}
\begin{gather*}
\insertTableMybox
\\
\sbox0{$\displaystyle\insertTableMybox$}%
\fbox{%
  \begin{minipage}{\dimexpr\wd0-2\fboxsep-2\fboxrule}
  bla 
  \end{minipage}%
}
\end{gather*}
\end{document}

在此处输入图片描述

相关内容