tcolorbox:如何在 tcolorbox 栅格中强制内部分离?

tcolorbox:如何在 tcolorbox 栅格中强制内部分离?

我设定left=5pt, right=5pt, top=5pt, bottom=5pt内隔tcolorbox 栅格。

他尝试将箱子的高度设置在最高的箱子上 - 这是可以的,也是我们想要的。

他还尝试将光栅设置为覆盖整个文本宽度 - 这也行 - 但他用内部分离在内容为“X”的框/列中。
我如何强制在该框中设置left=5pt, right=5pt

在此处输入图片描述

% arara: pdflatex
% arara: pdflatex

\documentclass{article}
\usepackage[showframe=true, margin=2cm]{geometry}
\usepackage[most]{tcolorbox}

\usepackage{lipsum}
\begin{document}
\begin{tcbitemize}[%
raster equal height=rows, 
raster columns=3,
halign=left, valign=top, 
% This is the point =========================
left=5pt, right=5pt, top=5pt, bottom=5pt,
% ===================================
]
\tcbitem \lipsum[66]
\tcbitem[colframe=red, halign=center, valign=center] \Huge X
\tcbitem \lipsum[63]
\end{tcbitemize}
\end{document}

答案1

默认情况下,atcbraster会将其总宽度(linewidth默认情况下)均匀地划分在其列之间。这就是中央框比预期更宽的原因。

您可以强制特定框的宽度,raster force size=false并在特定框上设置一些add to width。但在这种情况下,您必须手动计算所有宽度以分配可用空间。

\documentclass{article}
\usepackage[showframe=true, margin=2cm]{geometry}
\usepackage[most]{tcolorbox}

\usepackage{lipsum}
\begin{document}
\begin{tcbitemize}[%
raster equal height=rows, 
raster columns=3,
halign=left, valign=top, 
% This is the point =========================
left=5pt, right=5pt, top=5pt, bottom=5pt,
% ===================================
raster force size=false
]
\tcbitem \lipsum[66]
\tcbitem[colframe=red, halign=center, valign=center] \Huge X
\tcbitem \lipsum[65]


\tcbitem \lipsum[66]
\tcbitem[colframe=red, halign=center, valign=center, add to width = -3cm] \Huge X
\tcbitem \lipsum[65]

\tcbitem[add to width=1.5cm] \lipsum[66]
\tcbitem[colframe=red, halign=center, valign=center, add to width = -3cm] \Huge X
\tcbitem[add to width=1.5cm] \lipsum[65]

\end{tcbitemize}
\end{document}

在此处输入图片描述

另一种解决方案是使用不同宽度raster multicolumn的列。在这种情况下,您定义默认的大量列(以下示例中为 9 个),但将其分组为三个可见框,其中第一个和第三个的宽度相当于四个初始框。

\documentclass{article}
\usepackage[showframe=true, margin=2cm]{geometry}
\usepackage[most]{tcolorbox}

\usepackage{lipsum}
\begin{document}
\begin{tcbitemize}[%
raster equal height=rows, 
raster columns=9,
halign=left, valign=top, 
% This is the point =========================
left=5pt, right=5pt, top=5pt, bottom=5pt,
% ===================================
%raster force size=false
]
\tcbitem[raster multicolumn=4] \lipsum[66]
\tcbitem[colframe=red, halign=center, valign=center] \Huge X
\tcbitem[raster multicolumn=4] \lipsum[65]


\tcbitem[raster multicolumn=4] \lipsum[66]
\tcbitem[colframe=red, halign=center, valign=center] \Huge X
\tcbitem[raster multicolumn=4] \lipsum[65]

\tcbitem[raster multicolumn=4] \lipsum[66]
\tcbitem[colframe=red, halign=center, valign=center] \Huge X
\tcbitem[raster multicolumn=4] \lipsum[65]

\end{tcbitemize}
\end{document}

在此处输入图片描述

在任何情况下,tcbraster您都不能期望盒子的宽度能够适应其内容(并尊重内边距),因为它们的大小是由光栅宽度和列数定义,而不是由其内容定义。

相关内容