\ setlength 안에 \ input을 사용하는 방법?

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

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토큰 이 없는지 확인해야합니다 . 주석 문자를 사용하여 예제를 추가했습니다.