我想要一个引用\mycite
命令
\mycite{exist-entry}
就像nocite{exist-entry}
\mycite{not-exist-entry}
将显示不存在条目在文档中
但我不知道如何定义这样的命令。
答案1
.log
即使使用了,您已经在文件中获得了有关缺少引用的良好警告\nocite
,但这里有一个定义,它具有与输入键存在时几乎相同的属性,\nocite
并且如果不存在则以粗体打印该键。
\documentclass[british]{article}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{csquotes}
\usepackage[backend=biber, style=authoryear]{biblatex}
\makeatletter
\newcommand*{\mynocite}[1]{%
\blx@xsanitizeafter{\forcsvlist\mynocite@do}{#1}}
\newcommand*{\mynocite@do}[1]{%
\nocite{#1}%
\blx@ifdata{#1}
{}
{\abx@missing@entry{#1}}}
\makeatother
\addbibresource{biblatex-examples.bib}
\begin{document}
\mynocite{sigfridsson}
\mynocite{does-not-exist}
\printbibliography
\end{document}
答案2
以下内容将取代?在引用未定义的 bib 标签时使用标签文本\cite
:
\makeatletter
\def\@citex[#1]#2{\leavevmode
\let\@citea\@empty
\@cite{\@for\@citeb:=#2\do
{\@citea\def\@citea{,\penalty\@m\ }%
\edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
\if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
\@ifundefined{b@\@citeb}{\hbox{\reset@font\bfseries \@citeb}%
\G@refundefinedtrue
\@latex@warning
{Citation `\@citeb' on page \thepage \space undefined}}%
{\@cite@ofmt{\csname b@\@citeb\endcsname}}}}{#1}}
\makeatother
作为一种不太具侵入性的方法,您可以随时采取一些措施,例如grep 'Citation.*undefined' yourdocument.log
获取文档中未定义的引用列表。