从 \textbf 创建索引条目

从 \textbf 创建索引条目

我最近刚刚完成了我的本科数学学位,并且一直在将我的所有课堂笔记汇编成一份文档以供将来参考。该文档很长,并且由于它基于以前的课堂笔记,因此\index没有添加条目。但是,大多数重要术语都已用 突出显示\textbf。是否有任何方法(无论是包还是宏)可以

  1. 梳理文件,并添加\index{*}任何术语实例\textbf{*}
  2. 更改索引以识别包含在\textbf{}

感谢您的任何帮助或协助!

答案1

这是使用视觉标记描述逻辑概念的典型情况。如果随后(在稍后)需要对这些元素进行额外处理(例如,在这种情况下添加索引条目),则实际上不可能在 TeX/LaTeX/ConTeXt/... 中执行此操作,因为视觉标记在内部还用于格式化其他元素的片段。例如,\textbf我们可能会将其视为描述标签的一部分或标题定义等,而这些也不应该被索引。

TeX 内部知道宏是否出现在文档级别(因为它跟踪输入堆栈),但不幸的是,此信息在编程级别不可用(现在甚至在 LuaTeX 中也不可用,尽管 Hans 可能会在下一个版本中添加它)并且我不知道其他方法可以确定宏是由用户直接调用还是在其他宏的定义中调用 --- 如果有人知道如何获取该信息,我会很高兴了解它。

因此,我始终建议明确标记所有逻辑元素,因为即使只有极小的可能性,它们有一天也需要特殊格式或处理。如果你养成这样做的习惯,这不会带来太多额外的工作,但最终会为你节省很多。所有需要预先做的事情是

\let\term\textbf

然后使用\term而不是直接格式化指令。在稍后阶段,您可以考虑如何使定义更智能(如果有必要),例如,将其替换为在加粗参数旁边添加索引条目的定义。

因此,在这种特殊情况下,最好的选择正如评论中所述:

  • \textbf将文档中的所有位置替换为\term
  • 然后进行\term适当的定义,例如

    \newcommand\term[#1]{\textbf{#1}\index{#1}}

正如其他人指出的那样。

相关内容