Babelbib:结合 bababbrv-lf 和 babunsrt-lf

Babelbib:结合 bababbrv-lf 和 babunsrt-lf

我使用 babelbib 来生成参考书目。但是,它不能满足我的所有需求。我只希望条目的格式如下

[1] Knuth, D. 和 Torvalds, L.:我们没有一起写过任何东西等等。

[2] Abraham, A. 和 Barbara, B.: 我们的条目并不是第一个

所以它必须满足:

  • 按文本中出现的顺序排列项目(并使用数字)
  • 缩写名称
  • 姓名必须按照“姓氏,名字”的顺序排列

我使用过

\bibliographystyle{bababbrv-lf}

\bibliographystyle{babunsrt-lf}

每一个都只实现了上述 3 点中的 2 点。我怎样才能让整个程序运行起来?下面,你会看到一个最小的工作示例,使用

pdflatex mwe.tex
bibtex mwe
pdflatex mwe.tex
pdflatex mwe.tex
pdflatex mwe.tex

麦格


\documentclass[a4paper]{scrbook}

\usepackage[ngerman]{babel}
\usepackage{babelbib}

\begin{document}
    \chapter{One}
    Once, Lastname1 Firstname1 wrote a story~\cite{randomGuyStory}. And so did Derpina Derp~\cite{randomDerpinaStory}.
    \backmatter
    \bibliographystyle{babunsrt-lf}
%    \bibliographystyle{bababbrv-lf}
    \bibliography{mwebib}
\end{document}

网页设计


@article{randomDerpinaStory,
  title={The Story of tl;dr},
  author={Derp, Derpina and Herp, Herpington},
  journal={Journal of Sunday-workers},
  volume={284},
  number={46},
  pages={31548--31554},
}
@MASTERSTHESIS{randomGuyStory,
    author = {Lastname1, Firstname1 and Lastname2, Firstname2 and Lastname3, Firstname3},
    title = {Cool Story Bro},
    school = {Random University},
    year = {2012}
}

答案1

将文件复制babunsrt-lf.bst到您的工作目录并重命名此文件,例如mybabunsrt-lf

此后将函数更改format.names为以下定义:

FUNCTION {format.names}
{ 's :=
  #1 'nameptr :=
  s num.names$ 'numnames :=
  numnames 'namesleft :=
    { namesleft #0 > }
    { nameptr #1 >
      {
        s nameptr "{ll}" format.name$ lastnamefont
        s nameptr "{,~jj}{,~f{.\btxfnamespaceshort }.}{~vv}" format.name$ *
        't :=
          namesleft #1 >
            { ", " * t namefont * }
            { numnames #2 >
                { "\btxandcomma {}" * }
                'skip$
              if$
              s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ "others" =
                { " " "\btxetalshort {.}" etalfont * * }
                { " \btxandshort {.}\ " * t namefont * }
              if$
            }
          if$
        }
        {
          s nameptr "{ll}" format.name$ lastnamefont
          s nameptr "{,~jj}{,~f{.\btxfnamespaceshort }.}{~vv}"
          format.name$ * namefont
        }
      if$
      nameptr #1 + 'nameptr :=
      namesleft #1 - 'namesleft :=
    }
  while$
}

经过这样的修改我得到了以下结果:

在此处输入图片描述

相关内容