在fancyvrb的VerbatimOut中使用Unicode

Kon*_*lph 7 unicode latex verbatim

问题

VerbatimOut 来自"fancyvrb"包不能很好地使用UTF-8字符.

最小的工作示例:

\documentclass{minimal}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fancyvrb}

\begin{document}
\begin{VerbatimOut}{\jobname.test}
é
\end{VerbatimOut}

\input{\jobname.test}
\end{document}
Run Code Online (Sandbox Code Playgroud)

错误信息

使用时编译pdflatex mini,这会给出错误

扫描使用时文件结束\UTFviii@three@octets.

é上面的唯一出现被其他东西替换时会发生不同的错误,例如é */:

包inputenc错误:Unicode char \u8:###未设置为与LaTeX一起使用.

- 表示在这种情况下,LaTeX成功读取多字节UTF-8字符,但不知道如何处理它(即它是错误的字符).

事实上,当我.test手动打开生成的文件时,它包含字符é,但是使用Latin-1编码!

证明:当我在十六进制编辑器中打开文件时,我得到以下内容:

  • 原始文件:( C3 A9对应于带有UTF-8急性的拉丁文小写字母E)
  • 书面文件:( E9对应é于Latin-1)

如何VerbatimOut正确设置?

filecontents*(来自"filecontents")表明它可以工作.不幸的是,我不明白这两个代码所以我无法通过手动复制filecontents中的逻辑来修复fancyvrb的代码.

我也不能使用filecontents*而不是VerbatimOut因为前者不能在a内工作\newenvironment,而后者则不能.

(哦,顺便说一句:vanilla Verbatim而不是VerbatimOut也按预期工作.编写文件时似乎发生错误,而不是在读取逐字输入时)

Ste*_*joa 4

您的最终目标是逐字书写符号和重音符号吗?因为你可以这样做:

\documentclass{article}
\usepackage{fancyvrb}
\begin{document}
\begin{Verbatim}[commandchars=\\\{\}]
\'{e} \~{e} \`{e} \^{e}
\end{Verbatim}
\end{document}
Run Code Online (Sandbox Code Playgroud)

命令字符选项允许\ { }字符像平常一样工作。

资料来源:http ://ctan.mirror.garr.it/mirrors/CTAN/macros/latex/contrib/fancyvrb/fancyvrb.pdf