@Nicola-Talbot 设法解决了我最后一个问题: Makeindex,索引中不同类型的引用和排序
不幸的是,我无法成功实现超越 splitindex 的解决方案。
前提是:考虑具有三个不同属性的索引,即默认、ii(隐式)和 nn:
莎士比亚\索引{莎士比亚}
斯特拉特福\index{Shakespeare|ii} 著名剧作家
注:威廉·莎士比亚(/ˈʃeɪkspɪər/;[1] 1564 年 4 月 26 日(受洗)- 1616 年 4 月 23 日)[注 1] 是一位英国诗人、剧作家和演员,被广泛认为是英语中最伟大的作家和世界上最杰出的剧作家。\index{Shakespeare|nn}
如果页面上有默认类型的条目,则应从输出中省略具有属性的条目。
此 MWE 的工作原理如下:
\documentclass{scrartcl}
\usepackage{filecontents}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{makeidx}
\begin{filecontents*}{\jobname.xdy}
; list of allowed attributes
(define-attributes (( "default" "ii" "nn" )))
; define format to use for locations
(markup-locref :open "\emph{" :close "}" :attr "ii")
(markup-locref :open "\nn{" :close "}" :attr "nn")
; location list separators
(markup-locref-list :sep ", ")
(markup-range :open "\range{" :sep "}{" :close "}")
(merge-to "nn" "ii" :drop)
\end{filecontents*}
\makeindex
\newcommand{\nn}[1]{#1n}
\newcommand{\range}[2]{{\def\nn##1{##1}#1}--#2}
\begin{document}
bla\index{Lahm} blablab\index{Lahm|nn}
bla\index{A} bla\index{A|nn}
bla\index{B} bla\index{B|nn}
\newpage
bla\index{Lahm|nn} blablab
bla\index{B|nn}
\newpage
bla\index{B|nn}
\printindex
\end{document}
不幸的是,当我引入 splitindex (我有两个索引)时,MWE 不再正确地省略属性:
\documentclass{scrartcl}
\usepackage{filecontents}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage[makeindex, protected]{splitidx}
\newindex[persons]{pw}
\begin{filecontents*}{\jobname.xdy}
; list of allowed attributes
(define-attributes (( "default" "ii" "nn" )))
; define format to use for locations
(markup-locref :open "\ii{" :close "}" :attr "ii")
(markup-locref :open "\nn{" :close "}" :attr "nn")
; location list separators
(markup-locref-list :sep ", ")
(markup-range :open "\range{" :sep "}{" :close "}")
(merge-to "nn" "ii" :drop)
\end{filecontents*}
\makeindex
\newcommand{\nn}[1]{#1n}
\newcommand{\ii}[1]{\emph{#1}}
\newcommand{\range}[2]{{\def\nn##1{##1}#1}--#2}
\begin{document}
bla\sindex[pw]{Lahm} blablab\sindex[pw]{Lahm|nn}
bla\sindex[pw]{A} bla\sindex[pw]{A|nn}
bla\sindex[pw]{B} bla\sindex[pw]{B|nn}
bla\sindex[pw]{B} bla\sindex[pw]{B|ii}
\newpage
bla\sindex[pw]{Lahm|nn} blablab
bla\sindex[pw]{B|nn}
\newpage
bla\sindex[pw]{B|nn}
\printindex[pw]
\end{document}
我相信它与 splitindex 有关,因为 .ilg 会出现与 makeindex 相同的警告:
Generating output file ./indextest-pw.ind....
## Warning (input = ./indextest-pw.idx, line = 4; output = ./indextest-pw.ind, line = 3):
-- Conflicting entries: multiple encaps for the same page under same key.
## Warning (input = ./indextest-pw.idx, line = 8; output = ./indextest-pw.ind, line = 7):
-- Conflicting entries: multiple encaps for the same page under same key.
## Warning (input = ./indextest-pw.idx, line = 6; output = ./indextest-pw.ind, line = 7):
-- Conflicting entries: multiple encaps for the same page under same key.
## Warning (input = ./indextest-pw.idx, line = 2; output = ./indextest-pw.ind, line = 11):
-- Conflicting entries: multiple encaps for the same page under same key.
知道如何解决这个问题吗?或者是否有其他方法可以使用 xindy 来获得两个索引?