Warum kann ich in Calc die Größe nicht mit einer ganzen Zahl multiplizieren?

Warum kann ich in Calc die Größe nicht mit einer ganzen Zahl multiplizieren?

Folgendes mache ich:

\documentclass{article}
\usepackage{calc}
\newlength{\foo}
\newcommand{\zzz}{5}
\setlength{\foo}{\zzz * 2in}
\usepackage[paperwidth=\foo,paperheight=\foo]{geometry}
\begin{document}
\end{document}

Ich erhalte:

! Illegal unit of measure (pt inserted).
<to be read again>
                   *
l.5 \setlength{\foo}{\zzz * 2in}

Wie macht man es richtig?

Antwort1

Die Reihenfolge der Argumente der \setlengthAnweisung ist wichtig. Ihr Code hat

\newlength{\foo}
\newcommand{\zzz}{5}
\setlength{\foo}{\zzz * 2in}

TeX beginnt mit einer Skalarzahl (5) und wird angewiesen, diese mit einer Länge (2 Zoll) zu multiplizieren. Solche spontanen Typänderungen – hier: von Skalar zu Längenvariable – sind nicht zulässig.

Im Gegensatz dazu ist die Syntax des Ausdrucks

\setlength{\foo}{2in * \zzz}

ist vollkommen akzeptabel, da TeX mit einer Länge (2 Zoll) beginnt und diese mit einem Skalar (5) multipliziert, was zu einer anderen Länge (10 Zoll) führt.

Antwort2

\documentclass{article}
\usepackage{calc}
\newlength{\foo}
\newcommand{\zzz}{5}
\setlength{\foo}{ 2in * \zzz }
\usepackage[paperwidth=\foo,paperheight=\foo]{geometry}
\begin{document}
\end{document}

verwandte Informationen