Miscellaneous - Разные дополнительные возможности

В этом разделе рассматриваются различные дополнительные функции tcolorbox, которые не вошли в предыдущие категории.

4.24 Miscellaneous - Разные дополнительные возможности

В этом разделе рассматриваются различные дополнительные функции tcolorbox, которые не вошли в предыдущие категории.


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

1.1. Сброс настроек

Опция Синтаксис Описание
reset reset Сбрасывает все настройки tcolorbox к значениям по умолчанию

Пример:

\begin{tcolorbox}[reset, title=Блок со сброшенными настройками]
Этот блок игнорирует все предыдущие \tcbset{}
\end{tcolorbox}

1.2. Условные операторы

Опция Синтаксис Описание
IfBlankTF IfBlankTF={текст}{опции если пусто}{опции если не пусто} Проверяет на пустоту (пробелы считаются пустотой)
IfEmptyTF IfEmptyTF={текст}{опции если пусто}{опции если не пусто} Проверяет на полную пустоту
IfNoValueTF IfNoValueTF={аргумент}{опции если нет значения}{опции если есть} Для обработки необязательных аргументов
IfValueTF IfValueTF={аргумент}{опции если есть значение}{опции если нет} Обратная версия IfNoValueTF
IfBooleanTF IfBooleanTF={аргумент}{опции если true}{опции если false} Для булевых значений

Пример с IfValueTF:

\DeclareTColorBox{mybox}{o}{%
  IfValueTF={#1}{title=#1}{title=Без названия},
  colframe=blue
}
\begin{mybox}
Блок без названия
\end{mybox}
\begin{mybox}[Мой заголовок]
Блок с названием
\end{mybox}

1.3. Специальные режимы

Опция Синтаксис Описание
void void Полностью удаляет бокс (как комментарий)
nirvana nirvana Обрабатывает содержимое, но не отображает бокс

Пример:

Текст до
\begin{tcolorbox}[void]
Этот блок полностью исчезнет
\end{tcolorbox}
Текст после

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

2.1. Условное форматирование

\newtcolorbox{smartbox}[1][]{
  IfBlankTF={#1}{colback=red!10}{colback=green!10},
  title=Умный бокс
}

\begin{smartbox}[]
Будет красным (аргумент пуст)
\end{smartbox}

\begin{smartbox}[X]
Будет зелёным (аргумент не пуст)
\end{smartbox}

2.2. Обработка необязательных аргументов

\DeclareTColorBox{mybox}{o}{
  IfNoValueTF={#1}{title=Стандартный}{title=#1},
  colframe=black
}

\begin{mybox}
Стандартный заголовок
\end{mybox}

\begin{mybox}[Кастомный]
Специальный заголовок
\end{mybox}

2.3. Временное отключение боксов

Текст до
\begin{tcolorbox}[nirvana]
Этот блок обработается, но не будет виден
\begin{tcolorbox}
Вложенный блок (будет виден)
\end{tcolorbox}
\end{tcolorbox}
Текст после

3. Важные особенности

  1. reset:

    • Не сбрасывает capture, shield externalize и настройки raster
    • Автоматически применяется для вложенных боксов (начиная с v2.40)
  2. Условные операторы:

    • Основаны на функциях expl3 и xparse
    • Полезны для создания гибких шаблонов боксов
  3. void vs nirvana:

    • void полностью удаляет бокс (как если бы его закомментировали)
    • nirvana обрабатывает содержимое (счётчики и пр.), но не отображает
  4. Ограничения:

    • void нельзя использовать для вложенных боксов с одинаковыми именами
    • void не работает с \tcolorboxenvironment

4. Полный пример

\documentclass{article}
\usepackage{tcolorbox}
\usepackage{xcolor}

% Бокс с условным форматированием
\newtcolorbox{condbox}[1][]{
  IfBlankTF={#1}{colback=gray!20}{colback=#1!20},
  title=Условный бокс
}

\begin{document}

\section{Примеры разных возможностей}

\begin{condbox}[]
Стандартный серый фон (аргумент пуст)
\end{condbox}

\begin{condbox}[red]
Красный фон (аргумент указан)
\end{condbox}

% Пример с void
Текст до \begin{tcolorbox}[void]Невидимый блок\end{tcolorbox} текст после

% Пример с nirvana
Текст до \begin{tcolorbox}[nirvana]
Невидимый но обработанный блок
\begin{tcolorbox}[colback=yellow]
Вложенный видимый блок
\end{tcolorbox}
\end{tcolorbox} текст после

\end{document}

5. Вывод

  1. Для сброса настроек используйте reset
  2. Для условного форматирования применяйте:
    • IfBlankTF/IfEmptyTF - проверка на пустоту
    • IfNoValueTF/IfValueTF - работа с аргументами
    • IfBooleanTF - для булевых флагов
  3. Для скрытия блоков:
    • void - полное удаление
    • nirvana - скрытие с обработкой содержимого