¿Hay alguna manera de obligar a LaTeX a emitir una advertencia si nunca se hace referencia a una figura?

¿Hay alguna manera de obligar a LaTeX a emitir una advertencia si nunca se hace referencia a una figura?

Posible duplicado:
¿Cómo puedo hacer que LaTeX advierta sobre cifras sin referencia?

En mi documento tengo varias figuras, la mayoría de las cuales creé referencias (usando \ref{}) inmediatamente después de colocarlas en el documento. Sin embargo, tuve algunas figuras que olvidé referenciar en el documento, quedando algunas figuras "colgadas" sin cita alguna, lo cual es un error de mi parte y debo corregir.

Entonces, mi pregunta es:

¿Hay alguna manera de obligar al látex a emitir una advertencia si nunca se hace referencia a una figura?

Respuesta1

ElrefcheckEl paquete podría ser útil aquí.

El siguiente MWE tiene una figura a la que no se hace referencia, por lo que refcheckcoloca una advertencia en su pdf ?rodeándola.

ingrese la descripción de la imagen aquí

\documentclass{article}
\usepackage{refcheck}

\begin{document}

\begin{figure}
 \centering
 \rule{20pt}{30pt}
 \caption{}
 \label{fig:myfig}
\end{figure}
\end{document}

Tan pronto como haga referencia a la figura, se ?eliminará. Tenga en cuenta que este método se basa en que cada figura tenga una etiqueta.

Tenga en cuenta que lo he demostrado refcheckcon unfigure , pero funciona de la misma manera paracualquier cosaque tiene una etiqueta ( table, chapter, equation, etc).

Respuesta2

Aquí hay una solución hecha a mano:

Agregue lo siguiente a su preámbulo:

\makeatletter

\let\LaTeX@original@label\label
\let\LaTeX@original@ref\ref

\newcommand{\warnunused}{}

\renewcommand{\label}[1]{%
  \expandafter\global\expandafter\def\csname warning@#1\endcsname{%
    \typeout{warning: label #1 was not referenced.}}%
  \g@addto@macro\warnunused{%
    \csname warning@#1\endcsname}
  \LaTeX@original@label{#1}}

\renewcommand{\ref}[1]{%
  \expandafter\global\expandafter\def\csname warning@#1\endcsname{}
  \LaTeX@original@ref{#1}}

\makeatother

y lo siguiente directamente antes \end{document}:

\warnunused

Ahora, en cada ejecución de LaTeX, por cada etiqueta sin referencia obtienes una línea

warning: label (your label here) was not referenced.

en su salida estándar y en su refwarn.log.

Si prefiere la advertencia directamente en su documento, elimine \typeout(y posiblemente agregue una \textttalrededor #1y una \\al final) en la macro de advertencia.

información relacionada