utf8 문서 인코딩을 사용하더라도 pdflatex가 toc-file \cyr-commands에 쓰는 이유는 무엇입니까?

utf8 문서 인코딩을 사용하더라도 pdflatex가 toc-file \cyr-commands에 쓰는 이유는 무엇입니까?

일반 키릴 문자 대신 문서 인코딩을 pdflatex사용 하더라도 toc-file 명령 lualatex에 쓰는 이유는 무엇입니까 ? 그것을 방지하는 방법? 나는 명령을 재정의하는 솔루션에 관심이 있습니다 . 재정의했지만 결과가 없습니다.\cyrutf8book.cls\addcontentsline{toc}{part}{\unexpanded\expandafter{{#1}}}%

% !TeX program = pdflatex
% !TeX encoding = utf8
% !TeX spellcheck = uk_UA
% !BIB program = bibtex8

\documentclass[12pt]{book}

\usepackage[a4paper]{geometry}

\usepackage[utf8]{inputenc}
\usepackage[T2A,T1]{fontenc}
\usepackage[ukrainian]{babel}

\usepackage{indentfirst}
\usepackage{misccorr}

\makeatletter
\def\@part[#1]#2{%
    \thispagestyle{empty}
    \addcontentsline{toc}{part}{\unexpanded\expandafter{{#1}}}%
    {\centering
        \interlinepenalty \@M
        \normalfont
        \Huge \sffamily\bfseries #1\par}%
    \@endpart
}
\makeatother

\begin{document}
\tableofcontents
\part{Перша}

іва
\part{Друга}
іфавіфав
\end{document}

Toc처럼 보인다

\select@language {ukrainian}
\contentsline {part}{{\IeC {\CYRP }\IeC {\cyre }\IeC {\cyrr }\IeC {\cyrsh }\IeC {\cyra }}}{3}
\contentsline {part}{{\IeC {\CYRD }\IeC {\cyrr }\IeC {\cyru }\IeC {\cyrg }\IeC {\cyra }}}{7}

답변1

로 시도해 볼 수 있습니다 \detokenize.

와 함께 사용하려면 와 의 패치가 hyperref모두 필요합니다 .\texorpdfstring\phantomsection\@part

\documentclass[12pt]{book}

\usepackage[a4paper]{geometry}

\usepackage[T2A,T1]{fontenc}

\usepackage[utf8]{inputenc}

\usepackage[ukrainian]{babel}

\usepackage{indentfirst}
\usepackage{misccorr}

% update for hyperref compatibility

\makeatletter
\def\@part[#1]#2{%
    \thispagestyle{empty}%
    \phantomsection
    \addcontentsline{toc}{part}{\texorpdfstring{\detokenize{#1}}{#1}}%
    {\centering
        \interlinepenalty \@M
        \normalfont
        \Huge \sffamily\bfseries #1\par
    }%
    \@endpart
}
\makeatother

\usepackage[pdfencoding=auto]{hyperref}

\begin{document}
\tableofcontents
\part{Перша}

іва
\part{Друга}
іфавіфав
\end{document}

TOC 파일의 내용:

\select@language {ukrainian}
\contentsline {part}{Перша}{3}
\contentsline {part}{Друга}{7}

그리고 hyperref:

\select@language {ukrainian}
\contentsline {part}{Перша}{3}{section*.2}
\contentsline {part}{Друга}{7}{section*.3}

답변2

원칙적으로 문서의 적어도 다른 부분은 다른 입력 인코딩을 사용할 수 있으므로 메커니즘은 항상 인코딩 중립 LICRASCII 마크업으로 보조 파일을 작성하도록 설계되었습니다.

실제로 UTF-8을 사용하는 경우 전체 문서에 단일 인코딩이 사용되지만 LaTeX의 UTF-8 및 UTF-8 지원은 toc 파일에 대한 인코딩 지원 설계보다 몇 년 더 젊습니다.

관련 정보