Tcolorbox:列权重

Tcolorbox:列权重

我想知道是否可以定义一种列权重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}

在此处输入图片描述

相关内容