tcolorbox:等高和最小高度的栅格

tcolorbox:等高和最小高度的栅格

我想制作一个 tcolorbox 栅格,其中一行中的每个框都具有相同的高度(简单)。但我还想使用键height from来设置框的最小高度。但是一旦我这样做,我就会失去相等高度功能。有没有办法将两者结合起来?

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[many]{tcolorbox}
\begin{document}

\tcbset{enhanced,left=1cm}
\tcbset{marktext/.style={overlay={\node[rotate=90,text=black,anchor=north east] at (frame.north west){#1};}}}
\begin{tcbraster}[raster columns=3,raster equal height=rows]
\begin{tcolorbox}[marktext=shorter]
blbllb
\end{tcolorbox}
\begin{tcolorbox}[%height from=3cm to 30cm,
                  marktext=somelonger text]
blbllb\\blblb\\blblb\\blblb
\end{tcolorbox}
\begin{tcolorbox}[marktext=short]
blbllb
\end{tcolorbox}
\begin{tcolorbox}[marktext=x]
blbllb
\end{tcolorbox}

\end{tcbraster}
\end{document}

结果(行内高度相等但最小高度太小):

在此处输入图片描述

使用时的结果height from(中间框足够大,但丢失了相同的高度):

在此处输入图片描述

答案1

使用minimum for equal height group,可以给等高组赋予较低的最小高度。在栅格中,当前等高组的名称是自动生成的,也可以通过 设置raster equal height group

在我提出的解决方案中,我使用\tcb@ehgid,即当前等高组的内部名称。minimum for equal height group使用此名称和侧面文本的宽度加上一些额外空间来调用 :

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[many]{tcolorbox}
\begin{document}

\tcbset{enhanced,left=1cm}

\makeatletter
\tcbset{marktext/.style={%
  overlay={\node[rotate=90,text=black,anchor=north east] at (frame.north west){#1};},
  code={\setbox\z@=\color@hbox#1\color@endbox\tcbdimto\myheight{\wd\z@+3mm}},
  minimum for equal height group=\tcb@ehgid:\myheight,
  }}

\makeatother

\begin{tcbraster}[raster columns=3,raster equal height=rows]
\begin{tcolorbox}[marktext=shorter]
blbllb
\end{tcolorbox}
\makeatletter
\begin{tcolorbox}[marktext=somelonger text]
blbllb\\blblb\\blblb\\blblb
\end{tcolorbox}
\makeatother
\begin{tcolorbox}[marktext=short]
blbllb
\end{tcolorbox}
\begin{tcolorbox}[marktext=x]
blbllb
\end{tcolorbox}

\end{tcbraster}
\end{document}

得出:

在此处输入图片描述

请注意,如果没有设置等高组,则此调整marktext将引发错误。

答案2

可能不是你想要的,但是为什么不直接使用某种描述的支柱呢?

\documentclass{article}
\usepackage[many]{tcolorbox}
\begin{document}

\tcbset{enhanced,left=1cm}
\tcbset{marktext/.style={overlay={\node[rotate=90,text=black,anchor=north east] at (frame.north west){#1};}}}
\begin{tcbraster}[raster columns=3,raster equal height=rows]
\begin{tcolorbox}[marktext=shorter]
blbllb
\end{tcolorbox}
\begin{tcolorbox}[%height from=3cm to 30cm,
                  marktext=somelonger text]
blbllb\\blblb\\blblb\\blblb\\
\rule{0pt}{3cm}
\end{tcolorbox}
\begin{tcolorbox}[marktext=short]
blbllb
\end{tcolorbox}
\begin{tcolorbox}[marktext=x]
blbllb
\end{tcolorbox}

\end{tcbraster}
\end{document}

在此处输入图片描述

相关内容