จะใช้ \ input inside \ setlength ได้อย่างไร?
Aug 30 2020
ฉันกำลังลองสิ่งนี้:
\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}
แต่ฉันได้รับ:
! Missing number, treated as zero.
<to be read again>
\let
l.5 \setlength{\foo}{2in * \zzz}
จะแก้ไขได้อย่างไร?
คำตอบ
3 JosephWright Aug 30 2020 at 15:13
\inputคำสั่งLaTeX ไม่สามารถขยายได้ส่วนหนึ่งเป็นเพราะการตรวจสอบ 'ปลอดภัย' สำหรับการมีอยู่ของไฟล์และส่วนหนึ่งเป็นผลมาจากการสนับสนุนทั้งไวยากรณ์TeX primitive ( \input <file> ) และ LaTeX ( \input{<file>}) ซึ่งหมายความว่าหากคุณต้องการทำงานโดยการขยายตัวเช่นเดียวกับที่คุณทำที่นี่คุณต้องใช้แบบดั้งเดิม
\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}
คุณจะต้องตรวจสอบให้แน่ใจว่าไฟล์อินพุตของคุณไม่มี\parโทเค็นอยู่ในนั้นฉันได้เพิ่มตัวอย่างโดยใช้อักขระความคิดเห็น