获取未使用的标签列表

获取未使用的标签列表

我有一篇很长的文章(约 20 页),其中有很多方程式都已编号等。为了进行良好的清理,我想取消未使用的方程式的编号。我知道我可以隐藏未使用的号码,但我想清理一下,不依赖 的功能mathtools。因此,是否可以以某种方式显示未使用的标签列表?

在以下 MWE 中,它应该显示(在日志中、在 bash 中,无论在何处)boo未使用的内容:

\documentclass{article}
\begin{document}
\section{BLA}\label{bla}
\section{BOO}\label{boo}
In Section~\ref{bla}.
\end{document}

答案1

使用refcheck包裹

在此处输入图片描述

\documentclass{article}
\usepackage{refcheck}
\begin{document}
\section{BLA}\label{bla}
\section{BOO}\label{boo}
In Section~\ref{bla}.
\end{document}

未使用的\labels 也标记在 中.log。上述 MWE 输出

Package refcheck Warning: Unused label `boo' on input line 5.

在 中.log。可以使用选项打开/关闭输出中的可视队列[norefs]。它也适用于\cites(使用附带的showcites/ nocitesboolean 包选项)。

答案2

自制版本。它重新定义\label\ref然后\unusedlabels在最后使用,以查看哪些标签未使用。完成此过程后,您可以删除重新定义。

\label被重新定义为所有标签组成一个以空格分隔的连接字符串。

\ref被重新定义为逐项检查连接列表,并将项与参数进行比较\ref,然后继续重建连接列表。如果比较结果为真,则不执行任何操作,从而从列表中删除该项。如果比较结果为假,则将该项目重新添加到重建的列表中。

最后列表上剩下的任何东西都是未使用的。

\documentclass{article}
\usepackage{etoolbox}
\let\svlabel\label
\let\svref\ref
\def\unusedlabels{}
\renewcommand\label[1]{\svlabel{#1}\global\edef\unusedlabels{\unusedlabels$<$#1$>$ }}
\renewcommand\ref[1]{\svref{#1}%
  \edef\teststring{$<$#1$>$}%
  \edef\tmp{\unusedlabels}%
  \def\unusedlabels{}%
  \expandafter\refhelper\tmp\relax%
}
\def\refhelper#1 #2\relax{%
  \edef\expandcase{#1}%
  \ifdefstrequal{\teststring}{\expandcase}{}{\edef\unusedlabels{\unusedlabels#1 }}%
  \if\relax#2\relax\else\refhelper#2\relax\fi
}

\begin{document}
\section{BLA}\label{bla}
\begin{equation}
\label{eq:first}
y=x
\end{equation}
\section{BOO}\label{boo}
\begin{equation}
\label{eq:second}
y=x^2
\end{equation}
In Section~\ref{bla}, I use equation \ref{eq:first}.

Unused labels are \unusedlabels
\end{document}

在此处输入图片描述

相关内容