Ich muss in einem Dokument viele Abbildungen nebeneinander darstellen und sie weisen alle leicht unterschiedliche Größen auf (d. h. sie sind nicht alle im Format 4:3 oder so).
Was ich im Moment mache, ist, die Höhe width=0.XX\textwidth
von beiden so lange zu optimieren, bis sie mehr oder weniger gleich hoch aussehen.
Hier ist ein Beispielcode: Ich hätte gern ein Makro oder so etwas, mit dem ich einfach die beiden Zahlen angeben kann und sie automatisch so skaliert werden, dass sie die gleiche Höhe haben und in eine Zeile passen. Ist das möglich? Und wenn ja, wie?
Bearbeiten: da die Leute fragen, warum ich keine spezifischen Größen für die Bilder angebe: Der Code sollte funktionieren mitbeliebig2 Bilder mit beliebigem Seitenverhältnis. Geben Sie zwei Bilder ein und der Code skaliert sie so, dass sie nebeneinander passenUndhaben die gleiche Höhe und füllen den verfügbaren horizontalen Raum aus.
\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}
\begin{document}
\chapter{Figures}
\begin{figure}[h!]
\centering
\subfloat[Figure one]{%
\centering\includegraphics[width=0.45\textwidth]{example-image-a}}
\qquad
\subfloat[Figure two with different side proportions]{%
\centering\includegraphics[width=0.45\textwidth]{example-image-16x9}}
\caption{How to get the two figures to same height (respecting proportions)?}
\end{figure}
\end{document}
Was ich bekomme:
Was ich automatisch geschehen lassen möchte:
Antwort1
scrreprt
Für die beiden Beispieldiagramme und die durch die Dokumentklasse vorgegebene Standardtextbreite und -höhe genügt es , für beide Gruppen width=...
durch zu ersetzen.height=0.21\textheight
subfig
Bei anderen Kombinationen aus Textbreiten, Texthöhen und Proportionen der nebeneinander zu platzierenden Bildpaare müssen Sie vermutlich ein wenig experimentieren, um herauszufinden, welcher Wert height=...
ungefähr richtig ist.
Ich gehe davon aus, dass das Ziel darin besteht, die Graphenpaare so groß wie möglich zu machen, d. h., sie sollen die gesamte Breite des Textblocks abdecken. Wenn diese Annahme gültig ist, \centering
ist keine der Anweisungen erforderlich.
\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}
\begin{document}
\chapter{Figures}
\begin{figure}[h!]
\subfloat[Figure one]{%
\includegraphics[height=0.21\textheight]{example-image-a}}
\hspace*{\fill}
\subfloat[Figure two with different side proportions]{%
\includegraphics[height=0.21\textheight]{example-image-16x9}}
\caption{How to get the two figures to same height (respecting proportions)?}\end{figure}
\end{document}
Antwort2
indem Sie (nur) deren Höhe definieren. Gefällt mir \includegraphics[height=33mm]{example-image-a}}
(wählen Sie die Bildhöhe nach Ihren Wünschen aus).
Off-Topic: nicht \centering
innerhalb von Subfloats verwenden ...
bearbeiten:
Da Sie in Ihrem Fall in beiden Bildern denselben height
Schlüssel haben möchten, verwenden Gin
Sie ihn wie folgt im unten bearbeiteten Code. Um die Bilder so weit wie möglich auseinander zu schieben, verwenden Sie \hfill
anstelle von quad
.
\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}
%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
\chapter{Figures}
\begin{figure}[h!]
\setkeys{Gin}{height=44mm}
\subfloat[Figure one]{\includegraphics{example-image-a}}
\hfill% push sub images apart, so take all the line
\subfloat[Figure two with different side proportions]{%
\includegraphics{example-image-16x9}}
\caption{How to get the two figures to same height (respecting proportions)?}
\end{figure}
\end{document}
(rote Linien zeigen Textränder an)
Antwort3
Um beide Bilder auf die gleiche Höhe zu bringen, können Sie die Höhe des ersten Bildes in einer Dimension speichern . Anschließend können Sie diese für das zweite Bild \imageheight
verwenden .height=\imageheight
Der Grund hierfür ist, dass man die Breite beider Bilder nicht automatisch so definieren kann, dass sie so gut wie möglich zur Textbreite passt. Vielleicht kann das ein Code mit Lua, aber ich habe bisher nicht gelernt, Lua in TeX zu verwenden ...
Also lasst es uns halbautomatisch machen ...
Schauen wir uns den Code einmal an. Mit der Zeile in der Präambel
\newdimen\imageheight
Wir deklarieren eine neue Dimension, \imageheight
um die Höhe des ersten Bildes zu speichern. Mit dem Code
\settoheight{\imageheight}{% <==========================================
\includegraphics[width=0.40\textwidth,keepaspectratio]{example-image-a}%
}
Sie erhalten die aktuelle Höhe des Bildes bei einer gewählten Breite von width=0.40\textwidth
.
Jetzt können Sie den Code verwenden
\subfloat[Figure one]{%
\centering\includegraphics[height=\imageheight]{example-image-a}}
\qquad
\subfloat[Figure two with different side proportions]{%
\centering\includegraphics[height=\imageheight]{example-image-16x9}}
um die Bilder mit gleicher Höhe zu drucken. Um sie an die Textbreite anzupassen, spielen Sie einfach mit der Breite für das erste Bild: width=0.40\textwidth
. Ändern Sie den Wert 0.40\textwidth
nach Bedarf.
Der komplette Code
\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}
\usepackage{showframe}
\newdimen\imageheight % to store the actual image height <==============
\begin{document}
\settoheight{\imageheight}{% <==========================================
\includegraphics[width=0.40\textwidth,keepaspectratio]{example-image-a}%
}
\chapter{Figures}
\begin{figure}[h!]
\centering
\subfloat[Figure one]{%
\centering\includegraphics[height=\imageheight]{example-image-a}} % <=============
\qquad
\subfloat[Figure two with different side proportions]{%
\centering\includegraphics[height=\imageheight]{example-image-16x9}} % <==========
\caption{How to get the two figures to same height (respecting proportions)?}
\end{figure}
\end{document}
gibt Ihnen das Ergebnis: