当 bib 条目没有标题时,年份后面没有点

当 bib 条目没有标题时,年份后面没有点

@online条目包含注释但没有标题时,年份后面会出现一个句号。
即使\renewcommand{\labelnamepunct}{\addspace} 在此处输入图片描述

当没有标题时,如何告诉 biblatex 不打印句点?

% arara: pdflatex
% arara: biber
% arara: pdflatex
\documentclass{article}

\usepackage[
    backend = biber,
    style = authoryear,
    sorting = nyt,
]{biblatex}


\begin{filecontents}{bib.bib}
    @online{
        a,
        author = {Aristotle},
        year = {2015},
        title = {Geometry},
        url = {http://athena.com}
    }
    @online{
        b,
        author = {Knuth},
        year = {2015},
        note = {Computer Scientist},
        url={http://latex.com}
    }
\end{filecontents}

\addbibresource{bib.bib}

% no dot after year
\renewcommand{\labelnamepunct}{\addspace}

\begin{document}

    \nocite{*}

    \printbibliography

\end{document}

答案1

\renewcommand{\labelnamepunct}{\addspace}不起作用的原因是因为\labelnamepunct所选样式中的年份(或“作者年份”)和标题之间的分隔符是。但是,在标准驱动程序中,在 打印之前online有几个。 (或者更好的是之前的分隔符。\newunitnote\nounit\newunitpunctnote

一个“正确”的解决方案是重新定义 biblatex 驱动程序online。或者,可以使用以下 hack:

\AtEveryBibitem{
  \ifentrytype{online}
    {\iffieldundef{title}
      {\def\newunitpunct{\addspace}}
      {\def\newunitpunct{\addperiod\addspace}}
    {}
  }
  {}
}

这确保如果没有标题,则会\newunit产生一个空格。要恢复句点 ( ),我们可以通过在条目中为字段.的格式指令中包含定义来进行恢复。noteonline

\DeclareFieldFormat[online]{note}{\gdef\newunitpunct{\addperiod\addspace}#1}  

language最终,应该为列表和version字段以及bibmacrosbyauthor和给出类似的定义byeditor+others

在 OP 上,黑客生成了:

在此处输入图片描述

相关内容