我怎样才能拥有两个或更多不同的索引?

我怎样才能拥有两个或更多不同的索引?

我经常想在较长的 LaTeX 文档中创建多个索引。例如,我可能想要一个一般概念索引、一个有名人物的索引和一个象征意义的索引。如何在 LaTeX 中创建两个或更多不同的索引?

答案1

multind包提供了简单直接的多重索引。

您为每个\makeindex\index\printindex命令添加一个文件名标签,索引命令将写入(或从中读取)名称,并附加相应的扩展名(.idx 或 .ind)。要创建“一般”和“作者”索引,可以这样写:

\usepackage{multind}
\makeindex{general}
\makeindex{authors}
...
\index{authors}{Another Idiot}
...
\index{general}{FAQs}
...
\printindex{general}{General index}
\printindex{authors}{Author index}

为了完成这项工作,请在文件上运行 LaTeX 足够多次,直到标签等稳定,然后执行命令

makeindex general
makeindex authors

另请参阅此常见问题解答:多个索引

更新

multind是 LaTeX 2.09 的一个软件包

请考虑以下替代方案:

答案2

还有imakeidx旨在提供多个索引(已经在评论中提到,但未显示用法)

只需\makeindex[name=symbolicname,title={Foo}]提供一个特殊索引(适当地选择符号名称)并\index[symbolicname]{foo}为该特殊索引创建一个索引条目。

特殊索引上印有\printindex[symbolicname]

使用\makeindex\index并且\printindex不带可选参数将给出与 一样的通常索引makeidx

的优点imakeidx是自动调用makeindextexindy(如果\write18启用)。

\documentclass{article}

\usepackage{imakeidx}

\usepackage{blindtext}

\makeindex[name=person,title={Index of persons}]

\makeindex

\begin{document}

Einstein\index[person]{Einstein}
\blindtext

Heisenberg\index[person]{Heisenberg} % Person index

\blindtext[4]

\index{foo}
\index{bar}
\blindtext

\printindex[person] % Person index
\printindex % usual index

\end{document}

在此处输入图片描述

答案3

一个问题multind是索引标题不会根据您的其他章节(或部分)标题进行格式化,而只是简单地格式化\Large\bf

如果您想要多个索引遵循文档类的一般格式(并且也可以与标准类以外的其他类一起使用),请使用splitidx包裹。

答案4

这是一个完全不同的方法,它不使用\index,而是使用glossaries-extrabib2gls。首先,在一个或多个文件中定义文档中使用的术语.bib。例如,vegetables.bib以。。开始:

% Encoding: UTF-8

@entry{cabbage,
  name={cabbage},
  description={vegetable with thick green or purple leaves},
  identifier={vegetable}
}

@entry{brussels-sprout,
  name={Brussels sprout},
  description={small leafy green vegetable buds},
  identifier={vegetable}
}

@entry{artichoke,
  name={artichoke},
  description={a variety of thistle cultivated as food},
  identifier={vegetable}
}

sample-multi2.tex示例文件为每种类型定义了一个列表:

\newglossary*{bacteria}{Bacteria}
\newglossary*{markuplanguage}{Markup Languages}
\newglossary*{vegetable}{Vegetables}
\newglossary*{mineral}{Minerals}
\newglossary*{animal}{Animals}
\newglossary*{chemical}{Chemical Formula}
\newglossary*{baseunit}{SI Units}
\newglossary*{measurement}{Measurements}
\newglossary*{film}{Films}
\newglossary*{book}{Books}
\newglossary*{person}{People}
\newglossary*{mediacontrol}{Media Control Symbols}
\newglossary*{information}{Information Symbols}
\newglossary*{weather}{Weather Symbols}

所需.bib文件在文档中以 标识\GlsXtrLoadResources。上面的示例文件相当复杂(结果是sample-multi2.pdf),因此这里有一个简化版本,仅使用vegetables.bib

\documentclass{book}

\usepackage[
  record,% using bib2gls
  nostyles,stylemods={bookindex},
  nomain,% don't create default 'main' glossary
  index% create index list
 ]{glossaries-extra}

% define custom list:
\newglossary*{vegetable}{Vegetables}

\GlsXtrLoadResources[
  src={vegetables},% data in vegetables.bib
  sort={en-GB},% sort by language identified by this locale
  entry-type-aliases={
   entry=dualindexentry% make @entry behave like @dualindexentry
 },
 field-aliases={
   identifier=category % convert identifier field to category field
 },
 type={index},
 dual-type={same as category}
]

\begin{document}
\chapter{Sample}

\Glspl{cabbage} are bigger than \glspl{brussels-sprout}.
An \gls{artichoke} is another type of vegetable.

\printunsrtglossary[type=vegetable,style=tree]
\printunsrtglossary[type=index,style=bookindex]

\end{document}

如果调用该文档myDoc.tex则构建过程如下:

pdflatex myDoc
bib2gls -g myDoc
pdflatex myDoc

第一页:

第 1 章示例。卷心菜比抱子甘蓝大。洋蓟是另一种蔬菜。

蔬菜列表没有显示使用该术语的位置(页码):

蔬菜 朝鲜蓟 用作食物的蓟类植物 抱子甘蓝 小叶绿菜芽 卷心菜 有厚厚的绿色或紫色叶子的蔬菜

该索引确实显示了位置:

索引 A 朝鲜蓟,1 个 B 抱子甘蓝,1 个 C 卷心菜,1 个

相关内容