![引用“et al.”仅适用于 natbib 和 jf.bst 中的四位或更多作者](https://linux22.com/image/296283/%E5%BC%95%E7%94%A8%E2%80%9Cet%20al.%E2%80%9D%E4%BB%85%E9%80%82%E7%94%A8%E4%BA%8E%20natbib%20%E5%92%8C%20jf.bst%20%E4%B8%AD%E7%9A%84%E5%9B%9B%E4%BD%8D%E6%88%96%E6%9B%B4%E5%A4%9A%E4%BD%9C%E8%80%85.png)
我正在使用该包natbib
和以下 jf.bst 文件作为我论文的引用http://faculty.haas.berkeley.edu/stanton/texintro/。根据引文要求,当作者人数少于四人时,引文必须打印出作者的所有姓氏。现在的问题是,只要我有两位以上的作者,我就会得到例如“Doyle et al. (2006)”,而输出应该是“Doyle, Lundholm and Soliman (2006)”。根据 natbib 参考表http://merkel.zoneo.net/Latex/natbib.php我可以使用 获得我想要的输出\citet*
。这实际上很繁琐,因为我每次都必须检查作者数量,然后才能决定使用哪个 cite 命令。有没有办法让 Late 自动理解使用正常命令\cite
我可以得到上面 mentionend 的输出?
答案1
要更改引文标注中使用“et al.”的截断标准,从具有三位或更多作者的文章更改为具有四位或更多作者的文章,需要修改format.lab.names
参考书目样式文件中的函数。
我建议您执行以下操作:
jf.bst
复制您目前使用的版本。将副本命名为jf3.bst
--“3”,表示如果某篇文章恰好有三位作者,则不会进行截断。(不要jf.bst
直接修改。)在文本编辑器中打开文件
jf3.bst
并找到函数format.lab.names
。它应该从第 1160 行开始,跨越 18 行。删除整个函数(即全部 18 行)并在其位置插入以下代码块(共 46 行):
FUNCTION {format.lab.names} {'s := "" 't := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{vv~}{ll}" format.name$ 't := nameptr #1 > { nameptr #2 = numnames #3 > and { "others" 't := #1 'namesleft := } 'skip$ if$ namesleft #1 > { ", " * t * } { s nameptr "{ll}" format.name$ duplicate$ "others" = { 't := } { pop$ } if$ t "others" = { " et~al." * } { numnames #2 > { "," * } 'skip$ if$ bbl.and space.word * t * } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ }
将文件保存
jf3.bst
在主 tex 文件所在的目录中或 BibTeX 搜索的目录中。如果选择第二个选项,请务必更新 TeX 发行版的文件名数据库。使用指令
\bibliographystyle{jf3}
而不是 来开始使用新的参考书目样式\bibliographystyle{jf}
。首次切换参考书目样式后,请务必再运行 LaTeX、BibTeX 和 LaTeX 两次,以完全传播所有更改。
祝您 BibTeX 愉快!
附录\citet
:以下是运行 MWE生成的引文标注,首先是jf
,然后是jf3
。(一个条目有三位作者,另一个有四位。)
使用jf
,两个引用标注都会截断为Andersen et al.
:
使用jf3
,只有一个引用标注 - 针对有四位作者的作品 - 被截断:
\documentclass{article}
\usepackage{filecontents}
\begin{filecontents*}{\jobname.bib}
@article{abd:2007,
author = "Torben G. Andersen and Tim Bollerslev and Francis X. Diebold",
title = "Roughing it up: {Including} jump components in the
measurement, modeling and forecasting of return volatility",
journal = "Review of Economics and Statistics",
year = 2007,
volume = 89,
number = 4,
month = "November",
pages = "701--720",
}
@article{abde:2001,
author = "Torben G. Andersen and Tim Bollerslev and Francis X. Diebold
and Heiko Ebens",
title = "The distribution of realized stock return volatility",
journal = "Journal of Financial Economics",
year = 2001,
volume = 61,
number = 1,
month = "July",
pages = "43--76",
}
\end{filecontents*}
\usepackage[round,authoryear,comma]{natbib}
\bibliographystyle{jf} % or: jf3
\begin{document}
\citet{abd:2007}; \citet{abde:2001}
\bibliography{\jobname}
\end{document}