在使损坏的引用更加明显,我问如何让LaTex的正常??和 [?] 标记表示断开的引用,而是呈现为一些超级烦人的彩色文本,以便在浏览较长的book
类文档时,我可以立即知道需要修复什么。
我已经被告知如何对损坏的\ref
s 进行此操作,但我提供的 MWE 是也最低限度:我也想知道如何以类似的方式标记破损的\cite
s。
如果有人对我的意思有任何疑问,这里有一个 MWE。
\documentclass{article}
\usepackage{amsthm,hyperref}
\bibliographystyle{amsalpha}
\newtheorem{theorem}{Theorem}
\begin{document}
\begin{theorem}\label{catfish}
\end{theorem}
Theorem \ref{catfish} implies the truth of Theorem \ref{god},
as explained in \cite{what}.
\bibliography{bibshort}{}
\end{document}.
我被鼓励使用 BibLaTeX,但在创建此 MWE 时发现似乎无法在我的计算机上使用 BibLaTeX,因此目前我询问的是 BibTex。(我本来应该先问另一个问题,但因为我先开始这个问题,所以似乎网站的软件要求我先发布它或删除它,然后才能问其他问题。)
答案1
更新
使用较新的biblatex
版本,我们可以简单地重新定义宏\abx@missing@entry
来更改未找到引用时显示的内容。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber, style=numeric]{biblatex}
\usepackage{xcolor}
\addbibresource{biblatex-examples.bib}
\makeatletter
\def\abx@missing@entry#1{%
{\bfseries\color{red} undefined Label: #1}}
\makeatother
\begin{document}
\cite{cicero}
\cite{lorem}
\end{document}
旧答案
使用biblatex
,我们必须修改\blx@citation@entry
,即为每个引用项调用的命令:
\makeatletter
\def\blx@citation@entry#1#2{%
\blx@bibreq{#1}%
\ifinlist{#1}{\blx@cites}
{}
{\listgadd{\blx@cites}{#1}%
\blx@auxwrite\@mainaux{}{\string\abx@aux@cite{#1}}}%
\ifinlistcs{#1}{blx@segm@\the\c@refsection @\the\c@refsegment}
{}
{\listcsgadd{blx@segm@\the\c@refsection @\the\c@refsegment}{#1}}%
\blx@ifdata{#1}
{}
{\ifcsdef{blx@miss@\the\c@refsection}
{\ifinlistcs{#1}{blx@miss@\the\c@refsection}
{{\bfseries\color{red} undefined Label:} }
{\blx@logreq@active{#2{#1}}}}
{\blx@logreq@active{#2{#1}}}}}
\makeatother
为了消除虚假空间,我们也可以重新定义(这必须放在组内\makeatletter ... \makeatother
)
\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@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{\blx@realkey}%
\advance\blx@tempcntb\@ne}}
我们%
在倒数第二行末尾添加了一个。
平均能量损失
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[backend=biber, style=numeric]{biblatex}
\usepackage{xcolor}
\addbibresource{biblatex-examples.bib}
\makeatletter
\def\blx@citation@entry#1#2{%
\blx@bibreq{#1}%
\ifinlist{#1}{\blx@cites}
{}
{\listgadd{\blx@cites}{#1}%
\blx@auxwrite\@mainaux{}{\string\abx@aux@cite{#1}}}%
\ifinlistcs{#1}{blx@segm@\the\c@refsection @\the\c@refsegment}
{}
{\listcsgadd{blx@segm@\the\c@refsection @\the\c@refsegment}{#1}}%
\blx@ifdata{#1}
{}
{\ifcsdef{blx@miss@\the\c@refsection}
{\ifinlistcs{#1}{blx@miss@\the\c@refsection}
{{\bfseries\color{red} undefined Label:} }
{\blx@logreq@active{#2{#1}}}}
{\blx@logreq@active{#2{#1}}}}}
\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@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{\blx@realkey}%
\advance\blx@tempcntb\@ne}}
\makeatother
\begin{document}
\cite{cicero}
\cite{lorem}
\end{document}