如何取消嵌套 tcbitemize 环境中栅格样式选项的效果

如何取消嵌套 tcbitemize 环境中栅格样式选项的效果

tcbitemize在 中通过环境构建了一个栅格tcolorbox。我发现该选项raster column 1/.style对嵌套有影响,tcbitemize如下例所示。您可以看到嵌套栅格的第一列被涂成红色,这不是我想要的。如何通过栅格的较高层上的较低层来取消这种影响tcolorbox

\documentclass[12pt,a4paper]{article}
\usepackage{tcolorbox}
\tcbuselibrary{skins,breakable,raster}

    \begin{document}
    \begin{tcbitemize}[raster equal height=rows,raster columns=4,raster column 1/.style={colback=red}]
        \tcbitem 1\tcbitem 1\tcbitem 1\tcbitem 1
        \tcbitem 1
        \tcbitem \begin{tcbitemize}[raster columns=2]
                    \tcbitem 2\tcbitem 2
                \end{tcbitemize}
        \tcbitem 1\tcbitem 1    
    \end{tcbitemize}
    \end{document}

在此处输入图片描述

答案1

等样式raster columns 1具有粘性,并且对于嵌套框也有效,除非在较低层中再次明确定义。不幸的是,无论是reset还是raster reset选项都不会删除这些样式。

\colorlet{standardbackground}{yellow}
\tcbset{layerone/.style={raster every box/.style={colback={standardbackground}},raster equal height=rows,raster columns=4,raster column 1/.style={colback=red}}}
\tcbset{layertwo/.style={raster columns=2,raster column 1/.style={colback=standardbackground}}}

定义标准背景颜色(yellow这里仅用于演示)并首先清除所有为此背景的框,然后设置第一层和第一列的具体设置colback=red并重新定义设置以raster column 1切换回标准背景颜色。

\documentclass[12pt,a4paper]{article}
\usepackage[most]{tcolorbox}


\colorlet{standardbackground}{yellow}

\tcbset{layerone/.style={raster every box/.style={colback={standardbackground}},raster equal height=rows,raster columns=4,raster column 1/.style={colback=red}}}
\tcbset{layertwo/.style={raster columns=2,raster column 1/.style={colback=standardbackground}}}


\begin{document}
\begin{tcbitemize}[layerone]
  \tcbitem 1\tcbitem 1\tcbitem 1\tcbitem 1
  \tcbitem 1
  \tcbitem 
  \begin{tcbitemize}[layertwo]
    \tcbitem 2\tcbitem 2
  \end{tcbitemize}
  \tcbitem 1\tcbitem 1    
\end{tcbitemize}
\end{document}

在此处输入图片描述

相关内容