使用 biblatex 来创建自己的参考书目样式

使用 biblatex 来创建自己的参考书目样式

我的书目必须是这样的:

名称,给定名称;名称 2,给定名称 2:标题。版本位置:出版商,年份。

例如

韦克,曼弗雷德;布雷歇尔,克里斯蒂安:机器加工机械。 6.Auflage柏林:Springer,2005年。

我的bib文件如下所示:

@BOOK{weck,
  title = {Werkzeugmaschinen},
  publisher = {Springer},
  year = {2005},
  author = {Manfred Weck and Christian Brecher},
  address = {Berlin},
  edition = {6.Auflage}
}

我的tex文件如下:

\usepackage[backend=biber, bibstyle=alphabetic,  sorting=nyt]{biblatex}

\DeclareBibliographyDriver{book}{
  \printnames{author}%
  \setunit{\addcolon}
  \newunit\newblock \printfield{title}%
  \setunit{\adddot}
  \newunit\newblock \printfield{edition}%
  \newunit \printlist{location} %
  \setunit{\addcolon}
  \newunit \printlist{publisher}
  \setunit{\addcomma}
  \newunit \printfield{year}
  \finentry}

但我的书目是这样的

Manfred Weck 和 Christian Brecher。机床。 6.柏林授课。斯普林格。 2005

因此,名字必须放在第一位,如果有多个作者,则;中间必须有一个。分号和冒号似乎被忽略了,总是有一个点。

答案1

这是一个示例,它不从头开始创建新的书目驱动程序,而是修改现有book驱动程序。尝试注释掉我的重新定义,看看它们有什么效果。请注意,我已将文件edition中字段的内容更改.bib为整数,而是使用babel包加上biblatex包选项abbreviate=false

注意:在代码片段中的参考书目驱动程序中,分号和冒号不会被忽略,而是会被下面的\newunit排版\newunitpunct(默认情况下为句点和空格)覆盖。

更多信息请访问自定义 biblatex 样式的指南

\documentclass{article}

\usepackage[ngerman]{babel}

\usepackage[backend=biber,style=alphabetic,sorting=nyt,abbreviate=false]{biblatex}

\DeclareNameAlias{default}{last-first}

\renewbibmacro*{author/editor+others/translator+others}{%
  \mkbibbold{% ADDED
  \ifboolexpr{
    test \ifuseauthor
    and
    not test {\ifnameundef{author}}
  }
    {\usebibmacro{author}}
    {\ifboolexpr{
       test \ifuseeditor
       and
       not test {\ifnameundef{editor}}
     }
       {\usebibmacro{editor+others}}
       {\usebibmacro{translator+others}}}}
  }% ADDED

\renewcommand*{\multinamedelim}{\addsemicolon\space}
\renewcommand*{\finalnamedelim}{\addsemicolon\space}

\renewcommand*{\labelnamepunct}{\mkbibbold{\addcolon\space}}

\renewbibmacro*{publisher+location+date}{%
  \printlist{location}%
  \iflistundef{publisher}
    {\setunit*{\addcomma\space}}
%    {\setunit*{addcolon\space}}% DELETED
    {\setunit*{~:\space}}% ADDED
  \printlist{publisher}%
  \setunit*{\addcomma\space}%
  \usebibmacro{date}%
  \newunit}

\DeclareFieldFormat{edition}{%
  \ifinteger{#1}
%    {\mkbibordedition{#1}~\bibstring{edition}}% DELETED
    {\mkbibordedition{#1}\bibstring{edition}}% ADDED
    {#1\isdot}}

\usepackage{filecontents}

\begin{filecontents}{\jobname.bib}
@book{weck,
  author = {Manfred Weck and Christian Brecher},
  year = {2005},
  title = {Werkzeugmaschinen},
  edition = {6},
  location = {Berlin},
  publisher = {Springer},
}
\end{filecontents}

\addbibresource{\jobname.bib}

\nocite{*}

\begin{document}

\printbibliography

\end{document}

在此处输入图片描述

相关内容