我想知道是否可以定义一种列权重tcolorbox
,例如“第一列必须使用 20%,第二列必须使用 80%”。
如果可能的话,我希望能够\tcbtextwidth
在框内使用,就像在封闭的 MWE 中一样,如果可能的话,我希望避免这样做multicolumns=2
,因为如果我想要一个精确的百分比,我需要创建许多非常小的列,而且它似乎不太合适......
谢谢你!
平均能量损失
\documentclass{article}
\usepackage[raster,most]{tcolorbox}
\begin{document}
\begin{minipage}{\linewidth}%
\begin{tcbitemize}[raster columns=2,
raster equal height]
\tcbitem[] % Should take 20%
\includegraphics[width=\tcbtextwidth]{example-image-a}
\tcbitem[] % Should take 80%
\includegraphics[width=\tcbtextwidth]{example-image-b}
\end{tcbitemize}%
\end{minipage}
\end{document}
-- 编辑 -- 我找到了一个伪解决方案,raster force size=false
在中使用tcbitemize
,并且在tcbitem
我使用width=\linewidth/2
,但它没有考虑到列之间的空间,而且我总是有一个不好的对齐...而且我不确定如何将其转换为文本高度以对行执行同样的事情。
答案1
如果所需比例允许,您可以使用raster multicolumn
。
在这种情况下,左列使用 20%,右列使用 80%。您可以定义一个有 5 列的栅格,并在左侧填充一列,raster multicolumn
在右侧填充一列,该列占用 4 列。
\documentclass{article}
\usepackage[raster,most]{tcolorbox}
\begin{document}
%\begin{minipage}{\linewidth}%
\begin{tcbitemize}[raster columns=5,
raster equal height]
\tcbitem[] % Should take 20%
\includegraphics[width=\tcbtextwidth]{example-image-a}
\tcbitem[raster multicolumn=4] % Should take 80%
\includegraphics[width=\tcbtextwidth]{example-image-b}
\end{tcbitemize}%
%\end{minipage}
\end{document}
答案2
这里涉及的各种长度都存储在\kvtcb@raster...
宏中,必须先对其进行评估,然后在第 1 列和第 2 列的特殊样式设置中重新使用raster column 1/.style=...
宏\getremainingboxwidth{0.2}
会计算相应列的剩余宽度预留20%
,列跳过算作一次跳过。
\documentclass{article}
\usepackage[most]{tcolorbox}
\usepackage{showframe}
\begin{document}
\makeatletter
\newcommand{\getremainingboxwidth}[1]{%
#1\dimexpr\kvtcb@raster@width-\kvtcb@raster@skip@left-\kvtcb@raster@skip@right-\kvtcb@raster@xskip
}
%\begin{minipage}{\linewidth}%
\begin{tcbitemize}[
raster columns=2,
raster force size=false,
raster column skip=20pt,% Just for testing
raster equal height,
raster column 2/.style={width=\getremainingboxwidth{0.8}},
raster column 1/.style={width=\getremainingboxwidth{0.2}}]
\tcbitem[] % Should take 20%
\includegraphics[width=\tcbtextwidth]{example-image-a}
\tcbitem[] % Should take 80%
\includegraphics[width=\tcbtextwidth]{example-image-b}
\end{tcbitemize}%
%\end{minipage}
\end{document}