VerbatimOut falla con símbolos especiales dentro de if-then-else

VerbatimOut falla con símbolos especiales dentro de if-then-else

Este código se compila perfectamente con lualatex, xelatex y pdflatex:

\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{VerbatimOut}{x.txt}
^^_
\end{VerbatimOut}
\end{document}

Sin embargo, éste se compila sólo con pdflatex y falla con lualatex y xelatex:

\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\openin 15=x.txt
\ifeof 15
\begin{VerbatimOut}{x.txt}
^^_
\end{VerbatimOut}
\fi
\end{document}

Esto es lo que obtengo:

! Text line contains an invalid character.
l.7 ^^_

¿Cómo hago para compilarlo?todo¿látex?

Respuesta1

Bueno, aquí tienes un pequeño problema. ^^_es una entrada no válida en luatex y si la ve, se quejará. El problema no es el \VerbatimOut, sino que si x.txtya existe estás en una rama falsa, luatex se salta el contenido pero aun así ve el ^^_.

Por ejemplo, esto aquí se compila sin problemas:

\documentclass{article}

\begin{document}
{
\iftrue 
\catcode`\^=11
\catcode`\_=11
^^_
\fi
}

\end{document}

pero si le cambias \iffalselos errores

\documentclass{article}

\begin{document}
{
\iffalse 
\catcode`\^=11
\catcode`\_=11
^^_
\fi
}

\end{document}

Y en su ejemplo, tanto la escritura como la verificación del archivo funcionan:

\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{VerbatimOut}{x.txt}
^^_
\end{VerbatimOut}
\openin 15=x.txt
\ifeof 15
aaa
\fi
\end{document}

pero tan pronto como reemplace los aaaerrores ^^_. Por lo tanto, deberá evitar dicha entrada en ramas falsas.

información relacionada