我正在使用文档中的natbib
、makeidx
和\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
从您的定义中删除了,因为它在原始定义中用于分隔名称和年份。