
¿Por qué pdflatex
(pero no lualatex
) escribe en comandos toc-file \cyr
incluso con utf8
codificación de documento en lugar de letras cirílicas normales? ¿Cómo prevenirlo? Estoy interesado en una solución con redefinición book.cls
de comandos. Redefiní el \addcontentsline{toc}{part}{\unexpanded\expandafter{{#1}}}%
pero no tiene resultado.
% !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
parece
\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}
Respuesta1
Puedes probar con \detokenize
.
Para usar con hyperref
: se necesita tanto de \texorpdfstring
como \phantomsection
en el parche de \@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}
Contenido del archivo toc:
\select@language {ukrainian}
\contentsline {part}{Перша}{3}
\contentsline {part}{Друга}{7}
y con hyperref
:
\select@language {ukrainian}
\contentsline {part}{Перша}{3}{section*.2}
\contentsline {part}{Друга}{7}{section*.3}
Respuesta2
En principio, al menos diferentes partes del documento pueden utilizar diferentes codificaciones de entrada, por lo que el mecanismo fue diseñado para escribir siempre archivos auxiliares en el LICR
marcado ascii neutro de codificación.
En la práctica, especialmente si utiliza UTF-8, se utiliza una única codificación para todo el documento, pero UTF-8 y la compatibilidad con UTF-8 en LaTeX son algunos años más recientes que el diseño de compatibilidad con codificación para archivos toc.