Como usar \ input dentro de \ setlength?
Aug 30 2020
Estou tentando isso:
\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}
Mas estou conseguindo:
! Missing number, treated as zero.
<to be read again>
\let
l.5 \setlength{\foo}{2in * \zzz}
Como consertar isto?
Respostas
3 JosephWright Aug 30 2020 at 15:13
O \inputcomando LaTeX não é expansível: isso se deve em parte ao fato de que ele faz uma verificação 'segura' para a existência de um arquivo, e em parte devido ao suporte às sintaxes primitivas TeX ( \input <file> ) e LaTeX ( \input{<file>}). Isso significa que se você deseja trabalhar por expansão, como você faz aqui, você precisa usar o primitivo
\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}
Você precisará certificar-se de que seu arquivo de entrada não \parcontém um token: adicionei um exemplo usando um caractere de comentário.
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?