Como converter \input{} em texto simples?

Como converter \input{} em texto simples?

Isto é o que eu tenho ( a.txtcontém http://www.google.com):

\documentclass{article}
\newcommand\myurl{\input{a.txt}}
\usepackage{qrcode}
\begin{document}
\qrcode{\myurl}
\end{document}

Não funciona. No entanto, este funciona:

\documentclass{article}
\newcommand\myurl{http://www.google.com}
\usepackage{qrcode}
\begin{document}
\qrcode{\myurl}
\end{document}

Como posso converter o que vem disso \inputem texto simples para não confundir qrcode?

Responder1

O comando de entrada primitivo é expansível, então provavelmente você pode fazer

\documentclass{article}

\usepackage{qrcode}

\begin{document}
\makeatletter
\everyeof{\noexpand}
\edef\blah{\@@input a.txt }
\makeatother

\qrcode{\blah}

\end{document}

insira a descrição da imagem aqui

Responder2

Você pode usar catchfile:

\begin{filecontents*}{\jobname.link}
http://www.google.com
\end{filecontents*}

\documentclass{article}
\usepackage{catchfile}
\usepackage{qrcode}

\CatchFileDef\myurl{\jobname.link}{\endlinechar=-1 }

\begin{document}

X\myurl X

\qrcode{\myurl}
\end{document}

insira a descrição da imagem aqui

Verifiquei o QRcode e contém o link desejado. O uso de filecontentsé apenas para tornar o exemplo independente e não atrapalhar meus arquivos.

informação relacionada