setlength 和 settowidth 的不同行为

setlength 和 settowidth 的不同行为

在这个例子中,我期望所有“MMM”都彼此对齐。但事实并非如此:

\documentclass{article}%
\usepackage{amsmath}%
\newcommand{\before}{mmm}%
\newcommand{\after}{MMM}%
\newlength{\myplus}%
\begin{document}%
\begin{multline}%
\settowidth{\myplus}{\before}%
\the\myplus\hfill\\%
\before,\after\hfill\\%
%
\hspace{\myplus},\after\hfill\\%
\hspace*{\myplus},\after\hfill\\%
%
\setlength{\myplus}{25pt}%
\hspace{\myplus},\after\hfill\\%
\hspace*{\myplus},\after\hfill\\%
%
\hspace{25pt},\after\hfill\\%
\hspace*{25pt},\after\hfill\\%
\end{multline}%
\end{document}

尤其是,\mylength25pt即使在 之后表现也会有所不同\setlength{\myplus}{25pt}。此外,settowidth将宽度设置为25pt,但\myplus在此之后表现会有所不同。

这是为什么呢?我该如何结合来实现间距setlength

答案1

您已在本地组中设置了长度,因此在下一行它再次为 0pt,并且您已将其设置为mmm文本字体的宽度,但以数学斜体显示它,

也许你想要

\settowidth{\myplus}{$\before$}%

外面(之前)multline,取决于您的实际使用情况。

相关内容