Este código compila perfeitamente com lualatex, xelatex e pdflatex:
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{VerbatimOut}{x.txt}
^^_
\end{VerbatimOut}
\end{document}
Porém, este compila apenas com pdflatex e falha com lualatex e xelatex:
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\openin 15=x.txt
\ifeof 15
\begin{VerbatimOut}{x.txt}
^^_
\end{VerbatimOut}
\fi
\end{document}
Isto é o que estou recebendo:
! Text line contains an invalid character.
l.7 ^^_
Como faço para compilar comtodoslátex?
Responder1
Bem, você tem um pequeno problema aqui. ^^_
é uma entrada inválida em luatex e se ele vir, irá reclamar. O problema não é o \VerbatimOut
, mas se x.txt
já existir você está em uma ramificação falsa, o luatex pula o conteúdo, mas mesmo assim vê o ^^_
.
Por exemplo, isso aqui compila sem problemas:
\documentclass{article}
\begin{document}
{
\iftrue
\catcode`\^=11
\catcode`\_=11
^^_
\fi
}
\end{document}
mas se você mudar para \iffalse
isso, erros
\documentclass{article}
\begin{document}
{
\iffalse
\catcode`\^=11
\catcode`\_=11
^^_
\fi
}
\end{document}
E no seu exemplo tanto a gravação quanto a verificação do arquivo funcionam:
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{VerbatimOut}{x.txt}
^^_
\end{VerbatimOut}
\openin 15=x.txt
\ifeof 15
aaa
\fi
\end{document}
mas assim que você substituir os erros aaa
por ele. ^^_
Portanto, você terá que evitar tal entrada em ramificações falsas.