两张图片放在一张大图片旁边,以适合文本宽度

两张图片放在一张大图片旁边,以适合文本宽度

我想要两张图片放在另一张大图片旁边,并且每张图片都有不同的大小(如下面的例子)。

在此处输入图片描述

我希望所有图片都保持其纵横比,并且右侧的图片应具有相同的高度。另外,所有 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

如果我们表示为

  • Ab左边图片的宽度和高度,
  • Cd右上角图片的宽度和高度,
  • F右下角图片的宽度和高度,
  • 右边图片之间的差距,
  • 所需的总宽度(略小于\textwidth),

我们可以用X为三幅图(左图、右上图和右下图)计算所需的比例因子。然后求解线性系统可得出

X=(2防火墙+埃弗)/(+ 2自动对焦
= (百福-装甲车辆)/(溴化乙烷+ 2自动对焦
= (体重-AV)/(+ 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而不是过时的subfiguresubcaption如果您使用 ,也可以选择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}

相关内容