tcolorbox 中的框放置

tcolorbox 中的框放置

我想知道是否有办法放置如下颜色框:

-------- --------
| box1 | |      |
-------- | box3 |  
-------- |      | 
| box2 | |      |
-------- --------

为了实现这一点,我实际上将盒子放在了 tikz 节点内,但这似乎是一个过度的解决方案。有没有不使用 tikz 的方法?

答案1

显然,您会使用\tcbox宏版本来处理您的框,而不是环境形式。此 MWE 中显示了 stackgap 的自动计算。(注意:此示例从 tcolorbox 的 V2.30 开始有效)。

\documentclass{article}
\usepackage{stackengine}
\usepackage{tcolorbox}
\begin{document}

\def\boxone{\tcbox[nobeforeafter]{This is a test}}
\def\boxtwo{\tcbox[nobeforeafter]{Another test}}
\def\boxthree{\tcbox[nobeforeafter,minipage,width=0.7in]{this is a very long box}}

\stackon[\heightof{\boxthree}-\heightof{\boxone}-\heightof{\boxtwo}]%
  {\boxtwo}{\boxone}~\boxthree

\end{document}

在此处输入图片描述

答案2

采取类似策略Steven Segletes 的回答但使用xcoffins包,它允许我们在各个盒子上选择要排列的点:

\documentclass{article}
\usepackage{tcolorbox}

\usepackage{xcoffins}
\NewCoffin{\CoffinA}
\NewCoffin{\CoffinB}
\NewCoffin{\CoffinC}
\begin{document}
% Set up content in three coffins
\SetHorizontalCoffin{\CoffinA}{%
  \begin{tcolorbox}[width = 1 in]
    This is a \textbf{tcolorbox}.%
  \end{tcolorbox}
}%
\SetHorizontalCoffin{\CoffinB}{%
  \begin{tcolorbox}[width = 1 in]
    This is a \textbf{tcolorbox}.%
  \end{tcolorbox}
}%
\SetHorizontalCoffin{\CoffinC}{\rule{1 in}{2.5 in}}%
% Join the first small coffin onto the big one at the top
\JoinCoffins{\CoffinC}[t,l]{\CoffinA}[t,r](-0.1 in, 0 in)%
% Join the second small coffin onto the big one at the bottom
\JoinCoffins{\CoffinC}[b,\CoffinC-l]{\CoffinB}[b,r](-0.1 in, 0 in)%
\TypesetCoffin{\CoffinC}

\end{document}

在这里,我在棺材之间添加了一个小间隙(它是负的,因为我所做的一切都与大物品有关。\CoffinC

“棺材”系统的工作原理是,在它创建的盒子上设置“把手”:我们可以用字母来称呼它们,例如 t表示“顶部”,并参考我们已经组合的棺材上的点。这使得构建复杂的盒子关系变得相对容易。

答案3

tcbraster是一个tcolorbox用于在另一个盒子内分发盒子的库。

利用一个栅格中包含另一个栅格很容易获得类似于所需分布的东西。

\documentclass{article}
\usepackage[most]{tcolorbox}
\begin{document}

% External raster
\begin{tcbraster}[%
    raster width=.6\linewidth,
    raster columns=2, 
    % Forces same height in all columns on same row
    raster equal height=rows,
    raster every box/.style={valign=center, halign=center}, 
    ]
% Inner raster: left column boxes
\begin{tcboxedraster}[%
    raster columns=1, 
    raster width=\linewidth, %otherwise inherits `.6\linewidth`
    ]{blankest} %<- no drawn box or white space around inner boxes
    \begin{tcolorbox}
        This is a text
    \end{tcolorbox}
    \begin{tcolorbox}[blankest, height=1cm]
        % This is a phantom box. It introduces a vertical gap
    \end{tcolorbox}
    \begin{tcolorbox}
        This is another text
    \end{tcolorbox}
\end{tcboxedraster}
% <--- Important: No white space or break line between elements
% Box for right hand column.
\begin{tcolorbox}
    This is a very long long text
\end{tcolorbox}
\end{tcbraster}

\end{document}

在此处输入图片描述

相关内容