当使用法语单词生成索引时,我需要为重音词添加前缀,以便它们按字母顺序列出:
\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}
回想一下imakeidx
Xindy 需要-shell-escape
(或texindy
手动运行)。
答案2
坚持下去makeindex
,pdftex
你可以做这样的事情
\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}
和输出