我尝试将章节的作者纳入我的书的索引中。为了实现这一点,每个章节都以带有左括号的索引条目开头,以右括号结尾。但我无法摆脱错误消息:
警告:未找到与已打开的 :close-range 匹配的条目!关键字 (A) 中的位置引用为 1。我可能丢失了一些常规的位置引用
此 MWE:
\documentclass{scrbook}
\usepackage[english]{babel}
\usepackage[makeindex, protected]{splitidx}
\newcommand{\pws}[1]{#1}
\begin{document}
\index{A|(pws}
Text spanning from page one to page two
\newpage
Rest of Text
\index{A|)pws}
\section{Two}
Some other text
\section{Three}
\index{A|(pws}
Another Text of author A
\index{A|)pws}
\printindex
\end{document}
生成以下 idx 文件:
\indexentry{A|(pws}{1}
\indexentry{A|)pws}{2}
\indexentry{A|(pws}{2}
\indexentry{A|)pws}{2}
当我运行 texindy 时
texindy -M test.xdy -M ff-ranges -L english -t test.ilg test.idx
使用这个样式文件
(define-location-class "arabic-page-numbers"
("arabic-numbers") :min-range-length 1)
(markup-range :open "\range{" :sep "}{" :close "}")
; list of allowed attributes
(define-attributes ("pws"))
; define format to use for locations
(markup-locref :open "\pws{" :close "}" :attr "pws")
; location list separators
(markup-attribute-group-list :sep "; ")
... 编译不正确,但记录了错误。我想这和两个范围有关,一个范围在第二页结束,另一个范围从第二页开始和结束,因为如果我用分页符分隔范围,一切都会正常。
答案1
由于没有人提出解决方案,我以某种方式解决了它,尽管它必须被视为一种黑客攻击,但适当的解决方案仍然非常受欢迎。
基本上,如果将第二个条目更改为另一个属性:
\index{A|(pwsa}
Another Text of author A
\index{A|)pwsa}
然后在 .xdy 文件中添加一个删除规则,这样当存在 pws 时,pwsa 就会被删除,它会产生所需的输出而不会出现错误:
(merge-to "pws" "pwsa" :drop)