우크라이나어 폴리글로시아는 Cleveref 패키지와 친구를 사귀지 않습니다.

우크라이나어 폴리글로시아는 Cleveref 패키지와 친구를 사귀지 않습니다.

다음 설정이 있습니다.

% !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 명령에 의존하기 때문에 유니코드에서 직접 작동하지 않습니다 . 그러나 파일을 활용하여 변환을 수행할 수 있지만 그 반대는 가능합니다. 저는 간단한 문자만 정의합니다.\cyra\CYRAt2aenc.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}

무시됩니다. 두 번째 인수가 \cyr...또는 인 인수만 \CYR...고려됩니다.

여기에 이미지 설명을 입력하세요

관련 정보