我正在使用 biblatex 编写论文,需要调整参考书目和引用样式。我正在使用波恩艺术史书目样式,但同样的问题也适用于标准样式,例如authoryear
。我已经制作了 arthistory-bonn 样式的自定义副本并添加了一些小的修改,因此添加进一步的修改不会成为问题。
我需要引用报纸文章,其中一些有作者,一些没有。我使用的是article
条目类型。它目前看起来像这样:
\documentclass[ngerman]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english,italian,main=ngerman]{babel}
\usepackage{csquotes}
\usepackage{filecontents}
\begin{filecontents}{Diss.bib}
@article{News1,
journal = {{Springfield Shopper}},
title = {The revolutionary monorail},
year = {2020},
date = {2020-12-23},
url = {http://example.com},
urldate = {2021-12-12}
}
@article{News2,
journal = {{Springfield Shopper}},
title = {About tire fires},
year = {2020},
date = {2020-12-23},
url = {http://example.com},
urldate = {2021-12-12},
author = {Kent Brookman}
}
\end{filecontents}
\usepackage[style=arthistory-bonn,autocite=footnote,backend=biber,sortlocale=auto,language=auto,backref=false,sorting=nty]{biblatex}
\addbibresource{Diss.bib}
\begin{document}
It's science if you quote things\autocite{News1,News2}.
\printbibliography[heading=subbibintoc]
\end{document}
结果如下:
在第一个条目中,我需要将日期更改为标签内的年份,即“Brookman 2020”而不是“Brookman(2020 年 12 月 23 日)”。
在第二个条目中,我需要标签包含期刊名称,即“Springfield Shopper 2020”,即期刊名称应取代作者。目前,biblatex 将文章标题放在引号中。
脚注也应进行相同的更改,即应为“Springfield Shopper 2020”和“Brookman 2020”。
不幸的是,我找不到在哪里修改标签。我该如何实现呢?
我绝对需要参考书目中的“in:”,所以我必须指定字段journal
。如果我将journal
和editor
字段都设置为报纸名称,标签看起来没问题,但报纸名称在参考书目中出现了两次(作为期刊和编辑),这相当多余。
答案1
biblatex
如果//字段为空,则标准authoryear
和authortitle
样式使用替换字段。label
author
editor
translator
由于某种原因,使用arthistory-bonn
日期会被删除label
,因此如果您想恢复该日期,则需要进行一些小的更改。
对于仅使用年份而不是完整日期的情况,我们可以使用\printlabeldateextra
bibmacro date+extradate
。
\documentclass[ngerman]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[english,italian,main=ngerman]{babel}
\usepackage{csquotes}
\usepackage[
backend=biber,
style=arthistory-bonn,
labeldate=year,
autocite=footnote,
language=auto,
backref=false,
]{biblatex}
\renewbibmacro*{cite:normal}{%
\global\boolfalse{cbx:loccit}%
\ifthenelse{\ifciteibid\AND\NOT\iffirstonpage}%
{\usebibmacro{cite:ibid}}%
{\iffieldundef{shorthand}%
{\usebibmacro{cite:various}}%
{\usebibmacro{cite:shorthand}}}}
\renewbibmacro*{cite:various}{%
\ifentrytype{catalog}%
{\usebibmacro{cite:catalog}}%
{\ifentrytype{exhibcatalog}%
{\usebibmacro{cite:exhibcatalog}}%
{\ifentrytype{reference}%
{\usebibmacro{cite:reference}}%
{\ifthenelse{\ifnameundef{labelname}\OR\iffieldundef{labelyear}}
{\usebibmacro{cite:label}%
\setunit{\printdelim{nonameyeardelim}}}%
{\printnames{labelname}%
\setunit{\printdelim{nameyeardelim}}}%
\printtext[bibhyperref]{\printlabeldateextra}}}}}
\begin{filecontents}{\jobname.bib}
@article{News1,
journal = {Springfield Shopper},
label = {Springfield Shopper},
title = {The revolutionary monorail},
year = {2020},
date = {2020-12-23},
url = {http://example.com},
urldate = {2021-12-12}
}
@article{News2,
journal = {Springfield Shopper},
title = {About tire fires},
year = {2020},
date = {2020-12-23},
url = {http://example.com},
urldate = {2021-12-12},
author = {Kent Brookman},
}
\end{filecontents}
\addbibresource{\jobname.bib}
\begin{document}
It's science if you quote things\autocite{News1,News2}.
\printbibliography[heading=subbibintoc]
\end{document}