前言
如题,我用subfigure做了一个子图,即(a) (b) © 三张子图片放在一张图中,我现在想引用其中一张子图,结果却显示问号,如下图。这里展示解决方案。
问题复现
我的子图相关的代码片段:
\begin{subfigure}{1\linewidth}
\label{fig:xxx}
\lstinputlisting[language=diff,linewidth={1\linewidth},frame=tb,basicstyle=\footnotesize\ttfamily]{figs/patch.list}
\caption{xxx}
\end{subfigure}
引用相关的代码片段:
As shown in Figure \ref{fig:xxx}, ......
出错原因:
我花了一些时间,一开始一直没找到问题。又是各种尝试,后来通过不断的尝试,慢慢接近真相,不断抽丝剥茧,终于找到原因。原因即为:\label{fig:xxx}
的位置错了!应该放在\caption{xxx}
前面或者里面。 (我感觉最好是放在里面。)
解决方案
1)优化一下,在\begin{document}
前加入:
\usepackage{caption, subcaption}
%以下为给引用子图添加一个括号,看着舒服点
\renewcommand\thesubfigure{(\alph{subfigure})}
\captionsetup[sub]{
labelformat=simple
}
2)调整位置:
\begin{subfigure}{1\linewidth}
\lstinputlisting[language=diff,linewidth={1\linewidth},frame=tb,basicstyle=\footnotesize\ttfamily]{figs/patch.list}
\caption{\label{fig:xxx}xxx}
\end{subfigure}
3)重新编译,效果如下:
可了。
小结
以上。
参考文献
也没什么参考文献,就检索latex ref subfigure
然后各种找参考的网页,以期能够给自己提供一些对问题的思考和启发。