Ich möchte zwei Bilder neben einander haben und diese beschriften. Mit subfloat geht das zwar sehr gut …

Open in Online-Editor
\documentclass{scrreprt}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{cleveref}

\begin{document}
    \begin{figure}[htbp]
        \centering
        \subfloat[Text aText aText aText aText aText Text aText aText aTexta\label{fig:a}]{%
            \includegraphics[height=0.35\linewidth]{example-image-a}}
        \qquad      
        \subfloat[Text b\label{fig:b}]{%
            \includegraphics[height=0.3\linewidth]{example-image-b}}
        \end{figure}    
    Text in dem auf das \cref{fig:a} bezogen wird.  
\end{document}

alt text

… aber es sind Subfigures. D. h. bei einer Beschriftung heißen die beiden Bilder 0.1a und 0.1b anstatt 0.1 und 0.2. Das könnte man aufwendig umschreiben …

Open in Online-Editor
\documentclass{scrreprt}
\usepackage{graphicx}
\usepackage{subfig}
\usepackage{cleveref}

\renewcommand{\thesubfigure}{Abbildung \thechapter.\arabic{figure}}
\captionsetup[subfigure]{labelformat=simple}
\begin{document}
    \begin{figure}[htbp]
        \centering
        \subfloat[Text aText aText aText aText aText a\label{fig:a}]{%
            \includegraphics[height=0.35\linewidth]{example-image-a}}
        \addtocounter{figure}{1}
        \qquad      
        \subfloat[Text b\label{fig:b}]{%
            \includegraphics[height=0.3\linewidth]{example-image-b}}
        \addtocounter{figure}{1}
    \end{figure}    
    Text in dem auf das  \cref{fig:a} bezogen wird.
\end{document}

alt text

… aber dann funktioniert die Beziehung mit \cref nicht mehr , da die figure- und subfigure-Labels hinter einander geschrieben werden (wie 0.1a).

Alternative minipage. Riesennachteil: die Größe und Ausrichtung ist nicht mehr so dynamisch wie in subfloat. Es erwartet statische Vorgaben wie \begin{minipage}[t]{0.45\linewidth}. Wann sind die Abbildungen dann mal zufällig gleich breit? Eigentlich müsste man Breite=BildbreiteA+BildbreiteB/BildbreiteA. Und wenn man nach der Höhe ausrichten möchte geht es meines Wissens gar nicht mehr.

Ich habe noch subfigure ausprobiert, die kamen aber zum einen (trotz [t]) immer untereinander und die Caption war breiter als das Bild (kein Zeilenumbruch).

Open in Online-Editor
\documentclass{scrreprt}
\usepackage{graphicx}
\usepackage{subfigure}

\begin{document}
    \begin{figure*}[t!]
        \centering
        \begin{subfigure}[t]
            \centering
            \includegraphics[scale=2]{example-image-a}
            \caption{Text a}\label{fig:a}       
        \end{subfigure}
        \qquad
        \begin{subfigure}[t]
            \centering
            \includegraphics[scale=1]{example-image-b}
            \caption{Text b}\label{fig:b}
        \end{subfigure}
    \end{figure*}
\end{document}

alt text

gefragt 27 Okt '16, 09:02

peter788's gravatar image

peter788
61235
Akzeptiert-Rate: 0%

bearbeitet 27 Okt '16, 11:55

saputello's gravatar image

saputello
11.1k174365

Willkommen auf TeXwelt!

(27 Okt '16, 09:07) saputello
2

Außerdem empfehle ich, etwas mehr Mühe auf korrektes Markdown auch im Text zu verwenden und insgesamt die Fehlerzahl klein zu halten (dabei kann ggf. eine Rechtschreibkontrolle, die es auch für Browser gibt, hilfreich sein). Nicht, dass wir sonst die Frage ignorieren. Sorgfältige Fragestellung signalisiert aber, dass Dir die Frage wichtig ist und es uns deshalb auch sein sollte. Das ist mehr ein psychologisches als ein rationales Moment.

(27 Okt '16, 09:15) saputello

Danke das macht es um einiges einfacher. Habe es auch gleich mal umgesetzt, dabei habe ich leider das usepackage[ngerman]{babel} vergessen....

(27 Okt '16, 11:09) peter788

@peter788: Bitte beachte, dass vom Paket mwe nicht BildA und BildB sondern u. a. example-image-a und example-image-b bereitgestellt werden. Für ein vollständiges Minimalbeispiel sollte man daher nur dann BildA und BildB verwenden, wenn das unbedingt notwendig ist und man die Dateien auch bereitstellt! Siehe auch hierzu die Minimalbeispiel-Anleitung. Ich habe die Dateiangaben in Deinem Beispiel entsprechend ersetzt.

(27 Okt '16, 11:58) saputello

Es sei auch noch darauf hingewiesen, dass das Paket subfigure veraltet ist, wie auch im CTAN-Katalog-Eintrag angegeben ist. In dem Eintrag findet man auch einen Verweis auf den offiziellen Nachfolger sowie auf min. eine empfehlenswerte Alternative. Mit letzterem könnte man das Problem übrigens ebenfalls lösen. Nachdem ich aber bereits drei Alternativen in drei Antworten vorgestellt habe, werde ich das ggf. anderen überlassen.

(27 Okt '16, 12:28) saputello

Das Paket varwidth ist dafür sehr gut geeignet. Es stellt eine Umgebung varwidth bereit, die dieselben optionalen und obligatorischen Argumente wie minipage versteht. Der Unterschied zu minipage besteht darin, dass die angegebene Breite die Maximalbreite der Umgebung ist. Hat der Inhalt eine geringere natürliche Breite, so wird die Umgebung selbst auf diese geringere Breite reduziert.

Open in Online-Editor
\documentclass{article}
\usepackage{graphicx}
\usepackage{varwidth}
\usepackage{mwe}
\begin{document}
\begin{figure}
  \centering
  \begin{varwidth}[t]{\linewidth}
    \includegraphics[scale=.5]{example-image-a}
    \caption{Linke Abbildung}
  \end{varwidth} % ein Leerzeichen Abstand
  \begin{varwidth}[t]{\linewidth}
    \includegraphics[scale=.4]{example-image-b}
    \caption{Rechte Abbildung}
  \end{varwidth}
\end{figure}
\end{document}

zwei Bilder nebeneinander

Im Beispiel habe ich beiden Bildern erlaubt, maximal so breit wie die gesamte Zeile zu werden. Das Leerzeichen (oder Zeilenende) zwischen den beiden varwidth-Umgebungen erlaubt ggf. dass die Bilder untereinander statt nebeneinander stehen, falls der Inhalt zu breit ist, um sie nebeneinander zu setzen. Außerdem sorgt es für einen minimalen Abstand zwischen den beiden Bildern.

Permanenter link

beantwortet 27 Okt '16, 09:26

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

Danke für die schnelle und gute Antwort!! Das ist eigentlich genau das was ich such, fuzt bei mir aber leider nicht. Ich glaube varwith als auch [t] laufen nicht. Ich an deinen Beispiel ein bisschen gespiel um es zu verdeutlichen.

alt text

alt text

(27 Okt '16, 09:47) peter788

@peter788: Ich habe Deine "Antwort" in einen Kommentar umgewandelt. Hier sind Antworten stets "echte" Antworten, keine Gespräche oder Rückfragen oder Zusatzinfos, sondern Lösungen. Das verbessert die Übersicht erheblich für die Archivierung der Lösungen. Ungewohnt und anders als in Webforen, doch innovativ und nutzbarer. Bemerkungen gern wie hier als Kommentare. Ausufernde Diskussionen sind allerdings zu vermeiden. Dafür wäre ein Diskussionsforum besser geeignet. Anschlussfragen ggf. mit VM und Link als neue Frage.

(27 Okt '16, 09:52) saputello

@peter788: Da ich wieder nur einen Codeschnipsel sehe (siehe meinen Kommentar unter der Frage), kann ich allenfalls darauf hinweisen, dass Du mein Beispiel falsch angewendet hast (laut Kommentar zu setzendes Leerzeichen fehlt!) und ich leider mit den vorhanden Daten nicht ermitteln kann, wo bei Dir genau das Problem ist. Eventuell hat die rechte Abbildung links zusätzlichen Leerraum. Hast Du denn einmal mein Originalbeispiel ausprobiert?

(27 Okt '16, 09:55) saputello

Ok. Ich habe den Fehler gefunden: Warum auch immer, bei varwidth als auch floatrow funktioniert linwidth nicht, textwidth läuft dagegen wunderbar.

(27 Okt '16, 11:31) peter788
1

@peter788: Dass Dein absolutes Urteil nicht ganz zutrifft, zeigt die Verwendung von \linewidth in meinem Beispiel. Man muss natürlich wissen, dass \linewidth vom jeweiligen Kontext abhängig ist und was es in welchem Kontext ist, also wo man es konkret wie anwendet. Wobei dies für \textwidth in gewissem Maße auch gilt. Beispielsweise ist es innerhalb von minipage nicht die Breite des Dokument-Textbereichs, sondern die Breite der minipage. Und dann gibt es natürlich auch noch \columnwidth und das eher interne \hsize. Viele ähnliche Längen, die sich jedoch im Detail unterscheiden.

(27 Okt '16, 11:51) saputello
Ergebnis 5 von 6 show 1 more comments

Das Paket floatrow bietet zwei Features, die für die Umsetzung der Anforderung verwendet werden können.

Zum einen kann man mit \ffigbox eine Abbildung zusammen mit ihrer Bildunterschrift in genau der Breite setzen, die durch die Abbildung vorgegeben wird. Das funktioniert auch dann noch, wenn die Bildunterschrift mehrzeilig wird. Dazu ist als optionales erstes Argument \FBwidth anzugeben. Als zweites Argument wird \caption[…]{…} zusammen mit einem ggf. zu setzenden \label{…} angegeben. Das dritte Argument ist die Abbildung.

Desweiteren bietet das Paket die Möglichkeit, durch \ffigbox angegebene Abbildungen innerhalb einer floatrow-Umgebung in Spalten nebeneinander anzuordnen. Für zwei Abbildungen nebeneinander muss man die beiden durch \ffigbox definierten Abbildungen also nur zusätzlich in eine floatrow-Umgebung packen:

Open in Online-Editor
\documentclass{article}
\usepackage{graphicx}
\usepackage{floatrow}
\usepackage{mwe}
\begin{document}
\begin{figure}
  \centering
  \begin{floatrow}
  \ffigbox[\FBwidth]{%
    \caption{Linke Abbildung}\label{fig:left}
  }{%
    \includegraphics[scale=.5]{example-image-a}
  }%
  \ffigbox[\FBwidth]{%
    \caption{Abbildung rechts neben der linken Abbildung}\label{fig:right}
  }{%
    \includegraphics[scale=.4]{example-image-b}
  }%
  \end{floatrow}
\end{figure}
\end{document}

zwei Abbildungen mit floatrow nebeneinander

Das Paket bietet diverse weitere Möglichkeiten. Es lohnt sich also, die Anleitung einmal genauer durchzulesen.

Permanenter link

beantwortet 27 Okt '16, 09:39

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

Zu erst einmal vielen Dank für die Tatkräftige Unterstützung, alle Vorschläge haben mich weiter gebracht.

Floatrow ist meiner Meinung nach die beste Lösung für die genannte Problemstellung. Seit dem kommt floatrow bei mir gerne zum Einsatz.

Ein Nachteil hat es: Ich verwende scrreprt. Damit werden Beschriftungen von kleinen- oder Hochkant-Bildern sehr ungünstig umgebrochen. Gerade im Deutschen (Figure--> Abblindung) kann es sein, dass das Wort "Abbildung" 80% der Bildbreite ausmacht. Gibt es dafür vielleicht ein renewcommand oder ähnlichen.

(28 Okt '16, 13:57) peter788

@peter788: Das ist eine neue Frage und sollte (mit passendem Minimalbeispiel) als solche gestellt werden. Allerdings empfehle ich zuvor einen tiefen Blick in die floatrow-Anleitung und in die KOMA-Script-Anleitung. Man kann nämlich sowohl eine andere Breite setzen als auch die Bildunterschrift anders formatieren lassen.

(28 Okt '16, 14:06) saputello

@peter788: "Vielen Dank" geht bei uns übrigens mit einem Klick auf den Daumen hoch (kann jeder, der eine Frage oder Antwort gut findet, für beliebig viele Fragen/Antworten) und ggf. mit einem Klick auf den Haken (kann nur der Fragesteller für genau eine Antwort.

(28 Okt '16, 14:08) saputello

In ConTeXt MKIV kann man \start...\stopcombinations verwenden um mehrere Bilder nebeneinander zu platzieren.

Open in Online-Editor
\setupexternalfigures[location={local, default}]% für cow
\starttext

\startplacefigure
  [
    location=here,
    reference={fig:muh},
    title={Kühe},
  ]
  \startcombination[2*1]
    {\externalfigure[cow][width=2cm]}{Erste Kuh}
    {\externalfigure[cow][width=4cm]}{Zweite Kuh}
  \stopcombination
\stopplacefigure

\stoptext

alt text

Permanenter link

beantwortet 27 Okt '16, 11:48

Henri's gravatar image

Henri
15.7k133943
Akzeptiert-Rate: 46%

bearbeitet 27 Okt '16, 11:49

Contex wird mir aufgrund seiner Syntax immer sympatischer. Leider gibt es m.E. bis dato keine DAU-nützliche Dokumentation.

(28 Okt '16, 10:57) dzaic

@dzaic Es gibt ma-cb-en.pdf (aka »ConTeXt MKIV an excursion«)

(28 Okt '16, 10:59) Henri

Für die Breite zweiter minipage-Umgebungen, die man nebeneinander setzte, kann man unmittelbar die Breite der einzufügenden Abbildungen verwenden. Sehr einfach geht das mit Hilfe von \widthof aus dem Paket calc. Allerdings muss man dann in der minipage selbst berücksichtigen, dass sowohl \linewidth als auch \textwidth als auch \columnwidth in einer minipage die Breite der minipage ist. Will man die Breite des Textbereichs des Dokuments referenzieren, verwendet man daher besser eine \parbox statt einer minipage. Dann ist zwar \linewidth ebenfalls die Breite der \parbox aber \columnwidth ist weiterhin die Breite einer Textspalte des Dokuments und \textwidth weiterhin die Breite des Textbereichs des Dokuments (solange die \parbox-Anweisung nicht ihrerseits in einer Umgebung verwendet wird, die sich auf die genannte Längen auswirkt). Damit funktioniert:

Open in Online-Editor
\documentclass{article}
\usepackage{graphicx}
\usepackage{calc}
\usepackage{mwe}
\begin{document}
\begin{figure}
  \centering
  \parbox[t]{\widthof{\includegraphics[height=.35\columnwidth]{example-image-a}}}{%
    \includegraphics[height=.35\columnwidth]{example-image-a}
    \caption{Linke Abbildung}
  } % ein Leerzeichen Abstand
  \parbox[t]{\widthof{\includegraphics[height=.3\columnwidth]{example-image-b}}}{%}
    \includegraphics[height=.3\columnwidth]{example-image-b}
    \caption{Rechte Abbildung}
  }
\end{figure}
\end{document}

zwei Bilder nebeneinander mit klzzwxh:0017

Unschön daran ist natürlich, dass man die Bilder jeweils quasi zweimal laden muss. Man könnte dies mit Hilfe eines Box-Registern vermeiden:

Open in Online-Editor
\documentclass{article}
\usepackage{graphicx}
\usepackage{mwe}
\newsavebox\imagebox
\begin{document}
\begin{figure}
  \centering
  \savebox\imagebox{\includegraphics[height=.35\linewidth]{example-image-a}}%
  \begin{minipage}[t]{\wd\imagebox}% \wd\imagebox ist die Breite von \imagebox und damit des Bildes
    \usebox\imagebox
    \caption{Linke Abbildung}
  \end{minipage} % ein Leerzeichen Abstand
  \savebox\imagebox{\includegraphics[height=.3\linewidth]{example-image-b}}%
  \begin{minipage}[t]{\wd\imagebox}
    \usebox\imagebox
    \caption{rechte Abbildung}
  \end{minipage} % ein Leerzeichen Abstand
\end{figure}
\end{document}

und würde damit gleichzeitig das Problem der Längen innerhalb von minipage umgehen. Allerdings halte ich meine anderen Antworten für komfortabler.

Permanenter link

beantwortet 27 Okt '16, 12:24

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×46
×32
×5

gestellte Frage: 27 Okt '16, 09:02

Frage wurde gesehen: 44,469 Mal

zuletzt geändert: 28 Okt '16, 14:08