図が参照されていない場合に LaTeX に警告を強制的に発行させる方法はありますか?

図が参照されていない場合に LaTeX に警告を強制的に発行させる方法はありますか?

重複の可能性あり:
参照されていない図について LaTeX で警告を出すにはどうすればよいでしょうか?

私の文書にはいくつかの図があり、そのほとんどは\ref{}文書に配置した直後に ( を使用して) 参照を作成しました。しかし、文書内で参照し忘れた図がいくつかあり、引用のないまま「宙ぶらりん」の状態になっています。これは私のミスであり、修正する必要があります。

そこで私の質問は次のとおりです:

図が参照されない場合に LaTeX に警告を強制的に発行させる方法はありますか?

答え1

refcheckパッケージはここで役に立つかもしれません。

次の MWE には参照されていない図があるため、その図を囲むrefcheck警告が PDF に表示されます?

ここに画像の説明を入力してください

\documentclass{article}
\usepackage{refcheck}

\begin{document}

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

図を参照するとすぐに、 が?削除されます。この方法では、各図にラベルがあることが前提となることに注意してください。

refcheck私は を使って説明しましたがfigure、 でも同じように動作します。何でもラベル (、、など) が付けられtableます。chapterequation

答え2

手作りの解決策は次のとおりです。

序文に次の文を追加します。

\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

そしてその直前に次のもの\end{document}:

\warnunused

これで、LaTeXを実行するたびに、参照されていないラベルごとに1行ずつ表示されます。

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

標準出力と refwarn.log に表示されます。

代わりにドキュメント内に直接警告を表示したい場合は、警告マクロのを削除します\typeout(必要に応じ\textttて の前後にを追加し#1、最後に を追加します)。\\

関連情報