
Mögliches Duplikat:
Wie kann ich LaTeX dazu bringen, vor nicht referenzierten Abbildungen zu warnen?
In meinem Dokument habe ich mehrere Abbildungen, für die ich die meisten sofort nach dem Einfügen in das Dokument referenziert habe (mit \ref{}
). Allerdings habe ich bei einigen Abbildungen vergessen, im Dokument zu referenzieren, sodass einige Abbildungen ohne Quellenangabe „hängen“ blieben. Das ist ein Fehler meinerseits und muss korrigiert werden.
Meine Frage lautet also:
Gibt es eine Möglichkeit, Latex zu zwingen, eine Warnung auszugeben, wenn auf eine Abbildung nie verwiesen wird?
Antwort1
Derrefcheck
Paket könnte hier nützlich sein.
Das folgende MWE enthält eine Abbildung ohne Referenz. Daher refcheck
wird in Ihrem PDF eine Warnung ?
darum herum eingefügt.
\documentclass{article}
\usepackage{refcheck}
\begin{document}
\begin{figure}
\centering
\rule{20pt}{30pt}
\caption{}
\label{fig:myfig}
\end{figure}
\end{document}
Sobald Sie auf die Abbildung verweisen, ?
wird sie entfernt. Beachten Sie, dass diese Methode darauf angewiesen ist, dass jede Abbildung eine Beschriftung hat.
Beachten Sie, dass ich es refcheck
mit einem demonstriert habe figure
, aber es funktioniert genauso fürirgendetwasdas eine Bezeichnung ( table
, chapter
, equation
, usw.) hat.
Antwort2
Hier ist eine handgemachte Lösung:
Fügen Sie Ihrer Präambel Folgendes hinzu:
\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
und direkt davor folgendes \end{document}
:
\warnunused
Jetzt erhalten Sie bei jedem LaTeX-Lauf für jedes nicht referenzierte Label eine Zeile
warning: label (your label here) was not referenced.
auf Ihrer Standardausgabe und in Ihrem refwarn.log.
Wenn Sie die Warnung stattdessen lieber direkt in Ihrem Dokument haben möchten, entfernen Sie das \typeout
(und fügen Sie ggf. ein \texttt
um das #1
und ein \\
am Ende hinzu) im Warnmakro.