
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
Elrefcheck
El paquete podría ser útil aquí.
El siguiente MWE tiene una figura a la que no se hace referencia, por lo que refcheck
coloca una advertencia en su pdf ?
rodeándola.
\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 refcheck
con 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 \texttt
alrededor #1
y una \\
al final) en la macro de advertencia.