
Possível duplicata:
Como posso fazer com que o LaTeX avise sobre figuras não referenciadas?
No meu documento, tenho várias figuras, a maioria das quais criei referências para (usando \ref{}
) imediatamente após colocá-las no documento. Porém, tive algumas figuras que esqueci de referenciar no documento, deixando algumas figuras “penduradas” sem qualquer citação, o que é um erro da minha parte e deve ser corrigido.
Então, minhas perguntas são:
Existe uma maneira de forçar o látex a emitir um aviso se uma figura nunca for referenciada?
Responder1
Orefcheck
pacote pode ser útil aqui.
O MWE a seguir possui uma figura que não é referenciada, portanto refcheck
coloca um aviso em seu pdf ao ?
seu redor.
\documentclass{article}
\usepackage{refcheck}
\begin{document}
\begin{figure}
\centering
\rule{20pt}{30pt}
\caption{}
\label{fig:myfig}
\end{figure}
\end{document}
Assim que você fizer referência à figura, o ?
será removido. Observe que este método depende de cada figura ter um rótulo.
Observe que demonstrei refcheck
com um figure
, mas funciona da mesma maneira paraqualquer coisaque tem um rótulo ( table
, chapter
, equation
, etc).
Responder2
Aqui está uma solução feita à mão:
Adicione o seguinte ao seu 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
e o seguinte diretamente antes \end{document}
:
\warnunused
Agora, em cada execução do LaTeX, para cada rótulo não referenciado você obtém uma linha
warning: label (your label here) was not referenced.
na sua saída padrão e no seu refwarn.log.
Se você preferir o aviso diretamente em seu documento, remova \typeout
(e possivelmente adicione um \texttt
ao redor #1
e um \\
no final) na macro de aviso.