自引用索引条目

自引用索引条目

我想要生成一个索引,该索引条目仅指向自身,而不是文本中的任何其他位置。也就是说,我想要一个命令\phoneyindex{Smith, John},当它被放入序言中时,它会生成一个指向 John Smith 的索引条目,该条目仅指向索引中出现该条目的页面。

有任何想法吗?

答案1

这个问题很 Knuthian!索引条目可以写成以下形式

 \index{John Smith|cmd}

其中\cmd是应用于页码值的命令。第一种方法是使用

 \newcommand{\mypageout}[1]{\thepage}

并发布

 \index{John Smith|mypageout}

文档中的某个地方,因此打印的页码x被替换为\mypageout{x},这只是的当前输出\thepage。但是,正如您所指出的,由于页面构建的工作方式,页面边界处的页码\thepage通常会偏离。或者,您可以按如下方式使用/机制:定义一个宏,丢弃其第二个参数并从第一个参数生成标签,并将其与命令部分的第一个参数一起使用1\label\pageref\mypageout\index

\newcommand{\phoneyindex}[2]{\index{#1|mypageout{#2}}}
\newcommand{\mypageout}[2]{\label{#1}\pageref{#1}}

然后使用 调用此方法\phoneyindex{John Smith}{phoneyj},其中 是phoneyj您要使用的标签。现在,这对于页面边界后的条目来说是正确的。

第 5 页

第 5 页

第 6 页

第 6 页

\documentclass{article}

\usepackage{lipsum}
\usepackage{makeidx}
\makeindex

\newcommand{\phoneyindex}[2]{\index{#1|mypageout{#2}}}
\newcommand{\mypageout}[2]{\label{#1}\pageref{#1}}

\begin{document}

\phoneyindex{Allan Smith}{phoneya}
\phoneyindex{John Smith}{phoneyj}

\lipsum[1-20]
\index{Start}Start.

\lipsum[21]
\index{F}\index{G}\index{H}\index{I}\index{J}\index{B}\index{L}\index{Ba}\index{Ca}\index{Da}\index{Ea}\index{Fa}\index{Ga}\index{Ha}\index{Ia}\index{Ja}\index{Ba}\index{La}\index{Baa}\index{Caa}\index{Daa}\index{Eaa}\index{Faa}\index{Gaa}\index{Haa}\index{Iaa}\index{Jaa}\index{Baa}\index{Laa}\index{Bab}\index{Cab}\index{Dab}\index{Eab}\index{Fab}\index{Gab}\index{Hab}\index{Iab}\index{Jab}\index{Bab}\index{Lab}\index{Bb}\index{Cb}\index{Db}\index{Eb}\index{Fb}\index{Gb}\index{Hb}\index{Ib}\index{Jb}\index{Bb}\index{Lb}\index{Bc}\index{Cc}\index{Dc}\index{Ec}\index{Fc}\index{Gc}\index{Hc}\index{Ic}\index{Jc}\index{Bc}\index{Lc}\index{Bd}\index{Cd}\index{Dd}\index{Ed}\index{Fd}\index{Gd}\index{Hd}\index{Id}\index{Jd}\index{Bd}\index{Ld}\index{Be}\index{Ce}\index{De}\index{Ee}\index{Fe}\index{Ge}\index{He}\index{Ie}\index{Je}\index{Be}\index{Le}\index{Bf}\index{Cf}\index{Df}\index{Ef}\index{Ff}\index{Gf}\index{Hf}\index{If}\index{Jf}\index{Bf}\index{Lf}

\printindex

\end{document}

相关内容