tcbitemize 中的列数不同

tcbitemize 中的列数不同

我使用以下代码

\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任意两列之间。

在此处输入图片描述

相关内容