Wie kann man Unterfiguren automatisch so skalieren, dass sie die gleiche Höhe haben?

Wie kann man Unterfiguren automatisch so skalieren, dass sie die gleiche Höhe haben?

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\textwidthvon 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 bekomme

Was ich automatisch geschehen lassen möchte:

was ich mir wünsche

Antwort1

scrreprtFü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\textheightsubfig

Bildbeschreibung hier eingeben

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, \centeringist 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 \centeringinnerhalb von Subfloats verwenden ...

bearbeiten:

Da Sie in Ihrem Fall in beiden Bildern denselben heightSchlüssel haben möchten, verwenden GinSie ihn wie folgt im unten bearbeiteten Code. Um die Bilder so weit wie möglich auseinander zu schieben, verwenden Sie \hfillanstelle 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}

Bildbeschreibung hier eingeben

(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 \imageheightverwenden .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, \imageheightum 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\textwidthnach 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:

Bildbeschreibung hier eingeben

verwandte Informationen