francais.bst 中 et collab. (french et al.) 后的额外句号

francais.bst 中 et collab. (french et al.) 后的额外句号

我使用的是 francais.bst 书目样式,书目条目中的“et collab.”(法语等同于“et al.”)后面有一个额外的句号。在文中引用时,应该只有一个句号。

与 et collab 相关的参考书目条目示例。

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.”无论如何都是不正确的。我还将其更改frenchbfrenchsincefrenchb已弃用。

\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}

代码输出

相关内容