
我想要兩張圖片並排在另一張大圖片旁邊,並且每張圖片都有不同的尺寸(如下例所示)。
我希望所有圖片保持其縱橫比,並且右側的圖片應具有相同的高度。另外,所有 3 張圖片的寬度都應與\textwidth
.
我已經嘗試過subfigure
和\resizebox
,但我無法根據左圖的高度設定正確的高度。手動嘗試適應所有尺寸太繁瑣了,有沒有簡單的方法可以做到這一點?
編輯:這是我的問題的更多資訊。我目前的程式碼如下所示。我剛剛調整了圖片的尺寸直到它們適合(試驗結束錯誤)。一個非常繁瑣的過程。
圖片有單獨的標題(a)、(b)和(c),整張圖片有另一個標題。
最好管理右側圖片的大小,使其不大於左側圖片,且所有 3 張圖片不超過線寬。
\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
如果我們表示為
- A和乙左邊圖的寬度和高度,
- C和d右上角圖片的寬度和高度,
- e和F右下角圖的寬度和高度,
- v右邊圖片之間的間隙,
- w所需的總寬度(略小於
\textwidth
),
我們可以表示為X,y和z三張圖片(左、右上、右下)所需的比例因子。然後求解線性系統得出
X=(2韌體+電動車)/(是+ 2AF)
y=(BFW-AFV)/(溴二苯醚+ 2阿德夫)
z=(體重-影音)/(是+ 2AF)
明顯的限制是第二個和第三個縮放因子是正的。
這是一個實現。
\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}