Ich versuche Folgendes:
\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?
Antwort1
Der LaTeX \input
-Befehl ist nicht erweiterbar: Dies liegt zum Teil daran, dass er eine „sichere“ Prüfung auf die Existenz einer Datei durchführt, und zum Teil daran, dass er sowohl die TeX-Syntax primitive ( \input <file>
) als auch die LaTeX ( \input{<file>}
) unterstützt. Das bedeutet, dass Sie, wenn Sie wie hier mit Erweiterung arbeiten möchten, das primitive
\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 \par
Token enthält: Ich habe ein Beispiel mit einem Kommentarzeichen hinzugefügt.