如何在项目级别向索引中添加没有页码的条目?

如何在项目级别向索引中添加没有页码的条目?

在我的索引中,我想将某些项目归入一个组条目名称下。由于我已经使用了三个可用级别(项目、子项目、子子项目),我尝试创建一个没有页码的条目。在下面的示例中,“奇怪的语言”后面不应跟页码,因为它是后面内容的类别标题。

 \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}

目前的结果是:

PDF 输出

我如何隐藏单个条目(此处为“奇怪的语言”)的页码,或者,如何添加没有页码的项目,同时保留其他项目的页码正常?

答案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一次,您将获得'noautomaticimakeidx奇怪的语言' 位于 '脚本' 上方且处于同一级别,但没有页面引用。对于一次性编辑或两次编辑来说,这非常简单。

相关内容