\MakeUppercase 在 Xelatex 中不适用于乌克兰语

\MakeUppercase 在 Xelatex 中不适用于乌克兰语

\MakeUppercase仅适用UkrainianXeLaTeX

\documentclass{book}
    \usepackage{titlesec}
    \usepackage[english,russian,ukrainian]{babel}
    \usepackage{xecyr}
    \usepackage{textcase}
    \setmainfont[
      Ligatures=TeX,
      Extension=.otf,
      BoldFont=cmunbx,
      ItalicFont=cmunti,
      BoldItalicFont=cmunbi,
    ]{cmunrm}

\begin{document}
\noindent
\selectlanguage{english}
\MakeUppercase{\chaptertitlename}\\
\selectlanguage{russian}
\MakeUppercase{\chaptertitlename}\\
\selectlanguage{ukrainian}
\MakeUppercase{\chaptertitlename}\\
\MakeTextUppercase{\chaptertitlename}\\
\end{document}

当我添加序言时

\usepackage[T2A,T1]{fontenc}

\MakeUppercase开始。我应该使用fontencXeLaTeX?或者它是 的一个错误,babel或者其他什么?

答案1

俄语模块babel已更新以用于 XeLaTeX,但乌克兰语模块尚未更新。

拥有 Polyglossia 技能,你就比较幸运了。

\documentclass{book}

\usepackage{polyglossia}
\usepackage{fontspec}
\usepackage{textcase}
\usepackage{titlesec}

\setmainlanguage{ukrainian}
\setotherlanguage{english}
\setotherlanguage{russian}

\setmainfont[
  Ligatures=TeX,
  Extension=.otf,
  BoldFont=cmunbx,
  ItalicFont=cmunti,
  BoldItalicFont=cmunbi,
]{cmunrm}


\begin{document}
\noindent
\selectlanguage{english}
\MakeUppercase{\chaptertitlename}

\selectlanguage{russian}
\MakeUppercase{\chaptertitlename}

\selectlanguage{ukrainian}
\MakeUppercase{\chaptertitlename}

\MakeTextUppercase{\chaptertitlename}

\end{document}

在此处输入图片描述

答案2

“传统” LaTeX 中西里尔字母的大小写映射由 定义fontenc。不幸的是,只有在加载一些“已知”编码时才会定义它们,这些编码的列表是硬编码的,不包括 EU1。但它们可以强制使用,例如:

\usepackage[T2A,EU1]{fontenc}    % or X2,LCY..

MWE 似乎有效,但我不确定这个解决方案是否足够通用。是的,babel您必须使用(很可能还有其他基于 LICR 的软件包)fontenc

相关内容