![数学模式下的 \sbox](https://linux22.com/image/324111/%E6%95%B0%E5%AD%A6%E6%A8%A1%E5%BC%8F%E4%B8%8B%E7%9A%84%20%5Csbox.png)
我想提取一个方程的宽度,但是它给出了一个错误。
! 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}