如何避免需要在 \index 中声明已声明的项目?

如何避免需要在 \index 中声明已声明的项目?

代码:

\documentclass{article}

\usepackage{index}
\usepackage{lipsum}
\makeindex

\begin{document}

\section{\index*{Hello World}}

Hello World

Some text about \index*{foo}.

\lipsum[1-15]

Hello World.

\printindex

\end{document}

输出(索引):

foo,1 你好,世界,1

问题陈述: 索引中遗漏了其他出现的“Hello World”。

  • 我没有在 \index{} 标签下包含其他出现的“Hello World”。

  • 但我希望通过这种方式我已经为索引声明了一个关键词。

  • LaTeX 应该负责“Hello World”本身的未来引用。

有没有什么方法(不使用任何 tcl 脚本)使得我使用 \index{} 指定关键字后,该词的下一次出现(如果位于不同的页面上)应该自动输入到索引中?

答案1

我完全同意芭芭拉的反对意见。我也曾想过自动索引重要术语,并写了一个简单的脚本。当然,这样的事情index all occurrences of “beautiful necklace”很容易做到。你只需要一个搜索和替换后处理脚本,其中包含beautiful necklace你选择的索引和突出显示宏。

TeX另一方面,自己做这件事几乎是不可能的,尽管我不知道 egLuaTeX的能力提供了什么。但毕竟,TeX无论如何你都在对代码进行后处理,至少是用你的编译器(例如pdflatex,通常需要更多步骤)。所以在我看来,在两者之间使用另一个脚本似乎很简单。

现在,正如芭芭拉所说,有时你可能不希望在所有地方都进行替换。解决这些问题可能相当复杂,甚至无法自动解决。

更大的障碍是,这些索引术语通常不会在文档中统一出现。例如,你可能在某处谈到了beautiful necklace,然后又说,This necklace is golden, which makes it very beautiful.这里我只会索引beautiful,指的是beautiful necklace。检测此类情况需要,因此与理解自然语言一样困难。

根据我的经验,索引术语确实大多以某种修改形式出现。这就是为什么忽略这一事实且可行的最简单解决方案毫无用处。

相关内容