Wie verwende ich \ input inside \ setlength?

Aug 30 2020

Ich versuche das:

\documentclass{article}
\usepackage{calc}
\newlength{\foo}
\newcommand{\zzz}{\input{size.txt}}
\setlength{\foo}{2in * \zzz}
\usepackage[paperwidth=\foo,paperheight=\foo]{geometry}
\begin{document}
\end{document}

Aber ich bekomme:

! Missing number, treated as zero.
<to be read again>
                   \let
l.5 \setlength{\foo}{2in * \zzz}

Wie kann ich das beheben?

Antworten

3 JosephWright Aug 30 2020 at 15:13

Der LaTeX- \inputBefehl ist nicht erweiterbar: Dies liegt zum einen daran, dass er die Existenz einer Datei sicher überprüft, und zum anderen daran, dass sowohl die TeX-Primitiv- ( \input <file> ) als auch die LaTeX- \input{<file>}Syntax ( ) unterstützt werden. Dies bedeutet, dass Sie das Grundelement verwenden müssen, wenn Sie wie hier durch Erweiterung arbeiten möchten

\begin{filecontents*}[overwrite]{size.txt}
5%
\end{filecontents*}
\documentclass{article}
\usepackage{calc}
\newlength{\foo}
\makeatletter
\let\primitiveinput\@@input
\makeatother
\newcommand{\zzz}{\primitiveinput size.txt }
\setlength{\foo}{2in * \zzz}
\usepackage[paperwidth=\foo,paperheight=\foo]{geometry}
\begin{document}
\end{document}

Sie müssen sicherstellen, dass Ihre Eingabedatei kein \parToken enthält: Ich habe ein Beispiel mit einem Kommentarzeichen hinzugefügt.