此程式碼可以很好地與 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
錯誤^^_
。因此,您必須避免在錯誤分支中進行此類輸入。