我使用以下代码
\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{subfig} %For subcaptions
\newcommand{\mysubfig}[3][width=\linewidth]{%
\tcbitem\subfloat[#2]{\includegraphics[#1]{#3}}}
\begin{document}
\begin{figure}
\begin{tcbitemize}[
raster columns=3,
raster halign=center,
raster every box/.style={blankest}
]
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\end{tcbitemize}
\caption{Figure caption}
\label{pics:blablabla}
\end{figure}
\end{document}
但我希望数字按列排序,而不是按行排序。含义:
我该怎么做?谢谢。
答案1
根据示例tcolorbox
文档, 15.6.1 节“光栅设置”, 第 295 页。
\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{subfig} %For subcaptions
\newcommand{\mysubfig}[3][width=\linewidth]{%
\tcbitem\subfloat[#2]{\includegraphics[#1]{#3}}}
\begin{document}
\begin{figure}
\begin{tcbitemize}[
raster columns=3,
raster equal height=none,
raster column skip=2em,
raster every box/.style={blankest}
]
\tcbitem
\begin{tcbitemize}[raster columns=1]
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\end{tcbitemize}
\tcbitem
\begin{tcbitemize}[raster columns=1, raster row skip=2em]
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\end{tcbitemize}
\tcbitem
\begin{tcbitemize}[raster columns=1, raster row skip=2em]
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\end{tcbitemize}
\end{tcbitemize}
\caption{Figure caption}
\label{pics:blablabla}
\end{figure}
\end{document}
答案2
我可以提供一个基于的实施方案\valign
。
\documentclass{article}
\usepackage{graphicx}
\usepackage{subfig} %For subcaptions
\usepackage{xpatch}
\newcommand{\mysubfig}[3][width=\linewidth]{%
\subfloat[#2]{\includegraphics[#1]{#3}}%
}
\newenvironment{columnsofimages}[1]
{%
\setlength{\linewidth}{\dimexpr(\columnwidth-\columnsep*\numexpr(#1-1)\relax)/3\relax}%
\def\\{\cr\noalign{\hskip\columnsep}}%
\xpretocmd{\mysubfig}{\hbox\bgroup}{}{}%
\xapptocmd{\mysubfig}{\egroup}{}{}%
\valign\bgroup\vfil##\vfil\cr
}
{\crcr\egroup}
\begin{document}
\begin{figure}
\begin{columnsofimages}{3}
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}\\
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}\\
\mysubfig{}{example-image-b}
\mysubfig{}{example-image-b}
\end{columnsofimages}
\caption{Figure caption}
\label{pics:blablabla}
\end{figure}
\end{document}
基元\valign
与 类似,\halign
但表示的是列而不是行。诀窍是将\subfloat
命令包含在 中\hbox{...}
,这可以通过本地修补 来完成,而无需使用新宏\mysubfig
。
设置为\linewidth
:减去\columnsep
列数的 1 倍,然后除以列数。然后\\
插入到\columnsep
任意两列之间。