왜 \setlength가 프리앰블에서 작동하지 않나요?

왜 \setlength가 프리앰블에서 작동하지 않나요?

이것이 내가 하는 일이다:

\documentclass{article}
\usepackage{calc}
\newcommand{\foo}{0}
\setlength{\foo}{2in + 3in}
\usepackage[paperwidth=\foo,paperheight=\foo]{geometry}
\begin{document}
Hello, world!
\end{document}

나는 얻는다 :

! LaTeX Error: Missing \begin{document}.

뭐가 문제 야?

답변1

다음과 같은 전체 오류 메시지를 표시하지 않았습니다.

 ! LaTeX Error: Missing \begin{document}.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              
                                                  
l.4 \setlength{\foo}{2in + 3in}

길이 매개변수로 간주 되므로 이를 정의하는 데 \foo사용하면 안 됩니다 . \newcommand대신 \newlength. 확실히 다음 코드는 잘 컴파일됩니다.

\documentclass{article}
\usepackage{calc}
\newlength{\foo}
\setlength{\foo}{2in + 3in}
\usepackage[paperwidth=\foo,paperheight=\foo]{geometry}
\begin{document}
Hello, world!
\end{document}

관련 정보