索引中自动为带重音符号的单词添加前缀

索引中自动为带重音符号的单词添加前缀

当使用法语单词生成索引时,我需要为重音词添加前缀,以便它们按字母顺序列出:

\index{saintete@sainteté}
\index{ame@âme}

有没有办法可以自动完成这个任务?

答案1

使用 Xindy 而不是 MakeIndex 排序似乎是正确的。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage[texindy]{imakeidx}
\makeindex[options=-L french]
\begin{document}
ame\index{ame}
âme\index{âme}
année\index{année}
cote\index{cote}
côte\index{côte}
coté\index{coté}
côté\index{côté}

\printindex
\end{document}

回想一下imakeidxXindy 需要-shell-escape(或texindy手动运行)。

在此处输入图片描述

答案2

坚持下去makeindexpdftex你可以做这样的事情

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}
\usepackage{makeidx}
\makeindex
\let\oldindex\index
\makeatletter

\def\index#1{%
  {\let\IeC\@firstofone   \let\^\@empty
   \let\'\@empty
   \let\`\@empty
   \let\'\@empty
   \let\@tabacckludge\@gobble
  \protected@xdef\tmp{#1\unexpanded{@#1}}}%
  \oldindex{\tmp}}
\makeatother
\begin{document}

ame\index{ame}
âme\index{âme}
année\index{année}
cote\index{cote}
côte\index{côte}
coté\index{coté}
côté\index{côté}

\printindex
\end{document}

生成一个 idx 文件

\indexentry{ame@ame}{1}
\indexentry{ame@\IeC {\^a}me}{1}
\indexentry{annee@ann\IeC {\'e}e}{1}
\indexentry{cote@cote}{1}
\indexentry{cote@c\IeC {\^o}te}{1}
\indexentry{cote@cot\IeC {\'e}}{1}
\indexentry{cote@c\IeC {\^o}t\IeC {\'e}}{1}

和输出

在此处输入图片描述

相关内容