Этот код прекрасно компилируется с lualatex, xelatex и pdflatex:
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{VerbatimOut}{x.txt}
^^_
\end{VerbatimOut}
\end{document}
Однако этот пример компилируется только с pdflatex и не работает с lualatex и xelatex:
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\openin 15=x.txt
\ifeof 15
\begin{VerbatimOut}{x.txt}
^^_
\end{VerbatimOut}
\fi
\end{document}
Вот что я получаю:
! Text line contains an invalid character.
l.7 ^^_
Как мне заставить его скомпилироваться с помощьювселатексы?
решение1
Ну, у вас тут небольшая проблема. ^^_
недопустимый ввод в luatex, и если он его увидит, то пожалуется. Проблема не в \VerbatimOut
, а в том, что если он x.txt
уже существует, вы находитесь в ложной ветке, luatex пропускает содержимое, но тем не менее видит ^^_
.
Например, вот это компилируется без проблем:
\documentclass{article}
\begin{document}
{
\iftrue
\catcode`\^=11
\catcode`\_=11
^^_
\fi
}
\end{document}
но если вы измените \iffalse
его, ошибки
\documentclass{article}
\begin{document}
{
\iffalse
\catcode`\^=11
\catcode`\_=11
^^_
\fi
}
\end{document}
А в вашем примере и запись, и проверка файла работают:
\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{VerbatimOut}{x.txt}
^^_
\end{VerbatimOut}
\openin 15=x.txt
\ifeof 15
aaa
\fi
\end{document}
но как только вы замените aaa
его ^^_
ошибками. Так что вам придется избегать такого ввода в ложных ветвях.