
2 枚の写真を別の大きな写真の横に並べ、各写真のサイズをそれぞれ異なるものにしたい (以下の例のように)。
すべての画像のアスペクト比を維持し、右側の画像の高さを同じにします。また、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
と表すと
- 1つのそしてb左側の画像の幅と高さ、
- cそしてd右上の画像の幅と高さ、
- eそしてふ右下の写真の幅と高さ、
- ヴ右側の写真の隙間、
- わ希望する合計幅( より少し小さい
\textwidth
)、
次のように表すことができますバツ、ええそしてず3つの画像(左、右上、右下)に必要なスケール係数。次に線形方程式を解くと、次の式が得られます。
バツ= (2FW+ev)/(なれ+ 2AF)
ええ= (ボーイフレンド-AFV)/(bde+ 2アドフ)
ず= (黒-av)/(なれ+ 2AF)
明らかな制限は、2 番目と 3 番目のスケーリング係数が正であることです。
ここに実装があります。
\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}