![\setlength 안에서 \input을 어떻게 사용하나요?](https://rvso.com/image/420026/%5Csetlength%20%EC%95%88%EC%97%90%EC%84%9C%20%5Cinput%EC%9D%84%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%EC%82%AC%EC%9A%A9%ED%95%98%EB%82%98%EC%9A%94%3F.png)
나는 이것을 시도하고 있습니다 :
\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}
이 문제를 해결하는 방법은 무엇입니까?
답변1
LaTeX \input
명령은 확장할 수 없습니다. 이는 파일 존재 여부를 '안전하게' 확인한다는 사실과 TeX 기본( \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
. 주석 문자를 사용하여 예제를 추가했습니다.