如何在 imakeidx 创建的索引中提及章节编号

如何在 imakeidx 创建的索引中提及章节编号

\usepackage{imakeidx}我正在尝试使用和\makeindex命令在文档末尾包含一个索引\printindex

我希望索引也提及章节编号,例如:

37. 第 37 条 提及这个词指数

指数

索引,s37,p1

这可能吗?如果可能,怎么做?

答案1

使用xindy索引生成器,可以将附加信息写入索引文件,例如章节编号s37,p100或类似信息。

相关命令是imki@wrindexentrysplit,格式可以在其第三个参数中指定,请参阅那里的行。

但是,xindy最初无法识别这种格式,因此必须有一个附加xindy模块,它的用法在options=-M sectionindex_sectionpage.xdy选项中指定\makeindex

为了方便起见,我使用了 来forloop生成一些带有虚拟索引条目的虚拟部分。索引显示格式s{sectionnumber},p{pagenumber}

\documentclass[paper=a4,12pt]{scrartcl}

\usepackage{blindtext}%
\usepackage{fmtcount}%
\usepackage{forloop}% 

\usepackage[xindy]{imakeidx}%




\makeatletter
% Global redefinition of indexentry to use section, then page%
\renewcommand{\imki@wrindexentrysplit}[3]{%
 \expandafter\protected@write\csname#1@idxfile\endcsname{}%
    {\string\indexentry{#2}{s\arabic{section},p\thepage}}%
}%
\makeatother


\makeindex[options=-M sectionindex_sectionpage.xdy]

\begin{document}

\newcounter{loopcounter}

\forloop{loopcounter}{1}{\number\value{loopcounter} < 13}{%
\section{Section \Numberstring{loopcounter}}

\blindtext

\vspace{\baselineskip}

This is a dummy index entry to \textbf{\Numberstring{loopcounter}}\index{\Numberstring{loopcounter}}

}



\printindex


\end{document}

该文件sectionindex_sectionpage.xdy包含

( require "tex/inputenc/latin.xdy")
( require "texindy.xdy" )
( require "page-ranges.xdy") 
( require "book-order.xdy")


( define-location-class "sectionfirstthenpages"
                        ("alpha" :sep "" "arabic-numbers" :sep "," "alpha" :sep "" "arabic-numbers" ))

在此处输入图片描述

相关内容