在支持 Unicode 的系统中,图形标题中包含俄语

在支持 Unicode 的系统中,图形标题中包含俄语

当我尝试编译以下文档时,标题包似乎将标题文本转换为\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

更新:这与\tableofcontents 与 lualatex 的编码问题

答案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}

相关内容