如何自动缩放子图以具有相同的高度?

如何自动缩放子图以具有相同的高度?

我有很多图形需要并排放在一个文档中,它们的大小都略有不同(即不是所有都是 4:3 格式左右)。

我目前正在做的是调整两者width=0.XX\textwidth直到它们看起来大致相同的高度。

这里我提供了一个示例代码:我希望能够有一个宏或其他东西,我只需提供两个图形,它们就会自动缩放以具有相同的高度并适合一行。这可能吗?如果可以,怎么做?

编辑:因为人们问我为什么不提供图像的具体尺寸:代码应该适用于任何2 张任意长宽比的图片。输入两张图片,代码会缩放它们以并排放置具有相同的高度,填充可用的水平空间。

\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}
\begin{document}
    \chapter{Figures}
    \begin{figure}[h!]
        \centering
        \subfloat[Figure one]{%
            \centering\includegraphics[width=0.45\textwidth]{example-image-a}}
        \qquad
        \subfloat[Figure two with different side proportions]{%
            \centering\includegraphics[width=0.45\textwidth]{example-image-16x9}}
        \caption{How to get the two figures to same height (respecting proportions)?}
    \end{figure}
\end{document}

我得到的是:

我得到了什么

我希望自动发生的事情:

我希望得到什么

答案1

对于两个示例图表和文档类给出的默认文本宽度和高度,对于两个组,只需用替换scrreprt即可。width=...height=0.21\textheightsubfig

在此处输入图片描述

对于需要彼此相邻放置的文本宽度、文本高度和图像对比例的其他组合,您可能需要进行一些实验才能找出哪个值height=...合适。

我假设目标是使图形对尽可能大,即跨越整个文本块的宽度。如果此假设成立,则不需要任何指令\centering

\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}
\begin{document}
\chapter{Figures}

\begin{figure}[h!]
\subfloat[Figure one]{%
\includegraphics[height=0.21\textheight]{example-image-a}}
\hspace*{\fill}
\subfloat[Figure two with different side proportions]{%
\includegraphics[height=0.21\textheight]{example-image-16x9}}
\caption{How to get the two figures to same height (respecting proportions)?}\end{figure}
\end{document}

答案2

定义(仅)它们的高度。例如\includegraphics[height=33mm]{example-image-a}}(根据您的意愿选择图像高度)。

离题:不要\centering在子浮点数内部使用……

编辑:

在您的例子中,由于您希望在两个图像中使用相同的heightGin,如下所示编辑后的代码。要尽可能地将图像分开,请使用\hfill而不是quad

\documentclass{scrreprt}
\usepackage{subfig}
\usepackage{graphicx}

%---------------- show page layout. don't use in a real document!
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
\begin{document}
    \chapter{Figures}
    \begin{figure}[h!]
    \setkeys{Gin}{height=44mm}
        \subfloat[Figure one]{\includegraphics{example-image-a}}
        \hfill% push sub images apart, so take all the line
        \subfloat[Figure two with different side proportions]{%
            \includegraphics{example-image-16x9}}
        \caption{How to get the two figures to same height (respecting proportions)?}
    \end{figure}
\end{document}

在此处输入图片描述

(红线表示文本边框)

答案3

要使两幅图像的高度相同,您可以将第一幅图像的高度存储在一个维度中\imageheight。然后,您可以将其height=\imageheight用于第二幅图像。

这里的罪魁祸首是您无法自动定义两个图像的宽度以尽可能地适合文本宽度。 也许使用 lua 的代码可以做到这一点,但直到现在我还没有学会在 TeX 中使用 lua...

所以让我们半自动地进行...

让我们看一下代码。序言中的这行

\newdimen\imageheight

我们声明一个新的维度\imageheight来存储第一幅图像的高度。使用代码

\settoheight{\imageheight}{% <==========================================
  \includegraphics[width=0.40\textwidth,keepaspectratio]{example-image-a}%
}

您可以获得所选宽度的图像的当前高度width=0.40\textwidth

现在您可以使用代码

\subfloat[Figure one]{%
  \centering\includegraphics[height=\imageheight]{example-image-a}}
\qquad
\subfloat[Figure two with different side proportions]{%
  \centering\includegraphics[height=\imageheight]{example-image-16x9}}

打印具有相同高度的图像。要使它们适合文本宽度,只需调整第一幅图像的宽度: 。根据需要width=0.40\textwidth更改值。0.40\textwidth

完整代码

\documentclass{scrreprt}

\usepackage{subfig}
\usepackage{graphicx}
\usepackage{showframe}

\newdimen\imageheight % to store the actual image height <==============


\begin{document}

\settoheight{\imageheight}{% <==========================================
  \includegraphics[width=0.40\textwidth,keepaspectratio]{example-image-a}%
}

\chapter{Figures}
\begin{figure}[h!]
  \centering
    \subfloat[Figure one]{%
      \centering\includegraphics[height=\imageheight]{example-image-a}} % <=============
    \qquad
    \subfloat[Figure two with different side proportions]{%
      \centering\includegraphics[height=\imageheight]{example-image-16x9}} % <==========
  \caption{How to get the two figures to same height (respecting proportions)?}
\end{figure}
\end{document}

给出结果:

在此处输入图片描述

相关内容