¿Cómo escalar automáticamente las subfiguras para que tengan la misma altura?

¿Cómo escalar automáticamente las subfiguras para que tengan la misma altura?

Tengo muchas figuras para colocar una al lado de la otra en un documento, y todas tienen un tamaño ligeramente diferente (es decir, no todas en formato 4:3 más o menos).

Lo que estoy haciendo en este momento es ajustar width=0.XX\textwidthambos hasta que luzcan más o menos a la misma altura.

Aquí proporciono un código de ejemplo: lo que me gustaría poder hacer es tener una macro o algo así, donde simplemente pueda proporcionar las dos figuras y se escalan automáticamente para tener la misma altura y caber en una línea. ¿Es eso posible? Y si es así, ¿cómo?

Editar: ya que la gente pregunta por qué no proporciono tamaños específicos para las imágenes: el código debería funcionar concualquier2 imágenes con cualquier relación de aspecto. Dale dos imágenes y el código las escala para que quepan una al lado de la otra.ytener la misma altura, llenando el espacio horizontal disponible.

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

Lo que consigo:

lo que consigo

Lo que deseo que suceda automáticamente:

lo que deseo conseguir

Respuesta1

Para los dos gráficos de muestra y el ancho y alto del texto predeterminado proporcionado por la scrreprtclase de documento, es suficiente reemplazar width=...con height=0.21\textheight, para ambos subfiggrupos.

ingrese la descripción de la imagen aquí

Para otras combinaciones de anchos de texto, alturas de texto y proporciones de los pares de imágenes que deben colocarse una al lado de la otra, probablemente tendrás que experimentar un poco para descubrir qué valor de height=...es el correcto.

Supongo que el objetivo es hacer que los pares de gráficos sean lo más grandes posible, es decir, que abarquen todo el ancho del bloque de texto. Si esta suposición es válida, no \centeringse necesita ninguna de las instrucciones.

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

Respuesta2

con definir (sólo) su altura. Me gusta \includegraphics[height=33mm]{example-image-a}}(seleccione la altura de la imagen según su deseo).

fuera de tema: no lo use \centeringdentro de subflotadores ...

editar:

En su caso, dado que le gusta tener la misma clave en ambas imágenes, heightuse la clave Ginde la siguiente manera en el código editado a continuación. Para separar las imágenes tanto como sea posible, utilice \hfillen lugar 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}

ingrese la descripción de la imagen aquí

(las líneas rojas indican los bordes del texto)

Respuesta3

Para que ambas imágenes tengan la misma altura, puede almacenar la altura de la primera imagen en una dimensión \imageheight. Luego puedes usar height=\imageheightpara la segunda imagen.

El culpable aquí es que no se puede definir automáticamente el ancho de ambas imágenes para que se ajusten lo mejor posible al ancho del texto. Quizás un código con lua pueda hacer eso pero hasta ahora no aprendí a usar lua en TeX…

Así que hagámoslo semiautomático...

Echemos un vistazo al código. Con la línea en el preámbulo

\newdimen\imageheight

Declaramos una nueva dimensión \imageheightpara almacenar la altura de la primera imagen. con el codigo

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

obtienes la altura actual de la imagen para un ancho elegido de width=0.40\textwidth.

Ahora puedes usar el 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 las imágenes con la misma altura. Para que se ajusten al ancho del texto, simplemente juegue con el ancho de la primera imagen: width=0.40\textwidth. Cambie el valor de 0.40\textwidthsegún sus necesidades.

El 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 da el resultado:

ingrese la descripción de la imagen aquí

información relacionada