响应式图片拼贴

响应式图片拼贴

我需要制作一个响应式的图片拼贴画。在我当前的 MWE 下,我不能使用任何环境,只能使用子标题,因为这是我所在大学的指导方针:

\documentclass{article}
\usepackage{subcaption}
\usepackage{graphicx}

\begin{document}
    \begin{figure}
        \begin{subfigure}{.33\textwidth}
            \centering
            \includegraphics[width=.8\linewidth]{figures/cool/flock.jpg}
            \caption{1a}
            \label{fig:sfig1}
        \end{subfigure}%
        \begin{subfigure}{.33\textwidth}
            \centering
            \includegraphics[width=.8\linewidth]{figures/cool/whale_sound.jpg}
            \caption{1b}
            \label{fig:sfig2}
        \end{subfigure}
        \begin{subfigure}{.33\textwidth}
            \centering
            \includegraphics[width=.8\linewidth]{figures/cool/wolfe_hierarchies.png}
            \caption{1c}
            \label{fig:sfig3}
        \end{subfigure}
        \caption{plots of....}
        \label{fig:fig}
    \end{figure}
\end{document}

这给了我以下结果: 在此处输入图片描述

相反,我想要的是这样的: 在此处输入图片描述

如您所见,图 1b 更大,而 1c 已移至底部。所以,现在我正在这样做,改变每个子图环境的宽度。有没有办法根据所有图像的高度动态地做到这一点?此外,我可以在第二个示例中将图像 1c 居中吗?

以下是示例 2 的代码:

\documentclass{article}
\usepackage{subcaption}
\usepackage{graphicx}

\begin{document}
    \begin{figure}
        \begin{subfigure}{.33\textwidth}
            \centering
            \includegraphics[width=.8\linewidth]{figures/cool/flock.jpg}
            \caption{1a}
            \label{fig:sfig1}
        \end{subfigure}%
        \begin{subfigure}{.66\textwidth}
            \centering
            \includegraphics[width=.8\linewidth]{figures/cool/whale_sound.jpg}
            \caption{1b}
            \label{fig:sfig2}
        \end{subfigure}
        \begin{subfigure}{.33\textwidth}
            \centering
            \includegraphics[width=.8\linewidth]{figures/cool/wolfe_hierarchies.png}
            \caption{1c}
            \label{fig:sfig3}
        \end{subfigure}
        \caption{plots of....}
        \label{fig:fig}
    \end{figure}
\end{document}

答案1

你可以尝试一下,它的工作原理如下:

  • 每次调用时都会创建一个长度\imagewidth来存储图像宽度
  • 一个宏\subgraphics接受两个输入参数(图像文件和subfigure标题),将输入图像文件的宽度存储为 2cm 的高度(本例中)。然后创建一个subfigure完全适合此宽度的文件并包含该文件。

使用此命令,宽度subfigure将从给定图像高度的图像宽度得出。

我个人不会使用这样的流程,因为它可能会导致信息无法读取。

\documentclass{article}
\usepackage{subcaption}
\usepackage{graphicx}

\newlength{\imagewidth}
\newcommand{\subgraphics}[2]{
\settowidth{\imagewidth}{\includegraphics[height=2cm]{#1}}%
\begin{subfigure}{\imagewidth}%
    \includegraphics[height=2cm]{#1}%
    \caption{#2}%
\end{subfigure}%
}

\begin{document}
\begin{figure}
        \centering
        \subgraphics{example-image-a}{1a}
        \subgraphics{example-image-b}{1b}
        \subgraphics{example-image-c}{1c}
        \caption{plots of....}
        \label{fig:fig}
    \end{figure}    

\end{document}

相关内容