自定义 biblatex 样式 authoryear

自定义 biblatex 样式 authoryear

我知道这里以前讨论过非常类似的问题,但遗憾的是我仍然无法弄清楚以下问题:

我需要自定义标准authoryear @book样式使其看起来像这样:

姓氏,名字(年份):标题。地点,出版商。

(全部非斜体)

有人能帮我把标准斜体标题和位置后的冒号去掉吗?到目前为止,我只能用以下方法将(年份)后的句点改为冒号:

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

答案1

标题格式

您可以放心地假设应用于标题的基本格式可能会受到的影响\DeclareFieldFormat。在这种情况下很简单:

\DeclareFieldFormat[book]{title}{#1}

但您可能也想针对其他条目类型进行修改。在极端情况下,您可以使用带星号的命令版本清除所有类型特定的格式;但在这种情况下,我假设您想保留文章标题等格式不变。

地点和出版商

如果您查看standard.bbx(它又被 所使用authoryear.bbx),那么从查看基本驱动程序中,您可以很快发现它是一个bibmacro格式化publisher+location+date这些元素的调用。如果我们查看该宏(在 中standard.bbx,我们会发现,在它的中间有以下几行:

 \iflistundef{publisher}
    {\setunit*{\addcomma\space}}
    {\setunit*{\addcolon\space}}%

打印出来之前publisher。这些行中的第二行打印了我们的冒号。因此,我们可以对其进行更改,以便整个bibmacro定义如下

\renewbibmacro*{publisher+location+date}{%
  \printlist{location}%
  \setunit{\addcomma\space}%
  \printlist{publisher}%
  \setunit*{\addcomma\space}%
  \usebibmacro{date}%
  \newunit}

不用担心日期的引用:它不会被打印,因为datebibmacro 知道它已经打印过了。但在 biblatex 中更改内容的基本规则是尽可能少地更改。

当然,这种变化不仅仅影响book条目类型。但这可能正是你想要的:人们期待一致性。

标点符号

正如你所计算的,标点符号被改为

\renewcommand{\labelnamepunct}{\addcolon\space}

总共

\documentclass{article}
\usepackage[style=authoryear,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}

\DeclareFieldFormat[book]{title}{#1}

\renewbibmacro*{publisher+location+date}{%
  \printlist{location}%
  \setunit{\addcomma\space}%
  \printlist{publisher}%
  \setunit*{\addcomma\space}%
  \usebibmacro{date}%
  \newunit}

\renewcommand{\labelnamepunct}{\addcolon\space}
\begin{document}

\nocite{cotton}

\printbibliography[heading=none]

\end{document}

在此处输入图片描述

相关内容