Como dimensionar subfiguras automaticamente para terem a mesma altura?

Como dimensionar subfiguras automaticamente para terem a mesma altura?

Tenho muitas figuras para colocar lado a lado em um documento e todas elas têm tamanhos ligeiramente diferentes (ou seja, nem todas no formato 4:3).

O que estou fazendo no momento é ajustar os width=0.XX\textwidthdois até que pareçam mais ou menos da mesma altura.

Aqui forneço um código de exemplo: o que eu gostaria de poder fazer é ter uma macro ou algo assim, onde eu pudesse simplesmente fornecer as duas figuras e elas seriam dimensionadas automaticamente para terem a mesma altura e caberem em uma linha. Isso é possível? E se sim, como?

Editar: já que as pessoas estão perguntando por que não estou fornecendo tamanhos específicos para as imagens: O código deve funcionar comqualquer2 imagens com qualquer proporção. Dê duas imagens e o código as dimensiona para caberem lado a ladoetêm a mesma altura, preenchendo o espaço horizontal disponível.

\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}

O que eu ganho:

o que eu ganho

O que desejo que aconteça automaticamente:

o que eu desejo obter

Responder1

Para os dois gráficos de amostra e a largura e altura padrão do texto fornecidas pela scrreprtclasse do documento, basta substituir width=...por height=0.21\textheight, para ambos subfigos grupos.

insira a descrição da imagem aqui

Para outras combinações de larguras e alturas de texto e proporções dos pares de imagens que precisam ser colocados um ao lado do outro, você provavelmente terá que experimentar um pouco para descobrir qual valor de height=...está correto.

Estou assumindo que o objetivo é fazer com que os pares de gráficos sejam os maiores possíveis, ou seja, abranjam toda a largura do bloco de texto. Se esta suposição for válida, nenhuma das \centeringinstruções será necessária.

\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}

Responder2

com a definição (apenas) de sua altura. like \includegraphics[height=33mm]{example-image-a}}(selecione a altura da imagem de acordo com seu desejo).

off-topic: não use \centeringdentro de subfloats ...

editar:

No seu caso, como você gostaria de ter as duas imagens iguais, heightuse a chave Ginconforme segue no código editado abaixo. Para separar as imagens tanto quanto possível, use \hfillem vez de 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}

insira a descrição da imagem aqui

(linhas vermelhas indicam bordas do texto)

Responder3

Para obter as duas imagens com a mesma altura, você pode armazenar a altura da primeira imagem em uma dimensão \imageheight. Então você pode usar height=\imageheightpara a segunda imagem.

O culpado aqui é que você não pode definir automaticamente a largura de ambas as imagens para ajustar a largura do texto da melhor maneira possível. Talvez um código com lua possa fazer isso mas até agora não aprendi a usar lua no TeX...

Então vamos fazer isso de forma semiautomática...

Vamos dar uma olhada no código. Com a linha no preâmbulo

\newdimen\imageheight

declaramos uma nova dimensão \imageheightpara armazenar a altura da primeira imagem. Com o código

\settoheight{\imageheight}{% <==========================================
  \includegraphics[width=0.40\textwidth,keepaspectratio]{example-image-a}%
}

você obtém a altura atual da imagem para uma largura escolhida de width=0.40\textwidth.

Agora você pode usar o código

\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}}

para imprimir as imagens com a mesma altura. Para ajustá-los à largura do texto, basta brincar com a largura da primeira imagem: width=0.40\textwidth. Altere o valor de 0.40\textwidthacordo com suas necessidades.

O código completo

\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}

te dá o resultado:

insira a descrição da imagem aqui

informação relacionada