自定义索引 - 为索引条目添加章节标题和诗句编号

自定义索引 - 为索引条目添加章节标题和诗句编号

我想为索引中的每个条目提供章节标题和诗节编号。这很不寻常,但我正在写的书需要这样的格式。

在输出中,我希望章节标题出现在索引文本和诗句编号之间。对于诗句,我使用环境,verse但这里不显示。

在下面显示的输出中,第一行是标题,在索引的每一页上重复。然后,根据三个示例经文,得到所需的输出:

索引文本、章节名称、诗节编号。

最公平...第一...1

死亡...秒...1

你的... 第三... 4

我想隐藏索引中的页码。

\documentclass[12pt,a4paper]{book}
\usepackage{index}
\usepackage{idxlayout}
\makeindex

\begin{document}
\printindex

\chapter*{First}
  From \index*{fairest} creatures we desire increase,
  That thereby beauty's rose might never die ... |1|

\chapter*{Second}
  But as the riper should by time \index*{decease},
  His tender heir might bear his memory ... |1|

\chapter*{Third}
  But thou contracted to \index*{thine} own bright eyes,
  Feed'st thy light's flame with self-substantial fuel ... |4|
\end{document}

答案1

或许:

\documentclass[12pt,a4paper]{book}
\usepackage{splitidx}\makeindex

\newindex[Index of Verses]{vrs}
\AtWriteToIndex{vrs}{\let\thepage\theverse}%
\newcounter{verse}
\newcommand*{\vindex}[2]{%
  \setcounter{verse}{#2}%
  \sindex[vrs]{#1, \currentchapter}%
}
\newcommand*{\xchapter}[1]{%
  \chapter*{#1}\renewcommand*{\currentchapter}{#1}%
}
\newcommand*{\currentchapter}{}

\begin{document}

\xchapter{First}

From \vindex{fairest}{1} creatures we desire increase,
That thereby beauty's rose might never die ... |1|

\xchapter{Second}

But as the riper should by time \vindex{decease}{1},
His tender heir might bear his memory ... |1|

\xchapter{Third}

But thou contracted to \vindex{thine}{4} own bright eyes,
Feed'st thy light's flame with self-substantial fuel ... |4|

\printindex[vrs]

\end{document}

请注意,您必须将 的调用替换makeindexsplitindex。因此您应该

  1. latex foo.tex
  2. splitindex foo
  3. latex foo.tex

使用 获得结果Index of Verse。TeX Livesplitindex有一个链接splitindex.pl。如果您使用的是 Windows 和 MiKTeX,您可以安装 Perl 或使用splitindex.exe

如果运行splitindex对您来说是个问题,您可以尝试选项split加载包splitidx

\usepackage[split,makeindex]{splitidx}

在这种情况下,您必须使用文件运行 makeindex <foo>-vers.idx

  1. latex foo.tex
  2. makeindex foo-vers
  3. latex foo.tex

请更换foo。请参阅手册分裂指数有关运行该程序的几种变体splitindex以及包的选项和宏的更多信息splitidx

您不需要在定义时使用第二个参数\vindex,而是可以通过设置计数器诗句来设置诗句编号,例如使用环境或命令来设置诗句。

相关内容