我正在撰写论文,我有一些子图。当我排版代码时,子图被标记为 (a) 和 (b),但是当我在文本中引用子图时,我得到的是图 4.1.1 和 4.1.2,而不是 4.1(a) 和 4.1(b)。我如何更改代码以在文本中得到 4.1(a) 而不是 4.1.1?我用于这些图的代码如下所示:
\begin{figure}[!htbp]
\begin{subfigure}{\textwidth}
\begin{center}
\includegraphics[width=0.8\textwidth,valign=t]{figures/chapter4/1.pdf}
\phantomcaption
\label{fig:1}
\end{center}
\end{subfigure}
\begin{subfigure}{\textwidth}
\begin{center}
\includegraphics[width=0.8\textwidth, valign=t]{figures/chapter4/2.pdf}
\phantomcaption
\label{fig:2}
\end{center}
\end{subfigure}
\caption{Graphs showing..}
\label{fig:Demand}
\end{figure}
谢谢
答案1
由于您在环境中使用的是\phantomcaption
语句,而不是“真实”\caption
语句,subfigure
因此您需要做的就是发出指令
\renewcommand\thesubfigure{(\alph{subfigure})}
在序言中。(如果您确实使用了\caption
语句,则还必须提供指令\captionsetup[subcaption]{labelformat=simple}
。)
单独的评论:您还应该简化和精简环境中的代码figure
,例如,通过使用单个\centering
语句并设置subfigure
环境以占用等于的宽度0.8\textwidth
。以下显示了如何做到这一点。
\documentclass{book} % is this right?
\usepackage[demo]{graphicx} % remove 'demo' option in real document
\usepackage{subcaption}
%\captionsetup[subcaption]{labelformat=simple} % not needed here
\renewcommand\thesubfigure{(\alph{subfigure})}
\begin{document}
\setcounter{chapter}{4} % just for this example
\begin{figure}[!htbp]
\centering
\begin{subfigure}{0.8\textwidth}
\includegraphics[width=\linewidth%,valign=t
]{figures/chapter4/1.pdf}
\phantomcaption
\label{fig:1}
\end{subfigure}
\medskip
\begin{subfigure}{0.8\textwidth}
\includegraphics[width=\linewidth%, valign=t
]{figures/chapter4/2.pdf}
\phantomcaption
\label{fig:2}
\end{subfigure}
\caption{Graphs showing \dots}
\label{fig:Demand}
\end{figure}
Cross-references to subfigures \ref{fig:1} and \ref{fig:2}.
\end{document}