我正在研究一个由外部程序生成的排序姓名登记册,其中包含一个姓氏的数十个条目。为了更容易找到主页,我尝试为其着色并使用不同的文本样式(斜体,大胆的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 的配置文件如何更改:
- 强制条目采用定义的布局,但没有像吞噬页码这样的技巧?
- 页面排序与属性无关?
- 所有分隔符是否都按预期放置?