Anordnung von 4 hochformatigen Fotos mittels Makro Thema ist als GELÖST markiert

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


cjc

Anordnung von 4 hochformatigen Fotos mittels Makro

Beitrag von cjc »

Hallo,

ich versuche auf eier seite 4 Fotos mittels eines makros darzustellen:
\newcommand{\bildHHHH}[8]{
\begin{figure} 
\setcapindent{0em}
\begin{minipage}{0.40\textwidth}
\centering
\includegraphics[width=\textwidth, height=0.4\textheight, keepaspectratio]{#1.jpg}
\caption{#5}
	\label{fig:#1}
\end{minipage}\hfill
\begin{minipage}{0.40\textwidth}
\centering
\includegraphics[width=\textwidth, height=0.4\textheight, keepaspectratio]{#2.jpg}
\caption{#6}
	\label{fig:#2}
\end{minipage}
\setcapindent{0em}
\begin{minipage}{0.40\textwidth}
\centering
\includegraphics[width=\textwidth, height=0.4\textheight, keepaspectratio]{#3.jpg}
\caption{#7}
	\label{fig:#3}
\end{minipage}\hfill
\begin{minipage}{0.40\textwidth}
\centering
\includegraphics[width=\textwidth, height=0.4\textheight, keepaspectratio]{#4.jpg}
\caption{#8}
	\label{fig:#4}
\end{minipage}
\end{figure}
}
Das sieht nicht schön aus, wenn die Fotos nicht das gleiche B/H-Verhältnis haben, vor allem bei Fotos nebeneinander. Mein Makro setzt die Fotos anscheinend per default mit Bildunterschrift mittig in eine Zeile.

Fragen (mit absteigender Priorität):
1. SEHR WICHTIG: Wie kann ich die Fotos an den oberen Rand der Zeile hängen?
2. EINIGERMASZEN WICHTIG: Kann man Latex die Größe der Fotodarstellung selbst überlassen, so daß das Ganze auch bei (beinahe) beliebig umfangreichen Bildunterschriften noch innerhalb der Seite dargestellt wird?
3. NICE TO HAVE: Würdet Ihr das Makro auch so machen, oder vielleicht ganz anders?

volkerr
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Sa 13. Aug 2011, 13:49

Beitrag von volkerr »

Hi,

ich bin selber noch recht grün hinter den Ohren, aber vielleicht helfen dir meine Vorschläge.

Wenn du die Bilder am oberen Rand ausrichten willst kannst du einfach in den Spezifikationen der minipage ein top dazuschreiben:
\begin{minipage}[t]
Plus natürlich deinen anderen Spezifikationen. Das Problem dabei könnte aber sein, dass die Captions dann auch "mitrutschen" und dann abhängig von der Bildergröße nicht mehr in einer Reihe sind.
Um das zu umgehen könntest du das Subcaption-Paket verwenden:
\usepackage{subcaption}
\captionsetup[sub]{position=top}

\begin{document}

\begin{figure}
\centering
\subcaptionbox{Bild1}
	{\includegraphics[scale=0.65]{Bild1}}\hfill
\subcaptionbox{Bild2}
	{\includegraphics[scale=0.65]{Bild2}}\hfill
\subcaptionbox{Bild3}
	{\includegraphics[scale=0.65]{Bild3}}\hfill
\subcaptionbox{Bild4}
	{\includegraphics[scale=0.65]{Bild4}}
\caption{Unterschrift für alle 4 Bilder}
\label{}
\end{figure}

\end{document}
Das macht aber, dass die Captions oder genauer die Subcaptions mit a, b, c, d angegeben werden und über den Bildern dargestellt werden.
Die letzte, sehr umständliche Lösung die ich anbieten könnte sieht so aus:
\begin{figure}[htb]
	\begin{minipage}[t]{\widthof{\includegraphics[scale=0.65]{Bild1}}}
	\includegraphics[scale=0.65]{Bild1}
	\end{minipage}
	\begin{minipage}[t]{\widthof{\includegraphics[scale=0.65]{Bild2}}}
	\includegraphics[scale=0.65]{Bild2}
	\end{minipage}
	\begin{minipage}[t]{\widthof{\includegraphics[scale=0.65]{Bild3}}}
	\includegraphics[scale=0.65]{Bild3}
	\end{minipage}
	\begin{minipage}[t]{\widthof{\includegraphics[scale=0.65]{Bild4}}}
	\includegraphics[scale=0.65]{Bild4}
	\end{minipage}

	\begin{minipage}[t]{\widthof{\includegraphics[scale=0.65]{Bild1}}}
	\subcaption{Bild1}
	\end{minipage}
	\begin{minipage}[t]{\widthof{\includegraphics[scale=0.65]{Bild2}}}
	\subcaption{Bild2}
	\end{minipage}
	\begin{minipage}[t]{\widthof{\includegraphics[scale=0.65]{Bild3}}}
	\subcaption{Bild3}
	\end{minipage}
	\begin{minipage}[t]{\widthof{\includegraphics[scale=0.65]{Bild4}}}
	\subcaption{Bild4}
	\end{minipage}
\caption{}
\label{}
\end{figure}
Auch hier brauchst du das Subcaption-Paket und die Bilder wären mit a, b, c, d nummeriert. Immer der erste includegraphics-Befehl pro Bild sagt der Minipage, dass sie so breit sein soll wie das Bild. Der zweite bindet es dann ein. Das machst du für alle Bilder. Danach kommt dann die nächste Reiher die für die Captions gedacht ist. Der Minipage wird wieder gesagt wie breit sie sein soll und die Caption wird angegeben.
Es gibt auch noch eine, vielleicht bessere und elegantere Lösung mit floatrow. Aber damit habe ich mich nicht beschäftigt.

Gruß, Volker
Zuletzt geändert von volkerr am Fr 19. Aug 2011, 19:37, insgesamt 1-mal geändert.

volkerr
Forum-Newbie
Forum-Newbie
Beiträge: 7
Registriert: Sa 13. Aug 2011, 13:49

Beitrag von volkerr »

Aso. Wie du Latex sagen kannst, dass es die Größe der Bilder selber zuordnen soll weiß ich leider nicht. Wie du siehst musst du die Größen in meinen Vorschlägen selber angeben. Tut mir Leid.

Nochmal Gruß.

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Beitrag von KOMA »

Man kann auch ein Raster von minipages, der Art:
\begin{minipage}{\textwidth}
\includegraphics[width=.4\linewidth]{#1}\hfill
\includegraphics[width=.4\linewidth]{#2}\hfill
\end{minipage}
\begin{minipage}{\textwidth}
  \begin{minipage}[t]{.4\linewidth}
    \caption{#5}
  \end{minipage}\hfill
  \begin{minipage}[t]{.4\linewidth}
    \caption{#6}
  \end{minipage}
\end{minipage}
\begin{minipage}{\textwidth}% hier dasselbe für die anderen beiden Bilder
…
bauen. Sollen die Fotos selbst nicht unten, sondern oben ausgerichtet werden, kann man das mit \raisebox erreichen, wie das in http://www.golatex.de/wichtige-hinweise ... t4688.html demonstriert wird. Natürlich kann man auch die \includegraphics-Anweisungen bei Bedarf zusätzlich in einzelne minipage-Umgebungen packen. Sollen die Bilder unterschiedlich breit sein, kann man oben natürlich auch wieder \widthof (Paket calc nicht vergessen!) arbeiten.

Bilder und Unterschriften in einer Tabelle anzuordnen könnte ebenfalls eine Möglichkeit darstellen.

Außerdem gibt es auch noch das Paket floatrow, mit dem diverse Anordnungen von Bildern erreichen kann.

Gast

Danke

Beitrag von Gast »

Hallo,

danke für Eure Ratschläge, die werde ich jetzt erst einmal verarbeiten.

Gruß, CJC

Antworten