我使用了很多需要索引的术语,但我还没有决定是否保留这些术语。我的想法是简单地对这些术语使用宏,这样如果我决定不这样做,我只需要做一次机会。
问题:
让我们取 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 不会上当。我不知道为什么一个会按照我的意愿做,而另一个却不会。