我需要seealso
在一个索引条目下有多个。我尝试了几种方法来实现这一点。第一个变体(见下文)在条目之间产生分号,但我需要逗号作为分隔符。其他变体产生了良好的输出,但会抛出错误,例如ERROR: Cross-reference-target ("a, c") does not exist!
。有解决方案用makeidx
,但我需要用imakedx
和来解决这个问题xindy
。
我的 MWE:
\documentclass{article}
\usepackage{hyperref}
\usepackage[xindy]{imakeidx}
\makeindex[options=-M texindy]
\begin{document}
foo\index{a} \index{b} \index{c} \index{d}
\index{a|seealso{c}} \index{a|seealso{d}} %1st
\index{b|seealso{a, c}} %2nd
\index{c\relax |seealso{a, b}} %3rd
\index{d\gobble |seealso{b, c}} %4th
\printindex
\end{document}
我的输出:
答案1
多个条目的分隔符seealso
在文件中定义makeindex.xdy
,该文件通常位于安装目录中。如果您在存储文件的目录中xindy
创建替代文件,则会加载替代文件。例如,以下示例为第一个变体输出逗号且没有错误:makeindex.xdy
.tex
makeindex.xdy
(define-crossref-class "see")
(markup-crossref-list :class "see" :open "\see{" :sep ", " :close "}{}")
(define-crossref-class "seealso")
(markup-crossref-list :class "seealso" :open "\seealso{" :sep ", " :close "}{}")
(markup-crossref-layer-list :sep ", ")
(define-location-class-order ("roman-page-numbers"
"arabic-page-numbers"
"alpha-page-numbers"
"Roman-page-numbers"
"Alpha-page-numbers"
"see"
"seealso"))
结果:
也可能将替代规则设置为命令行选项,但我没有找到这样做的方法。