当然,一定有某种方法来创建建议纳入索引的单词列表。
答案1
我建议你看一下脚本制作索引.py(及相关文件)位于 Stacks Project 下载页面的脚本文件夹中(http://www.math.columbia.edu/algebraic_geometry/stacks-git/)。它生成的索引并不是很理想,但至少他们的策略会给你一些入门的想法。他们似乎采取了这样的方法(在一本巨大的数学教科书中),最值得出现在索引中的东西是每个定义环境中的斜体单词或短语。根据我使用数学书籍的经验,我在索引中查找某些内容的最常见原因是学习它的定义,所以这似乎是合适的,尽管可能不适用于其他学科的书籍。但是,您可以使用 Stacks Project 脚本作为指南,自动创建适合您自己需求的索引,即使它们非常不同。
答案2
正如其他人提到的,尝试自动完成这项任务几乎是不可能的。但如果你想为自己获得一些非常粗略的单词提示,我会尝试以下方法(注意,需要编写一些脚本):
使用detex
或 之类的东西来删除 TeX 标记,然后编写一个小脚本来计算每个单词在文档中使用的次数。列表中最上面的单词可能是无用的单词,例如a
、the
、is
等。但是,在这些之后,您可能会找到一些有希望的单词。
答案3
除了 Juan A. Navarro 的建议之外,我想说章节和章节标题中出现的词语很可能是索引的候选词。 例如,如果第 2.3 节的标题是“Virasoro 代数”,那么这可能是一个足够重要的主题,应该将“Virasoro 代数”的其他出现情况编入索引。您可以编写一个脚本(使用您最喜欢的脚本语言)来提取\section
命令的参数等,抛出介词和冠词,并按频率对其余部分进行排序。您的脚本如何知道单词维拉索罗和代数一起去……好吧,你要么打电话import skynet
并承担后果或者您可以对其输出进行一些手动工作。
其他需要检查的内容包括不在句首但大写的单词和以强调形式出现的单词。
答案4
作为一个粗略的破解,我有时使用以下几行来以粗体+斜体显示所有定义,然后将它们放在索引中。
\newcommand{\eb}[1]{{\itshape\bfseries#1}{\index{#1}}}
\renewcommand{\emph}{\eb}