PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Bildblock aus mehreren Grafiken mit subcaptions versehen



speedcomet
05-02-2011, 13:28
Hallo,

ich habe folgendes Problem. Ich würde gerne einem aus mehreren Teilgrafiken bestehenden Bildblock, welcher aus einer externen Anwendung stammt mit einer Caption versehen und unter Verwendung des package hyperref auf einzelne Teilgrafiken verweisen können.

Sprich, unter dem Bild sollte eine caption (Figure 1:Blabla a) asdf b) asdf) erscheinen und im Text sollte man auf Figure 1 bzw. Figure 1a oder b verweisen können. Die Zuweisung a) und b) ist dabei bereits in den Bildern integriert und sollte nicht mehr unter den Bildern erscheinen.

Kann mir jemand von euch vielleicht weiterhelfen?
Danke.

Grüße Levin

Schweinebacke
05-02-2011, 13:38
Und was genau ist nun Dein Problem? Suchst Du nach einem Paket wie subcaption, das dies unterstützt?

speedcomet
05-02-2011, 14:18
subcaption habe ich schon ausprobiert, jedoch bekomme ich da immer unter jeder Subfigure (a) bzw. (b) angezeigt, was ich nicht will und leider auch nciht weg bekomme. Desweiteren habe ich nur eine Grafik im Block welche aus Subfigures besteht. Wie kann ich trotzdem auf a) und b) referenzieren?


\documentclass[]{scrbook}
\usepackage{hyperref}
\usepackage{caption}
\usepackage{subcaption}
\begin{document}

\begin{figure}
\begin{minipage}[b]{.5\linewidth}
\centering\large A
\subcaption{}\label{fig:1a}
\end{minipage}%
\begin{minipage}[b]{.5\linewidth}
\centering\large B
\subcaption{}\label{fig:1b}
\end{minipage}
\caption{A figure}\label{fig:1}
\end{figure}

\end{document}

Grüße Levin

Schweinebacke
05-02-2011, 15:02
Kapier ich nicht. Woher soll der Leser denn wissen, was a und b ist, wenn nirgendwo a und b steht? Anders gefragt: Worauf soll sich \label denn dann beziehen? Du kannst natürlich selbst \refstepcounter{subfigure} vor \label aufrufen. Ob das funktioniert und ergibt, was Du willst, weiß ich aber nicht, das mir wirklich nicht klar ist, was das ganze soll.

speedcomet
05-02-2011, 15:14
Die Bezeichnungen a) und b) sind bereits im Bild eingebunden

Was ich brache ist unter diesem Bild eine Caption für das gesamte Bild und die Möglichkeit auf a) und b) zu referenzieren.

tral
05-02-2011, 15:49
Hallo,



\documentclass[]{scrbook}
\usepackage{hyperref}
\usepackage{caption}
\usepackage{subcaption}
\begin{document}

\begin{figure}
\begin{minipage}[b]{.5\linewidth}
\centering\large A
\end{minipage}
\caption{A figure}\label{fig:1}
\refstepcounter{subfigure}\label{fig:1a}
\refstepcounter{subfigure}\label{fig:1b}
\end{figure}

\ref{fig:1a}, \ref{fig:1b}

\end{document}


Christian.

speedcomet
06-02-2011, 23:01
Hallo Christian,

danke für deine Hilfe. Das kommt dem was ich mir vorgestellt habe ziemlich nahe. Leider enden die hyperlinks jedoch unter der caption, so dass man die Grafik nicht sieht. Was muss ich ändern, damit das korrekt funktioniert?

Grüße Levin

tral
07-02-2011, 09:32
Hallo,

siehe Abschnitt 3.8.3 "Klicklinks im pdf" in der l2picfaq (http://mirror.ctan.org/info/l2picfaq/german/l2picfaq.pdf)...

Christian.

sommerfee
07-02-2011, 10:24
Leider enden die hyperlinks jedoch unter der caption, so dass man die Grafik nicht sieht.

Das liegt daran, daß \refstepcounter auch das Ziel für den Hyper-Link festlegt.


Was muss ich ändern, damit das korrekt funktioniert?

Man könnte \caption@refstepcounter statt \refstepcounter nehmen, das berücksichtigt die ganzen "hypcap="-Einstellungen des caption- und subcaption-Paketes. Das ist zwar nicht dokumentiert, ich habe aber auch nicht vor, dieses Kommando in Zukunft zu ändern. (Da das Kommando ein @ enthält, muß es in \makeatletter...\makeatother geklammert werden.)



\documentclass[]{scrbook}
\usepackage{hyperref}
\usepackage{caption}
\usepackage{subcaption}
\begin{document}

\begin{figure}
\centering\large A
\caption{A figure}\label{fig:1}
\makeatletter
\caption@refstepcounter{subfigure}\label{fig:1a}
\caption@refstepcounter{subfigure}\label{fig:1b}
\makeatother
\end{figure}

\ref{fig:1a}, \ref{fig:1b}

\end{document}


Liebe Grüße,
Axel (Maintainer des caption-Paket-Gelumpes)

speedcomet
07-02-2011, 11:45
Hallo Axel,

vielen herzlichen Dank für deine Hilfe. Jetzt funktioniert es so wie ich es mir vorgestellt habe.

Grüße Levin

speedcomet
22-03-2011, 16:51
Hallo Axel,

oder jemand anderes der weiterhelfen kann:
Kann man in obigem Beispiel auch nur auf den subfigure Buchstaben verweisen? Wenn ich auf die Subfigure verweise bekomme ich immer z.B.: 1a, ich hätte aber gerne nur den Subfigure-Buchstaben a.

Danke

Grüße Levin

sommerfee
22-03-2011, 18:12
Kann man in obigem Beispiel auch nur auf den subfigure Buchstaben verweisen? Wenn ich auf die Subfigure verweise bekomme ich immer z.B.: 1a, ich hätte aber gerne nur den Subfigure-Buchstaben a.

Verwende \subref statt \ref.

Liebe Grüße,
Axel

speedcomet
22-03-2011, 18:43
Das habe ich schon. Dies führt leider zur Fehlermeldung: "Reference 'sub@fig:1a' undefinded" und anstelle der Referenz werder ??? ausgegeben.


\documentclass[]{scrbook}
\usepackage{hyperref}
\usepackage{caption}
\usepackage{subcaption}
\begin{document}

\begin{figure}
\centering\large A
\caption{A figure}\label{fig:1}
\makeatletter
\caption@refstepcounter{subfigure}\label{fig:1a}
\caption@refstepcounter{subfigure}\label{fig:1b}
\makeatother
\end{figure}

\subref{fig:1a}, \ref{fig:1b}

\end{document}

Grüße Levin

sommerfee
22-03-2011, 19:17
Dies führt leider zur Fehlermeldung: "Reference 'sub@fig:1a' undefinded" und anstelle der Referenz werder ??? ausgegeben.

Stimmt, daran hatte ich nicht gedacht, sorry. Neuer Versuch:


\documentclass[]{scrbook}
\usepackage{hyperref}
\usepackage{caption}
\usepackage{subcaption}
\begin{document}

\begin{figure}
\centering\large A
\caption{A figure}\label{fig:1}
\makeatletter
\captionsetup{subtype}
\caption@refstepcounter{subfigure}\label{fig:1a}
\caption@refstepcounter{subfigure}\label{fig:1b}
\makeatother
\end{figure}

\ref{fig:1a}, \ref{fig:1b}

\subref{fig:1a}, \subref{fig:1b}

\end{document}

Axel

speedcomet
22-03-2011, 19:28
Vielen Dank Axel für deinen Support. Es wird zwar noch ne Fehlermeldung ausgegeben, aber dein Code ergibt das von mir gewünschte Ergebnis.

Grüße Levin

sommerfee
22-03-2011, 19:31
Es wird zwar noch ne Fehlermeldung ausgegeben

Das sollte nicht sein, welche Fehlermeldung ist es? Welche Version vom subcaption-Paket verwendest du? (Aktuell ist v1.0b von 2008)

P.S.: Sehe gerade, es wird eine Warnung erzeugt. Mist, ich sollte den Kram vielleicht doch mal selber testen bevor ich ihn poste :o Die Warnung ist zwar in diesem Falle harmlos, läßt sich aber trotzdem mit einem zusätzlichen \begingroup...\endgroup unterdrücken:


\documentclass[]{scrbook}
\usepackage{hyperref}
\usepackage{caption}
\usepackage{subcaption}
\begin{document}

\begin{figure}
\centering\large A
\caption{A figure}\label{fig:1}
\begingroup\makeatletter
\captionsetup{subtype}
\caption@refstepcounter{subfigure}\label{fig:1a}
\caption@refstepcounter{subfigure}\label{fig:1b}
\makeatother\endgroup
\end{figure}

\ref{fig:1a}, \ref{fig:1b}

\subref{fig:1a}, \subref{fig:1b}

\end{document}

sommerfee
23-03-2011, 08:29
Das gleiche in grün, aber etwas eleganter:


\documentclass[]{scrbook}
\usepackage{hyperref}
\usepackage{caption}
\usepackage{subcaption}
\begin{document}

\makeatletter
\providecommand\phantomsubcaption{%
\captionsetup{subtype*}\caption@refstepcounter\@su bcaptype}
\makeatother

\begin{figure}
\centering\large A
{\phantomsubcaption\label{fig:1a}}
{\phantomsubcaption\label{fig:1b}}
\caption{A figure}\label{fig:1}
\end{figure}

\ref{fig:1a}, \ref{fig:1b}

\subref{fig:1a}, \subref{fig:1b}

\end{document}

sommerfee
19-08-2011, 21:37
Update: \phantomsubcaption ist in subcaption v1.1 eingebaut, so daß es ab dieser Version auch so geht:


\documentclass[]{scrbook}
\usepackage{hyperref}
\usepackage{caption}
\usepackage{subcaption}
\begin{document}

\begin{figure}
\centering\large A
{\phantomsubcaption\label{fig:1a}}
{\phantomsubcaption\label{fig:1b}}
\caption{A figure}\label{fig:1}
\end{figure}

\ref{fig:1a}, \ref{fig:1b}

\subref{fig:1a}, \subref{fig:1b}

\end{document}

(subcaption v1.1 gibt es ab sofort auf CTAN, und hoffentlich auch in den nächsten Tagen als TeXlive- bzw. MikTeX-Update.)