Это многостраничный печатный вид этого раздела. Нажмите что бы печатать.

Вернуться к обычному просмотру страницы.

Библиотека цветных блоков и рамок tcolorbox для Latex

Этот пакет предоставляет окружение для цветных и обрамленных текстовых блоков с заголовком.

Официальное описание пакета по адресу: https://ctan.org/pkg/tcolorbox

tcolorbox – Цветные рамки для примеров и теорем в LaTeX и т. д.

Этот пакет предоставляет среду для цветных текстовых рамок с заголовком. По желанию, такая рамка может быть разделена на верхнюю и нижнюю части; таким образом, пакет может быть использован для настройки примеров LaTeX, где одна часть рамки отображает исходный код, а другая часть показывает результат. Другой распространенный случай использования – настройка теорем. Пакет поддерживает сохранение и повторное использование исходного кода и частей текста.

Пакет зависит от пакетов pgf, verbatim, environ и etoolbox.

Пример обложки документации
\documentclass[a4paper]{article}
\usepackage{tikz}
\usepackage[all]{tcolorbox}
\usepackage{incgraph}
\usepackage{lipsum}
\usepackage{accsupp} 
\begin{document}
\begin{inctext}
  \begin{tikzpicture}
    \definecolorseries{boxcol}{rgb}{last}{blue}{red}
    \resetcolorseries[28]{boxcol}
    \coordinate (A) at (0,0); \coordinate (B) at (21,29.7);
    \path[use as bounding box] (A) rectangle coordinate (C) (B);
    \node[transform shape,xslant=0.7,rotate=-10,xshift=0cm] at (C) {%
      \BeginAccSupp{method=plain,ActualText={}}%
      \begin{tcbraster}[raster columns=4,title=tcolorbox,
        fonttitle=\small\bfseries,raster width=50cm]
        \foreach \b in {1,...,28} {\begin{tcolorbox}[enhanced,
            watermark text=\thetcbrasternum,
            colframe=boxcol!30!white,
            colback=boxcol!25!white!30!white,
            colbacktitle=boxcol!!+!50!black!30!white,
            colupper=black!30!white]\lipsum[2]\end{tcolorbox}}
      \end{tcbraster}%
      \EndAccSupp{}%
    };
    \node at (C) {%
      \begin{tcbitemize}[title=tcolorbox ,fonttitle=\small\bfseries,
        enhanced jigsaw,opacityback=0.5,opacitybacktitle=0.75,
        halign=center,valign=center,arc=5mm,
        raster width=16cm,raster column skip=8mm,raster halign=center,
        raster force size=false,
        raster row 1/.style={height=6cm},
        raster row 2/.style={width=6cm,height=4cm},
        raster column 1/.style={flushright title,
          frame style={left color=yellow!50!black,right color=green!50!black},
          title style={left color=yellow!50!blue,right color=blue!50!green!50!black},
          interior style={left color=yellow!70,right color=green!70},
          underlay={\draw[line width=6mm,line cap=round,black!60]
            ([shift={(0.4,-0.15)}]frame.north east)
            --([shift={(0.4,0.15)}]frame.south east); }},
        raster column 2/.style={
          frame style={left color=green!50!black,right color=yellow!50!black},
          title style={left color=blue!50!green!50!black,right color=yellow!50!blue},
          interior style={left color=green!70,right color=yellow!70}}]
        \tcbitem[fontupper=\Huge\bfseries,sharp corners=east,
        underlay={\draw[line width=6mm,line cap=round,black!60]
          ([shift={(0.4,0.30)}]frame.north east)-- coordinate(A) +(0,0.2);
          \draw[line width=1mm,line cap=round,black!60](A) -- +(30:1.5cm);
          \draw[line width=1mm,line cap=round,black!60](A) -- +(150:1.5cm);}]
        tcolorbox
        \tcbitem[fontupper=\large\bfseries,sharp corners=west]
        Manual for
        \tcbitem[sharp corners=northeast]
        \tcbitem[sharp corners=northwest] Thomas F.~Sturm
      \end{tcbitemize}%
    };
  \end{tikzpicture}
\end{inctext}
\end{document}

Установка пакета

\usepackage{tcolorbox}

Пакет принимает ключи опций в синтаксисе “ключ-значение”. В качестве альтернативы вы можете использовать эти ключи позже в преамбуле с помощью команды \tcbuselibrary.

\tcbuselibrary{⟨key list⟩}

Вот перевод на русский язык с примерами, обернутыми в latex:


Следующие ключи используются внутри \tcbuselibrary соответственно \usepackage без ключа:

  • tree path /tcb/library/.

  • /tcb/library/skins (LIB skins)
    Загружает пакет tikzfill.image → CTAN и предоставляет дополнительные стили (skins) для внешнего вида цветных коробок;

    \tcbuselibrary{skins}
    
  • /tcb/library/vignette (LIB vignette)
    Предоставляет код для более орнаментального оформления;

    \tcbuselibrary{vignette}
    
  • /tcb/library/raster (LIB raster)
    Предоставляет дополнительные макросы и опции для наборки нескольких коробок, расположенных в виде растровой сетки;

    \tcbuselibrary{raster}
    
  • /tcb/library/listings (LIB listings)
    Загружает пакет listings → CTAN и предоставляет дополнительные макросы для наборки листингов

    \tcbuselibrary{listings}
    
  • /tcb/library/listingsutf8 (LIB listingsutf8)
    Загружает пакеты listings → CTAN и listingsutf8 для поддержки UTF-8.

    \tcbuselibrary{listingsutf8}
    
  • /tcb/library/minted (LIB minted)
    Загружает пакет minted → CTAN для наборки листингов с помощью инструмента Pygments;

    \tcbuselibrary{minted}
    
  • /tcb/library/theorems (LIB theorems)
    Предоставляет дополнительные макросы для наборки теорем

    \tcbuselibrary{theorems}
    
  • /tcb/library/breakable (LIB breakable)
    Предоставляет поддержку автоматического разбиения коробок с одной страницы на другую;

    \tcbuselibrary{breakable}
    
  • /tcb/library/magazine (LIB magazine)
    Предоставляет поддержку для хранения частей разбитых коробок для последующего использования или в измененном порядке;

    \tcbuselibrary{magazine}
    
  • /tcb/library/poster (LIB poster)
    Предоставляет поддержку для создания постеров;

    \tcbuselibrary{poster}
    
  • /tcb/library/fitting (LIB fitting)
    Предоставляет поддержку адаптации размера шрифта содержимого коробки к размерам коробки;

    \tcbuselibrary{fitting}
    
  • /tcb/library/hooks (LIB hooks)
    Расширяет несколько опций до “hookable” ключей;

    \tcbuselibrary{hooks}
    
  • /tcb/library/xparse (LIB xparse)
    Загружает пакет xparse → CTAN и считается устаревшей библиотекой, сохраненной для совместимости;

    \tcbuselibrary{xparse}
    
  • /tcb/library/external (LIB external)
    Предоставляет поддержку экстернализации для фрагментов документов, которые могут быть самостоятельными;

    \tcbuselibrary{external}
    
  • /tcb/library/documentation (LIB documentation)
    Предоставляет дополнительные макросы для наборки документации LATEX

Основные параметры рамок tcolorbox

Создание рамок

Команды tcolorbox и \tcbox

\begin{tcolorbox}
This is a \textbf{tcolorbox}.
\end{tcolorbox}
\begin{tcolorbox}[colback=red!5!white,colframe=red!75!black,title=My nice heading]
This is another \textbf{tcolorbox}.
\tcblower %разделитель бокса
Here, you see the lower part of the box.
\end{tcolorbox}

\tcblower

Используется внутри tcolorbox для разделения верхней части коробки от необязательной нижней части коробки. Верхняя и нижняя части рассматриваются как отдельные функциональные единицы. Если вы хотите просто провести линию, используйте \tcbline.

Пример использования:

\begin{tcolorbox}
    Верхняя часть коробки.
    \tcblower
    Нижняя часть коробки.
\end{tcolorbox}

\tcbset{⟨options⟩}

Устанавливает параметры для всех последующих tcolorbox внутри текущей группы TEX. По умолчанию это не применяется к вложенным коробкам.

Например, цвета коробок могут быть определены для всего документа следующим образом:

\tcbset{colback=red!5!white, colframe=red!75!black}

После этого все последующие tcolorbox будут использовать указанные цвета фона и рамки.

\tcbsetforeverylayer{⟨options⟩}

Устанавливает параметры для всех последующих tcolorbox внутри текущей группы TEX. В отличие от \tcbset, это также применяется к вложенным коробкам. Технически, параметры ⟨options⟩ добавляются к значениям по умолчанию для каждой tcolorbox, которые применяются с помощью /tcb/reset

Не следует использовать этот макрос, если вы не уверены, что хотите применять ⟨options⟩ также для коробок в коробках (в коробках в коробках и т.д.).

Пример использования:

\tcbset{colback=green!10!white}
\tcbsetforeverylayer{colframe=red!75!black}

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

\tcbox[⟨options⟩]{⟨box content⟩}

Создает цветную коробку, которая подгоняется по ширине к заданному содержимому ⟨box content⟩. В принципе, большинство ⟨options⟩ для tcolorbox могут быть использованы для \tcbox с некоторыми ограничениями. \tcbox не может иметь нижнюю часть и не может быть разбита.

Пример использования:

\tcbox[colback=blue!10!white, colframe=blue!75!black]{Это содержимое цветной коробки.}

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

\tcboxverb[⟨options⟩]{⟨verbatim box content⟩}

Создает цветную коробку на основе \tcbox, которая подгоняется по ширине к заданному содержимому ⟨verbatim box content⟩. Основная \tcbox стилизована с помощью /tcb/verbatim плюс заданные ⟨options⟩. Разница с \tcbox заключается в том, что ⟨verbatim box content⟩ интерпретируется как текст без форматирования. Поэтому \tcboxverb действует аналогично \verb.

Пример использования:

\tcboxverb[colback=yellow!10!white, colframe=yellow!75!black]{\texttt{Это содержимое в verbatim-формате.}}

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

Создание окружений и команд tcolorbox

\newtcolorbox[⟨init options⟩]{⟨name⟩}[⟨number⟩][⟨default⟩]{⟨options⟩}

Создает новое окружение ⟨name⟩ на основе tcolorbox. В принципе, \newtcolorbox работает как \newenvironment. Это означает, что новое окружение ⟨name⟩ может принимать ⟨number⟩ аргументов, где ⟨default⟩ — это значение по умолчанию для необязательного первого аргумента. Параметры ⟨options⟩ передаются основной tcolorbox. Обратите внимание, что /tcb/savedelimiter автоматически устанавливается на заданное ⟨name⟩. Параметры ⟨init options⟩ позволяют настроить автоматическую нумерацию.

Пример использования:

\newtcolorbox[auto numbered]{mybox}[2][default value]{colback=blue!5!white, colframe=blue!75!black, title=Заголовок}

В этом примере создается новое окружение mybox, которое может принимать два аргумента, где первый аргумент имеет значение по умолчанию “default value”. Параметры для tcolorbox задают цвет фона, цвет рамки и заголовок.

\newtcolorbox{mybox}{colback=red!5!white,
colframe=red!75!black}
\begin{mybox}
This is my own box.
\end{mybox}

\newtcolorbox{mybox}[1]{colback=red!5!white,
colframe=red!75!black,fonttitle=\bfseries,
title={#1}}
\begin{mybox}{Hello there}
This is my own box with a mandatory title.
\end{mybox}

\newtcolorbox{mybox}[2][]{colback=red!5!white,
colframe=red!75!black,fonttitle=\bfseries,
colbacktitle=red!85!black,enhanced,
attach boxed title to top center={yshift=-2mm},
title={#2},#1}
\begin{mybox}[colback=yellow]{Hello there}
This is my own box with a mandatory title
and options.
\end{mybox}

\newtcolorbox[auto counter,number within=section]{pabox}[2][]{%
colback=red!5!white,colframe=red!75!black,fonttitle=\bfseries,
title=Examp.~\thetcbcounter: #2,#1}

\begin{pabox}[colback=yellow]{Hello there}
This is my own box with a mandatory
numbered title and options.
\end{pabox}

\renewtcolorbox[⟨init options⟩]{⟨name⟩}[⟨number⟩][⟨default⟩]{⟨options⟩}

Работает аналогично \newtcolorbox, но основан на \renewenvironment вместо \newenvironment. Существующее окружение переопределяется.

Пример использования:

\renewtcolorbox[auto numbered]{mybox}[2][default value]{colback=green!5!white, colframe=green!75!black, title=Обновленный заголовок}

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

\NewTColorBox[⟨init options⟩]{⟨name⟩}{⟨specification⟩}{⟨options⟩}

Создает новое окружение ⟨name⟩ на основе tcolorbox. В принципе, \NewTColorBox работает как \NewDocumentEnvironment. Это означает, что новое окружение ⟨name⟩ создается с заданным аргументом LATEX3 ⟨specification⟩. Если окружение с именем ⟨name⟩ уже было определено, будет выдана ошибка. Параметры ⟨options⟩ передаются основной tcolorbox. Обратите внимание, что /tcb/savedelimiter автоматически устанавливается на заданное ⟨name⟩. Параметры ⟨init options⟩ позволяют настроить автоматическую нумерацию.

Пример использования:

% counter из предыдущего примера pabox продолжается в этом стиле
\NewTColorBox[use counter from=pabox]{mybox}{ O{red} m d"" !O{} }
{enhanced,colframe=#1!75!black,colback=#1!5!white,
fonttitle=\bfseries,title={\thetcbcounter~#2},
IfValueT={#3}{watermark text={#3}},#4}

\begin{mybox}{My title}
This is a tcolorbox.
\end{mybox}

\begin{mybox}[blue]{My title}
This is a tcolorbox.
\end{mybox}

\begin{mybox}[green]{My title}"My Watermark"
This is a tcolorbox.
\end{mybox}

\begin{mybox}[yellow]{My title}[colbacktitle=yellow!50!white,coltitle=black]
This is a tcolorbox.
\end{mybox}

\begin{mybox}[purple]{My title}"All together"[coltitle=yellow]
This is a tcolorbox.
\end{mybox}

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

\RenewTColorBox[⟨init options⟩]{⟨name⟩}{⟨specification⟩}{⟨options⟩}

Работает аналогично \NewTColorBox , но основан на \RenewDocumentEnvironment вместо \NewDocumentEnvironment. Существующее окружение переопределяется.

Пример использования:

\RenewTColorBox[auto numbered]{mybox}{m}{colback=red!10!white, colframe=red!75!black, title=Обновленный заголовок}

В этом примере существующее окружение mybox переопределяется с новыми параметрами.

\ProvideTColorBox[⟨init options⟩]{⟨name⟩}{⟨specification⟩}{⟨options⟩}

Работает аналогично \NewTColorBox, но основан на \ProvideDocumentEnvironment вместо \NewDocumentEnvironment. Окружение ⟨name⟩ создается только в том случае, если оно еще не определено.

Пример использования:

\ProvideTColorBox[auto numbered]{mybox}{m}{colback=green!10!white, colframe=green!75!black, title=Предоставленный заголовок}

В этом примере окружение mybox будет создано только если оно еще не существует.

\DeclareTColorBox[⟨init options⟩]{⟨name⟩}{⟨specification⟩}{⟨options⟩}

Работает аналогично \NewTColorBox, но основан на \DeclareDocumentEnvironment вместо \NewDocumentEnvironment. Новое окружение всегда создается, независимо от того, существует ли уже окружение с тем же именем.

Пример использования:

\DeclareTColorBox[auto numbered]{mybox}{m}{colback=blue!10!white, colframe=blue!75!black, title=Объявленный заголовок}

В этом примере окружение mybox будет создано, даже если оно уже существует, что может привести к ошибке.

\NewTotalTColorBox[⟨init options⟩]{\⟨name⟩}{⟨specification⟩}{⟨options⟩}{⟨content⟩}

Создает новую команду \⟨name⟩ на основе tcolorbox. В отличие от \NewTColorBox, также указывается ⟨content⟩ для tcolorbox. В принципе, \NewTotalTColorBox работает как \NewDocumentCommand. Это означает, что новая команда \⟨name⟩ создается с заданным аргументом LATEX3 ⟨specification⟩. Если \⟨name⟩ уже было определено, будет выдана ошибка. Параметры ⟨options⟩ передаются основной tcolorbox, которая заполняется указанным ⟨content⟩. Обратите внимание, что /tcb/savedelimiter автоматически устанавливается на заданное \⟨name⟩. Также обратите внимание, что /tcb/saveto, /tcb/savelowerto и /tcb/redirectlowerto не могут использоваться с \NewTotalTColorBox и аналогичными командами. Параметры ⟨init options⟩ позволяют настроить автоматическую нумерацию.

Пример использования:

\NewTotalTColorBox{\diabox}{ O{} v m }
{ bicolor,nobeforeafter,equal height group=diabox,width=5.7cm,
fonttitle=\bfseries\ttfamily,adjusted title={#2},center title,
colframe=blue!20!black,leftupper=0mm,rightupper=0mm,colback=black!75!white,#1}
{ \tikz\path[fill zoom image={#2}] (0,0) rectangle (\linewidth,4cm);%
\tcblower#3}

\diabox{blueshade.png}{Created with |GIMP|.\\\url{http://www.gimp.org}}
\diabox{goldshade.png}{Created with |GIMP|.\\\url{http://www.gimp.org}}

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

\RenewTotalTColorBox[⟨init options⟩]{\⟨name⟩}{⟨specification⟩}{⟨options⟩}{⟨content⟩}

Работает аналогично \NewTotalTColorBox, но основан на \RenewDocumentCommand вместо \NewDocumentCommand. Существующая команда переопределяется.

Пример использования:

\RenewTotalTColorBox[auto numbered]{mytotalbox}{m}{colback=purple!10!white, colframe=purple!75!black}{Обновленное содержимое команды.}

В этом примере существующая команда mytotalbox переопределяется с новыми параметрами и содержимым.

\ProvideTotalTColorBox[⟨init options⟩]{\⟨name⟩}{⟨specification⟩}{⟨options⟩}{⟨content⟩}

Работает аналогично \NewTotalTColorBox, но основан на \ProvideDocumentCommand вместо \NewDocumentCommand. Команда \⟨name⟩ создается только в том случае, если она еще не определена.

Пример использования:

\ProvideTotalTColorBox[auto numbered]{mytotalbox}{m}{colback=teal!10!white, colframe=teal!75!black}{Предоставленное содержимое команды.}

В этом примере команда mytotalbox будет создана только если она еще не существует.

\DeclareTotalTColorBox[⟨init options⟩]{\⟨name⟩}{⟨specification⟩}{⟨options⟩}{⟨content⟩}

Работает аналогично \NewTotalTColorBox, но основан на \DeclareDocumentCommand вместо \NewDocumentCommand. Новая команда всегда создается, независимо от того, существует ли уже команда с тем же именем.

Пример использования:

\DeclareTotalTColorBox[auto numbered]{mytotalbox}{m}{colback=cyan!10!white, colframe=cyan!75!black}{Объявленное содержимое команды.}

В этом примере команда mytotalbox будет создана, даже если она уже существует, что может привести к ошибке.

Создание команд на основе \tcbox

\newtcbox[⟨init options⟩]{\⟨name⟩}[⟨number⟩][⟨default⟩]{⟨options⟩}

Создает новый макрос \⟨name⟩ на основе \tcbox. В принципе, \newtcbox работает как \newcommand. Новый макрос \⟨name⟩ может принимать ⟨number⟩+1 аргументов (до 10), где ⟨default⟩ — это значение по умолчанию для необязательного первого аргумента. В дополнение к аргументам ⟨number⟩ есть автоматический последний (обязательный) аргумент \⟨name⟩, который принимает содержимое коробки. Параметры ⟨options⟩ передаются основной tcbox. Параметры ⟨init options⟩ позволяют настроить автоматическую нумерацию.

Пример использования:

\newtcbox{\mybox}[1][red]{on line,
arc=0pt,outer arc=0pt,colback=#1!10!white,colframe=#1!50!black,
boxsep=0pt,left=1pt,right=1pt,top=2pt,bottom=2pt,
boxrule=0pt,bottomrule=1pt,toprule=1pt}

\newtcbox{\xmybox}[1][red]{on line,
arc=7pt,colback=#1!10!white,colframe=#1!50!black,
before upper={\rule[-3pt]{0pt}{10pt}},boxrule=1pt,
boxsep=0pt,left=6pt,right=6pt,top=2pt,bottom=2pt}

The \mybox[green]{quick} brown \mybox{fox} \mybox[blue]{jumps} over the \mybox[green]{lazy} \mybox{dog}.\par
The \xmybox[green]{quick} brown \xmybox{fox} \xmybox[blue]{jumps} over the \xmybox[green]{lazy} \xmybox{dog}.

В этом примере создается новый макрос mytcbox, который может принимать два аргумента, где первый аргумент имеет значение по умолчанию “default value”. Параметры для tcbox задают цвет фона и цвет рамки.

\renewtcbox[⟨init options⟩]{\⟨name⟩}[⟨number⟩][⟨default⟩]{⟨options⟩}

Работает аналогично \newtcbox, но основан на \renewcommand вместо \newcommand. Существующий макрос переопределяется.

Пример использования:

\renewtcbox[auto numbered]{mytcbox}[2][default value]{colback=blue!10!white, colframe=blue!75!black}

В этом примере существующий макрос mytcbox переопределяется с новыми параметрами и значением по умолчанию для первого аргумента.

\NewTCBox[⟨init options⟩]{\⟨name⟩}{⟨specification⟩}{⟨options⟩}

Создает новую команду \⟨name⟩ на основе \tcbox. В принципе, \NewTCBox работает как \NewDocumentCommand. Это означает, что новая команда \⟨name⟩ создается с заданным аргументом LATEX3 ⟨specification⟩. В дополнение к аргументу ⟨specification⟩ есть автоматический последний (обязательный) аргумент \⟨name⟩, который принимает содержимое коробки. Таким образом, \⟨name⟩ может иметь до 10 аргументов в сумме. Если \⟨name⟩ уже было определено, будет выдана ошибка. Параметры ⟨options⟩ передаются основной \tcbox. Обратите внимание, что /tcb/savedelimiter автоматически устанавливается на заданное \⟨name⟩. Параметры ⟨init options⟩ позволяют настроить автоматическую нумерацию.

Пример использования:

\NewTCBox[auto numbered]{mynewtcbox}{m}{colback=green!10!white, colframe=green!75!black}

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

\RenewTCBox[⟨init options⟩]{\⟨name⟩}{⟨specification⟩}{⟨options⟩}

Работает аналогично \NewTCBox, но основан на \RenewDocumentCommand вместо \NewDocumentCommand. Существующая команда переопределяется.

Пример использования:

\RenewTCBox[auto numbered]{mytcbox}{m}{colback=red!10!white, colframe=red!75!black}

В этом примере существующая команда mytcbox переопределяется с новыми параметрами.

\ProvideTCBox[⟨init options⟩]{\⟨name⟩}{⟨specification⟩}{⟨options⟩}

Работает аналогично \NewTCBox, но основан на \ProvideDocumentCommand вместо \NewDocumentCommand. Команда \⟨name⟩ создается только в том случае, если она еще не определена.

Пример использования:

\ProvideTCBox[auto numbered]{mytcbox}{m}{colback=green!10!white, colframe=green!75!black}

В этом примере команда mytcbox будет создана только если она еще не существует.

\DeclareTCBox[⟨init options⟩]{\⟨name⟩}{⟨specification⟩}{⟨options⟩}

Работает аналогично \NewTCBox, но основан на \DeclareDocumentCommand вместо \NewDocumentCommand. Новая команда всегда создается, независимо от того, существует ли уже команда с тем же именем.

Пример использования:

\DeclareTCBox[auto numbered]{mytcbox}{m}{colback=blue!10!white, colframe=blue!75!black}

В этом примере команда mytcbox будет создана, даже если она уже существует, что может привести к ошибке.

\NewTotalTCBox[⟨init options⟩]{\⟨name⟩}{⟨specification⟩}{⟨options⟩}{⟨content⟩}

Создает новую команду \⟨name⟩ на основе \tcbox. В отличие от \NewTCBox, также указывается ⟨content⟩ для tcbox. В принципе, \NewTotalTCBox работает как \NewDocumentCommand. Это означает, что новая команда \⟨name⟩ создается с заданным аргументом LATEX3 ⟨specification⟩. Если \⟨name⟩ уже было определено, будет выдана ошибка. Параметры ⟨options⟩ передаются основной \tcbox, которая заполняется указанным ⟨content⟩. Обратите внимание, что /tcb/savedelimiter автоматически устанавливается на заданное \⟨name⟩. Параметры ⟨init options⟩ позволяют настроить автоматическую нумерацию.

Пример использования:

\NewTotalTCBox[auto numbered]{mytotaltcbox}{m}{colback=yellow!10!white, colframe=yellow!75!black}{Это содержимое новой команды.}

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

\NewTotalTCBox{\myverb}{ O{red} v !O{} }
{ fontupper=\ttfamily,nobeforeafter,tcbox raise base,arc=0pt,outer arc=0pt,
top=0pt,bottom=0pt,left=0mm,right=0mm,
leftrule=0pt,rightrule=0pt,toprule=0.3mm,bottomrule=0.3mm,boxsep=0.5mm,
colback=#1!10!white,colframe=#1!50!black,#3}{#2}

To set a word \textbf{bold} in \myverb{\LaTeX}, use
\myverb[green]{\textbf{bold}}. Alternatively, write
\myverb[yellow]{{\bfseries bold}}.
In \myverb[blue]{\LaTeX}[enhanced,fuzzy halo], other font settings are
done in the same way, e.\,g. \myverb{\textit}, \myverb{\itshape}\\
or \myverb[brown]{\texttt}, \myverb[brown]{\ttfamily}.

% \usepackage{listings} or \tcbuselibrary{listings}
\NewTotalTCBox{\commandbox}{ s v }
{verbatim,colupper=white,colback=black!75!white,colframe=black}
{\IfBooleanT{#1}{\textcolor{red}{\ttfamily\bfseries > }}%
\lstinline[language=command.com,keywordstyle=\color{blue!35!white}\bfseries]^#2^}

\commandbox*{cd "My Documents"} changes to directory \commandbox{My Documents}.

\commandbox*{dir /A} lists the directory content.

\commandbox*{copy example.txt d:\target} copies \commandbox{example.txt} to 
   \commandbox{d:\target}.

\RenewTotalTCBox[⟨init options⟩]{\⟨name⟩}{⟨specification⟩}{⟨options⟩}{⟨content⟩}

Работает аналогично \NewTotalTCBox, но основан на \RenewDocumentCommand вместо \NewDocumentCommand. Существующая команда переопределяется.

Пример использования:

\RenewTotalTCBox[auto numbered]{mytotaltcbox}{m}{colback=purple!10!white, colframe=purple!75!black}{Обновленное содержимое команды.}

В этом примере существующая команда mytotaltcbox переопределяется с новыми параметрами и содержимым.


\ProvideTotalTCBox[⟨init options⟩]{\⟨name⟩}{⟨specification⟩}{⟨options⟩}{⟨content⟩}
Работает аналогично \NewTotalTCBox, но основан на \ProvideDocumentCommand вместо \NewDocumentCommand. Команда \⟨name⟩ создается только в том случае, если она еще не определена.

Пример использования:

\ProvideTotalTCBox[auto numbered]{mytotaltcbox}{m}{colback=teal!10!white, colframe=teal!75!black}{Предоставленное содержимое команды.}

В этом примере команда mytotaltcbox будет создана только если она еще не существует.


\DeclareTotalTCBox[⟨init options⟩]{\⟨name⟩}{⟨specification⟩}{⟨options⟩}{⟨content⟩}
Работает аналогично \NewTotalTCBox, но основан на \DeclareDocumentCommand вместо \NewDocumentCommand. Новая команда всегда создается, независимо от того, существует ли уже команда с тем же именем.

Пример использования:

\DeclareTotalTCBox[auto numbered]{mytotaltcbox}{m}{colback=cyan!10!white, colframe=cyan!75!black}{Объявленное содержимое команды.}

В этом примере команда mytotaltcbox будет создана, даже если она уже существует, что может привести к ошибке.

Переопределение других сред (обертывание с помощью tcolorbox)

\tcolorboxenvironment{⟨name⟩}{⟨options⟩}

Существующая среда ⟨name⟩ переопределяется, чтобы быть обернутой внутри tcolorbox с заданными ⟨options⟩.

% tcbuselibrary{skins}
\newenvironment{myitemize}{%
\begin{itemize}}{\end{itemize}}
\tcolorboxenvironment{myitemize}{blanker,
before skip=6pt,after skip=6pt,
borderline west={3mm}{0pt}{red}}

Some text.
\begin{myitemize}
\item Alpha
\item Beta
\item Gamma
\end{myitemize}
More text.

1 - Ключи к командам tcolorbox

Полный список ключей для настройки боксов в tcolorbox

Ключи для TCB

КлючСинтаксисНазначение
/tcb/Префикс для ключейОбозначение пространства имен tcolorbox.
add to heightadd to height=<length>Добавляет фиксированную высоту к общему размеру бокса.
add to listadd to list=<text>Регистрирует бокс в списке (например, для оглавления).
add to natural heightadd to natural height=<length>Увеличивает “естественную” высоту бокса (без учета boxsep и boxrule).
add to widthadd to width=<length>Добавляет фиксированную ширину к общему размеру бокса.
adjust textadjust text=<options>Настраивает параметры текста (например, hyphenation).
adjusted titleadjusted title=<text>Заголовок с динамическим форматированием (например, для нумерации).
adjusted title after breakadjusted title after break=<text>Заголовок после разрыва многостраничного бокса.
afterafter={<code>}Код TikZ/LaTeX, выполняемый после рисования бокса.
after appafter app={<code>}Код, выполняемый после добавления бокса в приложении.
after doc bodyafter doc body={<code>}Код, вставляемый после основного содержимого документа.
after doc body commandafter doc body command=<command>Команда LaTeX, выполняемая после тела документа.
after doc body environmentafter doc body env=<env>Окружение LaTeX, добавляемое после тела документа.
after doc body keyafter doc body key=<key>Ключ TikZ, применяемый после тела документа.
after doc body pathafter doc body path=<path>Путь TikZ, рисуемый после тела документа.
after floatafter float={<code>}Код, выполняемый после плавающего бокса (float).
after float appafter float app={<code>}Аналог after float для приложений.
after float preafter float pre={<code>}Код перед плавающим боксом (для приложений).
after lowerafter lower={<code>}Код, выполняемый после нижней части (lower part) бокса.
after lower appafter lower app={<code>}Аналог after lower для приложений.
after lower preafter lower pre={<code>}Код перед нижней частью (для приложений).
after lower*after lower*={<code>}Код после нижней части (без группировки в {}).
after preafter pre={<code>}Код перед завершением бокса (для приложений).
after skipafter skip=<length>Вертикальный отступ после бокса.
after skip balancedafter skip balanced=<length>Сбалансированный отступ (учитывает разрывы страниц).
after titleafter title={<code>}Код, выполняемый после заголовка.
after title appafter title app={<code>}Аналог after title для приложений.
after title preafter title pre={<code>}Код перед заголовком (для приложений).
after title*after title*={<code>}Код после заголовка (без группировки в {}).
after upperafter upper={<code>}Код, выполняемый после верхней части (upper part) бокса.
after upper appafter upper app={<code>}Аналог after upper для приложений.
after upper preafter upper pre={<code>}Код перед верхней частью (для приложений).
after upper*after upper*={<code>}Код после верхней части (без группировки в {}).
alertalertСтиль для выделенных боксов (например, в Beamer).
altalt=<text>Альтернативный текст (для PDF-тегов или подписей).
ams alignams alignВключает окружение align из amsmath в основной части.
ams align lowerams align lowerАналог ams align для нижней части.
ams align upperams align upperАналог ams align для верхней части.
ams align*ams align*Версия align* (без нумерации).
ams equationams equationВключает окружение equation из amsmath.
ams equation lowerams equation lowerАналог ams equation для нижней части.
ams equation upperams equation upperАналог ams equation для верхней части.
ams gatherams gatherВключает окружение gather из amsmath.
ams nodisplayskipams nodisplayskipУбирает отступы вокруг формул amsmath.
arcarc=<length>Радиус скругления углов.
arc is angulararc is angularДелает скругление углов “острым” (стиль TikZ).
arc is curvedarc is curvedДелает скругление плавным (по умолчанию).
at begin tikzat begin tikz={<code>}Код TikZ, выполняемый в начале рисования.
attach boxed title to bottomattach boxed title to bottomРазмещает заголовок внизу бокса.
attach boxed title to topattach boxed title to topРазмещает заголовок вверху бокса (по умолчанию).
attach titleattach titleВключает прикрепленный заголовок.
auto outer arcauto outer arcАвтонастройка внешних дуг для сложных рамок.
autoparskipautoparskipАвтоматически регулирует parskip внутри бокса.
baselinebaseline=<length>Выравнивание бокса по базовой линии текста.
beamerbeamerСтиль для презентаций Beamer.
beamer alertedbeamer alertedСтиль для “alerted” боксов в Beamer.
beamer hiddenbeamer hiddenСтиль для скрытых боксов в Beamer.
bean arcbean arcАльтернативный стиль скругления углов (“бобовый”).
beforebefore={<code>}Код, выполняемый перед рисованием бокса.
before skipbefore skip=<length>Вертикальный отступ перед боксом.
bicolorbicolorДвухцветный стиль (разные цвета для верхней/нижней частей).
blankblankПустой стиль (без рамок и фона).
blankerblankerЕще более минималистичный стиль, чем blank.
blankestblankestМаксимально упрощенный стиль (только текст).
blend before titleblend before titleСмешивает фон перед заголовком с основным фоном.
bookmarkbookmark=<text>Добавляет закладку PDF для бокса.
borderlineborderline={<options>}Рисует дополнительные границы (например, тени).
bottomrulebottomrule=<length>Толщина нижней границы.
bottomrule at breakbottomrule at break=<length>Толщина нижней границы на разрыве страницы.
box alignbox align=<baseline/top/bottom>Выравнивание содержимого внутри бокса.
boxed title sizeboxed title size=<options>Размеры рамки заголовка.
boxruleboxrule=<length>Толщина основной рамки.
boxsepboxsep=<length>Внутренний отступ содержимого от границ.
colbackcolback=<color>Цвет фона основной части.
colbacklowercolbacklower=<color>Цвет фона нижней части (для bicolor).
colbacktitlecolbacktitle=<color>Цвет фона заголовка.
colframecolframe=<color>Цвет рамки бокса.
collowercollower=<color>Цвет текста в нижней части бокса.
color colorcolor color=<name>Настройка цвета (внутренний ключ для управления цветами).
color commandcolor command=<cmd>Команда для применения цвета.
color countercolor counter=<ctr>Счетчик для генерации цветов.
color definitioncolor definition={<code>}Определение нового цвета.
color environmentcolor environment=<env>Окружение для применения цвета.
color fadecolor fade={<options>}Градиентная заливка фона.
color hyperlinkcolor hyperlink={<options>}Цвет гиперссылок внутри бокса.
color keycolor key=<key>Ключ для доступа к цвету.
color lengthcolor length=<len>Длина цветового перехода.
color optioncolor option={<opt>}Опции цвета.
color pathcolor path={<path>}Путь TikZ для градиента.
color valuecolor value=<val>Значение цвета (например, red!50).
coltextcoltext=<color>Цвет основного текста.
coltitlecoltitle=<color>Цвет текста заголовка.
coluppercolupper=<color>Цвет текста в верхней части бокса.
commentcomment={<text>}Добавляет комментарий внутри бокса.
comment above listingcomment above listing={<text>}Комментарий над листингом кода.
comment above* listingcomment above* listing={<text>}Комментарий над листингом (без форматирования).
comment and listingcomment and listing={<text>}Комбинация комментария и листинга.
comment onlycomment only={<text>}Только комментарий (без листинга).
comment outside listingcomment outside listing={<text>}Комментарий вне листинга (например, сбоку).
comment side listingcomment side listing={<text>}Комментарий сбоку от листинга.
comment stylecomment style={<style>}Стиль оформления комментариев.
compilable listingcompilable listingЛистинг, который можно компилировать.
compress pagecompress pageСжимает страницу для экономии места.
ctan formatterctan formatter={<code>}Форматирование для CTAN-документации.
default minted optionsdefault minted options={<opt>}Опции по умолчанию для пакета minted.
description colordescription color=<color>Цвет текста в описании.
description delimitersdescription delimiters={<left><right>}Разделители для описаний (например, скобки).
description delimiters nonedescription delimiters noneУбирает разделители описаний.
description delimiters parenthesisdescription delimiters parenthesisИспользует круглые скобки для описаний.
description fontdescription font={<font>}Шрифт для описаний.
description formatterdescription formatter={<code>}Функция форматирования описаний.
detach titledetach titleОтделяет заголовок от основного бокса.
do not store to box arraydo not store to box arrayЗапрещает сохранение бокса в массив.
doc descriptiondoc description={<text>}Описание для документации.
doc headdoc head={<text>}Заголовок раздела документации.
doc head commanddoc head command={<cmd>}Команда для заголовка документации.
doc head environmentdoc head environment={<env>}Окружение для заголовка документации.
doc head keydoc head key={<key>}Ключ для заголовка документации.
doc head pathdoc head path={<path>}Путь TikZ для заголовка документации.
doc indexdoc index={<text>}Индекс для документации.
doc into indexdoc into index={<text>}Добавляет запись в индекс документации.
doc key prefixdoc key prefix={<prefix>}Префикс для ключей документации.
doc keypathdoc keypath={<path>}Путь к ключу документации.
doc labeldoc label={<label>}Метка для перекрестных ссылок.
doc leftdoc left={<text>}Текст слева в документации.
doc left indentdoc left indent={<len>}Отступ слева в документации.
doc marginnotedoc marginnote={<text>}Заметка на полях документации.
doc namedoc name={<name>}Имя элемента документации.
doc newdoc newПометка нового элемента в документации.
doc new and updateddoc new and updatedПометка нового и обновленного элемента.
doc no indexdoc no indexИсключает элемент из индекса.
doc parameterdoc parameter={<param>}Параметр для документации.
doc rasterdoc raster={<options>}Сетка (raster) для документации.
doc rightdoc right={<text>}Текст справа в документации.
doc right indentdoc right indent={<len>}Отступ справа в документации.
doc sort indexdoc sort index={<key>}Ключ сортировки индекса.
doc updateddoc updatedПометка обновленного элемента.
docexampledocexample={<code>}Пример кода для документации.
documentation listing optionsdocumentation listing options={<opt>}Опции листинга в документации.
documentation listing styledocumentation listing style={<style>}Стиль листинга в документации.
documentation minted languagedocumentation minted language={<lang>}Язык для minted в документации.
documentation minted optionsdocumentation minted options={<opt>}Опции minted для документации.
documentation minted styledocumentation minted style={<style>}Стиль minted для документации.
draftdraftЧерновой режим (упрощенное отображение).
draftmodedraftmodeРежим черновика с дополнительными опциями.
drop fuzzy midday shadowdrop fuzzy midday shadow={<opt>}Размытая тень с эффектом “полдень”.
drop fuzzy shadowdrop fuzzy shadow={<opt>}Размытая тень вокруг бокса.
drop large lifted shadowdrop large lifted shadow={<opt>}Большая “приподнятая” тень.
drop lifted shadowdrop lifted shadow={<opt>}Эффект приподнятого бокса с тенью.
drop midday shadowdrop midday shadow={<opt>}Тень с акцентом на верхнюю границу.
drop shadowdrop shadow={<opt>}Стандартная тень.
emptyemptyПолностью пустой бокс (без содержимого).
enforce breakableenforce breakableПринудительно разрешает разрыв бокса.
english languageenglish languageУстанавливает английский язык для текста.
enhancedenhancedВключает улучшенный режим рисования (с TikZ).
enhanced jigsawenhanced jigsawРежим “пазла” с закругленными углами.
enlarge bottom at break byenlarge bottom at break by=<len>Увеличивает нижний отступ при разрыве.
enlarge bottom byenlarge bottom by=<len>Увеличивает нижний отступ.
enlarge left byenlarge left by=<len>Увеличивает левый отступ.
enlarge right byenlarge right by=<len>Увеличивает правый отступ.
enlarge top at break byenlarge top at break by=<len>Увеличивает верхний отступ при разрыве.
enlarge top byenlarge top by=<len>Увеличивает верхний отступ.
enlargepageenlargepageРасширяет страницу для размещения бокса.
enlargepage flexibleenlargepage flexibleГибкое расширение страницы.
environment lowerenvironment lower={<env>}Окружение для нижней части бокса.
environment lower appenvironment lower app={<env>}Окружение для нижней части (для приложений).
environment lower argsenvironment lower args={<args>}Аргументы для окружения нижней части.
environment lower args appenvironment lower args app={<args>}Аргументы окружения нижней части для приложений
environment lower args preenvironment lower args pre={<args>}Аргументы окружения нижней части (предварительные)
environment lower preenvironment lower pre={<env>}Окружение нижней части (предварительное)
environment titleenvironment title={<env>}Окружение для заголовка
environment title appenvironment title app={<env>}Окружение заголовка для приложений
environment title argsenvironment title args={<args>}Аргументы окружения заголовка
environment title args appenvironment title args app={<args>}Аргументы окружения заголовка для приложений
environment title args preenvironment title args pre={<args>}Аргументы окружения заголовка (предварительные)
environment title preenvironment title pre={<env>}Окружение заголовка (предварительное)
environment upperenvironment upper={<env>}Окружение верхней части
environment upper appenvironment upper app={<env>}Окружение верхней части для приложений
environment upper argsenvironment upper args={<args>}Аргументы окружения верхней части
environment upper args appenvironment upper args app={<args>}Аргументы окружения верхней части для приложений
environment upper args preenvironment upper args pre={<args>}Аргументы окружения верхней части (предварительные)
environment upper preenvironment upper pre={<env>}Окружение верхней части (предварительное)
equal height groupequal height group=<name>Группа боксов с одинаковой высотой
every boxevery box={<options>}Стиль для всех боксов
every box on higher layersevery box on higher layers={<options>}Стиль для боксов на верхних слоях
every box on layer nevery box on layer n={<options>}Стиль для боксов на конкретном слое
every floatevery float={<options>}Стиль для плавающих боксов
every listing lineevery listing line={<options>}Стиль для каждой строки листинга
every listing line*every listing line*={<options>}Альтернативный стиль строк листинга
extend freelanceextend freelance={<options>}Расширение freelance-стиля
extend freelancefirstextend freelancefirst={<options>}Расширение для первого freelance-бокса
extend freelancelastextend freelancelast={<options>}Расширение для последнего freelance-бокса
extend freelancemiddleextend freelancemiddle={<options>}Расширение для средних freelance-боксов
externalexternal={<options>}Внешнее содержимое бокса
externalize exampleexternalize exampleВнешний пример (без форсирования)
externalize example!externalize example!Внешний пример (с форсированием)
externalize listingexternalize listingВнешний листинг (без форсирования)
externalize listing!externalize listing!Внешний листинг (с форсированием)
extrasextras={<options>}Дополнительные стили
extras brokenextras broken={<options>}Стили для разорванного бокса
extras broken preextras broken pre={<options>}Предварительные стили для разорванного бокса
extras firstextras first={<options>}Стили для первой части
extras first and middleextras first and middle={<options>}Стили для первой и средней частей
extras first and middle preextras first and middle pre={<options>}Предварительные стили для первой и средней частей
extras first preextras first pre={<options>}Предварительные стили для первой части
extras lastextras last={<options>}Стили для последней части
extras last preextras last pre={<options>}Предварительные стили для последней части
extras middleextras middle={<options>}Стили для средней части
extras middle and lastextras middle and last={<options>}Стили для средней и последней частей
extras middle and last preextras middle and last pre={<options>}Предварительные стили для средней и последней частей
extras middle preextras middle pre={<options>}Предварительные стили для средней части
extras preextras pre={<options>}Предварительные дополнительные стили
extras title after breakextras title after break={<options>}Стили заголовка после разрыва
extras unbrokenextras unbroken={<options>}Стили для неразорванного бокса
extras unbroken and firstextras unbroken and first={<options>}Стили для неразорванного и первого бокса
extras unbroken and first preextras unbroken and first pre={<options>}Предварительные стили для неразорванного и первого бокса
extras unbroken and lastextras unbroken and last={<options>}Стили для неразорванного и последнего бокса
extras unbroken and last preextras unbroken and last pre={<options>}Предварительные стили для неразорванного и последнего бокса
extras unbroken preextras unbroken pre={<options>}Предварительные стили для неразорванного бокса
extrude bottom byextrude bottom by=<length>Выступ снизу бокса
extrude byextrude by=<length>Выступ со всех сторон
extrude left byextrude left by=<length>Выступ слева
extrude right byextrude right by=<length>Выступ справа
extrude top byextrude top by=<length>Выступ сверху
fill downwardsfill downwardsЗаполнение содержимого сверху вниз
finishfinish={<options>}Завершающие стили
finish brokenfinish broken={<options>}Завершающие стили для разорванного бокса
finish broken prefinish broken pre={<options>}Предварительные завершающие стили для разорванного бокса
finish fading vignettefinish fading vignette={<options>}Завершение fading vignette-эффекта
finish firstfinish first={<options>}Завершающие стили для первой части
finish first and middlefinish first and middle={<options>}Завершающие стили для первой и средней частей
finish first and middle prefinish first and middle pre={<options>}Предварительные завершающие стили для первой и средней частей
finish first prefinish first pre={<options>}Предварительные завершающие стили для первой части
finish lastfinish last={<options>}Завершающие стили для последней части
finish last prefinish last pre={<options>}Предварительные завершающие стили для последней части
finish middlefinish middle={<options>}Завершающие стили для средней части
finish middle and lastfinish middle and last={<options>}Завершающие стили для средней и последней частей
finish middle and last prefinish middle and last pre={<options>}Предварительные завершающие стили для средней и последней частей
finish middle prefinish middle pre={<options>}Предварительные завершающие стили для средней части
finish prefinish pre={<options>}Предварительные завершающие стили
finish raised fading vignettefinish raised fading vignette={<options>}Завершение raised fading vignette-эффекта
finish unbrokenfinish unbroken={<options>}Завершающие стили для неразорванного бокса
finish unbroken and firstfinish unbroken and first={<options>}Завершающие стили для неразорванного и первого бокса
finish unbroken and first prefinish unbroken and first pre={<options>}Предварительные завершающие стили для неразорванного и первого бокса
finish unbroken and lastfinish unbroken and last={<options>}Завершающие стили для неразорванного и последнего бокса
finish unbroken and last prefinish unbroken and last pre={<options>}Предварительные завершающие стили для неразорванного и последнего бокса
finish unbroken prefinish unbroken pre={<options>}Предварительные завершающие стили для неразорванного бокса
finish vignettefinish vignette={<options>}Завершение vignette-эффекта
fitfit={<options>}Подгонка размера содержимого
fit algorithmfit algorithm=<name>Алгоритм подгонки
fit basedimfit basedim=<length>Базовый размер для подгонки
fit fontsize macrosfit fontsize macros={<names>}Макросы размера шрифта для подгонки
fit height fromfit height from={<code>}Вычисление высоты из кода
fit height plusfit height plus={<length>}Дополнительная высота при подгонке
fit maxfontdifffit maxfontdiff=<value>Максимальная разница шрифтов
fit maxfontdiffgapfit maxfontdiffgap=<value>Максимальный промежуток разницы шрифтов
fit maxstepfit maxstep=<value>Максимальное количество шагов
fit maxwidthdifffit maxwidthdiff=<value>Максимальная разница ширины
fit maxwidthdiffgapfit maxwidthdiffgap=<value>Максимальный промежуток разницы ширины
fit skipfit skip={<options>}Пропуск элементов при подгонке
fit tofit to={<dimensions>}Подгонка к указанным размерам
fit to heightfit to height={<height>}Подгонка по высоте
fit warningfit warning={<options>}Предупреждения при подгонке
fit width fromfit width from={<code>}Вычисление ширины из кода
fit width plusfit width plus={<length>}Дополнительная ширина при подгонке
flip titleflip titleПереворот заголовка
floatfloatПлавающий бокс
float*float*Альтернативный плавающий бокс
floatplacementfloatplacement={<placement>}Позиционирование плавающего бокса
flush leftflush leftВыравнивание по левому краю
flush rightflush rightВыравнивание по правому краю
flushleft lowerflushleft lowerВыравнивание нижней части по левому краю
flushleft titleflushleft titleВыравнивание заголовка по левому краю
flushleft upperflushleft upperВыравнивание верхней части по левому краю
flushright lowerflushright lowerВыравнивание нижней части по правому краю
flushright titleflushright titleВыравнивание заголовка по правому краю
flushright upperflushright upperВыравнивание верхней части по правому краю
fontlowerfontlower={<font>}Шрифт нижней части
fonttitlefonttitle={<font>}Шрифт заголовка
fontupperfontupper={<font>}Шрифт верхней части
force nobeforeafterforce nobeforeafterПринудительное отключение before/after
frame codeframe code={<code>}Пользовательский код рамки
frame code appframe code app={<code>}Код рамки для приложений
frame code preframe code pre={<code>}Предварительный код рамки
frame emptyframe emptyПустая рамка
frame engineframe engine=<name>Движок отрисовки рамки
frame hiddenframe hiddenСкрытая рамка
frame styleframe style={<style>}Стиль рамки
frame style imageframe style image={<image>}Стиль рамки с изображением
frame style tileframe style tile={<options>}Стиль рамки с плиткой
freelancefreelance={<options>}Freelance-стиль
freeze extensionfreeze extension={<ext>}Расширение для замороженных файлов
freeze filefreeze file={<name>}Имя замороженного файла
freeze jpgfreeze jpgЗаморозка в JPG
freeze nonefreeze noneБез заморозки
freeze pdffreeze pdfЗаморозка в PDF
freeze pngfreeze pngЗаморозка в PNG
fuzzy halofuzzy halo={<options>}Размытое гало
fuzzy shadowfuzzy shadow={<options>}Размытая тень
geometry nodesgeometry nodes={<names>}Геометрические узлы
graphics directorygraphics directory={<path>}Директория с графикой
graphics optionsgraphics options={<options>}Опции графики
graphics orientationgraphics orientation={<angle>}Ориентация графики
graphics pagesgraphics pages={<range>}Страницы графики
grow sidewards bygrow sidewards by={<length>}Рост вбок
grow to left bygrow to left by={<length>}Рост влево
grow to right bygrow to right by={<length>}Рост вправо
halignhalign=<alignment>Горизонтальное выравнивание
halign codehalign code={<code>}Код горизонтального выравнивания
halign lowerhalign lower=<alignment>Выравнивание нижней части
halign lower codehalign lower code={<code>}Код выравнивания нижней части
halign titlehalign title=<alignment>Выравнивание заголовка
halign title codehalign title code={<code>}Код выравнивания заголовка
halign upperhalign upper=<alignment>Выравнивание верхней части
halign upper codehalign upper code={<code>}Код выравнивания верхней части
halohalo={<options>}Эффект гало
hboxhboxГоризонтальная коробка
hbox boxed titlehbox boxed titleГоризонтальная коробка заголовка
heightheight={<length>}Фиксированная высота
height fillheight fillЗаполнение высоты
height fixed forheight fixed for={<name>}Фиксированная высота для группы
height fromheight from={<code>}Высота из кода
height plusheight plus={<length>}Дополнительная высота
hidehideСкрытый бокс
highlight mathhighlight mathПодсветка математики
highlight math stylehighlight math style={<style>}Стиль подсветки математики
hyperlinkhyperlink={<name>}Гиперссылка
hyperlink interiorhyperlink interior={<name>}Гиперссылка на внутреннюю часть
hyperlink nodehyperlink node={<name>}Гиперссылка на узел
hyperlink titlehyperlink title={<name>}Гиперссылка на заголовок
hyperrefhyperref={<options>}Настройки hyperref
hyperref interiorhyperref interior={<options>}Hyperref для внутренней части
hyperref nodehyperref node={<options>}Hyperref для узла
hyperref titlehyperref title={<options>}Hyperref для заголовка
hypertargethypertarget={<name>}Цель гиперссылки
hyperurlhyperurl={<url>}Гиперссылка-URL
hyperurl interiorhyperurl interior={<url>}URL для внутренней части
hyperurl nodehyperurl node={<url>}URL для узла
hyperurl titlehyperurl title={<url>}URL для заголовка
hyperurl*hyperurl*={<url>}Альтернативный гиперurl
hyperurl* interiorhyperurl* interior={<url>}Альтернативный URL для внутренней части
hyperurl* nodehyperurl* node={<url>}Альтернативный URL для узла
hyperurl* titlehyperurl* title={<url>}Альтернативный URL для заголовка
hyphenationfixhyphenationfixИсправление переносов
if odd pageif odd page={<code>}Условие для нечетной страницы
if odd page or onesideif odd page or oneside={<code>}Условие для нечетной/односторонней страницы
if odd page or oneside*if odd page or oneside*={<code>}Альтернативное условие
if odd page*if odd page*={<code>}Альтернативное условие нечетной страницы
IfBlankFIfBlankF={<arg>}{<code>}Условный код если аргумент пуст (ложь)
IfBlankTIfBlankT={<arg>}{<code>}Условный код если аргумент пуст (истина)
IfBlankTFIfBlankTF={<arg>}{<if>}{<else>}Полное условие для пустого аргумента
IfBooleanFIfBooleanF={<arg>}{<code>}Условие для булева значения (ложь)
IfBooleanTIfBooleanT={<arg>}{<code>}Условие для булева значения (истина)
IfBooleanTFIfBooleanTF={<arg>}{<if>}{<else>}Полное булево условие
IfEmptyFIfEmptyF={<arg>}{<code>}Условие для пустого значения (ложь)
IfEmptyTIfEmptyT={<arg>}{<code>}Условие для пустого значения (истина)
IfEmptyTFIfEmptyTF={<arg>}{<if>}{<else>}Полное условие для пустого значения
IfNoValueFIfNoValueF={<arg>}{<code>}Условие если нет значения (ложь)
IfNoValueTIfNoValueT={<arg>}{<code>}Условие если нет значения (истина)
IfNoValueTFIfNoValueTF={<arg>}{<if>}{<else>}Полное условие для отсутствия значения
IfValueFIfValueF={<arg>}{<code>}Условие если есть значение (ложь)
IfValueTIfValueT={<arg>}{<code>}Условие если есть значение (истина)
IfValueTFIfValueTF={<arg>}{<if>}{<else>}Полное условие для наличия значения
ignore nobreakignore nobreakИгнорирование запрета разрыва
image commentimage comment={<text>}Комментарий к изображению
indexindex={<entry>}Запись в индекс
index actualindex actual={<options>}Фактические настройки индекса
index annotateindex annotate={<options>}Аннотации индекса
index colorizeindex colorize={<options>}Раскрашивание индекса
index commandindex command={<cmd>}Команда индекса
index command nameindex command name={<name>}Имя команды индекса
index default settingsindex default settingsНастройки индекса по умолчанию
index formatindex format={<format>}Формат индекса
index gather allindex gather allСбор всех элементов в индекс
index gather colorsindex gather colorsСбор цветов в индекс
index gather commandsindex gather commandsСбор команд в индекс
index gather countersindex gather countersСбор счетчиков в индекс
index gather environmentsindex gather environmentsСбор окружений в индекс
index gather keysindex gather keysСбор ключей в индекс
index gather lengthsindex gather lengthsСбор длин в индекс
index gather noneindex gather noneОтключение сбора в индекс
index gather pathsindex gather pathsСбор путей в индекс
index gather valuesindex gather valuesСбор значений в индекс
index german settingsindex german settingsНемецкие настройки индекса
index key formatterindex key formatter={<formatter>}Форматирование ключей индекса
index keys formatterindex keys formatter={<formatter>}Форматирование нескольких ключей
index levelindex level={<level>}Уровень индекса
index quoteindex quote={<text>}Цитата в индексе
index*index*={<entry>}Альтернативная запись в индекс
inherit heightinherit heightНаследование высоты
interior codeinterior code={<code>}Пользовательский код внутренней части
interior code appinterior code app={<code>}Код внутренней части для приложений
interior code preinterior code pre={<code>}Предварительный код внутренней части
interior emptyinterior emptyПустая внутренняя часть
interior engineinterior engine={<name>}Движок внутренней части
interior hiddeninterior hiddenСкрытая внутренняя часть
interior styleinterior style={<style>}Стиль внутренней части
interior style imageinterior style image={<image>}Стиль внутренней части с изображением
interior style tileinterior style tile={<options>}Стиль внутренней части с плиткой
interior titled codeinterior titled code={<code>}Код внутренней части с заголовком
interior titled code appinterior titled code app={<code>}Код внутренней части с заголовком для приложений
interior titled code preinterior titled code pre={<code>}Предварительный код внутренней части с заголовком
interior titled emptyinterior titled emptyПустая внутренняя часть с заголовком
interior titled engineinterior titled engine=<name>Движок для внутренней части с заголовком
invisibleinvisibleДелает бокс полностью невидимым (но сохраняет содержимое)
keywords boldkeywords boldВыделение ключевых слов жирным шрифтом в документации
labellabel=<text>Метка для перекрестных ссылок
label is labellabel is labelИспользовать стандартные метки LaTeX
label is zlabellabel is zlabelИспользовать zref-метки
label separatorlabel separator=<text>Разделитель между меткой и текстом
label typelabel type=<type>Тип метки (например, ’tcb@label')
leftleft=<length>Отступ слева для основного содержимого
left skipleft skip=<length>Горизонтальный отступ слева
left*left*=<length>Альтернативный отступ слева
lefthand ratiolefthand ratio=<value>Соотношение для левой части (в split боксах)
lefthand widthlefthand width=<length>Ширина левой части (в split боксах)
leftlowerleftlower=<length>Отступ слева для нижней части
leftright skipleftright skip=<length>Одновременный отступ слева и справа
leftruleleftrule=<length>Толщина левой границы
lefttitlelefttitle=<length>Отступ слева для заголовка
leftupperleftupper=<length>Отступ слева для верхней части
lifted shadowlifted shadow={<options>}Эффект “приподнятой” тени
lines before breaklines before break=<number>Минимальное количество строк перед разрывом
list entrylist entry=<text>Запись для списка (оглавления)
list textlist text=<text>Текст для списка
listing above commentlisting above comment={<text>}Листинг с комментарием сверху
listing above textlisting above text={<text>}Листинг с текстом сверху
listing and commentlisting and comment={<text>}Комбинация листинга и комментария
listing enginelisting engine=<name>Движок для обработки листингов
listing filelisting file={<filename>}Файл с кодом для листинга
listing inputencodinglisting inputencoding=<encoding>Кодировка входного файла листинга
listing onlylisting onlyТолько листинг (без дополнительного текста)
listing optionslisting options={<options>}Опции для листинга
listing remove captionlisting remove captionУдаление подписи у листинга
listing side commentlisting side comment={<text>}Листинг с боковым комментарием
listing side textlisting side text={<text>}Листинг с боковым текстом
listing stylelisting style={<style>}Стиль оформления листинга
listing utf8listing utf8Использование UTF-8 для листинга
lower separatedlower separatedРазделение нижней части визуальной линией
lowerboxlowerboxОбработка нижней части как бокса
markermarker={<options>}Маркеры для оформления
mathmathМатематический режим в основном содержимом
math lowermath lowerМатематический режим в нижней части
math uppermath upperМатематический режим в верхней части
middlemiddle=<length>Вертикальное выравнивание по середине
minipageminipageОбработка содержимого как minipage
minipage boxed titleminipage boxed titleЗаголовок как minipage
minted languageminted language={<lang>}Язык для пакета minted
minted optionsminted options={<options>}Опции для minted
minted styleminted style={<style>}Стиль для minted
move upwardsmove upwards=<length>Сдвиг содержимого вверх
namerefnamerefИспользование nameref для ссылок
natural heightnatural heightЕстественная высота содержимого
no borderlineno borderlineУдаление дополнительных границ
no boxed title styleno boxed title styleОтключение стиля для заголовка в рамке
no extrasno extrasОтключение дополнительных стилей
no finishno finishОтключение завершающих стилей
no label typeno label typeОтключение специального типа метки
no listing optionsno listing optionsОтключение опций листинга
no overlayno overlayОтключение наложений
no shadowno shadowОтключение теней
no underlayno underlayОтключение подложек
no watermarkno watermarkОтключение водяных знаков
nobeforeafternobeforeafterОтключение отступов before/after
nofloatnofloatЗапрет плавающего размещения
noparskipnoparskipОтключение parskip
notitlenotitleОтключение заголовка
octogon arcoctogon arcВосьмиугольная форма углов
on lineon lineРазмещение в строке текста
onlyonly={<options>}Условное отображение содержимого
opacitybackopacityback=<value>Прозрачность фона
opacitybacktitleopacitybacktitle=<value>Прозрачность фона заголовка
opacityframeopacityframe=<value>Прозрачность рамки
opacitytextopacitytext=<value>Прозрачность текста
outer arcouter arcСкругление внешних углов
overlayoverlay={<code>}Наложение TikZ-кода
oversizeoversizeРазрешение содержимому выходить за границы
pad at breakpad at break=<length>Заполнение при разрыве
page ref formatterpage ref formatter={<code>}Форматирование ссылок на страницы
parboxparboxОбработка содержимого как parbox
parskipparskipИспользование parskip между абзацами
phantomphantomНевидимый бокс, занимающий место
process codeprocess code={<code>}Обработка кода перед вставкой
raster columnsraster columns=<number>Количество колонок в сетке
raster equal heightraster equal heightВыравнивание высоты элементов сетки
raster rowsraster rows=<number>Количество строк в сетке
recordrecordЗапись параметров бокса
rightright=<length>Отступ справа для основного содержимого
right skipright skip=<length>Горизонтальный отступ справа
rightrulerightrule=<length>Толщина правой границы
rotaterotate=<angle>Вращение бокса
rounded cornersrounded corners=<length>Скругление углов
run pdflatexrun pdflatexЗапуск pdflatex для обработки содержимого
savedelimitersavedelimiter={<text>}Сохранение разделителя
savetosaveto={<filename>}Сохранение содержимого в файл
scalescale=<factor>Масштабирование содержимого
segmentation at breaksegmentation at breakРазделитель при разрыве
segmentation codesegmentation code={<code>}Пользовательский код разделителя
segmentation stylesegmentation style={<style>}Стиль линии-разделителя между верхней и нижней частями
separator signseparator sign={<char>}Символ-разделитель в описаниях
separator sign colonseparator sign colonИспользование двоеточия как разделителя
separator sign dashseparator sign dashИспользование тире как разделителя
separator sign noneseparator sign noneОтсутствие разделителя
set altset alt={<text>}Установка альтернативного текста
set temporalset temporal={<text>}Временная установка значения
shadowshadow={<options>}Настройка тени вокруг бокса
sharp cornerssharp cornersОстрые углы (без скругления)
sharpish cornerssharpish cornersСлегка скругленные углы
shield externalizeshield externalizeЗащита от externalize
short titleshort title={<text>}Краткий вариант заголовка
show bounding boxshow bounding boxОтображение ограничивающей рамки
shrink break goalshrink break goal={<length>}Целевое значение сжатия при разрыве
shrink tightshrink tightПлотное сжатие содержимого
sidebysidesidebysideРазмещение содержимого бок о бок
sidebyside alignsidebyside align={<option>}Выравнивание side-by-side содержимого
sidebyside gapsidebyside gap={<length>}Зазор между side-by-side элементами
sidebyside switchsidebyside switchПереключение порядка side-by-side
sizesize={<option>}Размер бокса (normal, small, etc.)
skinskin={<name>}Скин для оформления бокса
skin firstskin first={<name>}Скин для первого бокса в группе
skin lastskin last={<name>}Скин для последнего бокса в группе
skin middleskin middle={<name>}Скин для средних боксов в группе
smart shadow arcsmart shadow arcУмное скругление теней
spacespace={<length>}Вертикальный промежуток
space tospace to={<length>}Гибкий вертикальный промежуток
space to lowerspace to lower={<length>}Промежуток до нижней части
space to upperspace to upper={<length>}Промежуток до верхней части
spartanspartanМинималистичный стиль оформления
splitsplit={<options>}Разделение бокса на части
spreadspreadРавномерное распределение пространства
spread downwardsspread downwardsРаспределение вниз
spread inwardsspread inwardsРаспределение внутрь
spread outwardsspread outwardsРаспределение наружу
spread upwardsspread upwardsРаспределение вверх
squaresquareКвадратная форма бокса
squeezed titlesqueezed titleСжатый заголовок
standardstandardСтандартный стиль оформления
standard jigsawstandard jigsawСтандартный стиль с “пазлами”
stepstep={<counter>}Шаг нумерации
step and labelstep and labelАвтоматическая нумерация и метка
store to box arraystore to box array={<name>}Сохранение в массив боксов
subtitle stylesubtitle style={<style>}Стиль подзаголовка
tabularxtabularxИспользование tabularx внутри
tcbimage commenttcbimage comment={<text>}Комментарий к изображению
tcbox raisetcbox raise={<length>}Поднятие бокса
tempfiletempfileИспользование временного файла
temporaltemporal={<text>}Временное значение
terminator signterminator sign={<char>}Конечный символ в описаниях
text above listingtext above listing={<text>}Текст над листингом
text and listingtext and listingКомбинация текста и листинга
text filltext fillЗаполнение текстом
text heighttext height={<length>}Высота текстовой области
text widthtext width={<length>}Ширина текстовой области
theoremtheoremСтиль для теорем
theorem label supplementtheorem label supplement={<text>}Дополнение к метке теоремы
theorem styletheorem style={<name>}Стиль оформления теоремы
tikztikz={<options>}Опции TikZ
tikz lowertikz lower={<options>}TikZ для нижней части
tikz uppertikz upper={<options>}TikZ для верхней части
tikznodetikznodeОбработка как TikZ-узел
tiletileПлиточное оформление фона
titletitle={<text>}Заголовок бокса
title after breaktitle after break={<text>}Заголовок после разрыва
title styletitle style={<style>}Стиль заголовка
titleruletitlerule={<length>}Линия под заголовком
toggle enlargementtoggle enlargementПереключение увеличения
toggle left and righttoggle left and rightПереключение левого/правого
toptop={<length>}Отступ сверху
topruletoprule={<length>}Верхняя граница
unbreakableunbreakableЗапрет разрыва бокса
underlayunderlay={<code>}Подложка (TikZ-код под содержимым)
underlay boxed titleunderlay boxed title={<code>}Подложка для заголовка
underlay firstunderlay first={<code>}Подложка для первой части
underlay lastunderlay last={<code>}Подложка для последней части
underlay middleunderlay middle={<code>}Подложка для средней части
underlay vignetteunderlay vignette={<options>}Виньетка в качестве подложки
upperboxupperboxОбработка верхней части как бокса
use altuse altИспользование альтернативного текста
use color stackuse color stackИспользование стека цветов
valignvalign={<option>}Вертикальное выравнивание
varwidth uppervarwidth upperПеременная ширина верхней части
verbatimverbatimРежим verbatim
visiblevisibleВидимый бокс (антоним invisible)
watermark graphicswatermark graphics={<file>}Водяной знак из изображения
watermark opacitywatermark opacity={<value>}Прозрачность водяного знака
watermark textwatermark text={<text>}Текстовый водяной знак
watermark tikzwatermark tikz={<code>}Водяной знак TikZ
widthwidth={<length>}Ширина бокса

Основные ключи оформления заголовка (/tcb/boxtitle/)

КлючСинтаксисНазначение
xshiftxshift=<length>Горизонтальное смещение заголовка
yshiftyshift=<length>Вертикальное смещение заголовка
yshift*yshift*=<length>Альтернативное вертикальное смещение
yshifttextyshifttext=<length>Смещение текста заголовка

Ключи документации (/tcb/doclang/)

КлючСинтаксисНазначение
colorcolor={<name>}Цвет для документации
commandscommands={<list>}Список команд
countercounter={<name>}Счетчик для документации
environmentenvironment={<name>}Окружение для документации
indexindex={<options>}Настройки индекса
keykey={<name>}Ключ документации
lengthlength={<name>}Длина для документации
newnewПометка нового элемента
pathpath={<name>}Путь для документации
updatedupdatedПометка обновленного элемента
valuevalue={<val>}Значение для документации

Ключи внешнего контента (/tcb/external/)

КлючСинтаксисНазначение
--Стандартный режим externalize
!!Форсированный режим externalize
compilercompiler={<name>}Компилятор для внешних файлов
environmentenvironment={<name>}Окружение для внешнего контента
externalizeexternalizeАктивация externalize
namename={<base>}Базовое имя для файлов
preamblepreamble={<code>}Преамбула для внешних файлов
prefixprefix={<text>}Префикс для имен файлов
runnerrunner={<command>}Команда для запуска
safetysafety={<options>}Настройки безопасности

Библиотеки (/tcb/library/)

КлючНазначение
allВсе библиотеки
breakableПоддержка разрывов
documentationДокументационные стили
externalВнешний контент
fittingАвтоподгонка размеров
listingsПоддержка листингов
mintedИнтеграция с Minted
rasterСеточная компоновка
skinsДополнительные скины
theoremsСтили для теорем

Ключи постеров (/tcb/poster/)

КлючСинтаксисНазначение
colspacingcolspacing=<length>Расстояние между колонками
columnscolumns=<number>Количество колонок
heightheight=<length>Высота постера
rowspacingrowspacing=<length>Расстояние между строками
showframeshowframeПоказать рамки
widthwidth=<length>Ширина постера

Ключи виньетирования (/tcb/vig/)

КлючСинтаксисНазначение
base colorbase color={<color>}Базовый цвет виньетки
east sizeeast size=<length>Размер восточной части
fade infade in={<options>}Эффект плавного появления
lower left cornerlower left corner={<coord>}Левый нижний угол
sizesize={<length>}Общий размер
upper right cornerupper right corner={<coord>}Правый верхний угол

Интеграция с TikZ (/tikz/)

КлючСинтаксисНазначение
tcb fill frametcb fill frame={<color>}Заливка рамки
tcb fill interiortcb fill interior={<color>}Заливка внутренней части
tcb fill titletcb fill title={<color>}Заливка заголовка

Особенности:

  1. Группы ключей организованы по функциональности (заголовки, документация, внешний контент и т.д.)
  2. Виньетки (/tcb/vig/) предоставляют сложные эффекты затемнения/осветления углов
  3. Постеры (/tcb/poster/) позволяют создавать сложные сеточные компоновки
  4. Интеграция с TikZ дает полный контроль над графическими элементами

Каждая группа ключей решает специфические задачи, от базового позиционирования до сложных эффектов оформления.

2 - Команды для Title

Управляет параметрами заголовка в боксах
КомандаПолный синтаксисОписание и назначение
title/tcb/title=⟨text⟩Создает заголовок с указанным текстом.
notitle/tcb/notitleУдаляет строку заголовка, если установлено.
adjusted title/tcb/adjusted title=⟨text⟩Создает заголовок с автоматической подгонкой высоты под текст (полезно для выравнивания высоты боксов в группе).
adjust text/tcb/adjust text=⟨text⟩Устанавливает эталонный текст для подгонки высоты в adjusted title.
squeezed title/tcb/squeezed title=⟨text⟩Создает заголовок, сжимая текст, если он не помещается в доступное пространство.
squeezed title*/tcb/squeezed title*=⟨text⟩Комбинация adjusted title и squeezed title (подгонка высоты и сжатие текста).
titlebox/tcb/titlebox=⟨mode⟩Управляет отображением заголовка (visible — стандартное отображение, invisible — скрывает текст, оставляя пустое место).
detach title/tcb/detach titleОтделяет заголовок от стандартной позиции, сохраняя его в \tcbtitletext и \tcbtitle.
attach title/tcb/attach titleВозвращает заголовок в стандартную позицию (отменяет detach title).
attach title to upper/tcb/attach title to upper=⟨text⟩Прикрепляет заголовок к началу верхней части содержимого бокса (с дополнительным текстом между заголовком и содержимым).
\tcbset{colback=White,arc=0mm,width=(\linewidth-4pt)/4,
equal height group=AT,before=,after=\hfill,fonttitle=\bfseries}
The following titles are not adjusted:\\
\foreach \n in {xxx,ggg,AAA,\"Agypten}
{\begin{tcolorbox}[title=\n,colframe=red!75!black]

Some content.\end{tcolorbox}}
Now, we try again with adjusted titles:\\
\foreach \n in {xxx,ggg,AAA,\"Agypten}
{\begin{tcolorbox}[adjusted title=\n,colframe=blue!75!black]
Some content.\end{tcolorbox}}

3 - Команды для SubTitle

Управляет параметрами подзаголовка в боксах

Таблица команд для управления Subtitle в пакете tcolorbox

КомандаПолный синтаксисОписание и назначение
\tcbsubtitle\tcbsubtitle[⟨options⟩]{⟨text⟩}Добавляет подзаголовок внутри tcolorbox. Наследует стили родительского бокса, но может быть дополнительно настроен через ⟨options⟩.
subtitle style/tcb/subtitle style=⟨options⟩Задает стиль для всех подзаголовков (\tcbsubtitle) внутри бокса. Позволяет централизованно настроить оформление.

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

1. Базовый подзаголовок

\begin{tcolorbox}[title=Основной заголовок, colback=blue!5!white, colframe=blue!75!black]
   Основное содержимое.
   \tcbsubtitle{Первый подзаголовок}
   Текст под первым подзаголовком.
   \tcbsubtitle{Второй подзаголовок}
   Текст под вторым подзаголовком.
\end{tcolorbox}

2. Настройка стиля подзаголовков

\begin{tcolorbox}[
   title=Пример с subtitle style,
   colback=green!5!white,
   colframe=green!75!black,
   subtitle style={
      colback=yellow!20!white,
      colframe=red!50!black,
      fontupper=\bfseries,
      boxrule=1pt
   }
]
   Основной текст.
   \tcbsubtitle{Настроенный подзаголовок}
   Текст с кастомным оформлением.
\end{tcolorbox}

3. Локальная переопределение через ⟨options⟩

\begin{tcolorbox}[title=Локальные настройки, colback=purple!5!white]
   \tcbsubtitle[colback=orange!30!white, before skip=10pt]{Особый подзаголовок}
   Текст с увеличенным отступом сверху и оранжевым фоном.
\end{tcolorbox}

4 - Команды для Part

Управляет параметрами разделенных частей в боксах

Таблица команд для управления частями (Upper/Lower Part) в пакете tcolorbox

КомандаПолный синтаксисОписание и назначение
upperbox/tcb/upperbox=⟨mode⟩Управляет отображением верхней части бокса. Допустимые значения: visible (стандартное отображение), invisible (скрывает содержимое).
lowerbox/tcb/lowerbox=⟨mode⟩Управляет отображением нижней части (после \tcblower). Аналогично upperbox.
visible/tcb/visibleСокращение для upperbox=visible, lowerbox=visible, titlebox=visible.
invisible/tcb/invisibleСокращение для upperbox=invisible, lowerbox=invisible, titlebox=invisible.
saveto/tcb/saveto=⟨file name⟩Сохраняет весь контент бокса (включая нижнюю часть, если есть) в указанный файл. Несовместимо с savelowerto/redirectlowerto.
savelowerto/tcb/savelowerto=⟨file name⟩Сохраняет только нижнюю часть (после \tcblower) в файл.
redirectlowerto/tcb/redirectlowerto=⟨file name⟩Перенаправляет нижнюю часть в файл (без отображения в документе).

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

1. Управление видимостью частей

\begin{tcolorbox}[upperbox=invisible, colback=white]
  Этот текст не виден (верхняя часть скрыта).
\end{tcolorbox}

\begin{tcolorbox}[lowerbox=invisible, colback=white]
  Виден только верх.
  \tcblower
  Нижняя часть скрыта.
\end{tcolorbox}

Результат:

  • Первый бокс: пустое пространство (верх скрыт).
  • Второй бокс: отображается только текст до \tcblower.

2. Сокращенные команды visible/invisible

\begin{tcolorbox}[invisible, title=Скрытый бокс]
  Весь контент (включая заголовок) не виден.
  \tcblower
  Нижняя часть тоже скрыта.
\end{tcolorbox}

Результат: Пустое место (все части скрыты).


3. Сохранение контента в файл

\begin{tcolorbox}[saveto=mybox.tex, title=Сохраненный бокс]
  Верхняя часть.
  \tcblower
  Нижняя часть.
\end{tcolorbox}

Загружаем сохраненное: 
\input{mybox.tex}

Результат:

  • В документе отображается оригинальный бокс.
  • Содержимое сохранено в mybox.tex и может быть повторно загружено через \input.

4. Работа с нижней частью

\begin{tcolorbox}[savelowerto=lower.tex]
  Верхняя часть (отображается).
  \tcblower
  Нижняя часть (сохраняется в файл).
\end{tcolorbox}

Результат:

  • В документе видна только верхняя часть.
  • Нижняя часть сохранена в lower.tex.

Важные нюансы:

  1. Разделение частей:

    • Верхняя часть обязательна, нижняя — опциональна (активируется \tcblower).
    • Без \tcblower весь контент считается верхней частью.
  2. Совместимость:

    • saveto нельзя использовать с savelowerto или redirectlowerto.
  3. Применение:

    • invisible полезен для скрытия контента (например, при сохранении в файл без отображения).
    • savelowerto удобен для извлечения доп. материалов (решений задач, примечаний).

5 - Команды для Lower Part

Управляет параметрами нижней части lower part в боксах

Таблица команд для управления нижней частью (Lower Part) в пакете tcolorbox

КомандаПолный синтаксисОписание и назначение
lowerbox/tcb/lowerbox=⟨mode⟩Управляет отображением нижней части. Допустимые значения: visible (стандартное отображение), invisible (скрывает содержимое, оставляя пустое место), ignored (полностью игнорирует нижнюю часть).
savelowerto/tcb/savelowerto=⟨file name⟩Сохраняет содержимое нижней части в указанный файл для последующего использования. Несовместимо с saveto.
redirectlowerto/tcb/redirectlowerto=⟨file name⟩Комбинация savelowerto и lowerbox=ignored. Сохраняет нижнюю часть в файл, но не отображает её в документе. Полезно для работы с счётчиками.
lower separated`/tcb/lower separated=truefalse(по умолчаниюtrue`)
savedelimiter/tcb/savedelimiter=⟨name⟩Используется при создании новых окружений на основе tcolorbox для корректной работы с savelowerto или redirectlowerto. ⟨name⟩ должно совпадать с именем нового окружения.

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

1. Управление видимостью нижней части

\begin{tcolorbox}[lowerbox=invisible, colback=white]
  Верхняя часть (видна).
  \tcblower
  Нижняя часть (скрыта, но место остаётся).
\end{tcolorbox}

\begin{tcolorbox}[lowerbox=ignored, colback=white]
  Верхняя часть (видна).
  \tcblower
  Нижняя часть (полностью игнорируется).
\end{tcolorbox}

Результат:

  • Первый бокс: нижняя часть скрыта, но занимает место.
  • Второй бокс: нижняя часть отсутствует.

2. Сохранение нижней части в файл

\begin{tcolorbox}[savelowerto=lower_content.tex, lowerbox=invisible]
  Верхняя часть.
  \tcblower
  Нижняя часть (сохранена в файл).
\end{tcolorbox}

Загружаем сохранённое: 
\input{lower_content.tex}

Результат:

  • В документе отображается только верхняя часть.
  • Нижняя часть сохранена в lower_content.tex и может быть загружена через \input.

3. Перенаправление нижней части без отображения

\setcounter{enumi}{1}
Значение счётчика: \theenumi

\begin{tcolorbox}[redirectlowerto=counter_example.tex]
  Верхняя часть.
  \tcblower
  Нижняя часть. \stepcounter{enumi} Новое значение: \theenumi.
\end{tcolorbox}

Загружаем: 
\input{counter_example.tex}

Результат:

  • В документе: отображается только верхняя часть, счётчик не изменён.
  • В файле counter_example.tex: сохранён текст нижней части с обновлённым счётчиком.

4. Визуальное разделение частей

\begin{tcolorbox}[title=Разделённые части, lower separated=true]
  Верхняя часть.
  \tcblower
  Нижняя часть (визуально отделена).
\end{tcolorbox}

\begin{tcolorbox}[title=Неразделённые части, lower separated=false]
  Верхняя часть.
  \tcblower
  Нижняя часть (без разделения).
\end{tcolorbox}

Результат:

  • Первый бокс: части разделены линией (зависит от стиля).
  • Второй бокс: части сливаются.

5. Создание пользовательского окружения с сохранением

\newtcolorbox{mybox}[1]{%
  savelowerto=#1, lowerbox=ignored,
  colback=blue!5!white, colframe=blue!75!black,
  title=Мой бокс
}

\begin{mybox}{saved_part.tex}
  Верхняя часть.
  \tcblower
  Сохранённая нижняя часть.
\end{mybox}

Используем сохранённое: 
\input{saved_part.tex}

Результат:

  • В документе: только верхняя часть с заголовком “Мой бокс”.
  • В файле saved_part.tex: сохранена нижняя часть.

Ключевые особенности:

  1. Гибкость:

    • lowerbox=ignored полностью исключает нижнюю часть из обработки, что полезно для оптимизации.
    • redirectlowerto позволяет сохранять контент без побочных эффектов (например, изменения счётчиков).
  2. Совместимость:

    • savelowerto и redirectlowerto нельзя использовать вместе с saveto.
  3. Дизайн:

    • Разделение частей (lower separated) можно настроить для разных стилей (например, beamer или raster).

6 - Команды для Color и Font

Управляет параметрами цвета и шрифтов текста и заголовков в боксах

Таблица управления цветами и шрифтами в tcolorbox

Основные параметры цвета

ПараметрСинтаксисОписаниеПример
colframe/tcb/colframe=⟨color⟩Цвет рамки бокса. По умолчанию: black!75!white.colframe=red
colback/tcb/colback=⟨color⟩Цвет фона содержимого бокса. По умолчанию: black!5!white.colback=blue!10
colbacktitle/tcb/colbacktitle=⟨color⟩Цвет фона заголовка. По умолчанию: black!50!white.colbacktitle=green!20
colupper/tcb/colupper=⟨color⟩Цвет текста верхней части. По умолчанию: black.colupper=red!50
collower/tcb/collower=⟨color⟩Цвет текста нижней части. По умолчанию: black.collower=blue!50
coltext/tcb/coltext=⟨color⟩Устанавливает одинаковый цвет текста для верхней и нижней части.coltext=purple
coltitle/tcb/coltitle=⟨color⟩Цвет текста заголовка. По умолчанию: white.coltitle=yellow

Управление отображением заголовка

ПараметрСинтаксисОписаниеПример
title filled`/tcb/title filled=truefalse`Включает/отключает заливку фона заголовка. По умолчанию: false.

Параметры шрифтов

ПараметрСинтаксисОписаниеПример
fontupper/tcb/fontupper=⟨text⟩Устанавливает шрифт для верхней части.fontupper=\bfseries
fontlower/tcb/fontlower=⟨text⟩Устанавливает шрифт для нижней части.fontlower=\itshape
fonttitle/tcb/fonttitle=⟨text⟩Устанавливает шрифт для заголовка.fonttitle=\sffamily

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

1. Настройка цветов

\begin{tcolorbox}[colframe=red, colback=yellow!10, colbacktitle=blue!20, coltitle=white, title=Цветной бокс]
  Это пример цветного tcolorbox.
  \tcblower
  Нижняя часть с другим цветом текста.
\end{tcolorbox}

2. Управление шрифтами

\begin{tcolorbox}[fonttitle=\sffamily\bfseries\large, fontupper=\itshape, fontlower=\bfseries, title=Шрифты]
  Верхняя часть курсивом.
  \tcblower
  Нижняя часть жирным.
\end{tcolorbox}

3. Комбинированный пример

\begin{tcolorbox}[
  colframe=green!50!black,
  colback=green!10,
  colbacktitle=green!40,
  coltitle=white,
  fonttitle=\bfseries,
  title filled=true,
  title=Комбинированный пример,
  fontupper=\small,
  collower=red
]
  Верхняя часть мелким шрифтом.
  \tcblower
  Нижняя часть красным цветом.
\end{tcolorbox}

Особенности:

  1. Все цветовые параметры поддерживают стандартные цветовые модели LaTeX (например, red!50!white).
  2. Для шрифтов можно использовать любые стандартные команды изменения шрифта (\bfseries, \itshape и т.д.).
  3. Параметр title filled автоматически активируется при установке colbacktitle или других связанных с заголовком параметров.
  4. coltext удобен для установки единого цвета текста во всем боксе, тогда как colupper и collower позволяют дифференцировать части.

7 - Команды для выравнивания текста

Управляет параметрами выравнивания текста в боксах

Таблица управления выравниванием текста в tcolorbox

Горизонтальное выравнивание

ПараметрСинтаксисДопустимые значенияОписаниеПример
halign / halign upper/tcb/halign=⟨alignment⟩justify, left, flush left, right, flush right, center, flush centerВыравнивание верхней части (или всего содержимого, если нет нижней части)halign=flush center
halign lower/tcb/halign lower=⟨alignment⟩те же, что для halignВыравнивание нижней частиhalign lower=right
halign title/tcb/halign title=⟨alignment⟩те же, что для halignВыравнивание заголовкаhalign title=center
halign code / halign upper code/tcb/halign code={⟨code⟩}произвольный LaTeX-кодПроизвольное выравнивание верхней частиhalign code={\raggedright}
halign lower code/tcb/halign lower code={⟨code⟩}произвольный LaTeX-кодПроизвольное выравнивание нижней частиhalign lower code={\centering}
halign title code/tcb/halign title code={⟨code⟩}произвольный LaTeX-кодПроизвольное выравнивание заголовкаhalign title code={\raggedleft}

Вертикальное выравнивание

ПараметрСинтаксисДопустимые значенияОписаниеПример
valign / valign upper/tcb/valign=⟨alignment⟩top, center, bottom, scale, scale*Вертикальное выравнивание верхней частиvalign=center
valign lower/tcb/valign lower=⟨alignment⟩те же, что для valignВертикальное выравнивание нижней частиvalign lower=bottom
valign scale limit/tcb/valign scale limit=⟨real⟩число (по умолчанию 1.1)Максимальный коэффициент масштабирования для scale*valign scale limit=1.5

Сокращённые команды

КомандаЭквивалентОписание
flushleft upperhalign=flush leftВыравнивание верхней части по левому краю
center upperhalign=flush centerВыравнивание верхней части по центру
flushright upperhalign=flush rightВыравнивание верхней части по правому краю
flushleft lowerhalign lower=flush leftВыравнивание нижней части по левому краю
center lowerhalign lower=flush centerВыравнивание нижней части по центру
flushright lowerhalign lower=flush rightВыравнивание нижней части по правому краю
flushleft titlehalign title=flush leftВыравнивание заголовка по левому краю
center titlehalign title=flush centerВыравнивание заголовка по центру
flushright titlehalign title=flush rightВыравнивание заголовка по правому краю

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

1. Горизонтальное выравнивание

\begin{tcolorbox}[halign=flush left, title=Пример выравнивания]
  Текст, выровненный по левому краю.
  \tcblower
  Нижняя часть с выравниванием по правому краю.
\end{tcolorbox}

2. Вертикальное выравнивание

\begin{tcolorbox}[valign=center, height=4cm]
  Текст, выровненный по центру по вертикали.
\end{tcolorbox}

3. Выравнивание заголовка

\begin{tcolorbox}[halign title=center, title=Центрированный заголовок]
  Содержимое бокса.
\end{tcolorbox}

Особенности:

  1. Разница между flush и не-flush версиями:

    • flush версии используют стандартные LaTeX-команды (\raggedright, \centering, \raggedleft)
    • Не-flush версии реализованы через TikZ и могут давать более сбалансированное расположение с переносами
  2. Вертикальное выравнивание имеет смысл только при явно заданной высоте бокса

  3. Параметры scale и scale* масштабируют текст по вертикали, что может быть полезно для точного заполнения пространства

8 - Команды для управления размерами и отступами в боксах

Управляет параметрами размеров боксов и рамок в боксах

Управление геометрией в tcolorbox

4.7.1 Ширина (Width)

КомандаСинтаксисОписаниеПример
width/tcb/width=⟨length⟩Устанавливает общую ширину боксаwidth=\linewidth/2
text width/tcb/text width=⟨length⟩Устанавливает ширину текста в верхней частиtext width=4cm
add to width/tcb/add to width=⟨length⟩Добавляет значение к текущей ширине боксаadd to width=1cm

4.7.2 Границы (Rules)

КомандаСинтаксисОписаниеПример
toprule/tcb/toprule=⟨length⟩Толщина верхней границыtoprule=3mm
bottomrule/tcb/bottomrule=⟨length⟩Толщина нижней границыbottomrule=3mm
leftrule/tcb/leftrule=⟨length⟩Толщина левой границыleftrule=3mm
rightrule/tcb/rightrule=⟨length⟩Толщина правой границыrightrule=3mm
titlerule/tcb/titlerule=⟨length⟩Толщина линии под заголовкомtitlerule=3mm
boxrule/tcb/boxrule=⟨length⟩Устанавливает толщину всех границboxrule=3mm

4.7.3 Скругления (Arcs)

КомандаСинтаксисОписаниеПример
arc/tcb/arc=⟨length⟩Радиус скругления угловarc=3mm
circular arc/tcb/circular arcДелает бокс круглым (при равных ширине и высоте)circular arc
bean arc/tcb/bean arcАвтоматический радиус скругленияbean arc
octogon arc/tcb/octogon arcСоздает восьмиугольникoctogon arc
arc is angular/tcb/arc is angularЗаменяет скругления на углыarc is angular
arc is curved/tcb/arc is curvedВосстанавливает скругления (по умолчанию)arc is curved
outer arc/tcb/outer arc=⟨length⟩Внешний радиус скругленияouter arc=1mm
auto outer arc/tcb/auto outer arcАвтоматический внешний радиусauto outer arc

4.7.4 Отступы (Spacing)

КомандаСинтаксисОписаниеПример
boxsep/tcb/boxsep=⟨length⟩Общий внутренний отступboxsep=5mm
left/tcb/left=⟨length⟩Левый отступ для всех частейleft=0mm
left*/tcb/left*=⟨length⟩Левый отступ от границыleft*=0mm
lefttitle/tcb/lefttitle=⟨length⟩Левый отступ заголовкаlefttitle=3cm
leftupper/tcb/leftupper=⟨length⟩Левый отступ верхней частиleftupper=3cm
leftlower/tcb/leftlower=⟨length⟩Левый отступ нижней частиleftlower=3cm
right/tcb/right=⟨length⟩Правый отступ для всех частейright=2cm
right*/tcb/right*=⟨length⟩Правый отступ от границыright*=0mm
righttitle/tcb/righttitle=⟨length⟩Правый отступ заголовкаrighttitle=2cm
rightupper/tcb/rightupper=⟨length⟩Правый отступ верхней частиrightupper=2cm
rightlower/tcb/rightlower=⟨length⟩Правый отступ нижней частиrightlower=2cm
top/tcb/top=⟨length⟩Верхний отступtop=0mm
toptitle/tcb/toptitle=⟨length⟩Верхний отступ заголовкаtoptitle=3mm
bottom/tcb/bottom=⟨length⟩Нижний отступbottom=0mm
bottomtitle/tcb/bottomtitle=⟨length⟩Нижний отступ заголовкаbottomtitle=3mm
middle/tcb/middle=⟨length⟩Отступ между частямиmiddle=0mm

4.7.5 Размеры (Size Shortcuts)

КомандаСинтаксисОписаниеПример
size/tcb/size=⟨name⟩Предустановленные размеры: normal, title, small, fbox, tight, minimalsize=small
oversize/tcb/oversize=⟨length⟩Расширяет ширину за пределы страницыoversize

4.7.6 Переключение сторон (Toggle Left and Right)

КомандаСинтаксисОписаниеПример
toggle left and right/tcb/toggle left and right=⟨toggle preset⟩Переключает левую и правую стороны (none, forced, evenpage)toggle left and right=evenpage

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

Настройка ширины

\begin{tcolorbox}[width=0.5\linewidth, text width=4cm]
  Бокс с ограниченной шириной текста
\end{tcolorbox}

Границы и скругления

\begin{tcolorbox}[
  boxrule=2mm,
  arc=5mm,
  arc is angular,
  toprule=3mm,
  bottomrule=1mm
]
  Бокс с нестандартными границами
\end{tcolorbox}

Отступы

\begin{tcolorbox}[
  boxsep=2mm,
  left=1cm,
  right*=0mm,
  toptitle=5mm
]
  Бокс с кастомными отступами
\end{tcolorbox}

Размеры

\begin{tcolorbox}[size=small, oversize]
  Компактный бокс, расширенный за поля
\end{tcolorbox}

Переключение сторон

\begin{tcolorbox}[
  toggle left and right=evenpage,
  leftrule=1cm,
  rightrule=1mm
]
  Бокс с переключением границ на четных страницах
\end{tcolorbox}

9 - Команды для управления параметрами углов в боксах

Управляет параметрами углов в боксах

Управление углами (Corners) в tcolorbox

Основные команды для работы с углами

КомандаСинтаксисДопустимые значенияОписаниеПример
sharp corners/tcb/sharp corners=⟨position⟩northwest, northeast, southwest, southeast, north, south, east, west, downhill, uphill, allДелает указанные углы острымиsharp corners=northwest
rounded corners/tcb/rounded corners=⟨position⟩Те же, что для sharp cornersДелает указанные углы скругленными (по умолчанию)rounded corners=all
sharpish corners/tcb/sharpish corners-Делает углы визуально острыми (технически остаются скругленными)sharpish corners

Особенности работы с углами:

  1. По умолчанию все углы скруглены (rounded corners=all)
  2. sharpish corners - это компромиссный вариант, когда углы выглядят острыми, но технически остаются скругленными (влияет на тени и границы)
  3. Можно комбинировать разные типы углов в одном боксе

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

1. Острые углы

\begin{tcolorbox}[
  colback=white,
  colframe=blue,
  sharp corners=northwest,  % только северо-западный угол острый
  title=Бокс с острым углом
]
Содержимое бокса
\end{tcolorbox}

2. Полностью острый бокс

\begin{tcolorbox}[
  colback=white,
  colframe=red,
  sharp corners,  % все углы острые
  title=Полностью острый бокс
]
Содержимое бокса
\end{tcolorbox}

3. Комбинирование углов

\begin{tcolorbox}[
  colback=white,
  colframe=green,
  sharp corners=north,  % верхние углы острые
  rounded corners=south,  % нижние углы скругленные
  title=Комбинированный бокс
]
Содержимое бокса
\end{tcolorbox}

4. Sharpish corners

\begin{tcolorbox}[
  colback=white,
  colframe=purple,
  sharpish corners,  # углы выглядят острыми
  title=Бокс с sharpish corners
]
Содержимое бокса
\end{tcolorbox}

Визуальные различия:

  1. Обычные скругленные углы (rounded corners):

    • Плавные изгибы
    • Тени и границы полностью повторяют форму
  2. Sharpish corners:

    • Углы выглядят почти острыми
    • Тени и границы слегка скруглены
  3. Полностью острые углы (sharp corners):

    • Четкие прямые углы
    • Тени и границы имеют острые края

Советы по использованию:

  1. Для большинства случаев достаточно sharp corners или rounded corners
  2. Используйте sharpish corners, если нужен компромисс между внешним видом и поведением теней
  3. Можно точечно менять отдельные углы для создания уникальных дизайнов
  4. Настройки углов влияют на:
    • Основную рамку бокса
    • Границы (borderline)
    • Тени (shadow)

10 - Команды для управления прозрачностью в боксах

Управляет параметрами прозрачности в боксах

Таблица управления прозрачностью в tcolorbox

Основные параметры прозрачности

ПараметрСинтаксисОписаниеДиапазон значенийПример
opacityframe/tcb/opacityframe=⟨fraction⟩Прозрачность рамки0.0 (полная прозрачность) - 1.0 (непрозрачный)opacityframe=0.5
opacityback/tcb/opacityback=⟨fraction⟩Прозрачность фона содержимого0.0-1.0opacityback=0.3
opacitybacktitle/tcb/opacitybacktitle=⟨fraction⟩Прозрачность фона заголовка0.0-1.0opacitybacktitle=0.7
opacityfill/tcb/opacityfill=⟨fraction⟩Прозрачность заливки (рамка + фон + заголовок)0.0-1.0opacityfill=0.6
opacityupper/tcb/opacityupper=⟨fraction⟩Прозрачность текста верхней части0.0-1.0opacityupper=0.4
opacitylower/tcb/opacitylower=⟨fraction⟩Прозрачность текста нижней части0.0-1.0opacitylower=0.8
opacitytext/tcb/opacitytext=⟨fraction⟩Прозрачность всего текста (верх + низ)0.0-1.0opacitytext=0.5
opacitytitle/tcb/opacitytitle=⟨fraction⟩Прозрачность текста заголовка0.0-1.0opacitytitle=0.9

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

1. Полупрозрачная рамка и фон

\begin{tcolorbox}[
  colframe=blue,
  colback=white,
  opacityframe=0.3,
  opacityback=0.7,
  title=Пример прозрачности
]
Этот бокс имеет полупрозрачную рамку и фон
\end{tcolorbox}

2. Прозрачный заголовок

\begin{tcolorbox}[
  colframe=red,
  colbacktitle=yellow,
  opacitybacktitle=0.5,
  opacitytitle=0.8,
  title=Прозрачный заголовок
]
Текст содержимого
\end{tcolorbox}

3. Разная прозрачность частей

\begin{tcolorbox}[
  opacityupper=0.9,
  opacitylower=0.5,
  opacityframe=0.6,
  opacityback=0.8
]
Верхний текст более непрозрачный
\tcblower
Нижний текст более прозрачный
\end{tcolorbox}

4. Комплексный пример с jigsaw-скином

\begin{tcolorbox}[
  enhanced jigsaw,
  colframe=green!75!black,
  colback=green!10!white,
  opacityframe=0.4,
  opacityback=0.6,
  opacitybacktitle=0.8,
  opacitytitle=1.0,
  title=Сложный пример
]
Бокс с различными настройками прозрачности
\end{tcolorbox}

Особенности работы с прозрачностью:

  1. Визуальные эффекты:

    • Значение 0.0 делает элемент полностью невидимым
    • Значение 1.0 - полностью непрозрачным
    • Промежуточные значения создают эффект просвечивания
  2. Рекомендации:

    • Для лучшего визуального восприятия используйте значения в диапазоне 0.3-0.8
    • Прозрачность особенно эффектна при наложении элементов или использовании фоновых изображений
    • В сочетании с jigsaw-скинами можно создавать интересные дизайнерские решения
  3. Технические ограничения:

    • Прозрачность может по-разному отображаться в различных PDF-ридерах
    • При печати эффекты прозрачности могут не сохраняться в зависимости от принтера
  4. Комбинации:

    • Можно комбинировать несколько параметров прозрачности для одного бокса
    • Эффекты прозрачности суммируются при наложении элементов

Эти параметры позволяют создавать сложные визуальные эффекты и гибко управлять внешним видом элементов tcolorbox.

11 - Команды для управления высотой боксов

Управляет параметрами высоты боксов

Управление высотой в tcolorbox

Основные параметры высоты

ПараметрСинтаксисОписаниеПример
natural height/tcb/natural heightЕстественная высота по содержимомуnatural height
height/tcb/height=⟨length⟩Фиксированная высота боксаheight=3cm
height plus/tcb/height plus=⟨length⟩Максимальное увеличение высотыheight plus=1cm
height from/tcb/height from=⟨min⟩ to ⟨max⟩Диапазон высотheight from=2cm to 5cm
text height/tcb/text height=⟨length⟩Высота текстовой областиtext height=4cm
add to height/tcb/add to height=⟨length⟩Добавление к текущей высотеadd to height=0.5cm
add to natural height/tcb/add to natural height=⟨length⟩Добавление к естественной высотеadd to natural height=1cm
height fill/tcb/height fill=true|false|maximumЗаполнение оставшегося пространстваheight fill=true
inherit height/tcb/inherit height=⟨fraction⟩Наследование высоты от родителяinherit height=0.8
square/tcb/squareКвадратный бокс (высота=ширине)square

Распределение пространства

ПараметрСинтаксисОписаниеПример
space/tcb/space=⟨fraction⟩Распределение пространства (0-1)space=0.3
space to upper/tcb/space to upperВсе пространство в верхнюю частьspace to upper
space to lower/tcb/space to lowerВсе пространство в нижнюю частьspace to lower
space to both/tcb/space to bothРавное распределениеspace to both
space to/tcb/space to=⟨macro⟩Сохранение пространства в макросspace to=\myspace
split/tcb/split=⟨fraction⟩Позиция разделителя (0-1)split=0.7

Группы высот

ПараметрСинтаксисОписаниеПример
equal height group/tcb/equal height group=⟨id⟩Группа с одинаковой высотойequal height group=A
minimum for equal height group/tcb/minimum for equal height group=⟨id⟩:⟨length⟩Минимальная высота группыminimum for equal height group=A:3cm
minimum for current equal height group/tcb/minimum for current equal height group=⟨length⟩Минимальная высота текущей группыminimum for current equal height group=2cm
use height from group/tcb/use height from group=⟨id⟩Использование высоты группыuse height from group=A
\tcbheightfromgroup\tcbheightfromgroup{⟨macro⟩}{⟨id⟩}Получение высоты группы\tcbheightfromgroup{\myheight}{A}

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

1. Фиксированная высота

\begin{tcolorbox}[height=4cm, valign=center]
  Бокс с фиксированной высотой 4cm
\end{tcolorbox}

2. Автоматическое выравнивание высоты

\begin{tcolorbox}[equal height group=A]
  Первый бокс
\end{tcolorbox}
\begin{tcolorbox}[equal height group=A]
  Второй бокс с большим количеством текста, который делает высоту больше
\end{tcolorbox}

3. Заполнение пространства

\begin{tcolorbox}[height fill]
  Бокс заполнит все доступное вертикальное пространство
\end{tcolorbox}

4. Квадратный бокс

\begin{tcolorbox}[width=3cm, square]
  Квадратный бокс 3x3cm
\end{tcolorbox}

5. Наследование высоты

\begin{tcolorbox}[height=5cm]
  \begin{tcolorbox}[inherit height=0.5]
    Бокс с половиной высоты родителя
  \end{tcolorbox}
\end{tcolorbox}

Особенности работы с высотой:

  1. Для работы некоторых параметров (height fill) требуется библиотека breakable
  2. Параметры групп высот требуют двойной компиляции
  3. natural height - это высота по умолчанию, рассчитываемая автоматически
  4. При использовании equal height group все боксы в группе получают высоту самого высокого бокса
  5. height plus позволяет задать максимально возможное увеличение высоты при необходимости

12 - Команды для добавления различного контента в боксы

Управляет добавлением различного контента в боксы

Управление содержимым бокса в tcolorbox

Добавление контента в различные части бокса

ПараметрСинтаксисОписаниеПример
before title/tcb/before title=⟨code⟩Код перед заголовком (с \ignorespaces)before title={\textbf{Важно:}~}
before title*/tcb/before title*=⟨code⟩Код перед заголовком (без \ignorespaces)before title*={\textbf{Важно:}}
after title/tcb/after title=⟨code⟩Код после заголовка (с \unskip)after title={\hfill\small[подпись]}
after title*/tcb/after title*=⟨code⟩Код после заголовка (без \unskip)after title*={\quad[подпись]}
before upper/tcb/before upper=⟨code⟩Код перед верхней частью (с \ignorespaces)before upper={\begin{quote}}
before upper*/tcb/before upper*=⟨code⟩Код перед верхней частью (без \ignorespaces)before upper*=\begin{tabular}
after upper/tcb/after upper=⟨code⟩Код после верхней части (с \unskip)after upper={\end{quote}}
after upper*/tcb/after upper*=⟨code⟩Код после верхней части (без \unskip)after upper*=\end{tabular}
before lower/tcb/before lower=⟨code⟩Код перед нижней частью (с \ignorespaces)before lower={\textbf{Примечание:}}
before lower*/tcb/before lower*=⟨code⟩Код перед нижней частью (без \ignorespaces)before lower*=\begin{itemize}
after lower/tcb/after lower=⟨code⟩Код после нижней части (с \unskip)after lower={\hfill\footnotesize*}
after lower*/tcb/after lower*=⟨code⟩Код после нижней части (без \unskip)after lower*=\end{itemize}

Специальные окружения для контента

ПараметрСинтаксисОписаниеПример
text fill/tcb/text fillВключает minipage для вертикального выравниванияtext fill
tabulars/tcb/tabulars=⟨preamble⟩Окружает контент tabular*tabulars={lcr}
tabulars*/tcb/tabulars*={⟨code⟩}{⟨preamble⟩}Tabular* с дополнительным кодомtabulars*={\small}{lcr}
tabularx/tcb/tabularx=⟨preamble⟩Окружает контент tabularx`tabularx={X
tabularx*/tcb/tabularx*={⟨code⟩}{⟨preamble⟩}Tabularx с дополнительным кодом`tabularx*={\footnotesize}{X
tikz upper/tcb/tikz upper=⟨options⟩Окружает верхнюю часть tikzpicturetikz upper={scale=0.5}
tikz lower/tcb/tikz lower=⟨options⟩Окружает нижнюю часть tikzpicturetikz lower={rotate=30}
tikznode upper/tcb/tikznode upper=⟨options⟩Помещает контент в TikZ nodetikznode upper={draw}
tikznode lower/tcb/tikznode lower=⟨options⟩Помещает нижнюю часть в TikZ nodetikznode lower={fill=yellow}
tikznode/tcb/tikznode=⟨options⟩Применяет tikznode к обеим частямtikznode={shape=circle}
varwidth upper/tcb/varwidth upper=⟨length⟩Окружает varwidth окружениемvarwidth upper=5cm
environment upper/tcb/environment upper=⟨name⟩Окружает верхнюю часть указанным окружениемenvironment upper=itemize
environment upper args/tcb/environment upper args={⟨name⟩}{⟨code⟩}Окружение с дополнительными параметрамиenvironment upper args={tabular}{{cc}}
environment lower/tcb/environment lower=⟨name⟩Окружает нижнюю часть указанным окружениемenvironment lower=enumerate
environment lower args/tcb/environment lower args={⟨name⟩}{⟨code⟩}Окружение с дополнительными параметрамиenvironment lower args={tabular}{{lr}}
environment title/tcb/environment title=⟨name⟩Окружает заголовок указанным окружениемenvironment title=center
environment title args/tcb/environment title args={⟨name⟩}{⟨code⟩}Окружение с дополнительными параметрамиenvironment title args={flushright}{}

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

1. Добавление текста вокруг содержимого

\begin{tcolorbox}[
  before title={\textbf{Внимание:}~},
  after title={\hfill\footnotesize[источник]},
  before upper={\textit{Начало текста:}\par},
  after upper={\par\hfill\textit{окончание}}
]
  Заголовок
  \tcblower
  Основное содержимое бокса
\end{tcolorbox}

2. Использование окружений

\begin{tcolorbox}[
  environment upper=itemize,
  environment lower args={tabular}{{ll}}
  \item Первый пункт
  \item Второй пункт
  \tcblower
  A & B \\
  C & D
\end{tcolorbox}

3. Таблицы в боксе

\begin{tcolorbox}[
  tabulars={|l|c|r|},
  title=Таблица в боксе
]
  Левый & Центр & Правый \\
  A & B & C
\end{tcolorbox}

4. TikZ рисунки

\begin{tcolorbox}[
  tikz upper={scale=0.8},
  title=TikZ рисунок
]
  \draw (0,0) circle (1cm);
  \fill (0,0) circle (2pt);
\end{tcolorbox}

Особенности работы:

  1. Параметры с * (например, before upper*) не добавляют автоматические пробелы (\ignorespaces/\unskip)
  2. Для работы tabulars/tabularx требуются соответствующие пакеты
  3. text fill полезен для вертикального выравнивания с \vfill
  4. TikZ-окружения позволяют легко встраивать графику
  5. Окружения environment не работают с другими tcolorbox-окружениями

13 - Команды для упрвления слоями в боксах

Управляет слоями в боксах, наложение друг на друга и т.д.

Управление наложениями (Overlays) в tcolorbox

Основные параметры наложений

ПараметрСинтаксисОписаниеПример
overlay/tcb/overlay=⟨graphical code⟩Графическое наложение для всех состояний боксаoverlay={\draw[red] (frame.south west) rectangle (frame.north east);}
no overlay/tcb/no overlayОтключает все наложенияno overlay
overlay broken/tcb/overlay broken=⟨graphical code⟩Наложение только для разорванных боксовoverlay broken={\draw[dashed] (frame.south west) -- (frame.north east);}
overlay unbroken/tcb/overlay unbroken=⟨graphical code⟩Наложение только для целых боксовoverlay unbroken={\fill[yellow] (frame.center) circle (5mm);}
overlay first/tcb/overlay first=⟨graphical code⟩Наложение для первой части разорванного боксаoverlay first={\node at (frame.center) {First};}
overlay middle/tcb/overlay middle=⟨graphical code⟩Наложение для средних частей разорванного боксаoverlay middle={\node at (frame.center) {Middle};}
overlay last/tcb/overlay last=⟨graphical code⟩Наложение для последней части разорванного боксаoverlay last={\node at (frame.center) {Last};}

Комбинированные параметры

ПараметрСинтаксисОписаниеПример
overlay unbroken and first/tcb/overlay unbroken and first=⟨graphical code⟩Комбинация unbroken и firstoverlay unbroken and first={\draw[blue] (frame.south west) -- (frame.north east);}
overlay middle and last/tcb/overlay middle and last=⟨graphical code⟩Комбинация middle и lastoverlay middle and last={\draw[green] (frame.south west) -- (frame.north east);}
overlay unbroken and last/tcb/overlay unbroken and last=⟨graphical code⟩Комбинация unbroken и lastoverlay unbroken and last={\draw[red] (frame.south west) -- (frame.north east);}
overlay first and middle/tcb/overlay first and middle=⟨graphical code⟩Комбинация first и middleoverlay first and middle={\draw[yellow] (frame.south west) -- (frame.north east);}

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

1. Простое наложение

\begin{tcolorbox}[
  enhanced,
  overlay={\draw[red, line width=2pt] (frame.south west) rectangle (frame.north east);},
  title=Пример с наложением
]
Содержимое бокса с красной рамкой
\end{tcolorbox}

2. Наложение для разорванных боксов

\begin{tcolorbox}[
  breakable,
  overlay first={\node[rotate=45] at (frame.center) {Начало};},
  overlay middle={\node[rotate=45] at (frame.center) {Продолжение};},
  overlay last={\node[rotate=45] at (frame.center) {Конец};},
  title=Разорванный бокс
]
Много текста, который будет разорван на несколько частей...
\end{tcolorbox}

3. Комбинированное наложение

\begin{tcolorbox}[
  enhanced,
  overlay unbroken and first={\fill[yellow!50] (frame.north west) rectangle ([xshift=2cm]frame.north east);},
  title=Комбинированный пример
]
Содержимое бокса с желтой полосой вверху для unbroken/first состояний
\end{tcolorbox}

4. Водяной знак

\begin{tcolorbox}[
  enhanced,
  overlay={\node[rotate=45,scale=10,text=gray!20] at (frame.center) {ЧЕРНОВИК};},
  title=Документ с водяным знаком
]
Текст документа с полупрозрачным водяным знаком
\end{tcolorbox}

Особенности работы с наложениями:

  1. Для сложных наложений рекомендуется использовать enhanced режим из библиотеки skins
  2. Наложения применяются после рисования рамки и фона, но перед отображением текста
  3. Для позиционирования элементов можно использовать узлы геометрии (frame.north west, title.south и т.д.)
  4. При работе с разорванными боксами (breakable) можно задавать разные наложения для разных частей
  5. Наложения могут содержать любые допустимые TikZ-команды

Советы:

  1. Используйте overlay для элементов, которые должны отображаться всегда
  2. Для разорванных боксов применяйте overlay first/middle/last для разных частей
  3. Комбинированные параметры (unbroken and first и т.д.) помогают избежать дублирования кода
  4. Для сложных графических элементов создавайте стили с наложениями и переиспользуйте их

14 - Команды для управления плавающими объектами боксов

Управляет плавающими боксами на странице

Управление плавающими объектами (Floating Objects) в tcolorbox

Основные параметры плавающих объектов

ПараметрСинтаксисОписаниеПример
floatplacement/tcb/floatplacement=⟨values⟩Устанавливает параметры размещения по умолчаниюfloatplacement=tbp
float/tcb/float=⟨values⟩Превращает бокс в плавающий объектfloat=ht
float*/tcb/float*=⟨values⟩Плавающий объект на всю ширину страницыfloat*=b, width=\textwidth
nofloat/tcb/nofloatОтключает плавающее поведениеnofloat
every float/tcb/every float={⟨code⟩}Код, выполняемый перед каждым плавающим объектомevery float=\centering
before float/tcb/before float={⟨code⟩}Код перед началом float-окруженияbefore float=\small
after float/tcb/after float={⟨code⟩}Код после окончания float-окруженияafter float=\vspace{1cm}

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

1. Базовый плавающий бокс

\begin{tcolorbox}[
  float=htb,
  title=Пример плавающего бокса,
  colback=blue!5!white,
  colframe=blue!75!black
]
Этот бокс будет автоматически размещен в подходящем месте документа
(обычно вверху страницы, если возможно).
\end{tcolorbox}

2. Плавающий бокс на всю ширину

\begin{tcolorbox}[
  float*=t,
  width=\textwidth,
  title=Широкий плавающий бокс,
  colback=green!5!white,
  colframe=green!75!black
]
Этот бокс занимает всю ширину страницы и будет размещен вверху.
\end{tcolorbox}

3. Центрирование плавающих объектов

\begin{tcolorbox}[
  float,
  every float=\centering,
  title=Центрированный плавающий бокс,
  colback=red!5!white,
  colframe=red!75!black
]
Этот плавающий бокс будет центрирован на странице.
\end{tcolorbox}

4. Плавающий бокс с дополнительным кодом

\begin{tcolorbox}[
  float,
  before float={\small Начало float-окружения},
  after float={\vspace{5mm} Конец float-окружения},
  title=Бокс с дополнительным кодом,
  colback=yellow!5!white,
  colframe=yellow!75!black
]
Этот плавающий бокс имеет дополнительный код до и после.
\end{tcolorbox}

Особенности работы с плавающими объектами:

  1. Параметры размещения (для float и float*):

    • h - здесь (если возможно)
    • t - вверху страницы
    • b - внизу страницы
    • p - на отдельной странице
    • ! - принудительное размещение
  2. Различия между float и float*:

    • float работает как стандартное плавающее окружение
    • float* предназначен для:
      • Двухколоночных документов
      • Использования с пакетами multicol/paracol
      • Широких боксов (требует width=\textwidth)
  3. Отключение плавающего поведения:

    • Используйте nofloat для возврата к обычному поведению
  4. Особые случаи:

    • Для разрываемых боксов (breakable) every float выполняется перед каждой частью
    • before float и after float позволяют вставить код до/после float-окружения

Советы по использованию:

  1. Для изображений и широких таблиц лучше использовать float*
  2. Комбинация every float=\centering полезна для центрирования содержимого
  3. При использовании в двухколоночном режиме не забывайте указывать width=\textwidth
  4. Для точного контроля размещения используйте комбинации параметров (например, float=!b для принудительного размещения внизу)

15 - Команды для встраивания объектов и боксов в боксы (embedding)

Управляет встраиванием объектов в боксы

Управление встраиванием (Embedding) в tcolorbox

Основные параметры встраивания

ПараметрСинтаксисОписаниеПример
before/tcb/before=⟨code⟩Код, выполняемый перед боксомbefore={\par\medskip}
after/tcb/after=⟨code⟩Код, выполняемый после боксаafter={\par\medskip}
nobeforeafter/tcb/nobeforeafterОтключает пробелы до/после боксаnobeforeafter
force nobeforeafter/tcb/force nobeforeafterПринудительно отключает пробелыforce nobeforeafter

Вертикальные отступы

ПараметрСинтаксисОписаниеПример
before skip balanced/tcb/before skip balanced=⟨glue⟩Вертикальный отступ с учетом базовой линииbefore skip balanced=1cm
after skip balanced/tcb/after skip balanced=⟨glue⟩Вертикальный отступ после с базовой линиейafter skip balanced=1cm
beforeafter skip balanced/tcb/beforeafter skip balanced=⟨glue⟩Отступы до/после с базовой линиейbeforeafter skip balanced=0.5cm
before skip/tcb/before skip=⟨glue⟩Простой вертикальный отступ передbefore skip=10pt
after skip/tcb/after skip=⟨glue⟩Простой вертикальный отступ послеafter skip=10pt
beforeafter skip/tcb/beforeafter skip=⟨glue⟩Простые отступы до/послеbeforeafter skip=10pt

Горизонтальные отступы

ПараметрСинтаксисОписаниеПример
left skip/tcb/left skip=⟨length⟩Горизонтальный отступ слеваleft skip=1cm
right skip/tcb/right skip=⟨length⟩Горизонтальный отступ справаright skip=1cm
leftright skip/tcb/leftright skip=⟨length⟩Отступы слева и справаleftright skip=1cm

Выравнивание и позиционирование

ПараметрСинтаксисОписаниеПример
baseline/tcb/baseline=⟨length⟩Установка базовой линииbaseline=3mm
box align/tcb/box align=⟨alignment⟩Выравнивание бокса (bottom, top, center, base)box align=top

Особые параметры

ПараметрСинтаксисОписаниеПример
ignore nobreak`/tcb/ignore nobreak=truefalse`Игнорировать запрет разрыва после заголовка
before nobreak/tcb/before nobreak=⟨code⟩Код перед боксом при запрете разрываbefore nobreak={\noindent}
parfillskip restore`/tcb/parfillskip restore=truefalse`Восстанавливать значение \parfillskip

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

1. Базовые вертикальные отступы

\begin{tcolorbox}[
  before skip balanced=1cm,
  after skip balanced=0.5cm,
  colframe=blue
]
Бокс с кастомными отступами
\end{tcolorbox}

2. Горизонтальное позиционирование

\begin{tcolorbox}[
  left skip=2cm,
  right skip=1cm,
  colframe=red
]
Бокс со смещением по горизонтали
\end{tcolorbox}

3. Выравнивание по базовой линии

Текст \begin{tcolorbox}[nobeforeafter, box align=base, colframe=green]
Выровнено по базовой линии
\end{tcolorbox} продолжение текста

4. Интеграция в поток текста

\begin{tcolorbox}[
  nobeforeafter,
  box align=base,
  colback=yellow,
  colframe=orange
]
Встроенный в текст бокс
\end{tcolorbox} продолжение текста.

Особенности работы:

  1. Параметры *balanced учитывают базовую линию текста для более точного выравнивания
  2. nobeforeafter полностью убирает бокс из отдельного абзаца
  3. Для точного контроля вертикального положения используйте комбинацию baseline и box align
  4. Параметры с skip изменяют bounding box, что может влиять на общий макет

Советы:

  1. Для встраивания в текст используйте nobeforeafter + box align=base
  2. Для сложных макетов предпочтительнее *balanced версии отступов
  3. При работе с разрываемыми боксами учитывайте поведение ignore nobreak
  4. Для восстановления стандартного поведения \parfillskip используйте parfillskip restore

16 - Управление ограничивающей рамкой (Bounding Box) в tcolorbox

Управление ограничивающей рамкой (Bounding Box) в tcolorbox в различных вариациях

Управление ограничивающей рамкой (Bounding Box) в tcolorbox

Смещение границ ограничивающей рамки

ПараметрСинтаксисОписаниеПример
enlarge top initially by/tcb/enlarge top initially by=⟨length⟩Расширение верхней границы (только для первого бокса)enlarge top initially by=5mm
enlarge bottom finally by/tcb/enlarge bottom finally by=⟨length⟩Расширение нижней границы (только для последнего бокса)enlarge bottom finally by=5mm
enlarge top at break by/tcb/enlarge top at break by=⟨length⟩Расширение верхней границы для разорванных частейenlarge top at break by=3mm
enlarge bottom at break by/tcb/enlarge bottom at break by=⟨length⟩Расширение нижней границы для разорванных частейenlarge bottom at break by=3mm
enlarge top by/tcb/enlarge top by=⟨length⟩Расширение верхней границы для всех случаевenlarge top by=5mm
enlarge bottom by/tcb/enlarge bottom by=⟨length⟩Расширение нижней границы для всех случаевenlarge bottom by=5mm
enlarge left by/tcb/enlarge left by=⟨length⟩Расширение левой границыenlarge left by=2cm
enlarge right by/tcb/enlarge right by=⟨length⟩Расширение правой границыenlarge right by=2cm
enlarge by/tcb/enlarge by=⟨length⟩Расширение всех границenlarge by=5mm

Выравнивание бокса

ПараметрСинтаксисОписаниеПример
grow to left by/tcb/grow to left by=⟨length⟩Увеличение ширины влевоgrow to left by=2cm
grow to right by/tcb/grow to right by=⟨length⟩Увеличение ширины вправоgrow to right by=2cm
grow sidewards by/tcb/grow sidewards by=⟨length⟩Увеличение ширины в обе стороныgrow sidewards by=2cm
flush left/tcb/flush leftВыравнивание влевоflush left
flush right/tcb/flush rightВыравнивание вправоflush right
center/tcb/centerЦентрированиеcenter

Переключение расширений

ПараметрСинтаксисОписаниеПример
toggle enlargement/tcb/toggle enlargement=⟨toggle preset⟩Переключение расширений (none, forced, evenpage)toggle enlargement=evenpage

Растягивание до границ страницы

ПараметрСинтаксисОписаниеПример
spread inwards/tcb/spread inwards=⟨length⟩Растягивание к внутреннему краю страницыspread inwards=5mm
spread outwards/tcb/spread outwards=⟨length⟩Растягивание к внешнему краю страницыspread outwards=5mm
move upwards/tcb/move upwards=⟨length⟩Перемещение к верхнему краю (с новой страницы)move upwards=5mm
move upwards*/tcb/move upwards*=⟨length⟩Перемещение к верхнему краю (без новой страницы)move upwards*=5mm
fill downwards/tcb/fill downwards=⟨length⟩Заполнение до нижнего краяfill downwards=5mm
spread upwards/tcb/spread upwards=⟨length⟩Комбинация: вверх + внутрь + наружуspread upwards=5mm
spread upwards*/tcb/spread upwards*=⟨length⟩То же без новой страницыspread upwards*=5mm
spread sidewards/tcb/spread sidewards=⟨length⟩Растягивание в стороныspread sidewards=5mm
spread/tcb/spread=⟨length⟩Заполнение всей страницыspread=5mm
spread downwards/tcb/spread downwards=⟨length⟩Комбинация: вниз + внутрь + наружуspread downwards=5mm

Выступание бокса

ПараметрСинтаксисОписаниеПример
shrink tight/tcb/shrink tightПлотное облегание содержимогоshrink tight
extrude left by/tcb/extrude left by=⟨length⟩Выступание влевоextrude left by=1cm
extrude right by/tcb/extrude right by=⟨length⟩Выступание вправоextrude right by=1cm
extrude top by/tcb/extrude top by=⟨length⟩Выступание вверхextrude top by=1cm
extrude bottom by/tcb/extrude bottom by=⟨length⟩Выступание внизextrude bottom by=1cm
extrude by/tcb/extrude by=⟨length⟩Выступание во все стороныextrude by=5mm

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

1. Расширение границ

\begin{tcolorbox}[
  enlarge left by=2cm,
  enlarge top by=5mm,
  enhanced,
  show bounding box
]
Бокс с расширенными границами
\end{tcolorbox}

2. Растягивание до краев страницы

\begin{tcolorbox}[
  spread sidewards,
  spread upwards,
  height=3cm,
  colframe=blue,
  sharp corners=north
]
Бокс, растянутый до краев страницы
\end{tcolorbox}

3. Выступающие элементы

Текст \tcbox[shrink tight, extrude right by=5mm]{с выступающим} элементом

Особенности работы:

  1. Параметры с * не создают новую страницу
  2. Для визуализации bounding box используйте show bounding box
  3. Комбинированные параметры (spread и др.) экономят время настройки
  4. Выступающие элементы (extrude) не изменяют bounding box

17 - Управление уровнями/слоями в пакете 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{...}.

18 - Управление Capture mode в пакете tcolorbox

Capture Mode определяет, как содержимое tcolorbox обрабатывается и отображается.

Capture Mode в tcolorbox

Capture Mode определяет, как содержимое tcolorbox обрабатывается и отображается.
Доступные режимы:

  • minipage (по умолчанию для tcolorbox)
  • hbox (по умолчанию для \tcbox)
  • fitbox (требует библиотеку fitting)

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

Команда / ОпцияСинтаксисОписание
capture=<mode>\begin{tcolorbox}[capture=minipage] ... \end{tcolorbox}Устанавливает режим обработки содержимого (minipage, hbox, fitbox).
hbox (стиль)\begin{tcolorbox}[hbox] ... \end{tcolorbox}Короткая запись для capture=hbox.
minipage (стиль)\begin{tcolorbox}[minipage] ... \end{tcolorbox}Короткая запись для capture=minipage.
fitbox (стиль)\begin{tcolorbox}[fitbox] ... \end{tcolorbox}Короткая запись для capture=fitbox (требует \tcbuselibrary{fitting}).

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

2.1. Режим minipage (по умолчанию)

\begin{tcolorbox}[
    capture=minipage, % можно опустить (стоит по умолчанию)
    colframe=blue,
    colback=white,
    title=Minipage Mode
]
Этот блок ведёт себя как `minipage`.  
Можно разбивать на части (`breakable`), добавлять верхнюю и нижнюю части.
\end{tcolorbox}

Особенности:

  • Поддерживает breakable (разрыв на страницах).
  • Можно использовать upper и lower части.

2.2. Режим hbox (как \tcbox)

\begin{tcolorbox}[
    hbox, % короткая запись для capture=hbox
    colframe=red,
    colback=white,
    title=HBox Mode
]
Этот блок ведёт себя как `\hbox` (аналогично `\tcbox`).
\end{tcolorbox}

Особенности:

  • Нельзя разбивать (breakable не работает).
  • Размер подстраивается под содержимое.

2.3. Режим fitbox (требует fitting)

\usepackage{tcolorbox}
\tcbuselibrary{fitting} % обязательно подключить

\begin{tcolorbox}[
    fitbox, % короткая запись для capture=fitbox
    height=2cm,
    width=6cm,
    colframe=green,
    colback=white,
    title=FitBox Mode
]
Содержимое масштабируется под размер блока.
\end{tcolorbox}

Особенности:

  • Размер содержимого подгоняется под заданные размеры блока.
  • Полезно для создания блоков фиксированного размера.

3. Сравнение режимов

РежимРазрыв (breakable)РазмерИспользование
minipageДаПод содержимоеОсновные блоки с текстом
hboxНетПод содержимоеКомпактные блоки (\tcbox)
fitboxНетФиксированныйБлоки с жёсткими размерами

4. Полный пример с разными режимами

\documentclass{article}
\usepackage{tcolorbox}
\tcbuselibrary{fitting} % для fitbox

\begin{document}

\begin{tcolorbox}[
    minipage, % или capture=minipage
    colframe=blue,
    title=Minipage Mode,
    breakable % можно разрывать
]
Этот блок ведёт себя как `minipage`.  
Можно разбивать на страницы и использовать `lower` и `upper` части.
\end{tcolorbox}

\begin{tcolorbox}[
    hbox,
    colframe=red,
    title=HBox Mode
]
Это компактный блок (`\hbox`).
\end{tcolorbox}

\begin{tcolorbox}[
    fitbox,
    width=5cm,
    height=3cm,
    colframe=green,
    title=FitBox Mode
]
Содержимое подгоняется под размер блока.
\end{tcolorbox}

\end{document}

Результат:

  • Первый блок (minipage) может быть разорван на страницы.
  • Второй блок (hbox) компактный, без разрывов.
  • Третий блок (fitbox) имеет фиксированный размер.

19 - Управление характеристиками текста в пакете tcolorbox

Настройки оформления текста внутри tcolorbox позволяют управлять поведением абзацев, переносом слов и другими текстовыми характеристиками.

Text Characteristics в tcolorbox

Настройки оформления текста внутри tcolorbox позволяют управлять поведением абзацев, переносом слов и другими текстовыми характеристиками.


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

ОпцияСинтаксисОписаниеЗначение по умолчанию
parboxparbox=true / parbox=falseОпределяет, будет ли текст обрабатываться как в minipage/parbox (влияет на форматирование абзацев).true
hyphenationfixhyphenationfix=true / hyphenationfix=falseВключает исправление проблем с переносом длинных слов в узких блоках.false

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

2.1. Опция parbox

Включает/отключает режим parbox (аналогично minipage).

Пример с parbox=true (по умолчанию)

\begin{tcolorbox}[
    parbox=true, % можно не указывать (стоит по умолчанию)
    width=0.45\linewidth,
    colframe=blue,
    title=parbox=true (стандартное поведение)
]
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\end{tcolorbox}

Особенности:

  • Абзацы форматируются как в minipage.
  • Подходит для большинства случаев.

Пример с parbox=false

\begin{tcolorbox}[
    parbox=false,
    width=0.45\linewidth,
    colframe=red,
    title=parbox=false (обычный текст)
]
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
\end{tcolorbox}

Особенности:

  • Текст ведёт себя как в основном документе (не как в minipage).
  • Может вызывать неожиданные эффекты в сложных блоках.

2.2. Опция hyphenationfix

Исправляет проблемы с переносом длинных слов в узких блоках.

Пример без hyphenationfix (по умолчанию)

\begin{tcolorbox}[
    width=3cm,
    colframe=green,
    title=Без hyphenationfix
]
Rechnungsadjunktentochter.\par
Statthaltereikonzipist.
\end{tcolorbox}

Проблема:

  • Длинные слова не переносятся.

Пример с hyphenationfix=true

\begin{tcolorbox}[
    hyphenationfix=true,
    width=3cm,
    colframe=green,
    title=С hyphenationfix
]
Rechnungsadjunktentochter.\par
Statthaltereikonzipist.
\end{tcolorbox}

Результат:

  • Длинные слова корректно переносятся.

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

  1. Не используйте parbox=false и hyphenationfix вместе — они предназначены для разных типов блоков и могут конфликтовать.
  2. parbox=false — экспериментальная опция, применяйте её только при необходимости.
  3. hyphenationfix полезен в узких блоках, где pdflatex не справляется с переносом.

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

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{tcolorbox}
\usepackage{lipsum} % для демонстрации текста

\begin{document}

\begin{tcolorbox}[
    parbox=true,
    width=0.45\linewidth,
    colframe=blue,
    title=parbox=true (стандартное поведение)
]
\lipsum[1][1-3] % Первые три предложения из lipsum
\end{tcolorbox}
\hfill
\begin{tcolorbox}[
    parbox=false,
    width=0.45\linewidth,
    colframe=red,
    title=parbox=false (обычный текст)
]
\lipsum[1][1-3]
\end{tcolorbox}

\vspace{1cm}

\begin{tcolorbox}[
    width=3cm,
    colframe=green,
    title=Без hyphenationfix
]
Rechnungsadjunktentochter.\par
Statthaltereikonzipist.
\end{tcolorbox}
\hfill
\begin{tcolorbox}[
    hyphenationfix=true,
    width=3cm,
    colframe=green,
    title=С hyphenationfix
]
Rechnungsadjunktentochter.\par
Statthaltereikonzipist.
\end{tcolorbox}

\end{document}

Результат:

  • Первые два блока показывают разницу между parbox=true и parbox=false.
  • Вторые два блока демонстрируют работу hyphenationfix.

Вывод

  • parbox=true — стандартное поведение (рекомендуется).
  • parbox=false — экспериментальная опция (используйте осторожно).
  • hyphenationfix=true — решает проблемы с переносом длинных слов.

Если нужно что-то уточнить или добавить, дайте знать!

20 - Files - Работа с временными файлами в tcolorbox

В этом разделе рассматривается управление временными файлами, которые используются при работе с tcbwritetemp и cbusetemp.

Files - Работа с временными файлами в tcolorbox

В этом разделе рассматривается управление временными файлами, которые используются при работе с tcbwritetemp и \tcbusetemp.


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

Опция / КомандаСинтаксисОписание
tempfiletempfile=<имя_файла>Устанавливает имя временного файла (по умолчанию: \jobname.tcbtemp).
\tcbwritetemp\tcbwritetemp{<содержимое>}Записывает содержимое во временный файл.
\tcbusetemp\tcbusetempВставляет содержимое временного файла в документ.

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

2.1. Изменение имени временного файла

\documentclass{article}
\usepackage{tcolorbox}

\begin{document}

\tcbset{tempfile=mytempfile.tmp} % меняем имя временного файла

\begin{tcolorbox}[title=Пример с временным файлом]
Содержимое блока будет записано в \texttt{mytempfile.tmp} вместо \texttt{\jobname.tcbtemp}.
\end{tcolorbox}

\end{document}

Результат:
Временный файл будет называться mytempfile.tmp вместо стандартного <имя_документа>.tcbtemp.


2.2. Запись и использование временного файла

\documentclass{article}
\usepackage{tcolorbox}

\begin{document}

% Записываем текст во временный файл
\tcbwritetemp{Этот текст будет сохранён во временный файл.}

% Вставляем содержимое временного файла в документ
\begin{tcolorbox}[title=Содержимое временного файла]
\tcbusetemp
\end{tcolorbox}

\end{document}

Результат:
В блоке tcolorbox отобразится текст, записанный через \tcbwritetemp.


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

  1. Имя файла по умолчанию
    Если не указать tempfile, будет использоваться <имя_документа>.tcbtemp (например, document.tcbtemp).

  2. Автоматическое управление

    • \tcbwritetemp автоматически записывает содержимое в указанный временный файл.
    • \tcbusetemp автоматически вставляет его в документ.
  3. Очистка временных файлов
    LaTeX не удаляет временные файлы автоматически - их нужно удалять вручную или с помощью скриптов сборки.


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

\documentclass{article}
\usepackage{tcolorbox}

\begin{document}

% Устанавливаем кастомное имя файла
\tcbset{tempfile=my_custom_tempfile.tmp}

% Пишем текст во временный файл
\tcbwritetemp{
Этот текст был записан во временный файл \texttt{my\_custom\_tempfile.tmp}.
}

% Вставляем содержимое файла в бокс
\begin{tcolorbox}[
  colframe=blue,
  colback=white,
  title=Пример работы с временными файлами,
  fonttitle=\bfseries
]
Содержимое временного файла:\\
\tcbusetemp
\end{tcolorbox}

\end{document}

Результат:

  • Создаётся временный файл my_custom_tempfile.tmp
  • Его содержимое вставляется в цветную рамку

Вывод

Опция tempfile позволяет:

  • Контролировать имена временных файлов
  • Избегать конфликтов при использовании нескольких документов
  • Организовать сложные схемы работы с содержимым

Команды \tcbwritetemp и \tcbusetemp предоставляют удобный способ:

  • Сохранения промежуточного содержимого
  • Повторного использования текста в документе

Для сложных документов рекомендуется явно указывать tempfile, чтобы избежать неожиданных перезаписей.

21 - cbox Specials - Специальные настройки для cbox и cboxmath

В этом разделе рассматриваются специальные параметры, которые работают только с командами cbox и cboxmath.

\tcbox Specials - Специальные настройки для \tcbox и \tcboxmath

В этом разделе рассматриваются специальные параметры, которые работают только с командами \tcbox и \tcboxmath.


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

1.1. Вертикальное выравнивание

Опция / СтильСинтаксисОписание
tcbox raisetcbox raise=<длина>Поднимает \tcbox на указанную высоту (например, 5mm).
tcbox raise basetcbox raise baseВыравнивает \tcbox по базовой линии текста.
on lineon lineКомбинация tcbox raise base + nobeforeafter (аналог \fbox).

Пример:

\tcbset{colframe=blue!50!black, colback=white}
Test\tcbox[tcbox raise base]{Выровнено по базовой линии} и \tcbox[tcbox raise=2mm]{Приподнято на 2mm}.

1.2. Стиль verbatim

Опция / СтильСинтаксисОписание
verbatimverbatimУменьшает размеры \tcbox и включает nobeforeafter + tcbox raise base.

Пример:

\DeclareTotalTCBox{\myverb}{ v }{verbatim, colframe=red!75!black}{#1}
Команда \myverb{\textbf} выделяет текст.

1.3. Управление шириной (tcbox width)

РежимОписание
autoШирина определяется содержимым (по умолчанию).
auto limitedШирина как у содержимого, но не больше заданной (width).
forced centerФиксированная ширина (width), текст по центру (может выходить за границы).
forced leftФиксированная ширина, текст по левому краю.
forced rightФиксированная ширина, текст по правому краю.
minimum centerМинимальная ширина (width), может увеличиваться.
minimum leftМинимальная ширина, текст по левому краю.
minimum rightМинимальная ширина, текст по правому краю.

Пример:

\tcbset{width=3cm, colframe=blue!75!black}
\tcbox[tcbox width=auto]{auto} \\
\tcbox[tcbox width=forced center]{forced center} \\
\tcbox[tcbox width=minimum left]{minimum left}

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

2.1. Выравнивание по базовой линии

Обычный текст \tcbox[tcbox raise base, colframe=green]{Выровнено} и \tcbox[colframe=red]{Не выровнено}.

Результат:
Первая рамка выровнена с текстом, вторая — смещена вниз.


2.2. Режимы ширины

\tcbset{width=4cm, colframe=blue!50!black}

\begin{itemize}
\item \tcbox[tcbox width=auto]{auto} — ширина по содержимому
\item \tcbox[tcbox width=forced center]{forced center} — фиксированная ширина
\item \tcbox[tcbox width=minimum right]{minimum right} — минимальная ширина
\end{itemize}

2.3. Verbatim-боксы

\DeclareTotalTCBox{\code}{ v }{verbatim, colframe=black}{#1}
Используйте \code{\textbackslash LaTeX} для красивого набора.

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

\documentclass{article}
\usepackage{tcolorbox}

\begin{document}

\section{Выравнивание}
Обычный текст \tcbox[on line, colframe=blue]{on line} и \tcbox[tcbox raise=3mm, colframe=red]{raise=3mm}.

\section{Управление шириной}
\tcbset{width=5cm, colframe=green!70!black}

\begin{tabular}{ll}
\textbf{Режим} & \textbf{Пример} \\
auto & \tcbox[tcbox width=auto]{Короткий текст} \\
forced center & \tcbox[tcbox width=forced center]{Очень длинный текст, который не помещается} \\
minimum left & \tcbox[tcbox width=minimum left]{Адаптивная ширина} \\
\end{tabular}

\section{Verbatim}
\DeclareTotalTCBox{\cmd}{ v }{verbatim, colframe=black}{#1}
Команда \cmd{\textbf} делает текст жирным.

\end{document}

4. Важные замечания

  1. tcbox raise работает только с \tcbox и \tcboxmath.
  2. verbatim стиль уменьшает отступы — используйте для коротких команд.
  3. forced режимы могут обрезать текст — применяйте осторожно.

Вывод

  • Для встроенных в текст рамок используйте on line или tcbox raise base.
  • Для управления шириной выбирайте подходящий tcbox width режим.
  • Для оформления команд удобен verbatim стиль.

Эти настройки дают полный контроль над встроенными цветными рамками в LaTeX!

22 - Counters, Labels, and References - Счётчики, метки и ссылки в tcolorbox

В этом разделе рассматриваются механизмы работы с нумерацией, перекрёстными ссылками и гиперссылками в рамках tcolorbox.

Counters, Labels, and References - Счётчики, метки и ссылки в tcolorbox

В этом разделе рассматриваются механизмы работы с нумерацией, перекрёстными ссылками и гиперссылками в рамках tcolorbox.


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

1.1. Основные опции для работы с метками

ОпцияСинтаксисОписание
phantomphantom={\refstepcounter{mycounter}}Выполняет код без видимого вывода (для счётчиков и меток)
nophantomnophantomОтключает ранее заданный phantom код
labellabel=mylabelУстанавливает метку для ссылок через \ref
phantomlabelphantomlabel=mylabelАналог label для ненумерованных боксов
stepstep=mycounterУвеличивает счётчик (\refstepcounter)
step and labelstep and label={mycounter}{mylabel}Комбинация step + label

Пример базового использования:

\begin{tcolorbox}[
    label=mybox,
    title=Пример с меткой
]
Содержимое бокса. Ссылка: \ref{mybox}.
\end{tcolorbox}

1.2. Типы ссылок

ОпцияСинтаксисОписание
label is labellabel is labelИспользует стандартные \label/\ref (по умолчанию)
label is zlabellabel is zlabelИспользует \zlabel из пакета zref
label typelabel type=theoremЗадаёт тип ссылки для cleveref/zref-clever
no label typeno label typeСбрасывает тип ссылки

Пример с cleveref:

\usepackage{cleveref}
\begin{tcolorbox}[
    label=mytheorem,
    label type=theorem,
    title=Теорема
]
Содержимое. Ссылка: \cref{mytheorem}.
\end{tcolorbox}

1.3. Дополнительные возможности

ОпцияСинтаксисОписание
namerefnameref=Моё названиеТекст для \nameref
short titleshort title=Краткое названиеУстанавливает nameref и list entry
hypertargethypertarget=mytargetСоздаёт якорь для гиперссылок
bookmarkbookmark=НазваниеДобавляет закладку PDF
indexindex=ТерминДобавляет запись в индекс

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

2.1. Автоматическая нумерация

\newtcolorbox[auto counter]{mybox}[1][]{
    colback=white,
    title=Блок \thetcbcounter,
    #1
}

\begin{mybox}[label=box1]
Первый блок. Ссылка: \ref{box1}.
\end{mybox}

2.2. Работа с гиперссылками

\usepackage{hyperref}
\begin{tcolorbox}[
    hypertarget=target1,
    title=Кликабельный блок
]
\hyperlink{target2}{Перейти к другому блоку}.
\end{tcolorbox}

\begin{tcolorbox}[
    hypertarget=target2,
    title=Целевой блок
]
Этот блок будет целью ссылки.
\end{tcolorbox}

2.3. Индексирование и закладки

\usepackage{imakeidx,bookmark}
\makeindex

\begin{tcolorbox}[
    bookmark=Важная теорема,
    index=Теоремы,
    title=Теорема Пифагора
]
$a^2 + b^2 = c^2$
\end{tcolorbox}

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

\documentclass{article}
\usepackage{tcolorbox}
\usepackage{hyperref,cleveref,bookmark,imakeidx}
\makeindex

\newtcolorbox[auto counter]{theorem}[2][]{
    colback=green!5,
    title=Теорема \thetcbcounter: #2,
    label type=theorem,
    #1
}

\begin{document}

\section{Примеры}

\begin{theorem}[label=pyth]{Пифагора}
$a^2 + b^2 = c^2$
\end{theorem}

Ссылка на \cref{pyth}.

\begin{tcolorbox}[
    bookmark=Демонстрация,
    index=Примеры,
    hypertarget=demo,
    title=Демо-блок
]
Этот блок имеет:
\begin{itemize}
\item Закладку PDF
\item Запись в индексе
\item Якорь для ссылок
\end{itemize}
\end{tcolorbox}

\printindex
\end{document}

4. Важные замечания

  1. Для работы zlabel требуется пакет zref
  2. phantom код выполняется в группе - используйте \global для глобальных изменений
  3. Опции bookmark и index требуют соответствующих пакетов

Вывод

  • Используйте label и phantom для перекрёстных ссылок
  • label type улучшает работу с cleveref
  • hypertarget и bookmark добавляют интерактивности PDF
  • index интегрирует боксы в предметный указатель

23 - Even and Odd Pages - Разное оформление для чётных и нечётных страниц

В этом разделе рассматриваются механизмы для различного оформления tcolorbox на чётных и нечётных страницах документа.

Even and Odd Pages - Разное оформление для чётных и нечётных страниц

В этом разделе рассматриваются механизмы для различного оформления tcolorbox на чётных и нечётных страницах документа.


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

1.1. Основные опции

Опция/КомандаСинтаксисОписание
check odd pagecheck odd page=true/falseВключает точную проверку чётности страницы (требует 2-х компиляций)
if odd pageif odd page={нечётные}{чётные}Разные стили для чётных/нечётных страниц
if odd page or onesideif odd page or oneside={нечётные}{чётные}Для односторонней печати всегда применяет “нечётные” стили
if odd page*if odd page*={нечётные}{чётные}Аналог if odd page для breakable-боксов (требует библиотеку breakable)
\tcbifoddpage\tcbifoddpage{нечётный код}{чётный код}Условный оператор в коде
\thetcolorboxnumber\thetcolorboxnumberУникальный номер бокса (внутри бокса)
\thetcolorboxpage\thetcolorboxpageНомер страницы бокса (требует check odd page=true)

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

2.1. Разные цвета для чётных/нечётных страниц

\begin{tcolorbox}[
    if odd page={colback=yellow!30}{colback=blue!30},
    title=Блок на \tcbifoddpage{нечётной}{чётной} странице
]
Этот блок будет жёлтым на нечётных и синим на чётных страницах.
Текущая страница: \thetcolorboxpage.
\end{tcolorbox}

2.2. Для breakable-боксов (с разрывом)

\usepackage{tcolorbox}
\tcbuselibrary{breakable}

\begin{tcolorbox}[
    breakable,
    if odd page*={colback=red!20}{colback=green!20},
    title=Разрываемый блок
]
Длинный текст, который может занимать несколько страниц...
Каждая часть будет окрашена в зависимости от чётности страницы.
\end{tcolorbox}

2.3. Использование в водяных знаках

\begin{tcolorbox}[
    enhanced,
    check odd page,
    watermark text={\tcbifoddpage{НЕЧЁТНАЯ}{ЧЁТНАЯ}},
    title=Пример с водяным знаком
]
Содержимое блока. Водяной знак покажет чётность страницы.
\end{tcolorbox}

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

  1. Точность проверки:

    • Для точного определения чётности страницы требуется:
      • Установить check odd page=true
      • Двойная компиляция документа
    • Без этой опции проверка может работать некорректно для первого блока на странице
  2. Разрываемые боксы:

    • Для breakable-боксов используйте if odd page* вместо if odd page
    • Либо упакуйте if odd page в extras:
\begin{tcolorbox}[
    breakable,
    check odd page,
    extras={if odd page={colback=yellow}{colback=blue}}
]
...
\end{tcolorbox}
  1. Односторонняя печать:
    • Для документов с oneside используйте if odd page or oneside
    • В этом случае всегда будут применяться “нечётные” стили

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

\documentclass[twoside]{article}
\usepackage{tcolorbox}
\tcbuselibrary{breakable}
\usepackage{lipsum}

\newtcolorbox{smartbox}[1][]{
    check odd page,
    if odd page*={colback=yellow!10}{colback=blue!10},
    colframe=black,
    title=Блок на странице \thetcolorboxpage,
    #1
}

\begin{document}

\section{Разное оформление для чётных/нечётных страниц}

\begin{smartbox}
Этот блок автоматически меняет цвет в зависимости от страницы.
\begin{itemize}
\item Номер бокса: \thetcolorboxnumber
\item Номер страницы: \thetcolorboxpage
\end{itemize}
\end{smartbox}

\begin{smartbox}[breakable]
\lipsum[1-4]
Длинное содержимое, которое может переноситься на несколько страниц.
Каждая часть будет окрашена соответствующим образом.
\end{smartbox}

\end{document}

5. Вывод

  1. Для разного оформления на чётных/нечётных страницах:

    • Используйте if odd page для обычных боксов
    • Используйте if odd page* для breakable-боксов
    • Для точности добавьте check odd page=true
  2. Специальные команды:

    • \tcbifoddpage - условный оператор в коде
    • \thetcolorboxnumber - уникальный номер бокса
    • \thetcolorboxpage - точный номер страницы
  3. Для односторонней печати используйте варианты с or oneside.

24 - Externalization - Интеграция с внешними файлами TikZ

В этом разделе рассматривается взаимодействие tcolorbox с системой внешних файлов (externalization) пакета TikZ.

Externalization - Интеграция с внешними файлами TikZ

В этом разделе рассматривается взаимодействие tcolorbox с системой внешних файлов (externalization) пакета TikZ.


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

Опция/КомандаСинтаксисОписание
shield externalizeshield externalize=true/falseЗащищает tcolorbox от внешнего экспорта (по умолчанию false)
externalexternal=имя_файлаУстанавливает имя файла для экспорта TikZ-рисунков внутри бокса
remakeremake=true/falseФорсирует пересоздание внешнего файла для TikZ-рисунка

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

2.1. Базовое использование

\documentclass{article}
\usepackage{tcolorbox}
\usetikzlibrary{external}
\tikzexternalize % Включаем систему внешних файлов

\begin{document}

\begin{tcolorbox}[
    shield externalize, % Защищаем сам бокс от экспорта
    title=Защищённый бокс
]
Этот tcolorbox не будет экспортирован как внешний файл.

\begin{tikzpicture}
\draw (0,0) circle (1cm); % Этот рисунок БУДЕТ экспортирован
\end{tikzpicture}
\end{tcolorbox}

\end{document}

2.2. Управление экспортом отдельных рисунков

\begin{tcolorbox}[
    external=myplot, % Устанавливаем имя файла для экспорта
    remake=true,     % Форсируем пересоздание
    title=Бокс с управляемым экспортом
]
\begin{tikzpicture}
\draw[red] (0,0) rectangle (2,2); % Экспортируется в myplot.pdf
\end{tikzpicture}
\end{tcolorbox}

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

  1. Автоматическое отключение в TikZ-окружении:

    • Внутри tikzpicture опция shield externalize автоматически отключается
    • Не используйте \tikzexternaldisable перед tcolorbox в этом случае
  2. Рекомендуемые паттерны использования:

    \tikzexternalenable
    % Рисунки для экспорта
    \tikzexternaldisable
    % Обычные tcolorbox
    
  3. Требования:

    • Для работы необходимо подключить библиотеку TikZ:
      \usetikzlibrary{external}
      \tikzexternalize
      
  4. Ограничения:

    • Рисунки, созданные через tikz upper и аналогичные опции, не экспортируются
    • Для сложных документов может потребоваться несколько компиляций

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

\documentclass{article}
\usepackage{tcolorbox}
\usetikzlibrary{external}
\tikzexternalize % Активируем систему внешних файлов
\tcbset{shield externalize} % Глобально защищаем все tcolorbox

\begin{document}

\section{Пример интеграции с внешними файлами}

\begin{tcolorbox}[title=Обычный защищённый бокс]
Этот блок не будет экспортирован как внешний файл.
\end{tcolorbox}

\begin{tcolorbox}[
    external=mycircle,
    title=Бокс с экспортируемым рисунком
]
\begin{tikzpicture}
\draw[blue, thick] (0,0) circle (1.5cm);
\node at (0,0) {Экспортируется};
\end{tikzpicture}
\end{tcolorbox}

\tikzexternaldisable % Временно отключаем экспорт
\begin{tcolorbox}[title=Временный незащищённый бокс]
Этот блок создан при отключённом экспорте.
\end{tcolorbox}
\tikzexternalenable % Возобновляем экспорт

\end{document}

5. Вывод

  1. Защита боксов:

    • Используйте shield externalize для предотвращения экспорта tcolorbox
    • Устанавливайте глобально через \tcbset, если не нужен экспорт
  2. Управление экспортом:

    • Для экспорта отдельных рисунков используйте external=имя_файла
    • Для принудительного обновления - remake=true
  3. Лучшие практики:

    • Чётко разделяйте код, требующий экспорта и не требующий
    • Используйте \tikzexternalenable/disable для группировки экспортируемых элементов

Эти механизмы позволяют эффективно комбинировать tcolorbox с системой внешних файлов TikZ, оптимизируя процесс сборки сложных документов.

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

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

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

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


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

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

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

Пример:

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

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

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

Пример с IfValueTF:

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

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

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

Пример:

Текст до
\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 - скрытие с обработкой содержимого