\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}

関連情報