如何引用不存在的子图?

如何引用不存在的子图?

我使用以下方法绘制了一个包含多个子图的大图matplotlib,因为该库提供了很多在 tex 中难以实现的功能(例如共享标签和共享轴)。但是,我希望\ref这些子图就像subcaption在 tex 中一样。有什么方法可以做到这一点吗?

我的要求与包含子图的大图的几个标签

但是,导入后解决方案不起作用hyperref。由于答案是 3 年前发布的,而且似乎不会得到任何更新,所以我再次提出了这个问题。

答案1

我想出了一个解决方法:

\documentclass{article}
\usepackage{graphicx}
\usepackage{hyperref}

\makeatletter
\newcommand{\phantomlabel}[2]{
    \protected@write\@auxout{}{
        \string\newlabel{#2}{
            {\@currentlabel#1}{\thepage}
            {\@currentlabel#1}{#2}{}
        }
    }
    \hypertarget{#2}{}
}
\makeatother

\begin{document}
Figure~\ref{fig:a} consists of sub-figure~\ref{fig:a:left_plot},
sub-figure~\ref{fig:a:right_plot}, and
sub-figure~\ref{fig:a:somewhere else}.
\begin{figure}
  \includegraphics[width=\textwidth]{example-image-a}
  \caption{This plot has three parts.}\label{fig:a}
  \phantomlabel{a}{fig:a:left_plot}
  \phantomlabel{b}{fig:a:right_plot}
  \phantomlabel{c}{fig:a:somewhere else}
\end{figure}

Figure~\ref{fig:b} consists of sub-figure~\ref{fig:b:left_plot},
sub-figure~\ref{fig:b:right_plot}, and
sub-figure~\ref{fig:b:somewhere else}.
\begin{figure}
  \includegraphics[width=\textwidth]{example-image-b}
  \caption{This plot has three parts.}\label{fig:b}
  \phantomlabel{a}{fig:b:left_plot}
  \phantomlabel{b}{fig:b:right_plot}
  \phantomlabel{c}{fig:b:somewhere else}
\end{figure}
\end{document}

代码是根据我链接的问题中@gernot发布的答案修改的。基本思路是在相应的幻影标签位置创建一个超目标,而无需编写文本。

相关内容