我正在写两本书。假设其中一本是《用 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
。
尽管如此,我认为这一行代码还是会花费我一天的时间。