
Я хочу, чтобы две фотографии были рядом с еще одной большой, и чтобы каждая фотография имела разный размер (как в примере ниже).
Я хочу, чтобы все картинки сохраняли соотношение сторон, а картинки справа имели одинаковую высоту. Также все три картинки должны быть такой же ширины, как \textwidth
.
Я пробовал subfigure
и \resizebox
, но не смог установить правильные высоты в зависимости от высоты левой картинки. Вручную пытаться подогнать все размеры слишком утомительно, есть ли простой способ сделать это?
Редактировать: Вот дополнительная информация по моей проблеме. Мой текущий код выглядит так. Я просто отрегулировал размеры картинок, пока они не влезут (ошибка в конце пробного периода). Очень утомительный процесс.
Рисунки имеют индивидуальные подписи (a), (b) и (c), а вся картинка имеет еще одну подпись.
Было бы неплохо управлять размером правых картинок так, чтобы они не были больше левой и чтобы все три картинки не выходили за пределы ширины строки.
\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}
решение1
Если мы обозначим через
- аибширина и высота картинки слева,
- сигширина и высота картинки вверху справа,
- еифширина и высота картинки внизу справа,
- взазор между картинкой справа,
- жжелаемая общая ширина (чуть меньше
\textwidth
),
мы можем обозначить черезИкс,уизтребуемые масштабные коэффициенты для трех картинок (левая, верхняя правая и нижняя правая). Тогда решение линейной системы дает
Икс= (2фв+ев)/(быть+ 2аф)
у"="бфв-афв)/(бде+ 2адф)
з"="чб-средний)/(быть+ 2аф)
Очевидным ограничением является то, что второй и третий коэффициенты масштабирования положительны.
Вот реализация.
\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}
Если вам нужны подцифры, замените minipage
на 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}
решение2
решение @egreg--https://tex.stackexchange.com/a/87976/197451
Вы можете использовать среду мини-страницы и \sbox
измерить высоту самого большого ящика.
Обратите внимание, что я использовал subfig
, а не устаревший subfigure
. Также subcaption
может быть выбором и должен, если вы используете hyperref
.
Вариант demo
— graphicx
просто создать несколько макетов изображений; я задал им высоту, чтобы показать пример.
\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}