I'm trying to change medmuskip while using mathtools:


But this results in an error:

! Illegal unit of measure (pt inserted).
<to be read again>
l.3 \setlength{\medmuskip}{0mu}

Without mathtools, this works.

Why and what should I do to be able to change medmuskip?

  • Probably not really helpful, but if I put \setlength{\medmuskip}{0mu} before \usepackage{mathtools}, it works for me.
    – MaxD
    Jul 6 '14 at 13:21

With the usual definition, \setlength{<parameter>}{<value>} is just a wrapper for




is legal, because it translates to


which is perfectly legal, as \medmuskip should be assigned values only in mu units (also fil, fill or filll units for the plus and minus parts).

However, when calc is loaded (it's required by mathtools), \setlength changes meaning and mu units are not allowed any more, because calc is oriented to standard lengths only.

There's not much you can do about it other than defining a wrapper yourself:


and do


or, say

\setmuskip{\medmuskip}{4mu plus 2mu minus 4mu}

(which is the default).

  • Nice! So in this case, why not use only \medmuskip=0mu\relax? What is the advantage using a new command?
    – Sigur
    Jul 6 '14 at 14:02
  • 3
    @Sigur Uniformity of syntax.
    – egreg
    Jul 6 '14 at 14:02
  • @egreg A minor detail, but \medmuskip is 4mu plus 2mu minus 4mu by default (at least according to Section 11.1 in Math mode – v. 2.47).
    – tanh
    Jan 12 '16 at 15:59

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.