Tengo la siguiente configuración:
% !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}
Produce los siguientes errores:
polycref.tex|27 error| Undefined control sequence.
polycref.tex|27 error| Undefined control sequence.
polycref.tex|27 error| Undefined control sequence.
Si configuro el idioma principal en inglés, funciona según lo previsto. ¿Como arreglarlo? Intenté encontrar una respuesta en texdoc pero no sirvió de nada.
Respuesta1
Es mejor cargar los paquetes primero y luego realizar la configuración.
Desafortunadamente, sin embargo, cleveref
para Ucraniano no funciona directamente con Unicode, porque depende de comandos LICR como \cyra
, \CYRA
etc. Sin embargo, podemos hacer la conversión explotando el t2aenc.dfu
archivo, pero a la inversa. Sólo defino los personajes simples.
\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}
Una línea típica t2aenc.dfu
tiene la forma
\DeclareUnicodeCharacter{0401}{\CYRYO}
así que lo defino \CYRYO
como el personaje en la posición U+0401, cortesía de \char_generate:nn
. Líneas como
\DeclareUnicodeCharacter{0400}{\@tabacckludge`\CYRE}
se ignoran: sólo se consideran aquellos en los que el segundo argumento es \cyr...
o .\CYR...