使用子标题进行 refcheck 的解决方法

使用子标题进行 refcheck 的解决方法

这个问题refcheck提到了、subcaption和之间的冲突hyperref,并提出了一个补丁来帮助处理由于而导致的一些问题hyperref

我想知道是否有解决和问题的方法refchecksubcaptionrefcheck警告由于sub@前缀而导致的未使用标签。

例如,在此 MWE 中:

\documentclass[11pt]{report}

\usepackage{subcaption}
\usepackage{refcheck}

\begin{document}
Figure \ref{fig:1a}, inside Figure \ref{fig:1}.

\begin{figure}
  \begin{subfigure}{0.45\textwidth}
    \caption{A subcaption}
    \label{fig:1a}
  \end{subfigure}
  \caption{A caption}
  \label{fig:1}
\end{figure}

\end{document}

标签fig:1fig:1a均被引用,但refcheck仍然报告:

Package refcheck Warning: Unused label `sub@fig:1a' on input line 12.

有没有办法避免警告?

答案1

这重新定义了子标题标签命令,以始终报告所使用的虚拟标签“sub@label”。

\documentclass[11pt]{report}

\usepackage{subcaption}
\usepackage{refcheck}

\makeatletter
\let\orig@subcaption@@label\subcaption@@label
\def\subcaption@@label#1#2{\usedref{sub@#2}\orig@subcaption@@label{#1}{#2}}
\makeatother

\begin{document}
Figure \ref{fig:1a}, inside Figure \ref{fig:1}.

\begin{figure}
  \begin{subfigure}{0.45\textwidth}
    \caption{A subcaption}
    \label{fig:1a}
  \end{subfigure}
  \caption{A caption}
  \label{fig:1}
\end{figure}

\end{document}

相关内容