我使用的是 francais.bst 书目样式,书目条目中的“et collab.”(法语等同于“et al.”)后面有一个额外的句号。在文中引用时,应该只有一个句号。
francaisbst.tex 文件定义了,\def\bbletal{et~collab.}
所以我猜问题出在 francais.bst 的某个地方,但我对那里使用的语言不够熟悉。format.names 函数定义为:
FUNCTION {format.names}
{ 'bibinfo :=
duplicate$ empty$ 'skip$ {
's :=
"" 't :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
duplicate$ #1 >
{ "{f.~}{vv~}{ll}{, jj}" }
{ "{vv~}{ll}{, f.}{, jj}" }
if$
format.name$
bibinfo bibinfo.check
't :=
nameptr #1 >
{
namesleft #1 >
{ ", " * t * }
{
s nameptr "{ll}" format.name$ duplicate$ "others" =
{ 't := }
{ pop$ }
if$
t "others" =
{
" " * bbl.etal *
}
{
bbl.and
space.word * t *
}
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
} if$
}
谢谢!
我看到了这个问题这里,但它并不完全符合我的问题。
编辑2:MWE
\RequirePackage{filecontents}
\documentclass[french]{article}
\begin{filecontents*}{\jobname.bib}
@Article{andrieu2011nonlinear,
author = {Andrieu, Christophe and Jasra, Ajay and Doucet, Arnaud and Del Moral, Pierre and others},
title = {{O}n {N}onlinear {M}arkov {C}hain {M}onte {C}arlo},
year = {2008},
journal = {Bernoulli},
publisher = {Bernoulli Society for Mathematical Statistics and Probability},
}
@Article{bai2009simultaneous,
author = {Bai, Yan},
title = {{S}imultaneous {D}rift {C}onditions for {A}daptive {M}arkov {C}hain {M}onte {C}arlo {A}lgorithms},
journal = {Preprint},
year = {2009},
}
\end{filecontents*}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{natbib}
\usepackage[english, frenchb]{babel}
\bibliographystyle{francais}
\begin{document}
\cite{andrieu2011nonlinear}
\cite{bai2009simultaneous}
\bibliography{\jobname}
\end{document}
MWE 的输出:
bst文件的来源:https://ctan.org/pkg/francais-bst
答案1
这个问题的正确解决办法是不是.bib
首先在文件中使用“其他” 。相反,您应该将所有名称添加到.bib
文件中,然后让.bst
文件自行确定如何截断引用。该francais.bst
文件这样做是错误的,因为它假设您将在.bib
文件中使用“其他”,但这会使您的.bib
文件无法用于需要参考书目中完整作者的样式。
您的条目中还有其他一些错误.bib
。您不应该在标题内容词的首字母周围加上括号,因为大写也应该由文件.bst
而不是.bib
文件控制。标题应该采用标题大小写(内容词大写),然后参考书目样式可以根据需要决定将它们小写。唯一应该用括号括起来的单词(然后是整个单词,而不仅仅是首字母)是专有名称或首字母缩略词,它们必须始终大写。
这是修复了这些问题的示例。另外,如果文件中的文章.bib
是这个那么它只能有四位作者,因此参考书目中的“et collab.”无论如何都是不正确的。我还将其更改frenchb
为french
sincefrenchb
已弃用。
\RequirePackage{filecontents}
\documentclass[french]{article}
\begin{filecontents*}{\jobname.bib}
@Article{andrieu2011nonlinear,
author = {Andrieu, Christophe and Jasra, Ajay and Doucet, Arnaud and Del Moral, Pierre},
title = {On Nonlinear {Markov} Chain {Monte Carlo}},
year = {2008},
journal = {Bernoulli},
publisher = {Bernoulli Society for Mathematical Statistics and Probability},
}
@Article{bai2009simultaneous,
author = {Bai, Yan},
title = {Simultaneous Drift Conditions for Adaptive {Markov} Chain {Monte Carlo} Algorithms},
journal = {Preprint},
year = {2009},
}
\end{filecontents*}
\usepackage{natbib}
\usepackage[english, french]{babel}
\usepackage[T1]{fontenc}
\bibliographystyle{francais}
\begin{document}
\cite{andrieu2011nonlinear}
\cite{bai2009simultaneous}
\bibliography{\jobname}
\end{document}