索引中的宏命令字

索引中的宏命令字

我使用了很多需要索引的术语,但我还没有决定是否保留这些术语。我的想法是简单地对这些术语使用宏,这样如果我决定不这样做,我只需要做一次机会。

问题:

让我们取 TermOne 和 TermTwo 并使用

\usepackage[totoc, initsep=0pt, columns=5, columnsep=10pt, hangindent=3pt, subindent=8pt, subsubindent=10pt]{idxlayout}
\usepackage{makeidx}
\newcommand{\TermOne}{TermOne}
\newcommand{\TermTwo}{TermTwo}

现在我使用以下内容作为“另请参阅”索引条目:

\newcommand{\gobblecomma}[1]{}
\newcommand{\indexalso}[2]{\index{#1} \index{#1!{}\string\gobblecomma@|seealso{#2}}}
\indexalso{\WordOne{}}{\WordTwo{}}

这会在 idx 文件中生成以下内容:

\indexentry{WordOne{}!{}\gobblecomma@|seealso{\WordTwo{}}}{PageNr}

这有点奇怪,但单词后的“{}”消失了,并且它在 pdf 文件的索引中产生了我想要的结果。

我使用的其他命令是:

\index{\WordOne{}}

似乎根本不起作用,并且:

\index{Otherword!\WordOne{}}

它在 idx 文件中生成以下内容:

\indexentry{OtherWord!\WordOne}{PageNr}

这会搞乱索引,因为它以“\”开头。反向顺序或 \index 中的 2 个宏也是如此。但是,还会出现

\indexentry{WordOne}{PageNr}

但由于某种原因,页码对应着\indexentry{OtherWord!\WordOne}{PageNr},而不对应。\index{\WordOne{}}

我该如何解决这个问题?常规条目完全可以正常工作,但它们无法在 macos 上工作,而第一个例子可以。我试过了

\newcommand{\indexsub}[2]{\index #1 ! #2}

并尝试以这种方式输入宏,希望文本在被 makeidx 处理之前被替换,但 LaTeX 不会上当。我不知道为什么一个会按照我的意愿做,而另一个却不会。

相关内容