
Warum schreibt pdflatex
(aber nicht lualatex
) Befehle in die TOC- \cyr
Datei, selbst wenn utf8
die Dokumentkodierung statt der normalen kyrillischen Buchstaben verwendet wird? Wie kann ich das verhindern? Ich interessiere mich für eine Lösung mit der Neudefinition book.cls
von Befehlen. Ich habe sie neu definiert, \addcontentsline{toc}{part}{\unexpanded\expandafter{{#1}}}%
aber es hat kein Ergebnis gebracht.
% !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
sieht aus wie
\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}
Antwort1
Sie können es mit versuchen \detokenize
.
Zur Verwendung mit hyperref
: benötigt man sowohl von \texorpdfstring
als auch \phantomsection
im Patch von \@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}
Inhalt der TOC-Datei:
\select@language {ukrainian}
\contentsline {part}{Перша}{3}
\contentsline {part}{Друга}{7}
und mit hyperref
:
\select@language {ukrainian}
\contentsline {part}{Перша}{3}{section*.2}
\contentsline {part}{Друга}{7}{section*.3}
Antwort2
Zumindest prinzipiell können verschiedene Teile des Dokuments unterschiedliche Eingabekodierungen verwenden, daher wurde der Mechanismus so konzipiert, dass Zusatzdateien immer in der kodierungsneutralen LICR
ASCII-Auszeichnung geschrieben werden.
In der Praxis wird, insbesondere wenn Sie UTF-8 verwenden, eine einzige Kodierung für das gesamte Dokument verwendet, aber UTF-8 und die UTF-8-Unterstützung für LaTeX sind einige Jahre jünger als der Entwurf der Kodierungsunterstützung für Inhaltsverzeichnisdateien.