\ Setlength içinde \ input nasıl kullanılır?

Aug 30 2020

Bunu deniyorum:

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

Ama alıyorum:

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

Bunu nasıl düzeltebilirim?

Yanıtlar

3 JosephWright Aug 30 2020 at 15:13

LaTeX \inputkomutu genişletilemez: bu kısmen bir dosyanın varlığını 'güvenli' kontrol etmesinden ve kısmen de hem TeX primitive ( \input <file> ) hem de LaTeX ( \input{<file>}) sözdizimlerini desteklemesinden kaynaklanmaktadır . Bu, burada yaptığınız gibi, genişleyerek çalışmak istiyorsanız, ilkel olanı kullanmanız gerektiği anlamına gelir.

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

Giriş dosyanızın içinde bir \parsimge olmadığından emin olmanız gerekir : Bir yorum karakteri kullanarak bir örnek ekledim.