![如何使用 biblatex 修改文本中引用的新闻文章的输出(新闻杂志的完整日期和名称)](https://linux22.com/image/278800/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%20biblatex%20%E4%BF%AE%E6%94%B9%E6%96%87%E6%9C%AC%E4%B8%AD%E5%BC%95%E7%94%A8%E7%9A%84%E6%96%B0%E9%97%BB%E6%96%87%E7%AB%A0%E7%9A%84%E8%BE%93%E5%87%BA%EF%BC%88%E6%96%B0%E9%97%BB%E6%9D%82%E5%BF%97%E7%9A%84%E5%AE%8C%E6%95%B4%E6%97%A5%E6%9C%9F%E5%92%8C%E5%90%8D%E7%A7%B0%EF%BC%89.png)
我还剩一周时间交论文,但我遇到了一个大问题。我引用了很多在线报纸文章,但在文中却是这样的:
文字(《自由报》 2013 年)
输出应该是这样的:
文本(《自由报》2013 年 3 月 16 日)
对于我的参考书目,我使用来自 CTAN 的带有作者年份样式 luh-ipw 的 biblatex。
我的 MWE 如下所示:
\documentclass{scrreprt}
\usepackage{filecontents}
\begin{filecontents}{bibliographie.bib}
@newspaper{SZ.2013a,
Author = {{S{\"u}ddeutsche.de}},
Date = {2013-10-29},
Day = {29},
Month = {10},
Year = {2013},
Title = {T{\"u}rkei er{\"o}ffnet Bahntunnel unter dem Bosporus},
Url = {http://www.sueddeutsche.de/auto/nach-fast-zehn-jahren-bauzeit-tuerkei-eroeffnet-bahntunnel-unter-dem-bosporus-1.1806910},
Urldate = {2013-10-30}
}
\end{filecontents}
\usepackage[
backend=biber,
style=authoryear-luh-ipw
]
{biblatex}
\bibliography{bibliographie}
\begin{document}
\parencite{SZ.2013a}
\printbibliography
\end{document}
感谢评论中的建议,我添加了新类型@newspaper。
到目前为止一切顺利,在参考书目中一切都按预期工作,但是:在文本中我需要打印完整的日期,但不知道如何相应地修改 biblatex 样式。
答案1
这是我的建议。默认情况下,任何引用命令的日期都按以下定义打印:
\newbibmacro*{cite:labelyear+extrayear}{%
\iffieldundef{labelyear}
{}
{\printtext[bibhyperref]{%
\printfield{labelyear}%
\printfield{extrayear}}}}
这意味着您没有影响样式的选项。因此,year
我使用的是\printdatelabel
允许通过选项进行一些修改的选项datelabel
。并且仅对于条目类型,newspaper
使用新定义:
\documentclass[ngerman]{article}
\usepackage{babel}
\usepackage{filecontents}
\begin{filecontents}{bibliographie.bib}
@newspaper{SZ.2013a,
Author = {{S{\"u}ddeutsche.de}},
Date = {2013-10-29},
Title = {T{\"u}rkei er{\"o}ffnet Bahntunnel unter dem Bosporus},
Url = {http://www.sueddeutsche.de/auto/nach-fast-zehn-jahren-bauzeit-tuerkei-eroeffnet-bahntunnel-unter-dem-bosporus-1.1806910},
Urldate = {2013-10-30}
}
\end{filecontents}
\usepackage[style=authoryear-luh-ipw,datelabel=terse]{biblatex}
\DeclareBibliographyAlias{newspaper}{article}
\addbibresource{bibliographie.bib}
\renewbibmacro*{cite:labelyear+extrayear}{%
\iffieldundef{labelyear}
{}
{%
\ifentrytype{newspaper}%
{%
\printtext[bibhyperref]{vom~\printdatelabel}%
}%
{%
\printtext[bibhyperref]{\printfield{labelyear}\printfield{extrayear}}%
}%
}%
}
\begin{document}
\parencite{SZ.2013a}
\printbibliography
\end{document}