\subfloat \caption 奇怪的行为

\subfloat \caption 奇怪的行为

我对 Latex 还很陌生,并尽力将其作为我论文和毕业论文的首选方法。我总是设法通过浏览这个论坛来解决遇到的任何问题,但找不到有关此错误的任何信息。

我有一个由 4 个子图形组成的图形,它们位于一个 2x2 矩阵中。不知何故,我的模板不允许我使用该subcaption包,因此我不得不使用该subfig包,如果不是我遇到的奇怪错误,它似乎运行良好。

我的代码如下:

\documentclass[11pt, english, doublespacing,]{MastersDoctoralThesis}
\usepackage{graphicx,amsmath,amssymb,rotating,float,cite,multirow,subfig,
array,bm,appendix,epsfig,epstopdf,pdfpages,array,caption}
\setcounter{secnumdepth}{3}
\setcounter{tocdepth}{3}

\begin{figure}[!htp]
    \centering
    \label{Saliency_Maps}
    \subfloat[]{\includegraphics[width=0.49\linewidth]{figures/colour_conp.png} \label{Sal:Colour}}
    \subfloat[]{\includegraphics[width=0.49\linewidth]{figures/intensity_conp.png} \label{Sal:Intensity}}
    \\
    \subfloat[] {\includegraphics[width=0.49\linewidth]{figures/orientation_conp.png} \label{Sal:Orit}}
    \subfloat[]{\includegraphics[width=0.49\linewidth]{figures/final_sal_map.png} \label{Sal:Final}}
    \caption{ Conspicuity maps for a sample image showing colour \subref{Sal:Colour}, intensity \subref{Sal:Intensity} and orientation \subref{Sal:Orit} maps which are then combined into the final saliency map \subref{Sal:Final} which will need to be thresholded.}
\end{figure}

\end{document} 

标题导致了各种错误,例如:

Argument of \caption@ydblarg has an extra }. ...inal} which will need to be thresholded.}

...和...

Paragraph ended before \caption@ydblarg was complete. ...inal} which will need to be thresholded.}

...以及其他的欠满和过满\hbox错误,这些错误毫无意义。

删除\caption{...}不会显示任何错误,但显然不会显示任何阳离子。此外,即使插入 \caption{...} 时出现错误,图形和标题仍可正确显示..... 除了图形下方的字母为大写,而替换的字母为小写\subref{...}。(见图)

在此处输入图片描述

仅当我设置时,错误才会被抑制\setcounter{tocdepth}{3}。将其设置为会\setcounter{tocdepth}{2}触发一大堆错误,这些错误同样没有任何意义,并且在“图片列表”页面中应该有有问题的图像条目的地方会出现一些奇怪的条目。

大家知道可能发生了什么,以及我该如何解决这个棘手的问题吗?欢迎提出替代方案。

非常感谢

答案1

导致您出现问题的原因是使用了\subref{...}。其在标题中的使用必须受到保护: \protect\subref{ ...}。请参阅下面的测试代码:

\documentclass{article}
\usepackage{graphicx}
\usepackage{subfig}

\begin{document}
\begin{figure}[htp]
    \centering
\subfloat[\label{Sal:Colour}]{\includegraphics[width=0.49\linewidth]{example-image}}
\hfill
\subfloat[\label{Sal:Intensity}]{\includegraphics[width=0.49\linewidth]{example-image}}
    \\
\subfloat[\label{Sal:Orit}] {\includegraphics[width=0.49\linewidth]{example-image}}
\hfill
\subfloat[\label{Sal:Final}]{\includegraphics[width=0.49\linewidth]{example-image}}
\caption{ Conspicuity maps for a sample image showing colour \protect\subref{Sal:Colour}, intensity \protect\subref{Sal:Intensity} and orientation \protect\subref{Sal:Orit} maps which are then combined into the final saliency map \protect\subref{Sal:Final} which will need to be thresholded.}
\label{Saliency_Maps}
    \end{figure}
\end{document}

在此处输入图片描述

顺便说一句,图形环境中的标签必须始终位于标题之后,否则引用将会错误。

相关内容