我正在尝试medmuskip
使用时进行更改mathtools
:
\documentclass{article}
\usepackage{mathtools}
\setlength{\medmuskip}{0mu}
\begin{document}
\end{document}
但这会导致错误:
! Illegal unit of measure (pt inserted).
<to be read again>
m
l.3 \setlength{\medmuskip}{0mu}
即使没有数学工具,这个也可以工作。
为什么?我应该怎么做才能改变medmuskip
?
答案1
按照通常的定义,\setlength{<parameter>}{<value>}
它只是
<parameter>=<value>\relax
所以
\setlength{\medmuskip}{0mu}
是合法的,因为它可以转化为
\medmuskip=0mu\relax
这是完全合法的,因为\medmuskip
应该只以mu
单位分配值(对于和部分也包括fil
、fill
或filll
单位)。plus
minus
然而,当calc
加载时(这是所要求的mathtools
),\setlength
含义会发生变化,并且不再允许使用 mu 单位,因为calc
仅面向标准长度。
除了自己定义一个包装器之外,你没有什么可以做的:
\newcommand{\setmuskip}[2]{#1=#2\relax}
并做
\setmuskip{\medmuskip}{0mu}
或者说
\setmuskip{\medmuskip}{4mu plus 2mu minus 4mu}
(这是默认值)。