该代码可以与 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
用^^_
它替换,就会出现错误。因此,你必须避免在错误分支中输入此类信息。