我正在使用natbib
它来管理我的参考文献,现在我遇到一个问题:我的参考文献列表总是显示一篇文章的所有作者姓名:
Marcel H. Schulz, Daniel R. Zerbino, Martin Vingron, and Ewan Birney. Oases: robust
de novo RNA-seq assembly across the dynamic range of expression levels. Bioinformatics
(Oxford, England), 28(8):1086–1092, April 2012. 7, 9, 10, 40
我将选项设置为:
\usepackage[round, sort, numbers]{natbib}
\bibliographystyle{Latex/Classes/PhDbiblio-url2}
\renewcommand{\bibname}{References}
\bibliography{9_backmatter/references}
并使用cite{}
来引用参考文献。我尝试使用biblatex
,但似乎与 不兼容natbib
:
\usepackage[maxnames=3]{biblatex}
我希望最多显示3位作者的全名,否则显示为et al.
如何设置?
================
编辑:文件 PhDbiblio-url2.bst 可以在这里找到:https://bitbucket.org/dekz/thesis/src/3f8d8507cddc/Latex/Classes/PhDbiblio-url2.bst
这里的几行似乎定义了作者的显示:
INTEGERS { nameptr namesleft numnames }
FUNCTION {format.names}
{ 's :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
nameptr #1 >
{ namesleft #1 >
{ ", " * t * }
{ numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ " et~al." * }
{ " and " * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
但是如何numnames
从tex
文件中设置呢?
答案1
et al.
我相信您需要在之前设置作者数量.bst
,而不是从 LaTeX 中设置。
我认为下面的内容可以满足您的要求,我已经根据.bst
我使用创建的内容对其进行了改编makebst
. 只需替换format.names
您的.bst
。
FUNCTION {format.names}
{ 's :=
"" 't :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{vv~}{ll}{, jj}{, f{.}.}"
format.name$
't :=
nameptr #1 >
{
nameptr #1
#1 + =
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" *
}
{
" and "
* t *
}
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
et al.
如果您想更改使用之前的作者人数,请将#3
3 更改为正确的数字。如果您想更改et al.
列表中出现的名称数量,请将前一行中的#1
以下内容从 1 更改为正确的数字。nameptr
#1 + =
答案2
好的。我用一个愚蠢的方法解决了它。在bib
文件中,对于作者超过 3 位的文章,从列表中删除其他作者并代之others
。然后参考资料最多显示 3 位作者和et~al
。但无论如何,这有点乏味。