Destacar automaticamente referências indefinidas

Destacar automaticamente referências indefinidas

Existe uma maneira de forçar o LaTeX a alterar automaticamente a formatação do ??que é digitado no lugar de uma referência indefinida? Por exemplo, é possível fazer o LaTeX desenhar um fundo amarelo "destacado" atrás do texto ??ou renderizá-lo ??em vermelho?

Eu gostaria que fosse mais fácil identificar essas referências indefinidas ao ler rapidamente a saída do PDF.

Um MWE seria

\documentclass{article}
\begin{document}
\ref{undefinedReference}
\end{document}

Seria especialmente ótimo se isso funcionasse para citações bibliográficas indefinidas, bem como para referências cruzadas indefinidas.

Responder1

Acho que você não vai sentir falta disso:

\documentclass{article}
\usepackage{color}
\makeatletter

\def\@setref#1#2#3{%
  \ifx#1\relax
   \protect\G@refundefinedtrue
   \nfss@text{\reset@font\bfseries\huge\textcolor{red}{DEFINE #3 NOW, AND MAKE IT QUICK!}}%
   \@latex@warning{Reference `#3' on page \thepage \space
             undefined}%
  \else
   \expandafter#2#1\null
  \fi}

\makeatother
\begin{document}
\ref{undefinedReference}
\end{document}

Responder2

Com base na resposta de David, aqui está uma solução com anotações em PDF como 'fundo amarelo "destacado"':

\documentclass{article}
\usepackage[rgb]{xcolor}
\usepackage{pdfcomment}
\makeatletter

\def\@setref#1#2#3{%
  \ifx#1\relax
   \protect\G@refundefinedtrue
   \nfss@text{\reset@font\bfseries\pdfmarkupcomment[color=yellow,author={RefCheck Assistant}]{??}{DEFINE #3 NOW, AND MAKE IT QUICK!}}%
   \@latex@warning{Reference `#3' on page \thepage \space
             undefined}%
  \else
   \expandafter#2#1\null
  \fi}

\makeatother
\begin{document}
see \ref{undefinedReference}
\end{document}

insira a descrição da imagem aqui

sem clicar e passar o mouse, você recebe uma dica:

insira a descrição da imagem aqui

informação relacionada