tcolorbox:错误的列宽和列间距

tcolorbox:错误的列宽和列间距

我不知道为什么,但是我无法获得等宽的列,tcolorbox如果列没有填满整个页面,则使用正确的列跳过。这是一张图片:

如果列填满整个页面,我不会遇到任何麻烦,列具有相同的大小和相同的间距:

正确的行为

但是,如果我缩小尺寸,盒子的宽度就不会相同,而且间距显然不等于 3 毫米:

错误行为

你知道为什么吗?

谢谢你!

梅威瑟:

\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\begin{document}
  \begin{tcbitemize}[nobeforeafter,
    raster columns=2,
    raster rows=2,
    % Works when full width
    % raster width=\textwidth,
    % raster height=\textheight,
    % Does not work when smaller width
    raster width=.5\textwidth,
    raster height=.5\textheight,
    % ----
    raster row skip=3mm,
    raster column skip=3mm]%
    \tcbitem[raster multirow=2,blankest]%
    \begin{tcbitemize}[raster columns=1,raster rows=2]%
      \tcbitem[colback=red]{A}
      \tcbitem[colback=red]{B}
    \end{tcbitemize}%
    \tcbitem[raster multirow=2,raster multicolumn=1,colback=red]{C}%
  \end{tcbitemize}%

\end{document}

答案1

内部tcbitemize环境需要一个额外的参数,.,

raster width=\textwidth

为什么?外部tcbitemize环境指定了raster columns=2raster width=0.5\linewidth全部的两列的宽度合起来为0.5\textwidth,每列的宽度也是如此0.25\textwidth(抽象出块之间有 3 毫米空白的事实)。

除非明确覆盖这些参数,否则它们tcbitemize也适用于内部环境。长度变量\textwidth的设计是动态调整的。为了使内部tcbitemize环境中的单个列占据整个可用宽度(即\textwidth\textwidth已调整),我们需要附加选项raster width=\textwidth

完整的 MWE:

\documentclass{article}
\usepackage[most]{tcolorbox}
\begin{document}
  \begin{tcbitemize}[nobeforeafter,
    raster columns=2,
    raster rows=2,
    raster width=.5\textwidth,
    raster height=.5\textheight,
    raster row skip=3mm,
    raster column skip=3mm]
    \tcbitem[raster multirow=2,blankest]
    \begin{tcbitemize}[raster columns=1,raster rows=2,
                       raster width=\textwidth]% <-- new
      \tcbitem[colback=red]{A}
      \tcbitem[colback=red]{B}
    \end{tcbitemize}
    \tcbitem[raster multirow=2,raster multicolumn=1,colback=red]{C}
  \end{tcbitemize}

\end{document}

答案2

这种构造的替代方案可以是tcbposter引入库tcolorbox v4.10

海报是一tcolorbox组牢不可破的盒子,可以轻松/灵活地放置不同宽度和高度的盒子。

tcbposters以下显示了两个示例使用 minipages 创建此海报布局或者动态框尺寸

\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{lipsum}
\begin{document}
  \begin{tcbposter}[
    poster = {
%       showframe, 
        columns = 2,
        rows = 2,
        height = .5\textheight, 
        width = .5\textwidth, 
        spacing=3mm},
    boxes = {colback=red}
    ]
    \posterbox{column=1, row=1}{A}
    \posterbox{column=1, row=2}{B}
    \posterbox{column=2, row=1, rowspan=2}{C}
  \end{tcbposter}%

\end{document}

在此处输入图片描述

相关内容