imakeidx:将 \index 指向未定义的索引是否安全?

imakeidx:将 \index 指向未定义的索引是否安全?

我 (仍在!) 编写biblatex法律引文样式。我即将着手处理索引,我想确保我有一个可行的计划。这是该项目相当关键的一部分。

问题就在这里。法律书籍使用很多索引。即使是一份不起眼的作品,也可以很容易地在一个索引中索引英国案例,在另一个索引中按字母顺序索引欧盟案例,在第三个索引中按编号索引欧盟案例,在第四个索引中索引英国法规,在第五个索引中索引英国次级立法,在第六个索引中索引法院规则,在第七、第八、第九、第十、第十一和第十二个索引中按字母顺序和编号索引欧盟指令、法规和决定。

通过结合使用条目类型、子条目类型和用户字段,我可以确定我正在处理的文献类型。并且假设就目前而言,我可以构建索引“字符串”,以便正确排序和打印索引条目(实际上并不容易,但这是另一个问题)。我现在担心的是如何将条目分配给特定索引。

你看,它必须灵活。如果我正在写一本关于(比如说)英国法律的书,我可能很乐意将所有非英国案例放在一个索引中。但如果我正在写一本关于比较法的书,那么现行标准无疑会要求我为美国、加拿大、澳大利亚的案例制作单独的索引。

我计划(建议/提供)使用imakeidx,我喜欢它,因为它提供了一个看似简单方便的系统,可以与 很好地配合使用splitindex,考虑到索引的数量,这很可能是需要的。我目前的计划是“写入”由宏定义的索引。因此,例如,对欧盟案件的引用将执行以下操作:

\index[\eualphabetical]{title}
\index[\eunumerical]{number@number, title}

等等。然后,用户可以\renewcommand{\eualphabetical}将条目定向到适当的索引,这些索引是针对特定文档设置的。例如,如果用户希望在同一索引中包含法规和法定文书,他/她可以这样做

\renewcommand{\ukstatutes}{statutes}
\renewcommand{\ukstatutoryinstruments}{statutes}

并建立一个合适的statutes索引,为这两种类型的文献提供数据。

这是我的问题。一个可能的用例是用户实际上并不需要所有可能的索引。假设我们有

\renewcommand{\eunumerical}{dummy}% DUMMY NOT DEFINED

dummy任何命令中都没有定义where \makeindex。从表面上看,这非常方便。我自己已经测试过了,似乎没有从imakeidxor中得到错误splitindex;但我担心我理解得不够,无法确保表面下没有发生什么可能以后会困扰我的事情。这样安全吗?或者我需要检查未定义的索引并阻止任何写入它们的尝试。

答案1

这应该类似于您正在尝试使用的内容:

\documentclass{book}
\usepackage{imakeidx}
\makeindex[name=statutes,title=Statutes]
\makeindex[name=dummy]
\newcommand{\eunumerical}{statutes}
\newcommand{\eualphabetical}{dummy}

\begin{document}
\chapter{abc}
\index[\eualphabetical]{title}
\index[\eunumerical]{number@number, title}

\printindex[\eunumerical]

\end{document}

如果没有\printindex[dummy]发出命令,则不会打印相对索引。但是,如果没有

\makeindex[name=dummy]

命令存在时,你会收到如下警告

Package imakeidx Warning: Undefined index file `dummy' on input line 10.

所以最好对其进行定义。

相关内容