我目前正在研究这个问题关于我写作中使用的子图。结果令人印象深刻,尤其是针对该问题发布的最后一个答案。但是,我没有找到如何指定图形(即子图)的行数和列数。我尝试在最后一个答案中使用“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}