我不知道为什么,但是我无法获得等宽的列,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=2
和raster 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}