Por que não consigo multiplicar o tamanho por um número inteiro no cálculo?

Por que não consigo multiplicar o tamanho por um número inteiro no cálculo?

Isso é o que estou fazendo:

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

Estou entendendo:

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

Como fazer certo?

Responder1

A ordem dos argumentos da \setlengthinstrução é importante. Seu código tem

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

O TeX começa com um número escalar (5) e é instruído a multiplicá-lo por um comprimento (2 pol.). Tais alterações de tipo instantâneas - aqui: de escalar para variável de comprimento - não são permitidas.

Em contraste, a sintaxe da expressão

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

é perfeitamente aceitável, pois o TeX começa com um comprimento (2in) e o multiplica por um escalar (5), resultando em outro comprimento (10in).

Responder2

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

informação relacionada