我想知道是否有办法放置如下颜色框:
-------- --------
| 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}