![在作者年份标签中突出显示年份](https://linux22.com/image/361222/%E5%9C%A8%E4%BD%9C%E8%80%85%E5%B9%B4%E4%BB%BD%E6%A0%87%E7%AD%BE%E4%B8%AD%E7%AA%81%E5%87%BA%E6%98%BE%E7%A4%BA%E5%B9%B4%E4%BB%BD.png)
我需要在参考书目中用粗体显示出版年份。使用 biblatex 内置的 author-year 功能,我找到了以下行
\DeclareFieldFormat{title}{\emph{#1}}
在官方文档中。所以我想
\DeclareFieldFormat{year}{\mkbibbold{#1}}
应该可以解决问题。但是,按照下面的 MWE 所示使用它,这并不影响参考书目的呈现方式(标题斜体也不影响)。
我究竟做错了什么?
\documentclass{article}
\usepackage{filecontents}
\usepackage[style=authoryear,backend=biber]{biblatex}
\begin{filecontents}{\jobname.bib}
@article{porter:1980,
author = "Porter, Martin F.",
journal = "Program",
title = "An algorithm for suffix stripping",
year = "1980"
}
\end{filecontents}
\addbibresource{\jobname.bib}
\DeclareFieldFormat{year}{\mkbibbold{#1}}
\begin{document}
As stated by \textcite{porter:1980}\dots
\printbibliography
\end{document}
答案1
您实际上在这里看到的不是年份字段,而是labelyear
,因此您必须这样做
\DeclareFieldFormat{labelyear}{\mkbibbold{#1}}
但是,这只会改变引文,在大多数情况下不会影响参考书目。在参考书目中,年份通常通过宏作为日期的一部分打印\print...date...
。对字段格式的修改不会影响 \print...date...
宏。这里,一个非常简单的解决方案是
\DeclareFieldFormat{yearinbib}{\mkbibbold{\mkbibparens{#1}}}
\renewbibmacro*{date+extrayear}{%
\iffieldundef{labelyear}
{}
{\printtext[yearinbib]{%
\iffieldsequal{year}{labelyear}
{\printlabeldateextra}%
{\printfield{labelyear}%
\printfield{extrayear}}}}}
随着即将推出的 3.8 版本,biblatex
该代码将更改为
\renewbibmacro*{date+extrayear}{%
\iffieldundef{labelyear}
{}
{\printtext[yearinbib]{%
\iflabeldateisdate
{\printdateextra}
{\printlabeldateextra}}}}
平均能量损失
\documentclass{article}
\usepackage[style=authoryear,backend=biber]{biblatex}
\addbibresource{biblatex-examples.bib}
\DeclareFieldFormat{labelyear}{\mkbibbold{#1}}
\DeclareFieldFormat{yearinbib}{\mkbibbold{\mkbibparens{#1}}}
\renewbibmacro*{date+extrayear}{%
\iffieldundef{labelyear}
{}
{\printtext[yearinbib]{%
\iffieldsequal{year}{labelyear}
{\printlabeldateextra}%
{\printfield{labelyear}%
\printfield{extrayear}}}}}
\begin{document}
As stated by \textcite{sigfridsson}\dots
\printbibliography
\end{document}