PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : subfig und Referenzierung



bene
06-11-2011, 00:41
Servus,

ich hab jetzt ewig versucht eine Lösung auf mein Problem zu finden, war aber nicht erfolgreich, deshalb versuch ichs hier.

Ich nutz subfig und möchte im Text dann folgende Referenzierung haben: Figure 2.4 (b) shows...

dazu möchte ich aber im Quelltext nicht folgendes schreiben müssen: \ref{label_figure}~\subref{label_subfig1} sondern ich würde gern einfach das Format ändern, das mir \ref{label_subfig1} ausgibt.

Ist das möglich?

mechanicus
06-11-2011, 08:24
Ist das möglich?
Mit Sicherheit :D -- Um dir aber effektiv zu helfen, wären für uns ein paar Informationen wichtig. Hierzu bietet sich die Erstellung eines Minimalbeispiels an.

Marco

bene
06-11-2011, 10:11
Ich weiß nicht so recht, aber manchmal ist find ich ein Minimalbeispiel doch übertrieben. Aber habs jetzt doch mal angefügt, wenn dir das was hilft.

Die Frage hab ich ja schon geschrieben, ich würd die Subfigures im Text gern in der Form "Figure 2.4 (b)" referenzieren ohne \ref UND \subref nutzen zu müssen.


\documentclass{report}
\usepackage{subfig}
\begin{document}
\begin{figure}
\centering
\subfloat[cap sfig 1]{\label{sfig:1}dummy1dummy1}\qquad
\subfloat[cap sfig 2]{\label{sfig:2}dummy2dummy2}
\caption{cap fig 1}
\label{fig:1}
\end{figure}
\end{document}

mechanicus
06-11-2011, 11:03
Ich weiß nicht so recht, aber manchmal ist find ich ein Minimalbeispiel doch übertrieben.
Woher soll der geneigte Helfer wissen, welches Paket du für die Erstellung der Teilabbildungen nutzt.
Auch wenn ich hier die Lösung weiß, so möchte ich diese hier nicht präsentieren und anderen überlassen, die deine Antwort als nicht so abwertend betrachten.

Marco

bene
06-11-2011, 22:47
Sorry, wenn du dich jetzt ans Bein gepisst fühlst, aber ich seh in diesem Fall immer noch kein Sinn in einem Minimalbeispiel. Mein Problem war wie oben geschrieben:

Ich nutz subfig und möchte im Text dann folgende Referenzierung haben: Figure 2.4 (b) shows...
Da steht drin, wie ich die Ausgabe der Referenz gern mit dem Package subfig haben möchte. Ich hab außerdem geschrieben, auf welche Art ich es über \ref UND \subref hinbekommen würde, dass mir das aber umständlich erscheint.
Bisher konnte ich meist mit ner Anleitung zu Latex-Packages umgehen, aus der zu subfig bin ich konkret zu meinem Problem leider nicht schlau geworden.
und btw, auch in dieser Anleitung werden idr nicht Minimalbeispiele beschrieben, sondern die relevanten Optionen erklärt.

rstuby
07-11-2011, 04:48
Ein Minimalbeispiel ist immer sinnvoll, wenn der Helfer evtl. Code selber ausprobieren muss oder will
Meines Erachtens ist das auch hier der Fall.

Schweinebacke
07-11-2011, 09:09
Sorry, wenn du dich jetzt ans Bein gepisst fühlst, aber ich seh in diesem Fall immer noch kein Sinn in einem Minimalbeispiel. Ohne vollständiges Minimalbeispiel würde es die folgende Lösung nicht geben. Wenn Du also noch immer keinen Sinn darin sehen kannst, dann ignoriere bitte folgenden Vorschlag:
\documentclass{report}
\usepackage{subfig}
\makeatletter
\renewcommand*{\refstepcounter}[1]{\stepcounter{#1}%
\protected@edef\@currentlabel
{\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
}
\renewcommand*{\p@subfigure}[1]{\thefigure~(#1)}
\makeatother
\begin{document}
\begin{figure}
\centering
\subfloat[cap sfig 1]{\label{sfig:1}dummy1dummy1}\qquad
\subfloat[cap sfig 2]{\label{sfig:2}dummy2dummy2}
\caption{cap fig 1}
\label{fig:1}
\end{figure}
\ref{sfig:1}
\end{document}Übrigens: Laut DUDEN lässt man die Klammern beim Zitieren weg! Demnach wäre also bereits die Standardlösung (in meinem Beispiel ohne den Teil zwischen <code>\makeatletter</code> und <code>\makeatother</code>) korrekt!

sommerfee
07-11-2011, 15:03
Alternativlösung:

Bei der Darstellung der Beschriftung die Klammern entfernen, und die dafür der Darstellung des Zählers zuschustern:



\documentclass{report}
\usepackage[labelformat=simple]{subfig}
\renewcommand\thesubfigure{(\alph{subfigure})}
\begin{document}
\begin{figure}
\centering
\subfloat[cap sfig 1]{\label{sfig:1}dummy1dummy1}\qquad
\subfloat[cap sfig 2]{\label{sfig:2}dummy2dummy2}
\caption{cap fig 1}
\label{fig:1}
\end{figure}
\ref{sfig:1}
\end{document}


P.S.: Schaue auch mal in den Abschnitt "References" meiner subcaption-Paketdokumentation. Vieles, was dort drin steht, gilt entweder auch für das subfig-Paket, oder aber ist auf das subfig-Paket übertragbar.

sommerfee
08-11-2011, 07:31
Ein Minimalbeispiel ist immer sinnvoll, wenn der Helfer evtl. Code selber ausprobieren muss oder will

...und außerdem enthält ein Minimalbeispiel auch immer notwendige Informationen, wie z.B. die verwendete Dokumentenklasse (die optimale Vorgehensweise ist z.B. bei KOMA-Script oder Memoir oft verschieden), was der Fragesteller schon wie probiert hat usw.

Ohne Minimalbeispiel entwickelt sich schon'mal ein Frage-Antwort-Spiel, was sich problemlos über mehrere Wochen hinwegziehen kann. Ein Minimalbeispiel ist also die beste Art und Weise, potentielle Helfer zu motivieren und für sich selber möglichst schnell Hilfe in Form von lauffähigen und für sich selber einsetzbaren Code zu bekommen.

Der Community ist so auch am besten geholfen, weil dann eine Frage (hoffentlich) in einer lauffähigen Musterlösung endet, und nicht (nur) in Prosa verfassten Tipps wie "Versuche doch mal, die Klammern aus dem Caption-Label wegzubekommen (da gibt es AFAIK eine Paketoption für) und stattdessen \thesubfigure passend umzudefinieren".

rstuby
08-11-2011, 07:42
Wobei meiner Ansicht nach letzteres das wichtigste Argument ist, denn die relevanten Informationen könnte man ja theoretisch auch alle im ersten Beitrag als Prosatext einbringen.

Schweinebacke
08-11-2011, 12:06
Ohne Minimalbeispiel entwickelt sich schon'mal ein Frage-Antwort-Spiel, was sich problemlos über mehrere Wochen hinwegziehen kann. Und wie ich selbst schon leidvoll erfahren musste nicht selten nur mit Frust bei allen Beteiligten, statt mit einer befriedigenden Lösung endet. Deshalb überlege ich mir inzwischen zweimal, ob ich bei einem fehlenden Minimalbeispiel überhaupt antworten soll.

mechanicus
08-11-2011, 12:17
Deshalb überlege ich mir inzwischen zweimal, ob ich bei einem fehlenden Minimalbeispiel überhaupt antworten soll.
Ich stimme zu. Irgendwann ist man der Diskussion überdrüssig.

Marco