我需要制作一个响应式的图片拼贴画。在我当前的 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}