为什么 \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}

相关内容