Почему я не могу умножить размер на целое число в calc?

Почему я не могу умножить размер на целое число в calc?

Вот что я делаю:

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

Я получаю:

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

Как это сделать правильно?

решение1

Порядок аргументов инструкции \setlengthимеет значение. Ваш код имеет

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

TeX начинает со скалярного числа (5) и получает указание умножить его на длину (2 дюйма). Такие изменения типа на лету — в данном случае: от скаляра к переменной длины — не допускаются.

Напротив, синтаксис выражения

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

вполне приемлемо, так как TeX начинает с длины (2 дюйма) и умножает ее на скаляр (5), в результате чего получается другая длина (10 дюймов).

решение2

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

Связанный контент