私がやっていることはこれです:
\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}