为什么回忆录类会对 .idx 文件的内容进行编码,以及如何使用它来生成正确排序的俄语索引?

为什么回忆录类会对 .idx 文件的内容进行编码,以及如何使用它来生成正确排序的俄语索引?

使用时回答我在第二遍(使用pdflatex)时遇到以下错误消息:

未定义控制序列。\item \T

它源自.ind文件中的条目:

\item \T2A\CYRD \T2A\cyro \T2A\cyrz , \hyperpage{224}

反过来,它是由文件中的以下条目生成的.idx

\indexentry{\T2A\CYRD \T2A\cyro \T2A\cyrz |hyperpage}{224}

如果我切换memoirarticle或,book则索引将逐字包含文档中定义的条目,而无需对其进行编码。

以下 MWE 可用于验证:

\documentclass{memoir}
\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} 
жзи\rindex{жзи}
\clearpage
где\rindex{где}
\clearpage
абв\rindex{абв}
\clearpage
эюя\rindex{эюя}
\clearpage
шщы\rindex{шщы}
\clearpage
клм\rindex{клм}

\printindex
\end{document}

它通过了第一遍,然后命令texindy -L russian -C utf8 "document.idx"生成.ind文件,第二遍失败。

答案1

我发布问题后就立即找到了答案,这种情况经常发生。

为了使其工作,必须包含以下包:

\usepackage[xindy]{imakeidx}

\usepackage{makeindex}

必须被移除。

相关内容