這就是我正在做的:
\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}