我是一名使用 LaTeX 写作的法国学生。我使用 来创建多个具有不同名称的索引splitidx
。我希望我的索引出现在目录中,所以我使用了tocbibind
。一切正常,但如果我的索引标题中有一个重音符,我会收到与编码相关的错误消息。这是一个 MWE(嗯,不工作可能更准确!)。你知道我该如何礼貌地要求tocbibind
正确扩展目录中的索引标题吗?
多谢。
\documentclass[10pt,a4paper]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[makeindex]{splitidx}
\usepackage{tocbibind}
\newindex[Index des journaux et séries]{jo}
\newindex[Index des noms de personnes]{np}
\begin{document}
\tableofcontents
Ici du texte avec des accents qui fonctionne : é, à ç, è. Une indexation pour jo\sindex[jo]{phenix@Phenix} et une pour np\sindex[np]{phenix@Phenix}.
\printindex[jo]
\printindex[np]
\end{document}
我想我知道问题出在哪里了。如果我尝试使用重音符号的章节,它会被写入\IeC {\'e}
toc 文件中,而我的索引标题始终保持其 é,即使我在文本中输入 \IeC {\'e}。
答案1
\xdef
问题在于in的用法\newindex
,而本应为\protected@xdef
;\xdef
索引标题中几乎任何重音字符都会产生错误。tocbibind
此问题与软件包无关。
这是一个应该由软件包作者修复的错误。
\documentclass[10pt,a4paper]{book}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[french]{babel}
\usepackage[makeindex]{splitidx}
\usepackage{xpatch}
% let's use \protected@xdef instead of \xdef in \newindex
\makeatletter
% there are four occurrences
\xpatchcmd{\newindex}{\xdef}{\protected@xdef}{}{}
\xpatchcmd{\newindex}{\xdef}{\protected@xdef}{}{}
\xpatchcmd{\newindex}{\xdef}{\protected@xdef}{}{}
\xpatchcmd{\newindex}{\xdef}{\protected@xdef}{}{}
\makeatother
\usepackage{tocbibind}
\newindex[Index des journaux et séries]{jo}
\newindex[Index des noms de personnes]{np}
\begin{document}
\tableofcontents
Ici du texte avec des accents qui fonctionne : é, à ç, è. Une indexation pour
jo\sindex[jo]{phenix@Phenix} et une pour np\sindex[np]{phenix@Phenix}.
\printindex[jo]
\printindex[np]
\end{document}
答案2
如果您不坚持splitindex
尝试imakeidx
,语法是类似的,并且没有关于特殊字符的错误,至少在这个例子中没有。
\documentclass[10pt,a4paper]{book}
\usepackage[french]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
%\usepackage[makeindex]{splitindex}
\usepackage[splitindex]{imakeidx}%
\usepackage{tocbibind}
%\newindex[Index des journaux et séries]{jo}
%\newindex[Index des noms de personnes]{np}
\makeindex[name=jo,title={Index des journaux et séries}]
\makeindex[name=np,title={Index des noms de personnes}]
\begin{document}
\tableofcontents
Ici du texte avec des accents qui fonctionne : é, à ç, è. Une indexation pour jo\index[jo]{phenix@Phenix} et une pour np\index[np]{phenix@Phenix}.
\index[jo]{é@letter é}
\printindex[jo]
\printindex[np]
\end{document}
我随机地把一些索引条目放在那里,没有直接链接到正确的位置;-)