想要:用问号代替 bibtex 键来表示缺失的引文(biblatex)

想要:用问号代替 bibtex 键来表示缺失的引文(biblatex)

我不想让引用键显示在文档中以查找缺失的参考文献,而只想显示 [?],就像使用默认 bibtex 而不使用 biblatex 时的情况一样。这种行为让我抓狂,因为它搞乱了所有格式(尤其是表格中的格式)。我想专注于写作,稍后再处理错误的引用。

这个问题与

我如何停止 biblatex 打印 bibtex 密钥?

并且其 MWE 可以使用。然而,正如之前指出的,我文本中的问号反而引用键以免弄乱格式(缺少引用)。

答案1

自 3.12 版本以来,biblatex已有半内部宏\abx@missing@entry,可以按如下方式重新定义

\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{csquotes}

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

\addbibresource{biblatex-examples.bib}

\makeatletter
\def\abx@missing@entry#1{\abx@missing{??}}
\makeatother

\begin{document}
\cite{sigfridsson,appleby}
\printbibliography
\end{document}

缺少的输入键显示为 <code>??</code> 而不是 <code>appleby</code>

的默认定义\abx@missing@entry

\def\abx@missing@entry#1{%
  \abx@missing{#1}}

在哪里#1未知的 entrykey 在https://github.com/plk/biblatex/commit/8df18a8725f8ba150c142443f64024c7ad8966c6


对于旧版本,biblatex您可以使用

\makeatletter
\def\blx@citeadd#1{%
  \ifcsdef{blx@keyalias@\the\c@refsection @#1}
    {\edef\blx@realkey{\csuse{blx@keyalias@\the\c@refsection @#1}}}
    {\def\blx@realkey{#1}}%
  \expandafter\blx@getrefcontext\expandafter{\blx@realkey}% needed for \ifdata
  \expandafter\blx@citation\expandafter{\blx@realkey}\blx@msg@cundefon
  \expandafter\blx@ifdata\expandafter{\blx@realkey}
    {\advance\blx@tempcnta\@ne
     \listeadd\blx@tempa{\blx@realkey}}
    {\ifnum\blx@tempcntb>\z@\multicitedelim\fi
     \expandafter\abx@missing\expandafter{??}%<- the change is here
     \advance\blx@tempcntb\@ne}}
\makeatother

相关内容