为什么即使使用文档编码而不是普通西里尔字母,也会写入 toc-file命令pdflatex
(但不会) ?如何防止这种情况发生?我对重新定义命令的解决方案很感兴趣。我重新定义了, 但没有结果。lualatex
\cyr
utf8
book.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
原则上,至少文档的不同部分可以使用不同的输入编码,因此该机制被设计为始终以编码中性的LICR
ascii 标记写入辅助文件。
实际上,特别是当您使用 UTF-8 时,整个文档将使用单一编码,但是 UTF-8 和 LaTeX 上的 UTF-8 支持比 toc 文件的编码支持设计要年轻几年。