在我的家谱书中,我使用的是两级索引。第一级是姓氏,第二级是名字。索引项定义如下:
\index{Doe!John}
通常,第一级会包含许多第二级项目(一个姓氏,多个名字)。当第二级溢出到新列或页面时,我想重复第一级项目。这可以吗?
以下是默认行为的一个示例:
第 1 列:
Doe
John, 3, 6, 9
Melvin, 6, 14, 18
Sally, 24, 32
第 2 列:
Timothy, 11, 15, 27
Victor, 5
Smith
Gary, 7, 18
以下是我希望看到的:
第 1 列:
Doe
John, 3, 6, 9
Melvin, 6, 14, 18
Sally, 24, 32
第 2 列:
Doe (continued)
Timothy, 11, 15, 27
Victor, 5
Smith
Gary, 7, 18
请注意第一列开头的“Doe(继续)”。这结合了重新显示第一级名称和向其附加文本。
这可能吗?
编辑:这是一个最低限度的工作示例。
\documentclass[a4paper]{article}
\usepackage[paperwidth=8.5in,paperheight=3in]{geometry}
\usepackage{makeidx}
\makeindex
\begin{document}
Some text.
\index{Jones!Alvin}
\index{Jones!Billy}
\index{Jones!Carter}
\index{Jones!Dennis}
\index{Smith!Alex}
\index{Smith!Brian}
\index{Smith!Carrie}
\index{Smith!Dewey}
\index{Smith!Eric}
\index{Smith!Frank}
\index{Smith!Gary}
\index{Smith!Huey}
\index{Smith!Irma}
\index{Smith!Joey}
\index{Smith!Kevin}
\index{Smith!Louie}
\index{Smith!Martin}
\index{Smith!Ned}
\index{Smith!Opal}
\index{Smith!Paul}
\index{Smith!Quincey}
\index{Smith!Rosie}
\index{Smith!Steven}
\index{Smith!Thomas}
\index{White!Alice}
\index{White!Barney}
\printindex
\end{document}
我按照以下步骤进行操作:
pdflatex MWE.tex
makeindex MWE.idx
pdflatex MWE.tex
这样会生成一个 PDF,其中索引在第一页的第一列和第二列以及第二页的第一列中都有“Smith”的名字。我希望第一页的第二列和第二页的第一列都以“Smith(续)”开头,但尚未找到任何方法来实现这一点。
答案1
这repeatindex
软件包(自 2001 年起)提供了此功能(请注意,它需要一种特殊.ind
格式,可以使用附带的样式文件创建 repeatindex.ist
)。但是,软件包 README 列出了一些已知问题:
- 当重复某项时,后面两项后面会包含一个小的垂直空间
- 如果最后一项是子项,并且是索引最后一页上的唯一条目,则省略重复
这两个问题都出现在您修改的示例中。第三个问题是,repeatindex
似乎无法处理专门指向子项的索引项(即,没有至少一个自包含的条目),因此我不得不在您的示例中添加\item{Jones}
、\item{Smith}
和\item{White}
。
\documentclass[a4paper]{article}
\usepackage[paperwidth=8.5in,paperheight=3in]{geometry}
\usepackage{makeidx}
\makeindex
\usepackage{repeatindex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.mst}
item_0 "\n \\item ["
delim_0 "], "
\end{filecontents}
\begin{document}
Some text.
\index{Jones}
\index{Jones!Alvin}
\index{Jones!Billy}
\index{Jones!Carter}
\index{Jones!Dennis}
\index{Smith}
\index{Smith!Alex}
\index{Smith!Brian}
\index{Smith!Carrie}
\index{Smith!Dewey}
\index{Smith!Eric}
\index{Smith!Frank}
\index{Smith!Gary}
\index{Smith!Huey}
\index{Smith!Irma}
\index{Smith!Joey}
\index{Smith!Kevin}
\index{Smith!Louie}
\index{Smith!Martin}
\index{Smith!Ned}
\index{Smith!Opal}
\index{Smith!Paul}
\index{Smith!Quincey}
\index{Smith!Rosie}
\index{Smith!Steven}
\index{Smith!Thomas}
\index{White}
\index{White!Alice}
\index{White!Barney}
\printindex
\end{document}
答案2
如果顶级项目没有页码,则可以通过添加item_x1
到索引样式来编写分隔符。此外,添加花括号以防止项目名称中的方括号,样式变得
item_0 "\n \\item [{"
delim_0 "}], "
item_x1 "}]\n \\subitem "