使用 natbib 生成仅包含作者姓名(不包含日期)的作者索引

使用 natbib 生成仅包含作者姓名(不包含日期)的作者索引

我正在使用文档中的natbibmakeidx\citep和生成作者索引。这可行,但作者条目的形式如下:\citet\citeindextrue

Hegselmann (2001), 142, 190

Hegselmann (2012), 55, 190

我想显示的只是:

Hegselmann,55,142,190

文档natbib中省略了对以下内容的引用(第 16 页): “索引条目的形式由内部设置\NAT@idxtxt,如果需要,黑客可以重新定义它(natbib.cfg请在文件中)。默认情况下,它会以当前括号样式和引用模式打印简短的作者列表以及日期或数字。”

我已\renewcommand\NAT@idxtxt{\NAT@name\NAT@spacechar}在文件中尝试过“” natbib.cfg,但这似乎不起作用(索引条目未改变)。

我应该做什么?

答案1

NAT@idxtxt每次生成引用时都会重新定义,因此我建议您改为NAT@index使用类似 的内容NAT@myidxtxt。在序言中您可以写:

\makeatletter
\renewcommand\NAT@index{\@bsphack\begingroup
   \def~{\string~}\@wrindex{\NAT@myidxtxt}}
\newcommand\NAT@myidxtxt{\NAT@name}
\makeatother

答案2

\NAT@idxtxt重新定义不起作用的原因是natbib将此定义设置为\begin{document},因此您之前的定义被覆盖。因此,我们需要使用 来结束最新定义\AtBeginDocument

\documentclass{article}

\usepackage{makeidx}
\usepackage{natbib}

\makeindex
\citeindextrue

\makeatletter
\newcommand{\setNATidxtxt}{%
  \renewcommand\NAT@idxtxt{\NAT@name}
}
\makeatother
\AtBeginDocument{\setNATidxtxt}

\begin{document}
\citet{StGu92}

\printindex

\bibliographystyle{chicago}
\bibliography{test}
\end{document}

请注意,我还\NAT@spacechar从您的定义中删除了,因为它在原始定义中用于分隔名称和年份。

示例输出

相关内容