\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" ))