这就是我正在做的事情:
\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 从一个长度(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}