次の設定があります:
% !TeX program = lualatex
\documentclass[11pt]{report}
\usepackage{polyglossia}
\setmainfont{CMU Serif}
\setsansfont{CMU Sans Serif}
\setmonofont{CMU Typewriter Text}
\setmainlanguage{Ukrainian}
\setotherlanguages{english, russian}
\usepackage[demo]{graphicx}
\usepackage{hyperref}
\usepackage{cleveref}
\begin{document}
\begin{figure}[tbp]
\centering
\includegraphics{file}
\caption{caption}
\label{fig:tag}
\end{figure}
На \cref{fig:tag} зображено чорний квадрат.
\end{document}
次のエラーが発生します:
polycref.tex|27 error| Undefined control sequence.
polycref.tex|27 error| Undefined control sequence.
polycref.tex|27 error| Undefined control sequence.
メイン言語を英語に設定すると、意図したとおりに動作します。どうすれば修正できますか? texdoc で回答を見つけようとしましたが、役に立ちませんでした。
答え1
最初にパッケージをロードしてからセットアップを行うのが最適です。
残念ながら、ウクライナ語は、cleveref
などの LICR コマンドに依存しているため、Unicode と直接連携しません。ただし、ファイルを利用して逆の変換を行うことはできます。ここでは単純な文字のみを定義します。\cyra
\CYRA
t2aenc.dfu
\documentclass[11pt]{report}
\usepackage{polyglossia}
\usepackage{hyperref}
\usepackage[ukrainian]{cleveref}
\setmainlanguage{ukrainian}
\setotherlanguages{english, russian}
\setmainfont{CMU Serif}
\setsansfont{CMU Sans Serif}
\setmonofont{CMU Typewriter Text}
% convert \cyr... and \CYR... to Unicode
\ExplSyntaxOn
\group_begin:
\cs_set:Npn \DeclareUnicodeCharacter #1 #2
{
\bool_lazy_or:nnT
{ \str_if_eq_p:ee { cyr } { \str_range:nnn { #2 } { 2 } { 4 } } }% \cyr...
{ \str_if_eq_p:ee { CYR } { \str_range:nnn { #2 } { 2 } { 4 } } }% \CYR...
{ \cs_gset:Npe #2 { \char_generate:nn { "#1 } { 11 } } }
}
\file_input:n { t2aenc.dfu }
\group_end:
\ExplSyntaxOff
\begin{document}
\begin{figure}[tbp]
\centering
\fbox{This is a figure}
\caption{caption}
\label{fig:tag}
\end{figure}
На \cref{fig:tag} зображено чорний квадрат.
\end{document}
の典型的な行はt2aenc.dfu
次の形式になります。
\DeclareUnicodeCharacter{0401}{\CYRYO}
\CYRYO
そこで、を の位置 U+0401 にある文字として定義します\char_generate:nn
。
\DeclareUnicodeCharacter{0400}{\@tabacckludge`\CYRE}
は無視されます。2 番目の引数が または であるものだけ\cyr...
が\CYR...
考慮されます。