在我的索引中,我想将某些项目归入一个组条目名称下。由于我已经使用了三个可用级别(项目、子项目、子子项目),我尝试创建一个没有页码的条目。在下面的示例中,“奇怪的语言”后面不应跟页码,因为它是后面内容的类别标题。
\documentclass[12pt,twoside,a4paper,openright]{book}
\usepackage{xunicode}
\usepackage{imakeidx}
\makeindex[name=texts,title=Texts,columns=1,options=-s mystyle -c -l]
\begin{document}
\index[texts]{Script@\string\textbf{Weird Languages}}
3.28\index[texts]{Script!Aramaic!3.28}
5.1\index[texts]{Script!Greek!5.1}
8.1\index[texts]{Script!Demotic!8.1}
\printindex[texts]
\end{document}
目前的结果是:
我如何隐藏单个条目(此处为“奇怪的语言”)的页码,或者,如何添加没有页码的项目,同时保留其他项目的页码正常?
答案1
这是一个我使用过后发现很有效的破解方法。
在序言中,添加以下定义:
\newcommand{\idxnopage}[1]{{}}
\providecommand{\gobble}[1]{{}}
\newcommand{\idxsechead}[1]{\textbf{#1}\gobble}
像这样使用它,插入适当的排序参数和文本:
\index{<sort argument>@\idxsechead{<header text>} |idxnopage}
我还没能想出一个包含的“组合”定义\idxnopage
。(也许 david 或 egreg 可以改进这一点。)
编辑:这是一个将产生上面描述的输出的小例子。请注意,必须在第一次 latex 运行生成的文件makeindex
上运行.idx
,然后.tex
通过 latex 再次处理该文件以实际将索引包含在输出中。
\documentclass{article}
\usepackage{makeidx}
\newcommand{\idxnopage}[1]{{}}
\providecommand{\gobble}[1]{{}}
\newcommand{\idxsechead}[1]{\textbf{#1}\gobble}
\makeindex
\begin{document}
Here is some text\index{some text} that we want indexed.
We also want a ``header'' in the index.
\index{00@\idxsechead{Header} |idxnopage}
\printindex
\end{document}
答案2
仅用于概念证明。以.ind
上面给出的示例文件生成的文件为例,您有:
\begin{theindex}
\item Script
\subitem Aramaic
\subsubitem 3.28, 1
\subitem Demotic
\subsubitem 8.1, 1
\subitem Greek
\subsubitem 5.1, 1
\item \string, \textbf{Weird Languages}{1}
\end{theindex}
如果将其更改为:
\begin{theindex}
\item \textbf{Weird Languages}
\item Script
\subitem Aramaic
\subsubitem 3.28, 1
\subitem Demotic
\subsubitem 8.1, 1
\subitem Greek
\subsubitem 5.1, 1
\end{theindex}
并使用选项再运行xelatex
一次,您将获得'noautomatic
imakeidx
奇怪的语言' 位于 '脚本' 上方且处于同一级别,但没有页面引用。对于一次性编辑或两次编辑来说,这非常简单。