
Quiero dos imágenes al lado de otra grande y cada imagen tiene un tamaño diferente (como el ejemplo a continuación).
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é subfigure
y \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= (2fw+ev)/(ser+ 2af)
y= (bfw-afv)/(bde+ 2adf)
z= (peso corporal-AV)/(ser+ 2af)
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}
Si desea subfiguras, sustitúyalas minipage
por 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}
Respuesta2
una solución @egreg--https://tex.stackexchange.com/a/87976/197451
Puede utilizar algún entorno de minipágina y \sbox
medir la altura del cuadro más grande.
Fíjate que los he usado subfig
y no los obsoletos subfigure
. También subcaption
puede ser una opción y debería serlo si usa hyperref
.
La demo
opción graphicx
es simplemente producir algunas imágenes simuladas; Les di una altura para mostrar el ejemplo.
\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}