Dos imágenes al lado de una grande, para que quepa en el ancho del texto

Dos imágenes al lado de una grande, para que quepa en el ancho del texto

Quiero dos imágenes al lado de otra grande y cada imagen tiene un tamaño diferente (como el ejemplo a continuación).

ingrese la descripción de la imagen aquí

Quiero que todas las imágenes mantengan su relación de aspecto y que las imágenes de la derecha tengan la misma altura. Además, las 3 imágenes deben ser tan anchas como \textwidth.

Lo intenté subfigurey \resizebox, pero no pude establecer las alturas correctas dependiendo de la altura de la imagen izquierda. Intentar ajustar manualmente todos los tamaños es demasiado tedioso, ¿hay alguna manera fácil de hacerlo?

Editar: Aquí hay más información sobre mi problema. Mi código actual se ve así. Acabo de ajustar los tamaños de las imágenes hasta que encajen (error de finalización de la prueba). Un proceso muy tedioso.

Las imágenes tienen leyendas individuales con (a), (b) y (c) y la imagen completa tiene otra leyenda.

Sería bueno administrar el tamaño de las imágenes de la derecha para que no sean más grandes que la de la izquierda y que las 3 imágenes no excedan el ancho de línea.

\begin{figure}[H]
\centering
\begin{subfigure}[p]{.45\textwidth}
    \includegraphics[height=\textheight]{MMC.eps}
    \caption{MMC Schaltbild, \cite{Eremia.2016}} \label{fig:ch2_MMC
\end{subfigure}
\qquad
\begin{subfigure}[p]{.45\textwidth}
    \centering
    \includegraphics[height=0.39\textheight]{Halfbridge.eps}
    \caption{Halfbridge, \cite{Shah.17.07.201621.07.2016}} \label{fig:ch2_Halfbridge}

    \vspace{2ex}

    \includegraphics[height=0.39\textheight]{Fullbridge.eps}
    \caption{Fullbridge, \cite{Shah.17.07.201621.07.2016}} \label{fig:ch2_Fullfbridge}
\end{subfigure}
\caption{MMC and Submodule}\end{figure}

Respuesta1

Si denotamos por

  • aybel ancho y alto de la imagen de la izquierda,
  • Cydel ancho y alto de la imagen en la parte superior derecha,
  • miyFel ancho y alto de la imagen en la parte inferior derecha,
  • vel espacio entre la imagen de la derecha,
  • wel ancho total deseado (un poco menos que \textwidth),

podemos denotar porX,yyzlos factores de escala requeridos para las tres imágenes (izquierda, arriba a la derecha y abajo a la derecha). Luego resolviendo el sistema lineal se obtiene

X= (2​fw+ev)/(ser+ 2​af)
y= (bfw-afv)/(bde+ 2​adf)
z= (peso corporal-AV)/(ser+ 2​af)

La limitación obvia es que el segundo y tercer factor de escala son positivos.

Aquí hay una implementación.

\documentclass{article}
\usepackage{graphicx,xfp}

\begin{document}

\begin{figure}

\sbox0{\includegraphics{example-image-a}}
\sbox2{\includegraphics{example-image-1x1}}
\sbox4{\includegraphics{example-image-b}}

\edef\Da{\fpeval{\wd0}}\edef\Db{\fpeval{\ht0}}
\edef\Dc{\fpeval{\wd2}}\edef\Dd{\fpeval{\ht2}}
\edef\De{\fpeval{\wd4}}\edef\Df{\fpeval{\ht4}}

\edef\Dv{\fpeval{8ex}}
\edef\Dw{\fpeval{\textwidth-3em}}

\edef\Dx{\fpeval{(2*\Df*\Dw + \De*\Dv)/(\Db*\De + 2*\Da*\Df)}}
\edef\Dy{\fpeval{(\Db*\Df*\Dw - \Da*\Df*\Dv)/(\Db*\Dd*\De + 2*\Da*\Dd*\Df)}}
\edef\Dz{\fpeval{(\Db*\Dw - \Da*\Dv)/(\Db*\De + 2*\Da*\Df)}}

\sbox{0}{%
  \begin{minipage}[b]{\fpeval{\Da*\Dx}pt}
  \vspace{0pt}
  \scalebox{\Dx}{\box0}
  \caption{First pic}
  \end{minipage}%
}\usebox{0}\hfill
\begin{minipage}[b][\ht0][s]{\fpeval{\Dw-\Da*\Dx}pt}
\centering
\vspace{0pt}
\scalebox{\Dy}{\box2}
\caption{Second pic}

\vfill

\scalebox{\Dz}{\box4}
\caption{Third pic}
\end{minipage}

\end{figure}

\end{document}

ingrese la descripción de la imagen aquí

Si desea subfiguras, sustitúyalas minipagepor subfigure.

\documentclass{article}
\usepackage{graphicx,xfp,subcaption}

\begin{document}

\begin{figure}

\sbox0{\includegraphics{example-image-a}}
\sbox2{\includegraphics{example-image-1x1}}
\sbox4{\includegraphics{example-image-b}}

\edef\Da{\fpeval{\wd0}}\edef\Db{\fpeval{\ht0}}
\edef\Dc{\fpeval{\wd2}}\edef\Dd{\fpeval{\ht2}}
\edef\De{\fpeval{\wd4}}\edef\Df{\fpeval{\ht4}}

\edef\Dv{\fpeval{8ex}}
\edef\Dw{\fpeval{\textwidth-3em}}

\edef\Dx{\fpeval{(2*\Df*\Dw + \De*\Dv)/(\Db*\De + 2*\Da*\Df)}}
\edef\Dy{\fpeval{(\Db*\Df*\Dw - \Da*\Df*\Dv)/(\Db*\Dd*\De + 2*\Da*\Dd*\Df)}}
\edef\Dz{\fpeval{(\Db*\Dw - \Da*\Dv)/(\Db*\De + 2*\Da*\Df)}}

\sbox{0}{%
  \begin{subfigure}[b]{\fpeval{\Da*\Dx}pt}
  \vspace{0pt}
  \scalebox{\Dx}{\box0}
  \caption{First pic}
  \end{subfigure}%
}\usebox{0}\hfill
\begin{subfigure}[b][\ht0][s]{\fpeval{\Dw-\Da*\Dx}pt}
\centering
\vspace{0pt}
\scalebox{\Dy}{\box2}
\caption{Second pic}

\vfill

\scalebox{\Dz}{\box4}
\caption{Third pic}
\end{subfigure}

\caption{Global caption}

\end{figure}

\end{document}

ingrese la descripción de la imagen aquí

Respuesta2

una solución @egreg--https://tex.stackexchange.com/a/87976/197451

Puede utilizar algún entorno de minipágina y \sboxmedir la altura del cuadro más grande.

Fíjate que los he usado subfigy no los obsoletos subfigure. También subcaptionpuede ser una opción y debería serlo si usa hyperref.

La demoopción graphicxes simplemente producir algunas imágenes simuladas; Les di una altura para mostrar el ejemplo.

ingrese la descripción de la imagen aquí

\documentclass{article}
\usepackage{subfig}
\documentclass{article}
\usepackage{subfig}
\usepackage[demo]{graphicx}

\newsavebox{\measurebox}

\begin{document}

\begin{figure}
\centering
\sbox{\measurebox}{%
  \begin{minipage}[b]{.33\textwidth}
  \subfloat
    []
    {\label{fig:figA}\includegraphics[width=\textwidth,height=5cm]{figA}}
  \end{minipage}}
\usebox{\measurebox}\qquad
\begin{minipage}[b][\ht\measurebox][s]{.33\textwidth}
\centering
\subfloat
  []
  {\label{fig:figB}\includegraphics[width=\textwidth,height=2cm]{figB}}

\vfill

\subfloat
  []
  {\label{fig:figC}\includegraphics[width=\textwidth,height=2cm]{figC}}
\end{minipage}
\caption{my caption. (a) is .... (b) is .... (c) is ....}
\label{fig:Test}
\end{figure}
\end{document}

información relacionada