当我尝试编译以下文档时,标题包似乎将标题文本转换为\cyr..
序列,而 fontspec 无法理解它们。是否有可能以某种方式解决这个问题,而无需回到 8 字节内部编码?
\documentclass[11pt]{article}
\usepackage{fontspec}
\usepackage[english,russian]{babel}
\setmainfont{Arial} %anything will do
\begin{document}
Надпись на русском.
\begin{figure}
\caption{Это надпись} %if you comment this document compiles
\end{figure}
\end{document}
这是错误字符串
! Undefined control sequence.
\figurename ->{\cyr \CYRR
\cyri \cyrs .}
l.9 \caption{Это надпись}
%if you comment this document compiles
答案1
看来 babel 俄语文件不需要 xetex 原生 utf8。
可能最简单的事情就是读取 OT2 编码文件向后用 Unicode 代码点来定义\cyr...
命令,而不是反过来。这会产生以下结果。抱歉,我看不懂脚本,所以我不知道这是否正确(如果不正确,我会修复或删除此答案)
\documentclass[11pt]{article}
\usepackage{fontspec}
\usepackage[english,russian]{babel}
\setmainfont{Arial} %anything will do
\begingroup
\def\DeclareUnicodeCharacter#1#2{\setunicode{#1}#2!!}%
\def\setunicode#1#2#3!!{%
\ifx\undefined#2%
\gdef#2{\char"#1 }%
\fi}
\input{ot2enc.dfu}
\endgroup
\begin{document}
Надпись на русском.
\begin{figure}
\caption{Это надпись} %if you comment this document compiles
\end{figure}
\end{document}