Tracé una figura grande con varias subfiguras usandomatplotlib, porque la biblioteca proporciona muchas características que son difíciles de implementar en tex (como etiqueta compartida y eje compartido). Sin embargo, me gustaría que \ref
estas subfiguras fueran como subcaption
en tex. ¿Existe algún método que pueda solucionar el problema?
Mi requisito es casi el mismo que el de la pregunta enVarias etiquetas para figuras grandes con subtramas incluidas..
Sin embargo, la solución no funciona cuando hyperref
se importa. Dado que la respuesta se publicó hace 3 años y parece que no recibirá ninguna actualización, volví a hacer la pregunta.
Respuesta1
Descubrí una solución alternativa:
\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}
El código se modifica a partir de la respuesta publicada por @gernot en la pregunta que vinculé. La idea básica es crear un hiperobjetivo en la posición de la etiqueta fantasma correspondiente sin escribir texto.