なぜ 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) から始まり、それを長さ (2in) で乗算するように指示されます。このようなオンザフライの型変更 (ここではスカラーから長さ変数への変更) は許可されません。

対照的に、式の構文は

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

これは完全に受け入れられます。TeX は長さ (2in) から始めて、それをスカラー (5) で乗算し、別の長さ (10in) を生成します。

答え2

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

関連情報