问题

问题

问题

我有以下 MWE,它的页面排列错误:

\documentclass{scrartcl}
\usepackage{blindtext}
\usepackage{makeidx}
\makeindex
\begin{document}
\index{Eine Seite|(}\index{Drei Seiten|(}
\blindtext
\index{Eine Seite|)}
\index{Zwei Seiten|(}\index{Zweimalig}
\Blindtext[4]
\index{Zwei Seiten|)}\index{Zweimalig}
\Blindtext[5]
\index{Drei Seiten|)}
\printindex
\end{document}

xelatex main && xindy -M texindy -M range-pages -C utf8 -L german-duden main.idx && xelatex main它编译会创建以下索引:

Index
D
Drei Seiten, 1–3
E
Eine Seite, 1
Z
Zwei Seiten, 1, 2
Zweimalig, 1, 2

我觉得这很奇怪,因为这表明我在第 1 页和第 2 页上至少有两个独立的“Zwei Seiten”条目。

而是使用makeindex创建索引,就像我“手动”做的那样:

Index
Drei Seiten, 1–3
Eine Seite, 1
Zwei Seiten, 1–2
Zweimalig, 1, 2

这里我们可以清楚地看到,“Zwei Seiten”的解释从第 1 页开始到第 2 页结束,而“Zweimalig”在第 1 页和第 2 页至少被独立提及两次。

我怎样才能表现xindy得好确切地makeindex页面范围也是如此吗?我仍然需要xindy字母组标题和 unicode 功能(如果没有最后一个要求,我已经切换到了makeindex)。

完全相同的行为意味着:

  • 如果我们有一个跨越索引(\index{a|(}\index{a|)}跨越多个页面,我希望看到“1-2”或“2-5”等范围。
  • 如果在连续的页面上有一次提及(\index{a}),我希望用逗号分隔它们,如“1,2”,“2,3,4”,但如果将 5 个或更多连续页面合并到一个范围内,我也可以接受。

在回答或评论之前xindy请将和 的输出makeindex与“Zweimalig”和“Zwei Seiten”进行比较,我想要的输出makeindex但想使用xindy

答案1

我的xindy中没有range-pages模块,它被称为page-ranges.xdy。

添加

(define-location-class "arabic-page-numbers"
               ("arabic-numbers") :min-range-length 1)

到模块或副本以更改最小范围(代码来自 ff-ranges.xdy)。据我所知,新模块必须位于主 texmf-root 或当前目录中,因为 xindy 不会使用 kpathsea 搜索其他树。

相关内容