이것이 내가 하는 일이다:
\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}