使损坏的参考文献更加明显,redux:与 BibTeX(或 BibLaTeX)交互

使损坏的参考文献更加明显,redux:与 BibTeX(或 BibLaTeX)交互

使损坏的引用更加明显,我问如何让LaTex的正常??和 [] 标记表示断开的引用,而是呈现为一些超级烦人的彩色文本,以便在浏览较长的book类文档时,我可以立即知道需要修复什么。

我已经被告知如何对损坏的\refs 进行此操作,但我提供的 MWE 是最低限度:我也想知道如何以类似的方式标记破损的\cites。

如果有人对我的意思有任何疑问,这里有一个 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}

在此处输入图片描述

相关内容