使用 Xindy 对索引条目进行规范化/排序

使用 Xindy 对索引条目进行规范化/排序

我正在研究一个由外部程序生成的排序姓名登记册,其中包含一个姓氏的数十个条目。为了更容易找到主页,我尝试为其着色并使用不同的文本样式(斜体大胆的Xindy 似乎是这个工作的正确解决方案(参见 MWE,第一行输出是测试结果,第二行是目标):

\documentclass{scrartcl}
\usepackage{xcolor}
\usepackage{makeidx}
\usepackage{filecontents}

\begin{filecontents*}{myindex.xdy}
  ;;; xindy style file
  (define-attributes ("gobble" "red" "green") )

  (markup-locclass-list :open "\dotfill" :close "" :sep ", ")
  (markup-locref :open "\mygobble{" :close "}" :attr "gobble" )
  (markup-locref :open "\myred{" :close "}" :attr "red" )
  (markup-locref :open "\color{green}{" :close "}\color{black}" :attr "green" )
\end{filecontents*}

\makeatletter
  \let\mygobble\@gobble
\makeatother

\def\myred#1{\color{red}#1\color{black}}

\makeindex

\begin{document}
  \noindent  
  \begingroup
    {\large\textbf{Test}\normalsize} \newline
    \let\clearpage\relax
    \printindex
  \endgroup

  \vspace{1cm} \noindent 
  {\large\textbf{Target}\normalsize} \newline \newline
  1. Entry ...................... % 
    2, \textbf{3}, {\color{green}4}, \textit{5}, {\color{red}6--8}

  \index{1. Entry|gobble}   
  \newpage Page 2. \index{1. Entry} \index{1. Entry|red}
  \newpage Page 3. \index{1. Entry|textbf}
  \newpage Page 4. \index{1. Entry|green}
  \newpage Page 5. \index{1. Entry|textit}
  \newpage Page 6. \index{1. Entry|red}
  \newpage Page 7. \index{1. Entry|red}
  \newpage Page 8. \index{1. Entry|red}

\end{document}

正如我们从著名的 Latex Companion 第二版中了解到的那样,Xindy 总是将第一个条目作为所有后续条目的参考。我创建了一个盲页,只包含(实际上相当复杂的)主索引,并修改了位置参考以吞噬页码(参见从索引条目中删除页码)。

我使用完整版 TeXLive 2015,编译方式如下:

pdflatex.exe myindex.tex
xindy -M texindy -M myindex -C utf8 -L german-duden myindex.idx
pdflatex.exe myindex.tex

结果是:

  • 吞噬有效(没有页码),但会产生一个额外的逗号(合乎逻辑,但不受欢迎!)
  • Xindy 直接彩色属性(绿色)放置在行尾
  • Xindy 间接彩色属性(红色)放置在
  • 页码排序取决于属性类型
  • 缺少一些分隔符

Xindy 的配置文件如何更改:

  1. 强制条目采用定义的布局,但没有像吞噬页码这样的技巧?
  2. 页面排序与属性无关?
  3. 所有分隔符是否都按预期放置?

相关内容