Проблема
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}
Сообщение об ошибке
При компиляции с использованием pdflatex mini
это дает ошибку
Файл завершился при сканировании использования
\UTFviii@three@octets
.
Другая ошибка возникает, когда единственное вхождение é
выше заменяется чем-то другим, например é */
:
Ошибка пакета inputenc: Unicode char
\u8:###
не настроен для использования с LaTeX.
- указывая, что в этом случае LaTeX успешно читает многобайтовый символ UTF-8, но не знает, что с ним делать (т.е. это неправильный символ).
Фактически, когда я открываю созданный .test
файл вручную, он содержит символ é
, но в кодировке Latin-1!
Доказательство: когда я открываю файлы в шестнадцатеричном редакторе, я получаю следующее:
- Исходный файл:
C3 A9
(соответствует СТРОЧНОЙ ЛАТИНСКОЙ БУКВЕ E С ОСТРЫМ в UTF-8) - Письменный файл:
E9
(соответствуетé
на латинице-1)
Вопрос
Как правильно настроить VerbatimOut
?
filecontents*
(от «filecontents») показывает, что это может работать. К сожалению, я не понимаю ни один из этих кодов, поэтому я не могу исправить код fancyvrb, реплицируя логику из содержимого файлов вручную.
Я также не могу использовать filecontents*
вместо VerbatimOut
, потому что первый не работает с \newenvironment
, а второй работает.
(О, кстати: vanilla Verbatim
вместо VerbatimOut
также работает должным образом. Кажется, ошибка возникает при записи файла, нет при чтении дословного ввода)