Ich habe folgendes Setup:
% !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}
Es treten die folgenden Fehler auf:
polycref.tex|27 error| Undefined control sequence.
polycref.tex|27 error| Undefined control sequence.
polycref.tex|27 error| Undefined control sequence.
Wenn ich die Hauptsprache auf Englisch einstelle, funktioniert es wie vorgesehen. Wie kann ich das Problem beheben? Ich habe versucht, eine Antwort auf Texdoc zu finden, aber es hat nicht geholfen.
Antwort1
Am besten laden Sie zuerst die Pakete und führen dann das Setup durch.
Leider cleveref
funktioniert Ukrainisch nicht direkt mit Unicode, da es auf LICR-Befehlen wie usw. basiert \cyra
. \CYRA
Wir können die Konvertierung jedoch mithilfe der t2aenc.dfu
Datei durchführen, allerdings in umgekehrter Reihenfolge. Ich definiere nur die einfachen Zeichen.
\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}
Eine typische Zeile in t2aenc.dfu
hat die Form
\DeclareUnicodeCharacter{0401}{\CYRYO}
also definiere ich \CYRYO
es als das Zeichen an Position U+0401, mit freundlicher Genehmigung von \char_generate:nn
. Zeilen wie
\DeclareUnicodeCharacter{0400}{\@tabacckludge`\CYRE}
werden ignoriert: nur diejenigen, bei denen das zweite Argument entweder \cyr...
oder ist \CYR...
, werden berücksichtigt.