\hyperref、\subfig 和 \subcaption 包错误

\hyperref、\subfig 和 \subcaption 包错误
    \documentclass{article}
    \usepackage{blindtext}
    \usepackage{graphicx}
    \usepackage[utf8]{inputenc}
    \usepackage{multirow}
    \usepackage{siunitx}
    \usepackage{caption}
    \usepackage{subcaption}
    \usepackage{subfig}
    \usepackage{hyperref}
    \usepackage[section]{placeins}
    \usepackage[margin=1.5in,footskip=0.3in]{geometry}
    \usepackage{wrapfig}
    \usepackage[table,xcdraw]{xcolor}
    \usepackage{circuitikz}
    
    \begin{document}
    
    [...]
    
    \begin{equation}\label{eq:cape}
    \centering
    t_{rise_{A}} = t_{rise_{B}} \times V_A / V_B
    \end{equation}
    
    [...]

    Inoltre sono stati misurati dei tempi di salita  $t_{rise}$  in linea con quanto previsto dalla relazione \ref{eq:cape}.
    \end{document}

这是我的代码。编译器没有读取引用,并给出未定义的控制序列错误:“\reserved@b ->\T@ref

l.186 ...con quanto previsto dalla relazione \ref{
                                                  eq:cape}. Infine è stato ...
The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.
". 

答案1

修剪代码以获得适当的最小工作示例,我们发现以下内容重现了您的错误:

\documentclass{article}
%\usepackage[utf8]{inputenc}   % default since 2018, so probably redundant
\usepackage{caption}
\usepackage{subcaption}
\usepackage{subfig}
\usepackage{hyperref}

\begin{document}

\begin{equation}\label{eq:cape}
x<1
\end{equation}

\begin{equation}\label{eq:cape2}
x>0
\end{equation}

Inoltre si osservino le relazioni \ref{eq:cape} e \ref{eq:cape2}.

\end{document}

代码无法正确编译:几个错误中的第一个是

Package subcaption 
Error: This package can't be used in cooperation with the subfig package.

事实上,这个包装subfig已经很旧了,出现subfig自 2005 年以来一直没有维护(!)。这可能是没有设置的原因hyperref妥善配合

编辑:@egreg 指出以下内容:“subfig与几个不兼容的文档类兼容caption(尤其是revtex4-2IEEEtran),因此它仍然有用例。”

此外,的维护者还subcaption添加了上述警告,指出subcaptionsubfig不兼容。(请注意subcaption 积极维护

如果我们注意到这个警告并禁用subfig,则代码将进行编译并且引用将被正确处理。

\documentclass{article}
%\usepackage[utf8]{inputenc}   % default since 2018, so probably redundant
\usepackage{caption}
\usepackage{subcaption}
%\usepackage{subfig}
\usepackage{hyperref}

\begin{document}

\begin{equation}\label{eq:cape}
x<1
\end{equation}

\begin{equation}\label{eq:cape2}
x>0
\end{equation}

Inoltre si osservino le relazioni \ref{eq:cape} e \ref{eq:cape2}.

\end{document}

示例适用于两个方程

总结:

  • 如果您的文档中需要子图(子浮点),则应避免使用subfig,但这subcaption是更好的选择。最终,这取决于您的需求(本 MWE 中未显示)。

  • subcaption 需要 pkgcaption,这可能是某些文档类别的问题(记住 egreg 的提示)。

  • 请注意,一般来说,\usepackage{hyperref}必须在序言中最后加载,因为hyperref必须适应您的所有其他包裹。

相关内容