PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verweis innerhalb von "caption" auf andere Abbildung



labcat
17-07-2013, 11:15
Hallo,
ich bin neu hier im Forum (nachdem ich schon lange als Gast mitlese) und hoffe, ihr könnt mir bei einem speziellen Problem helfen. Ich sitze gerade an den letzten Zügen meiner Masterarbeit. Nun habe ich eine ganze Reihe von Abbildungen (Spektren), die ich im Text beschreibe. Die Bildunterschrift ist, bis auf die Probenbezeichnung, immer die gleiche.
Gibt es eine Möglichkeit, innerhalb einer Caption auf ein anderes Bild zu referenzieren? Also quasi

Bild 1
Lange Caption 1
Label x

Bild 2
Kurze Caption 2, Verweis auf Label xy
Label y

Ich hab hier ein (hoffentlich brauchbares) Minimalbeispiel:




\documentclass [ngerman,parskip=half, bibtotoc, BCOR=10mm,12pt,twoside]{scrreprt}
\usepackage [utf8]{inputenc} %wichtig für Umlaute
\usepackage[ngerman]{babel} %neue Rechtschreibung
\usepackage [T1] {fontenc}
\usepackage[font=small,labelfont=bf]{caption} %Captions klein und fett, abgekürzt
\addto\captionsngerman{
\renewcommand{\figurename}{Abb.}% ersetzt Abbildung durch Abb.
\renewcommand{\tablename}{Tab.}%
}
\usepackage{subfig} %verschachtelte Abbildungen
\usepackage{hyperref} %setzt Hyperlinks im pdf-Dokument

\begin{document}

\begin{figure}
\centering
\includegraphics[width=0.8\textwidth]{Abb. 1}
\caption{lange Caption}
\label{1}
\end{figure}

\begin{figure}
\centering
\includegraphics[width=0.8\textwidth]{Abb. 2}
\caption{kurze Caption. Bedingungen: s. Abb. \ref{1}}
\label{2}
\end{figure}

\end{document}



Ich hab es auch schon mit \protect vor dem \ref versucht, hat aber nichts gebracht. Wär toll, wennes dafür eine Lösung gäbe, ich habe aber leider nichts gefunden. Mit kurzen Captions schafft LaTeX nämlich auch mal, zwei Bilder untereinander auf einer Seite zu platzieren. Mit der langen Caption reicht der Platz nicht, so dass immer nur eine Abbildung auf eine Seite kommt. Das ist etwas unpraktisch, weil dann irgendwann der entsprechende Text und die dazugehörige Abbildung zwei Seiten entfernt sind - mein Chef hätte die gern so nah beieinander wie möglich.

klops
17-07-2013, 11:45
Ich glaube nicht, dass Du das Beispiel wirklich ausprobiert hast. Zum einen gibt es eine Fehlermeldung wegen eines fehlenden Pakets, zum anderen funktioniert es, wenn man diesen Fehler behebt.

Merke: Ein vollständiges Minimalbeispiel (http://www.mrunix.de/forums/showthread.php?t=66921) ist nur dann vollständige, wenn man das auch wirklich in einem neuen Verzeichnis getestet hat!

Außerdem hast Du noch einen andere Fehler in Deinem Code:
\addto\captionsngerman{%<-- siehe http://www.komascript.de/signifikanteLeerzeichen
\renewcommand{\figurename}{Abb.}% ersetzt Abbildung durch Abb.
\renewcommand{\tablename}{Tab.}%
}


Wobei man sich bei Verwendung von KOMA-Script das Leben auch leicht machen kann:
\AtBeginDocument{
\renewcaptionname{ngerman}{\figurename}{Abb.}
\renewcaptionname{ngerman}{\tablename}{Tab.}
}
Da spielt es nämlich keine Rolle, ob man die Zeilenenden korrekt auskommentiert oder nicht.

Übrigens brauchst Du für kleinere Schrift und fette Labels kein caption. Das kann KOMA-Script über \setkomafont/\addtokomafont auch selbst (für subfig dann aber doch, wobei ich eher subcaption empfehlen würde).

Wenn das Beispiel bei Dir nach Beseitigung des gemeldeten Fehler wegen \includegraphics tatsächlich nicht funktioniert, dann zeig mal die Fehlermeldung aus der Log-Datei.

Übrigens kann ich Dir noch \autoref aus der hyperref-Anleitung empfehlen. Das macht deutlich brauchbarere Links.

localghost
17-07-2013, 11:48
[…] Gibt es eine Möglichkeit, innerhalb einer Caption auf ein anderes Bild zu referenzieren? […]
Ich sehe das Problem irgendwie nicht. Was läuft denn nicht?

[…] Ich hab hier ein (hoffentlich brauchbares) Minimalbeispiel: […]
Leider nicht brauchbar, weil nicht lauffähig. Folgendes läuft problemlos nach mindestens zwei Durchläufen.

\documentclass[
fontsize=12pt,
BCOR=10mm,
parskip=half,
bibliography=totoc,
twoside=on,
ngerman
]{scrreprt}
\usepackage[T1]{fontenc}
\usepackage{selinput}
\SelectInputMappings{
adieresis={ä},
germandbls={ß}
}
\usepackage{babel}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{hyperref}

\renewcaptionname{ngerman}{\figurename}{Abb.} % ersetzt Abbildung durch Abb.
\renewcaptionname{ngerman}{\tablename}{Tab.} % ersetzt Tabelle durch Tab.

\addtokomafont{caption}{\small} % Formatierung der Beschriftungen
\addtokomafont{captionlabel}{\bfseries} % Formatierung der Marken

\begin{document}
\begin{figure}[!htb]
\centering
\includegraphics[width=0.8\textwidth]{example-image-a} % Bild vohanden falls Paket »mwe« installiert ist.
\caption{Lange Beschriftung}
\label{fig:dummy-1}
\end{figure}

\begin{figure}[!htb]
\centering
\includegraphics[width=0.8\textwidth]{example-image-b} % Bild vohanden falls Paket »mwe« installiert ist.
\caption{Kurze Beschriftung. Bedingungen: s.\ Abb.~\ref{fig:dummy-1}}
\label{fig:dummy-2}
\end{figure}
\end{document}


Thorsten

labcat
17-07-2013, 12:42
Okay, ich bin etwas doof. :rolleyes:
Das Beispiel funktioniert bei mir, in meiner Arbeit war ein Tippfehler... die Nerven sind Schuld. Trotzdem ganz vielen Dank für die schnelle Hilfe!

Aber wenn ich schonmal hier bin (rein interessehalber, brauch kein neues Thema dafür):

@localghost: welche Funktion hat dieses Paket? Also was muss ich mir unter "Semi-automatic detection of input encoding" vorstellen?


\usepackage{selinput}
\SelectInputMappings{
adieresis={ä},
germandbls={ß}

@klops: Danke für den Tip zu den Caption-Namen in KOMA. Merk ich mir für's nächste Mal.

Meine Präambel ist zusammenkopiert von allen möglichen Quellen, da ist es in der Tat manchmal unnötig kompliziert. ;)

Thema kann geschlossen werden (falls das hier gemacht wird)!

rstuby
17-07-2013, 14:52
Das selinput hat den Vorteil gegenüber inputenc, dass du die Kodierung, die benutzt wird, nicht kennen und angeben musst. Insbesondere für Minimalbeispiele ist das praktisch, da diese von Benutzern mit unterschiedlichen Einstellungen ausprobiert werden.

Ich habe zum Beispiel überall utf8, und wenn dann einer ein MB mit \usepackage[latin9]{inputenc} oder \usepackage[applemac]{inputenc} oder was liefert, dann muss ich erst die Option ändern, damit das Beispiel bei mir läuft, und wenn ich es dann nicht zurückändere, läuft mein Vorschlag beim Fragesteller nicht... Mit selinput entfallen diese Probleme.

klops
18-07-2013, 17:24
Meine Präambel ist zusammenkopiert von allen möglichen Quellen, da ist es in der Tat manchmal unnötig kompliziert. ;)
Du bist Dir hoffentlich klar darüber, dass Du mit solchen zusammenkopierten Dokumentpräambeln ein hohes Risiko eingehst. Eines davon sind beispielsweise die Leerzeichen durch Zeilenenden, die Du in die Sprachumschaltung eingebaut hast. Es gibt viele weitere.