
Стандартный makeidx
пакет записывает ind
/ idx
во внутренний файл представления LaTeX. index
Пакет записывает в utf-8 и отлично работает со стандартными классами book
, article
, report
. Но при попытке использовать index
пакет с memoir
, вывод все еще такой же, как с makeidx
пакетом. Можно ли makeidx
отключить или переопределить эмуляцию с помощью index
пакета с memoir
?
Вот минимальный пример:
\documentclass[a4paper,9pt]{memoir}
\usepackage[T1,T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\usepackage{index}
\makeindex
\begin{document}
\section{Indexing something}
\index{здравствуйте}здравствуйте
\printindex
\end{document}
Содержимое файла idx
:
\indexentry{\IeC {\cyrz }\IeC {\cyrd }\IeC {\cyrr }\IeC {\cyra }\IeC {\cyrv }\IeC {\cyrs }
\IeC {\cyrt }\IeC {\cyrv }\IeC {\cyru }\IeC {\cyrishrt }\IeC {\cyrt }\IeC {\cyre }}{1}
Теперь измените memoir
на book
и перестройте индекс и документ снова. Теперь idx
содержимое файла
\indexentry {здравствуйте}{1}
как и ожидалось.
решение1
По умолчанию, memoir
предотвратит index
загрузку любых пакетов (включая ), если их функциональность эмулируется классом. Чтобы переопределить это, необходимо добавить \DisemulatePackage{index}
перед \usepackage{index}
. Следующий MWE создает «ожидаемое» .idx
содержимое файла. ( \renewindex
используется для исправления имени индекса.)
\documentclass[a4paper,9pt]{memoir}
\usepackage[T1,T2A]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,russian]{babel}
\DisemulatePackage{index}
\usepackage{index}
\makeindex
\renewindex{default}{idx}{ind}{Предметный указатель}
\begin{document}
\section{Indexing something}
\index{здравствуйте}здравствуйте
\printindex
\end{document}