Ich habe eine große Figur mit mehreren Unterfiguren darin gezeichnet, indem ichmatplotlib, weil die Bibliothek viele Funktionen bietet, die in Tex schwer zu implementieren sind (wie gemeinsame Beschriftung und gemeinsame Achse). Ich möchte \ref
diese Unterfiguren jedoch genauso wie subcaption
in Tex. Gibt es Methoden, die das bewerkstelligen können?
Meine Anforderung ist fast die gleiche wie die Frage inMehrere Beschriftungen für große Figuren mit integrierten Nebenhandlungen.
Die Lösung funktioniert jedoch nicht, wenn hyperref
importiert wird. Da die Antwort vor 3 Jahren gepostet wurde und es den Anschein hat, dass sie keine Updates mehr erhält, habe ich die Frage erneut gestellt.
Antwort1
Ich habe eine Problemumgehung gefunden:
\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}
Der Code wurde aus der Antwort von @gernot in der von mir verlinkten Frage geändert. Die Grundidee besteht darin, ein Hyperziel an der entsprechenden Phantom-Label-Position zu erstellen, ohne Text zu schreiben.