在作者年份标签中突出显示年份

在作者年份标签中突出显示年份

我需要在参考书目中用粗体显示出版年份。使用 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}

相关内容