如果某个图形从未被引用,有没有办法强制 LaTeX 发出警告?

如果某个图形从未被引用,有没有办法强制 LaTeX 发出警告?

可能重复:
如何让 LaTeX 对未引用的图形发出警告?

在我的文档中,我有几个图,其中大部分都是我\ref{}在将它们放入文档后立即创建了参考资料(使用)。但是,我忘记在文档中引用一些图,导致一些图“悬而未决”,没有任何引用,这是我的错误,必须予以纠正。

所以,我的问题是:

如果某个图形从未被引用,是否有办法强制乳胶发出警告?

答案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,但它的工作原理相同任何事物带有标签(tablechapterequation等)。

答案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 时,对于每个未引用的标签,你都会得到一行

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

在您的标准输出和 refwarn.log 中。

如果您希望直接在文档中显示警告,请删除警告宏中的(并可能在周围\typeout添加和在末尾添加)。\texttt#1\\

相关内容