当@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
有几个。 (或者更好的是之前的分隔符。\newunit
note
\nounit
\newunitpunct
note
一个“正确”的解决方案是重新定义 biblatex 驱动程序online
。或者,可以使用以下 hack:
\AtEveryBibitem{
\ifentrytype{online}
{\iffieldundef{title}
{\def\newunitpunct{\addspace}}
{\def\newunitpunct{\addperiod\addspace}}
{}
}
{}
}
这确保如果没有标题,则会\newunit
产生一个空格。要恢复句点 ( ),我们可以通过在条目中为字段.
的格式指令中包含定义来进行恢复。note
online
\DeclareFieldFormat[online]{note}{\gdef\newunitpunct{\addperiod\addspace}#1}
language
最终,应该为列表和version
字段以及bibmacrosbyauthor
和给出类似的定义byeditor+others
。
在 OP 上,黑客生成了: