我使用 matplotlib 制作了一个图形,它在同一个 .pdf 文件中有三个子图,类似于这个:Matplotlib 图库示例。我添加了标签“a)”、“b)”、“c)”在图片。
为了分别引用整个图像以及三个图像部分,我希望有四个标签。这是我使用 subcaption-package(\subfigure 命令)组合的不同图形所具有的行为。
然而,到目前为止我唯一能创建的只是整个图形的单一标签。
\begin{figure}
\includegraphics[width=\textwidth]{plot_with_subplots.pdf}
\caption{This plot has three parts.}
\label{fig:plot}
\end{figure}
调用“figure \ref{fig:plot}”将得到类似“figure 1”的结果。但是,我想要一个额外的标签,如“figure \ref{fig:plot:left_plot}”,将其翻译为“figure 1a”。
谢谢。
答案1
干净的解决方案是将多图拆分为单个图,并将它们分别作为子图(例如使用包subfigure
)包含进去,然后可以分别标记和引用。
如果您不想/不能这样做,您可以按如下方式模拟子图。该\phantomlabel
命令的工作方式与\label
命令类似,但有一个额外的第一个参数,用于将后缀附加到图形的编号上。
\documentclass{article}
\usepackage{graphicx}
\makeatletter
\newcommand\phantomlabel[2]%
{\@bsphack
\protected@write\@auxout{}%
{\string\newlabel{#2}{{\@currentlabel#1}{\thepage}}}%
\@esphack
}
\makeatother
\begin{document}
Figure~\ref{fig:plot} consists of sub-figure~\ref{fig:plot:left_plot},
sub-figure~\ref{fig:plot:right_plot}, and
sub-figure~\ref{fig:plot:somewhere else}.
\begin{figure}
\includegraphics[width=\textwidth]{example-image-a}
\caption{This plot has three parts.}\label{fig:plot}
\phantomlabel{a}{fig:plot:left_plot}
\phantomlabel{b}{fig:plot:right_plot}
\phantomlabel{c}{fig:plot:somewhere else}
\end{figure}
\end{document}