Perché \ setlength non funziona nel preambolo?

Aug 30 2020

Questo è quello che sto facendo:

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

Sto ottenendo:

! LaTeX Error: Missing \begin{document}.

Cosa c'è che non va?

Risposte

6 Mico Aug 30 2020 at 14:29

Non hai mostrato il messaggio di errore completo, che è:

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

Poiché \foodovrebbe essere un parametro di lunghezza, non è necessario utilizzarlo \newcommandper definirlo. Invece, usa \newlength. Di sicuro, il seguente codice viene compilato correttamente:

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