我对 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}
顺便说一句,图形环境中的标签必须始终位于标题之后,否则引用将会错误。