VerbatimOut stürzt bei Sonderzeichen innerhalb von if-then-else ab

VerbatimOut stürzt bei Sonderzeichen innerhalb von if-then-else ab

Dieser Code lässt sich problemlos mit lualatex, xelatex und pdflatex kompilieren:

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

Dieses hier wird jedoch nur mit pdflatex kompiliert und schlägt mit lualatex und xelatex fehl:

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

Das ist, was ich bekomme:

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

Wie kann ich es kompilieren mitalleLatex?

Antwort1

Nun, hier haben Sie ein kleines Problem. ^^_ist eine ungültige Eingabe in Luatex und wenn es diese sieht, wird es sich beschweren. Das Problem ist nicht das \VerbatimOut, sondern dass x.txtSie sich in einem falschen Zweig befinden, wenn es bereits vorhanden ist. Luatex überspringt den Inhalt, sieht aber trotzdem das ^^_.

Beispielsweise lässt sich das hier problemlos kompilieren:

\documentclass{article}

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

\end{document}

aber wenn Sie es ändern \iffalseFehler

\documentclass{article}

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

\end{document}

Und in deinem Beispiel funktioniert sowohl das Schreiben als auch das Prüfen der Datei:

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

aber sobald Sie es aaadurch ^^_es ersetzen, treten Fehler auf. Sie müssen also solche Eingaben in falschen Verzweigungen vermeiden.

verwandte Informationen