外语索引排序顺序被破坏

外语索引排序顺序被破坏

当我在下面创建 MWE 时,索引中的排序顺序完全是按字母顺序排列的。但是,当我处理使用babel完全相同方式的非常大的文档时,索引中的顺序就被打乱了。我观察到按字母顺序正确排序的条目组,但它们中却散布着无序的条目。我无法发布整个文档,因为它的大小为兆字节,而且我不知道如何排除故障,因为它使用了数十个包。

\documentclass{memoir}
\usepackage[utf8]{inputenc}
\usepackage[T1,T2A]{fontenc}
\usepackage[main=russian]{babel}
\usepackage{lipsum}
\usepackage{makeidx}
\makeindex
\begin{document} 
\lipsum[1]

\index{жзи}

\clearpage
\lipsum[2]

\index{где}

\clearpage
\lipsum[3]

\index{абв}

\printindex
\end{document}

编辑(取自下面的答案):

我刚刚通过添加更多条目重现了该问题。第二个条目的位置错误:

\documentclass{memoir}
\usepackage[utf8]{inputenc}
\usepackage[T1,T2A]{fontenc}
\usepackage[main=russian]{babel}
\usepackage{lipsum}
\usepackage{makeidx}
\makeindex
\begin{document} 
\lipsum[1]
\index{жзи}
\clearpage
\lipsum[2]
\index{где}
\clearpage
\lipsum[3]
\index{абв}
\clearpage
\lipsum[4]
\index{эюя}
\clearpage
\lipsum[5]
\index{шщы}
\clearpage
\lipsum[6]
\index{клм}
\printindex
\end{document}

答案1

有几个问题需要解决。

  1. MakeIndex 不了解俄语和西里尔文。

  2. 中的西里尔字符存在扩展问题pdflatex

第一个问题使用 解决xindy。第二个问题通过定义一个特别指定命令用于对西里尔字母进行索引。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1,T2A]{fontenc}
\usepackage[main=russian]{babel}
\usepackage{lipsum}
\usepackage{makeidx}
\makeindex

\newcommand{\rindex}[1]{\expandafter\index\expandafter{\detokenize{#1}}}

\begin{document} 
\lipsum[1]
\rindex{жзи}
\clearpage
\lipsum[2]
\rindex{где}
\clearpage
\lipsum[3]
\rindex{абв}
\clearpage
\lipsum[4]
\rindex{эюя}
\clearpage
\lipsum[5]
\rindex{шщы}
\clearpage
\lipsum[6]
\rindex{клм}
\printindex
\end{document}

运行 LaTeX 后,运行

texindy -L russian -C utf8 <filename>.idx

然后再次运行 LaTeX(<filename>用实际文件名替换)。

在此处输入图片描述

相关内容