Задача
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 \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
также работает, как и ожидалось. Ошибка возникает при записи файла, не при чтении стенографического ввода)