从 biblatex 中没有日期的在线条目中删除“nd”(无日期)

从 biblatex 中没有日期的在线条目中删除“nd”(无日期)

biblatexn.d.对于没有日期信息的条目,在参考书目中打印字符串(无日期).bib(无日期) (由于这个问题)。

它以前不打印n.d.条目@online,但在当前版本 (3.6) 中可以打印。我的问题是,如何从所有条目中删除所有这样的n.d./nodate字符串@online,而保留其他字符串(如下@book例所示,它仍应打印n.d.)?

\documentclass{article}
\usepackage[style=authoryear-comp]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{lennon,
    AUTHOR = "John Lennon",
    TITLE = "Who did what in the Beatles"}
@online{google,
    TITLE = "Google",
    URL = "https://www.google.com"}
\end{filecontents}
\addbibresource{\jobname.bib}

\begin{document}
\textcites{lennon}{google}
\printbibliography
\end{document}

在此处输入图片描述

答案1

答案已更新,并提供更好的解决方案。请参阅编辑历史记录以了解早期不太优雅的方法。

\literal{nodate}labeldate 格式在 的最末尾插入了“nodate”标记作为备用标记\DeclareLabeldate。我们可以@online通过为 提供类型特定的定义来抑制条目的此标记\DeclareLabeldate。使用下面的代码,labeldate如果没有为条目定义合适的日期字段,则字段将直接显示为未定义,而不是“nodate” @online

\documentclass{article}
\usepackage[style=authoryear-comp]{biblatex}
\usepackage{filecontents}
\begin{filecontents}{\jobname.bib}
@book{lennon,
    AUTHOR = "John Lennon",
    TITLE = "Who did what in the Beatles"}
@online{google,
    TITLE = "Google",
    URL = "https://www.google.com"}
\end{filecontents}
\addbibresource{\jobname.bib}

\DeclareLabeldate[online]{%
  \field{date}
  \field{year}
  \field{eventdate}
  \field{origdate}
  \field{urldate}
}

\begin{document}
\textcites{lennon}{google}
\printbibliography
\end{document}

给出 引文现在写成“Lennon (nd) 和 Google”,参考书目中也是如此:“*Google*”后面的“(nd)”消失了

相关内容