合并或查找另一本书的索引

合并或查找另一本书的索引

我正在写两本书。假设其中一本是《用 Java 表达感谢》(J书),另一个是用 C# 表达感谢(C 书)。每本书都有自己的索引。MWE 如下。

java.tex

\documentclass[]{article}

\usepackage{imakeidx}
\makeindex

\title{Thanking in Java}

\begin{document}

\maketitle

Java is an object-oriented language\index{object-oriented}, released in GNU General Public License\index{GNU GPL}.

... A lot of indexes


\printindex

\end{document}

文本文件

\documentclass[]{article}

\usepackage{imakeidx}
\makeindex

\title{Thanking in C\#}

\begin{document}

\maketitle

C\# is an object-oriented language\index{object-oriented}, released in MIT License\index{MIT License}.

... A lot of indexes

\printindex
\end{document}

有没有简单的方法可以包含其他书籍的索引?例如在 J 书中,我可以说 C 书中也有“面向对象”条目的索引,如图所示吗?

在此处输入图片描述

类似地,在 C 语言书中,我可以说 J 语言书中有“面向对象”的索引吗?

此外,我可以显示另一本书讨论某个条目的次数吗?例如在 J 书中,

面向对象,1,C3

意味着 C 书中有 3 个面向对象的情况。

或者如果太难的话,我可以添加页码吗?

面向对象,1,C1,C2,C7

意味着 C 书的第 1、2、7 页有面向对象这个词。

我的目标是让一本书的读者看到索引,并意识到另一本书也谈到了相同的概念(以及出现的次数)。这样他们就更有可能购买另一本书。

答案1

我认为最好的方法是手动编辑索引部分。

首先,向包中添加选项 noautomatic,即

\usepackage[noautomatic]{imakeidx}

因此它禁用自动索引处理。

运行后pdflatex cs.tex命令行有

包 imakeidx 警告:请记住在调用(imakeidx)“makeindex cs.idx”后再次运行(pdf)latex。

然后我编写了一个单行程序来查找另一个 idx 文件(java.idx)并向 cs.idx 添加一行。

修改了 cs.idx 后,我运行makeindex cs.idx并获取 cs.ind,这就是 \printindex 要读取的内容。此外,还必须修改页码排序规则。

最后再次编译tex文件,即pdflatex cs.tex

尽管如此,我认为这一行代码还是会花费我一天的时间。

相关内容