索引中的脚注编号代替页码

索引中的脚注编号代替页码

makeindex 生成的标准索引会显示每个索引术语的页码。是否有办法在索引术语出现在脚注中时显示脚注编号(而不是页码)?脚注编号在整个文档中按顺序排列,因此这比仅用“n”限定页码更能本地化参考。在脚注和正文中使用不同的索引宏是可以的。

答案1

我的方法是\@footnoteindex在 a 开始时切换为 true \footnote,并在 之后将其设置为 false \@wrindex

这当然是一个逻辑错误,因为它不允许其他\index用法\footnote也使用脚注编号。

\documentclass{article}


\usepackage{makeidx}

\usepackage{blindtext}

\makeatletter
\let\latex@@footnote\footnote
\newif\if@footnoteindex

\renewcommand{\footnote}[1]{%
  \global\@footnoteindextrue
  \latex@@footnote{#1}%
}


  \def\@wrindex#1{%
    \if@footnoteindex
    \global\let\the@fooindexstuff\thefootnote
    \else
    \global\let\the@fooindexstuff\thepage
    \fi
    \protected@write\@indexfile{}%
    {\string\indexentry{#1}{\the@fooindexstuff}}%
    \global\@footnoteindexfalse%
    \endgroup
    \@esphack
}
\usepackage{hyperref}





\makeatother

\makeindex

\begin{document}

\section{A section}
The concept of animals as pets is quite important\index{Animal}
\blindtext[10]\footnote{Stuff\index{Dog}}

\clearpage
Duck\index{Duck}

\blindtext[10]\footnote{Another stuff\index{Cat}}
\clearpage
Elephant\index{Elephant}

\printindex

\end{document}

答案2

即使您希望索引中的脚注编号而不是页码,您仍必须以不同的格式来区分索引中的两者。在此示例中,我将脚注编号加粗。

在此处输入图片描述

.idx问题是在文件写入时获取脚注编号。如果我们发送一个\thefootnote,它将在索引排版时给出该计数器的值。

我在这里所做的是创建一个\footnoteindex用于在脚注中使用 的命令。此命令使用 ,\thefootnote因为它作为参数发送到 ,所以被扩展\index。插入的页码\index将被附加命令丢弃,\indexbf因为第二个参数(页码)未使用。

由于脚注编号不在页码的位置,因此makeidx无法使用它们进行通常的好操作。

这是代码:

\documentclass{article}

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

\newcommand{\indexbf}[2]{\textbf{#1}}
\newcommand{\footnotexindex}[2]{\index{#1|indexbf{#2}}}
\newcommand{\footnoteindex}[1]{\footnotexindex{#1}{\thefootnote}}


\begin{document}

\setcounter{page}{11}
\setcounter{footnote}{3}

\lipsum[1]\index{first}\footnote{\lipsum[2]\footnoteindex{first foot}\footnoteindex{same foots}}
\lipsum[3]\index{second}\footnote{\lipsum[4]\footnoteindex{second foot}}
\lipsum[5]\index{text and foot}\footnote{\lipsum[6]\footnoteindex{text and foot}\footnoteindex{same foots}}

\printindex

\end{document}

相关内容