Aller au contenu

If you are specifying a length in LaTeX, but do not specify the appropriate units, you will generate the error below:

main.tex, line 5

Illegal unit of measure (pt inserted).

<to be read again> \vskip l.11 \vspace{6} Dimensions can be in units of em, ex, in, pt, pc, cm, mm, dd, cc, nd, nc, bp, or sp; but yours is a new one! I'll assume that you meant to say pt, for printer's points. To recover gracefully from this error, it's best to delete the erroneous units; e.g., type `2' to delete two letters. (See Chapter 27 of The TeXbook.)

See here to learn more about lengths in LaTeX.

Common Causes

Forgetting to include the appropriate unit when specifying a length:

The most common cause of this error is simply forgetting to include a unit when specifying a length in LaTeX. An example of a mistake is shown below

The below image should be 5 centimetres wide

\includegraphics[width=5]{image}

The mistake here is that the the width of the image is written as width=5. LaTeX does not understand whether the image should be five inches, five metres, five millimetres etc. The correct specification is width=5cm. This lets LaTeX know that the image should be five centimetres wide.

Using a unit which is not allowed in LaTeX:

Another common reason this error will appear is if you have used a unit which is not allowed in LaTeX. An example of this is shown below, where it was attempted to specify the image to be one foot wide:

The below image should be one foot wide

\includegraphics[width=1ft]{image}

This will generate an error, as feet are not allowed units in LaTeX. The correct way to write this would be to write the image width as width=12in, which gives a one foot wide image. Below a list of available units in LaTeX:

Abbreviation Value
pt a point is approximately 1/72.27 inch, that means about 0.0138 inch or 0.3515 mm (exactly point is defined as 1/864 of American printer’s foot that is 249/250 of English foot)
mm a millimeter
cm a centimeter
in inch
ex roughly the height of an 'x' (lowercase) in the current font (it depends on the font used)
em roughly the width of an 'M' (uppercase) in the current font (it depends on the font used)
mu math unit equal to 1/18 em, where em is taken from the math symbols family

Having an unexpandable token in the wrong place

The above is actually a case of this. TeX parses lengths as any number of digits followed by an optional dot followed by any number of digits followed by an optional space followed by any valid unit. While TeX searches for a length it expands every expandable token (macro) until it finds the first unexpandable token.

Having a linebreak \\ followed by square brackets:

If a linebreak command \\ is ever followed by square brackets [...], it will be taken as an optional argument, and thus a number with a unit will be expected inside the square brackets This is even true if there is whitespace and newlines between the \\ and [...] commands. This problem often appears in tables, as shown below:

\begin{tabular}{c|c}
    [t] & s\\
    [I] & A\\
    [m] & kg
\end{tabular}

This will generate an error, as on the third line, we have a linebreak followed by squared brackets. LaTeX expects a number with a unit inside the square brackets, but instead finds x. The correct way to write the above table is to include the square brackets inside curly braces {...} as shown below or, if the grouping effects of the braces is undesirable, to put a \relax before it:

\begin{tabular}{c|c}
    [t] &  s\\
    {[I]} & A\\\relax
    [m] & kg
\end{tabular}

Using the subfigure package:

The subfigure package is long outdated, and will generate a 'Illegal unit of measure' error when there is no error present. An example of this is shown below:

% In your preamble
\usepackage{subfigure}

% In the body of your document
\begin{figure}
    \centering
    \begin{subfigure}[b]{0.3\textwidth}
        \includegraphics[scale=0.2]{image}
        \caption{A gull}
        \label{fig:gull}
    \end{subfigure}%
\end{figure}

This will generate an error, as the subfigure package does not recognise \textwidth as containg a unit, when it is in fact a predefined measurement (equivalent to the constant width of the total text block on a page). The way to resolve this is to use the more updated subcaption package, which has replaced subfigure. Writing the same code as above with \usepackage{subcaption} in the preamble instead of \usepackage{subfigure} will give the desired result without any error.

Overleaf guides

LaTeX Basics

Mathematics

Figures and tables

References and Citations

Languages

Document structure

Formatting

Fonts

Presentations

Commands

Field specific

Class files

Advanced TeX/LaTeX