
私の文書にはいくつかの図があり、そのほとんどは\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
ます。chapter
equation
答え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
、最後に を追加します)。\\