我知道这里以前讨论过非常类似的问题,但遗憾的是我仍然无法弄清楚以下问题:
我需要自定义标准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}
不用担心日期的引用:它不会被打印,因为date
bibmacro 知道它已经打印过了。但在 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}