Управление уровнями/слоями в пакете tcolorbox

Управление слоями в tcolorbox

1. Основные команды для управления слоями

Команда / Стиль Синтаксис Описание
every box \tcbset{every box/.style={...}} Стиль, применяемый ко всем tcolorbox (по умолчанию пуст).
every box on layer n \tcbset{every box on layer 1/.style={...}} Стиль для конкретного слоя (1-4 по умолчанию).
every box on higher layers \tcbset{every box on higher layers/.style={...}} Стиль для слоёв выше управляемых (по умолчанию reset,every box).
\tcbsetmanagedlayers \tcbsetmanagedlayers{<число>} Устанавливает максимальный номер управляемого слоя (только в преамбуле).

2. Примеры использования

Пример 1: Настройка стилей для всех слоёв

\usepackage{tcolorbox}
\tcbset{
    every box/.style={enhanced, colframe=blue}, % Базовый стиль
    every box on layer 2/.style={colback=yellow}, % Стиль для второго слоя
    every box on higher layers/.style={colframe=red} % Стиль для вложенных
}

\begin{tcolorbox}[title=Layer 1]
    Внешний блок.
    \begin{tcolorbox}[title=Layer 2]
        Вложенный блок (жёлтый фон).
        \begin{tcolorbox}[title=Layer 3]
            Ещё глубже (красная рамка).
        \end{tcolorbox}
    \end{tcolorbox}
\end{tcolorbox}

Пример 2: Сброс стилей (reset)

\tcbset{
    every box/.style={fonttitle=\bfseries},
    every box on layer 2/.style={reset, colback=green} % Сброс стилей перед применением
}

\begin{tcolorbox}[title=Layer 1]
    Заголовок жирный.
    \begin{tcolorbox}[title=Layer 2]
        Заголовок НЕ жирный (сброшен), фон зелёный.
    \end{tcolorbox}
\end{tcolorbox}

Пример 3: Увеличение числа управляемых слоёв

\usepackage{tcolorbox}
\tcbsetmanagedlayers{5} % В преамбуле
\tcbset{
    every box on layer 5/.style={colframe=purple}
}

\begin{tcolorbox}[title=Layer 1]
    \begin{tcolorbox}[title=Layer 2]
        \begin{tcolorbox}[title=Layer 3]
            \begin{tcolorbox}[title=Layer 4]
                \begin{tcolorbox}[title=Layer 5]
                    Фиолетовая рамка (5-й слой).
                \end{tcolorbox}
            \end{tcolorbox}
        \end{tcolorbox}
    \end{tcolorbox}
\end{tcolorbox}

3. Важные примечания

  • Команда \tcbsetmanagedlayers работает только в преамбуле.
  • По умолчанию для вложенных блоков применяется reset, что сбрасывает стили родительского блока.
  • Для глобального применения стиля используйте \tcbsetforeverylayer{...}.