如果我想知道文本的宽度,我使用
\settowidth{\MyLength}{bla}.
方程式中有类似的东西吗?
更具体地说,我有
\begin{align}
a & b & c & d\\
c & d & c & d
\end{align}
我想要知道这个align
部分的宽度。我该如何获取呢?
答案1
人们可以得到“等式”各部分宽度的总和,因为对齐组之间的间距是动态计算的并且不存储在任何地方。
列宽以特殊格式存储在宏中\maxcolumn@widths
,当条件为假时,该格式在构造结束时可用\ifmeasuring@
。格式为
\or <dimen1> \or <dimen2> \or ...
其中每个<dimen>
是相应列的最大宽度(align
构建rlrl...
对齐)。
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\newcommand{\settowidthofalign}[2]{%
\setbox\z@=\vbox{
\begin{align*}
#2
\ifmeasuring@\else\global\let\got@maxcolwd\maxcolumn@widths\fi
\end{align*}
}%
\begingroup
\def\or{+}\edef\x{\endgroup#1=\dimexpr\got@maxcolwd\relax}\x}
\makeatother
\newlength{\mylen}
\begin{document}
\settowidthofalign{\mylen}{
a & b & c & d\\
c & d & c & d
}
\the\mylen
\end{document}
一可能除此之外,还计算了从左到右实际使用的水平空间。