如何指定子图的行数和列数

如何指定子图的行数和列数

我目前正在研究这个问题关于我写作中使用的子图。结果令人印象深刻,尤其是针对该问题发布的最后一个答案。但是,我没有找到如何指定图形(即子图)的行数和列数。我尝试在最后一个答案中使用“subfig”。这很好用。此外,它会自动排列子图。但是,当我尝试增加子图的大小时,它超出了页面的界限。我希望有人可以分享如何指定图形的行数和列数,或者如何缩放整个图形(包括所有子图)。我没有重复代码以避免单调和冗余。

编辑:我包含一个 MWE

\documentclass[a4paper,12pt]{article}
\usepackage{graphicx}
\usepackage{subcaption}

\begin{document}
\begin{figure}[htb]
\centering
\subfloat[A subfigure]{%
    \includegraphics[width=.24\textwidth]{somefig_1}}
\subfloat[A subfigure]{%
    \includegraphics[width=.24\textwidth]{somefig_2}}
\subfloat[A subfigure]{%
    \includegraphics[width=.24\textwidth]{somefig_3}}
\subfloat[A subfigure]{%
    \includegraphics[width=.24\textwidth]{somefig_4}}
\caption{Arranged sub-figures}\label{fig:1}
\end{figure}
\end{document}

答案1

subcaption软件包提供了subfigure环境。subfloat来自该subfig软件包。尝试一下:

\documentclass[a4paper,12pt]{article}
\usepackage[demo]{graphicx}
\usepackage{subcaption}

\begin{document}
\begin{figure}[htb]
\centering
\begin{subfigure}{0.24\linewidth}
    \includegraphics[width=\linewidth]{somefig_1}
\end{subfigure}
\begin{subfigure}{0.24\linewidth}
    \includegraphics[width=\linewidth]{somefig_2}
\end{subfigure}
\begin{subfigure}{0.24\linewidth}
    \includegraphics[width=\linewidth]{somefig_3}
\end{subfigure}
% Put a blank line here to divide into two rows
\begin{subfigure}{0.24\linewidth}
    \includegraphics[width=\linewidth]{somefig_4}
\end{subfigure}
\caption{Arranged sub-figures}\label{fig:1}
\end{figure}
\end{document}

在此处输入图片描述

正如 BambOo 所说,如果不需要图形之间的水平空间,可以通过在%后面添加 s\end{subfigure}并增加宽度来将它们挤压得更多一些,例如

\documentclass[a4paper,12pt]{article}
\usepackage[demo]{graphicx}
\usepackage{subcaption}

\begin{document}
\begin{figure}[htb]
\centering
\begin{subfigure}{0.25\linewidth}
    \includegraphics[width=\linewidth]{somefig_1}
\end{subfigure}%
\begin{subfigure}{0.25\linewidth}
    \includegraphics[width=\linewidth]{somefig_2}
\end{subfigure}%
\begin{subfigure}{0.25\linewidth}
    \includegraphics[width=\linewidth]{somefig_3}
\end{subfigure}%
\begin{subfigure}{0.25\linewidth}
    \includegraphics[width=\linewidth]{somefig_4}
\end{subfigure}%
\caption{Arranged sub-figures}\label{fig:1}
\end{figure}
\end{document}

在此处输入图片描述

答案2

tcbraster或者,您可以使用来自排列所有子图tcolorbox。Atcbraster用于在具有固定列数的数组结构上分配框列表。默认情况下,栅格很\linewidth宽,如果框无法容纳在一页中,则栅格可以在页面之间断开。虽然此选项对您来说并不有趣,因为 不能figure被打破。

框的宽度会根据列数自动调整,并且要排列的项目会自动沿着所需的行分布。

代码显示了一个包含 3 或 4 列的示例。\mysubfig已定义命令以节省一些输入。

\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{subfig}

\newcommand{\mysubfig}[3][width=\linewidth]{
    \tcbitem\subfloat[#2]{\includegraphics[#1]{#3}}}

\begin{document}
\begin{figure}
\begin{tcbitemize}[raster equal height=rows,
raster columns=3, raster halign=center,
raster every box/.style=blankest]
\mysubfig{Test}{example-image-a}
\mysubfig{Test}{example-image-b}
\mysubfig{Test}{example-image-c}
\mysubfig{Test}{example-image}
\mysubfig{Test}{example-image-a}
\mysubfig{Test}{example-image-b}
\mysubfig{Test}{example-image-c}
\mysubfig{Test}{example-image}
\mysubfig{Test}{example-image-a}
\mysubfig{Test}{example-image-b}
\mysubfig{Test}{example-image-c}
\end{tcbitemize}
\caption{A bunch of subfigures composed with tcbraster}
\end{figure}

\begin{figure}
\begin{tcbitemize}[raster equal height=rows,
raster columns=4, raster halign=center,
raster every box/.style=blankest]
\mysubfig{Test}{example-image-a}
\mysubfig{Test}{example-image-b}
\mysubfig{Test}{example-image-c}
\mysubfig{Test}{example-image}
\mysubfig{Test}{example-image-a}
\mysubfig{Test}{example-image-b}
\mysubfig{Test}{example-image-c}
\mysubfig{Test}{example-image}
\mysubfig{Test}{example-image-a}
\mysubfig{Test}{example-image-b}
\mysubfig{Test}{example-image-c}
\end{tcbitemize}
\caption{A bunch of subfigures composed with tcbraster}
\end{figure}
\end{document}

在此处输入图片描述在此处输入图片描述

相关内容