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

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

Библиотека цветных блоков и рамок 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 height add to height=<length> Добавляет фиксированную высоту к общему размеру бокса.
add to list add to list=<text> Регистрирует бокс в списке (например, для оглавления).
add to natural height add to natural height=<length> Увеличивает “естественную” высоту бокса (без учета boxsep и boxrule).
add to width add to width=<length> Добавляет фиксированную ширину к общему размеру бокса.
adjust text adjust text=<options> Настраивает параметры текста (например, hyphenation).
adjusted title adjusted title=<text> Заголовок с динамическим форматированием (например, для нумерации).
adjusted title after break adjusted title after break=<text> Заголовок после разрыва многостраничного бокса.
after after={<code>} Код TikZ/LaTeX, выполняемый после рисования бокса.
after app after app={<code>} Код, выполняемый после добавления бокса в приложении.
after doc body after doc body={<code>} Код, вставляемый после основного содержимого документа.
after doc body command after doc body command=<command> Команда LaTeX, выполняемая после тела документа.
after doc body environment after doc body env=<env> Окружение LaTeX, добавляемое после тела документа.
after doc body key after doc body key=<key> Ключ TikZ, применяемый после тела документа.
after doc body path after doc body path=<path> Путь TikZ, рисуемый после тела документа.
after float after float={<code>} Код, выполняемый после плавающего бокса (float).
after float app after float app={<code>} Аналог after float для приложений.
after float pre after float pre={<code>} Код перед плавающим боксом (для приложений).
after lower after lower={<code>} Код, выполняемый после нижней части (lower part) бокса.
after lower app after lower app={<code>} Аналог after lower для приложений.
after lower pre after lower pre={<code>} Код перед нижней частью (для приложений).
after lower* after lower*={<code>} Код после нижней части (без группировки в {}).
after pre after pre={<code>} Код перед завершением бокса (для приложений).
after skip after skip=<length> Вертикальный отступ после бокса.
after skip balanced after skip balanced=<length> Сбалансированный отступ (учитывает разрывы страниц).
after title after title={<code>} Код, выполняемый после заголовка.
after title app after title app={<code>} Аналог after title для приложений.
after title pre after title pre={<code>} Код перед заголовком (для приложений).
after title* after title*={<code>} Код после заголовка (без группировки в {}).
after upper after upper={<code>} Код, выполняемый после верхней части (upper part) бокса.
after upper app after upper app={<code>} Аналог after upper для приложений.
after upper pre after upper pre={<code>} Код перед верхней частью (для приложений).
after upper* after upper*={<code>} Код после верхней части (без группировки в {}).
alert alert Стиль для выделенных боксов (например, в Beamer).
alt alt=<text> Альтернативный текст (для PDF-тегов или подписей).
ams align ams align Включает окружение align из amsmath в основной части.
ams align lower ams align lower Аналог ams align для нижней части.
ams align upper ams align upper Аналог ams align для верхней части.
ams align* ams align* Версия align* (без нумерации).
ams equation ams equation Включает окружение equation из amsmath.
ams equation lower ams equation lower Аналог ams equation для нижней части.
ams equation upper ams equation upper Аналог ams equation для верхней части.
ams gather ams gather Включает окружение gather из amsmath.
ams nodisplayskip ams nodisplayskip Убирает отступы вокруг формул amsmath.
arc arc=<length> Радиус скругления углов.
arc is angular arc is angular Делает скругление углов “острым” (стиль TikZ).
arc is curved arc is curved Делает скругление плавным (по умолчанию).
at begin tikz at begin tikz={<code>} Код TikZ, выполняемый в начале рисования.
attach boxed title to bottom attach boxed title to bottom Размещает заголовок внизу бокса.
attach boxed title to top attach boxed title to top Размещает заголовок вверху бокса (по умолчанию).
attach title attach title Включает прикрепленный заголовок.
auto outer arc auto outer arc Автонастройка внешних дуг для сложных рамок.
autoparskip autoparskip Автоматически регулирует parskip внутри бокса.
baseline baseline=<length> Выравнивание бокса по базовой линии текста.
beamer beamer Стиль для презентаций Beamer.
beamer alerted beamer alerted Стиль для “alerted” боксов в Beamer.
beamer hidden beamer hidden Стиль для скрытых боксов в Beamer.
bean arc bean arc Альтернативный стиль скругления углов (“бобовый”).
before before={<code>} Код, выполняемый перед рисованием бокса.
before skip before skip=<length> Вертикальный отступ перед боксом.
bicolor bicolor Двухцветный стиль (разные цвета для верхней/нижней частей).
blank blank Пустой стиль (без рамок и фона).
blanker blanker Еще более минималистичный стиль, чем blank.
blankest blankest Максимально упрощенный стиль (только текст).
blend before title blend before title Смешивает фон перед заголовком с основным фоном.
bookmark bookmark=<text> Добавляет закладку PDF для бокса.
borderline borderline={<options>} Рисует дополнительные границы (например, тени).
bottomrule bottomrule=<length> Толщина нижней границы.
bottomrule at break bottomrule at break=<length> Толщина нижней границы на разрыве страницы.
box align box align=<baseline/top/bottom> Выравнивание содержимого внутри бокса.
boxed title size boxed title size=<options> Размеры рамки заголовка.
boxrule boxrule=<length> Толщина основной рамки.
boxsep boxsep=<length> Внутренний отступ содержимого от границ.
colback colback=<color> Цвет фона основной части.
colbacklower colbacklower=<color> Цвет фона нижней части (для bicolor).
colbacktitle colbacktitle=<color> Цвет фона заголовка.
colframe colframe=<color> Цвет рамки бокса.
collower collower=<color> Цвет текста в нижней части бокса.
color color color color=<name> Настройка цвета (внутренний ключ для управления цветами).
color command color command=<cmd> Команда для применения цвета.
color counter color counter=<ctr> Счетчик для генерации цветов.
color definition color definition={<code>} Определение нового цвета.
color environment color environment=<env> Окружение для применения цвета.
color fade color fade={<options>} Градиентная заливка фона.
color hyperlink color hyperlink={<options>} Цвет гиперссылок внутри бокса.
color key color key=<key> Ключ для доступа к цвету.
color length color length=<len> Длина цветового перехода.
color option color option={<opt>} Опции цвета.
color path color path={<path>} Путь TikZ для градиента.
color value color value=<val> Значение цвета (например, red!50).
coltext coltext=<color> Цвет основного текста.
coltitle coltitle=<color> Цвет текста заголовка.
colupper colupper=<color> Цвет текста в верхней части бокса.
comment comment={<text>} Добавляет комментарий внутри бокса.
comment above listing comment above listing={<text>} Комментарий над листингом кода.
comment above* listing comment above* listing={<text>} Комментарий над листингом (без форматирования).
comment and listing comment and listing={<text>} Комбинация комментария и листинга.
comment only comment only={<text>} Только комментарий (без листинга).
comment outside listing comment outside listing={<text>} Комментарий вне листинга (например, сбоку).
comment side listing comment side listing={<text>} Комментарий сбоку от листинга.
comment style comment style={<style>} Стиль оформления комментариев.
compilable listing compilable listing Листинг, который можно компилировать.
compress page compress page Сжимает страницу для экономии места.
ctan formatter ctan formatter={<code>} Форматирование для CTAN-документации.
default minted options default minted options={<opt>} Опции по умолчанию для пакета minted.
description color description color=<color> Цвет текста в описании.
description delimiters description delimiters={<left><right>} Разделители для описаний (например, скобки).
description delimiters none description delimiters none Убирает разделители описаний.
description delimiters parenthesis description delimiters parenthesis Использует круглые скобки для описаний.
description font description font={<font>} Шрифт для описаний.
description formatter description formatter={<code>} Функция форматирования описаний.
detach title detach title Отделяет заголовок от основного бокса.
do not store to box array do not store to box array Запрещает сохранение бокса в массив.
doc description doc description={<text>} Описание для документации.
doc head doc head={<text>} Заголовок раздела документации.
doc head command doc head command={<cmd>} Команда для заголовка документации.
doc head environment doc head environment={<env>} Окружение для заголовка документации.
doc head key doc head key={<key>} Ключ для заголовка документации.
doc head path doc head path={<path>} Путь TikZ для заголовка документации.
doc index doc index={<text>} Индекс для документации.
doc into index doc into index={<text>} Добавляет запись в индекс документации.
doc key prefix doc key prefix={<prefix>} Префикс для ключей документации.
doc keypath doc keypath={<path>} Путь к ключу документации.
doc label doc label={<label>} Метка для перекрестных ссылок.
doc left doc left={<text>} Текст слева в документации.
doc left indent doc left indent={<len>} Отступ слева в документации.
doc marginnote doc marginnote={<text>} Заметка на полях документации.
doc name doc name={<name>} Имя элемента документации.
doc new doc new Пометка нового элемента в документации.
doc new and updated doc new and updated Пометка нового и обновленного элемента.
doc no index doc no index Исключает элемент из индекса.
doc parameter doc parameter={<param>} Параметр для документации.
doc raster doc raster={<options>} Сетка (raster) для документации.
doc right doc right={<text>} Текст справа в документации.
doc right indent doc right indent={<len>} Отступ справа в документации.
doc sort index doc sort index={<key>} Ключ сортировки индекса.
doc updated doc updated Пометка обновленного элемента.
docexample docexample={<code>} Пример кода для документации.
documentation listing options documentation listing options={<opt>} Опции листинга в документации.
documentation listing style documentation listing style={<style>} Стиль листинга в документации.
documentation minted language documentation minted language={<lang>} Язык для minted в документации.
documentation minted options documentation minted options={<opt>} Опции minted для документации.
documentation minted style documentation minted style={<style>} Стиль minted для документации.
draft draft Черновой режим (упрощенное отображение).
draftmode draftmode Режим черновика с дополнительными опциями.
drop fuzzy midday shadow drop fuzzy midday shadow={<opt>} Размытая тень с эффектом “полдень”.
drop fuzzy shadow drop fuzzy shadow={<opt>} Размытая тень вокруг бокса.
drop large lifted shadow drop large lifted shadow={<opt>} Большая “приподнятая” тень.
drop lifted shadow drop lifted shadow={<opt>} Эффект приподнятого бокса с тенью.
drop midday shadow drop midday shadow={<opt>} Тень с акцентом на верхнюю границу.
drop shadow drop shadow={<opt>} Стандартная тень.
empty empty Полностью пустой бокс (без содержимого).
enforce breakable enforce breakable Принудительно разрешает разрыв бокса.
english language english language Устанавливает английский язык для текста.
enhanced enhanced Включает улучшенный режим рисования (с TikZ).
enhanced jigsaw enhanced jigsaw Режим “пазла” с закругленными углами.
enlarge bottom at break by enlarge bottom at break by=<len> Увеличивает нижний отступ при разрыве.
enlarge bottom by enlarge bottom by=<len> Увеличивает нижний отступ.
enlarge left by enlarge left by=<len> Увеличивает левый отступ.
enlarge right by enlarge right by=<len> Увеличивает правый отступ.
enlarge top at break by enlarge top at break by=<len> Увеличивает верхний отступ при разрыве.
enlarge top by enlarge top by=<len> Увеличивает верхний отступ.
enlargepage enlargepage Расширяет страницу для размещения бокса.
enlargepage flexible enlargepage flexible Гибкое расширение страницы.
environment lower environment lower={<env>} Окружение для нижней части бокса.
environment lower app environment lower app={<env>} Окружение для нижней части (для приложений).
environment lower args environment lower args={<args>} Аргументы для окружения нижней части.
environment lower args app environment lower args app={<args>} Аргументы окружения нижней части для приложений
environment lower args pre environment lower args pre={<args>} Аргументы окружения нижней части (предварительные)
environment lower pre environment lower pre={<env>} Окружение нижней части (предварительное)
environment title environment title={<env>} Окружение для заголовка
environment title app environment title app={<env>} Окружение заголовка для приложений
environment title args environment title args={<args>} Аргументы окружения заголовка
environment title args app environment title args app={<args>} Аргументы окружения заголовка для приложений
environment title args pre environment title args pre={<args>} Аргументы окружения заголовка (предварительные)
environment title pre environment title pre={<env>} Окружение заголовка (предварительное)
environment upper environment upper={<env>} Окружение верхней части
environment upper app environment upper app={<env>} Окружение верхней части для приложений
environment upper args environment upper args={<args>} Аргументы окружения верхней части
environment upper args app environment upper args app={<args>} Аргументы окружения верхней части для приложений
environment upper args pre environment upper args pre={<args>} Аргументы окружения верхней части (предварительные)
environment upper pre environment upper pre={<env>} Окружение верхней части (предварительное)
equal height group equal height group=<name> Группа боксов с одинаковой высотой
every box every box={<options>} Стиль для всех боксов
every box on higher layers every box on higher layers={<options>} Стиль для боксов на верхних слоях
every box on layer n every box on layer n={<options>} Стиль для боксов на конкретном слое
every float every float={<options>} Стиль для плавающих боксов
every listing line every listing line={<options>} Стиль для каждой строки листинга
every listing line* every listing line*={<options>} Альтернативный стиль строк листинга
extend freelance extend freelance={<options>} Расширение freelance-стиля
extend freelancefirst extend freelancefirst={<options>} Расширение для первого freelance-бокса
extend freelancelast extend freelancelast={<options>} Расширение для последнего freelance-бокса
extend freelancemiddle extend freelancemiddle={<options>} Расширение для средних freelance-боксов
external external={<options>} Внешнее содержимое бокса
externalize example externalize example Внешний пример (без форсирования)
externalize example! externalize example! Внешний пример (с форсированием)
externalize listing externalize listing Внешний листинг (без форсирования)
externalize listing! externalize listing! Внешний листинг (с форсированием)
extras extras={<options>} Дополнительные стили
extras broken extras broken={<options>} Стили для разорванного бокса
extras broken pre extras broken pre={<options>} Предварительные стили для разорванного бокса
extras first extras first={<options>} Стили для первой части
extras first and middle extras first and middle={<options>} Стили для первой и средней частей
extras first and middle pre extras first and middle pre={<options>} Предварительные стили для первой и средней частей
extras first pre extras first pre={<options>} Предварительные стили для первой части
extras last extras last={<options>} Стили для последней части
extras last pre extras last pre={<options>} Предварительные стили для последней части
extras middle extras middle={<options>} Стили для средней части
extras middle and last extras middle and last={<options>} Стили для средней и последней частей
extras middle and last pre extras middle and last pre={<options>} Предварительные стили для средней и последней частей
extras middle pre extras middle pre={<options>} Предварительные стили для средней части
extras pre extras pre={<options>} Предварительные дополнительные стили
extras title after break extras title after break={<options>} Стили заголовка после разрыва
extras unbroken extras unbroken={<options>} Стили для неразорванного бокса
extras unbroken and first extras unbroken and first={<options>} Стили для неразорванного и первого бокса
extras unbroken and first pre extras unbroken and first pre={<options>} Предварительные стили для неразорванного и первого бокса
extras unbroken and last extras unbroken and last={<options>} Стили для неразорванного и последнего бокса
extras unbroken and last pre extras unbroken and last pre={<options>} Предварительные стили для неразорванного и последнего бокса
extras unbroken pre extras unbroken pre={<options>} Предварительные стили для неразорванного бокса
extrude bottom by extrude bottom by=<length> Выступ снизу бокса
extrude by extrude by=<length> Выступ со всех сторон
extrude left by extrude left by=<length> Выступ слева
extrude right by extrude right by=<length> Выступ справа
extrude top by extrude top by=<length> Выступ сверху
fill downwards fill downwards Заполнение содержимого сверху вниз
finish finish={<options>} Завершающие стили
finish broken finish broken={<options>} Завершающие стили для разорванного бокса
finish broken pre finish broken pre={<options>} Предварительные завершающие стили для разорванного бокса
finish fading vignette finish fading vignette={<options>} Завершение fading vignette-эффекта
finish first finish first={<options>} Завершающие стили для первой части
finish first and middle finish first and middle={<options>} Завершающие стили для первой и средней частей
finish first and middle pre finish first and middle pre={<options>} Предварительные завершающие стили для первой и средней частей
finish first pre finish first pre={<options>} Предварительные завершающие стили для первой части
finish last finish last={<options>} Завершающие стили для последней части
finish last pre finish last pre={<options>} Предварительные завершающие стили для последней части
finish middle finish middle={<options>} Завершающие стили для средней части
finish middle and last finish middle and last={<options>} Завершающие стили для средней и последней частей
finish middle and last pre finish middle and last pre={<options>} Предварительные завершающие стили для средней и последней частей
finish middle pre finish middle pre={<options>} Предварительные завершающие стили для средней части
finish pre finish pre={<options>} Предварительные завершающие стили
finish raised fading vignette finish raised fading vignette={<options>} Завершение raised fading vignette-эффекта
finish unbroken finish unbroken={<options>} Завершающие стили для неразорванного бокса
finish unbroken and first finish unbroken and first={<options>} Завершающие стили для неразорванного и первого бокса
finish unbroken and first pre finish unbroken and first pre={<options>} Предварительные завершающие стили для неразорванного и первого бокса
finish unbroken and last finish unbroken and last={<options>} Завершающие стили для неразорванного и последнего бокса
finish unbroken and last pre finish unbroken and last pre={<options>} Предварительные завершающие стили для неразорванного и последнего бокса
finish unbroken pre finish unbroken pre={<options>} Предварительные завершающие стили для неразорванного бокса
finish vignette finish vignette={<options>} Завершение vignette-эффекта
fit fit={<options>} Подгонка размера содержимого
fit algorithm fit algorithm=<name> Алгоритм подгонки
fit basedim fit basedim=<length> Базовый размер для подгонки
fit fontsize macros fit fontsize macros={<names>} Макросы размера шрифта для подгонки
fit height from fit height from={<code>} Вычисление высоты из кода
fit height plus fit height plus={<length>} Дополнительная высота при подгонке
fit maxfontdiff fit maxfontdiff=<value> Максимальная разница шрифтов
fit maxfontdiffgap fit maxfontdiffgap=<value> Максимальный промежуток разницы шрифтов
fit maxstep fit maxstep=<value> Максимальное количество шагов
fit maxwidthdiff fit maxwidthdiff=<value> Максимальная разница ширины
fit maxwidthdiffgap fit maxwidthdiffgap=<value> Максимальный промежуток разницы ширины
fit skip fit skip={<options>} Пропуск элементов при подгонке
fit to fit to={<dimensions>} Подгонка к указанным размерам
fit to height fit to height={<height>} Подгонка по высоте
fit warning fit warning={<options>} Предупреждения при подгонке
fit width from fit width from={<code>} Вычисление ширины из кода
fit width plus fit width plus={<length>} Дополнительная ширина при подгонке
flip title flip title Переворот заголовка
float float Плавающий бокс
float* float* Альтернативный плавающий бокс
floatplacement floatplacement={<placement>} Позиционирование плавающего бокса
flush left flush left Выравнивание по левому краю
flush right flush right Выравнивание по правому краю
flushleft lower flushleft lower Выравнивание нижней части по левому краю
flushleft title flushleft title Выравнивание заголовка по левому краю
flushleft upper flushleft upper Выравнивание верхней части по левому краю
flushright lower flushright lower Выравнивание нижней части по правому краю
flushright title flushright title Выравнивание заголовка по правому краю
flushright upper flushright upper Выравнивание верхней части по правому краю
fontlower fontlower={<font>} Шрифт нижней части
fonttitle fonttitle={<font>} Шрифт заголовка
fontupper fontupper={<font>} Шрифт верхней части
force nobeforeafter force nobeforeafter Принудительное отключение before/after
frame code frame code={<code>} Пользовательский код рамки
frame code app frame code app={<code>} Код рамки для приложений
frame code pre frame code pre={<code>} Предварительный код рамки
frame empty frame empty Пустая рамка
frame engine frame engine=<name> Движок отрисовки рамки
frame hidden frame hidden Скрытая рамка
frame style frame style={<style>} Стиль рамки
frame style image frame style image={<image>} Стиль рамки с изображением
frame style tile frame style tile={<options>} Стиль рамки с плиткой
freelance freelance={<options>} Freelance-стиль
freeze extension freeze extension={<ext>} Расширение для замороженных файлов
freeze file freeze file={<name>} Имя замороженного файла
freeze jpg freeze jpg Заморозка в JPG
freeze none freeze none Без заморозки
freeze pdf freeze pdf Заморозка в PDF
freeze png freeze png Заморозка в PNG
fuzzy halo fuzzy halo={<options>} Размытое гало
fuzzy shadow fuzzy shadow={<options>} Размытая тень
geometry nodes geometry nodes={<names>} Геометрические узлы
graphics directory graphics directory={<path>} Директория с графикой
graphics options graphics options={<options>} Опции графики
graphics orientation graphics orientation={<angle>} Ориентация графики
graphics pages graphics pages={<range>} Страницы графики
grow sidewards by grow sidewards by={<length>} Рост вбок
grow to left by grow to left by={<length>} Рост влево
grow to right by grow to right by={<length>} Рост вправо
halign halign=<alignment> Горизонтальное выравнивание
halign code halign code={<code>} Код горизонтального выравнивания
halign lower halign lower=<alignment> Выравнивание нижней части
halign lower code halign lower code={<code>} Код выравнивания нижней части
halign title halign title=<alignment> Выравнивание заголовка
halign title code halign title code={<code>} Код выравнивания заголовка
halign upper halign upper=<alignment> Выравнивание верхней части
halign upper code halign upper code={<code>} Код выравнивания верхней части
halo halo={<options>} Эффект гало
hbox hbox Горизонтальная коробка
hbox boxed title hbox boxed title Горизонтальная коробка заголовка
height height={<length>} Фиксированная высота
height fill height fill Заполнение высоты
height fixed for height fixed for={<name>} Фиксированная высота для группы
height from height from={<code>} Высота из кода
height plus height plus={<length>} Дополнительная высота
hide hide Скрытый бокс
highlight math highlight math Подсветка математики
highlight math style highlight math style={<style>} Стиль подсветки математики
hyperlink hyperlink={<name>} Гиперссылка
hyperlink interior hyperlink interior={<name>} Гиперссылка на внутреннюю часть
hyperlink node hyperlink node={<name>} Гиперссылка на узел
hyperlink title hyperlink title={<name>} Гиперссылка на заголовок
hyperref hyperref={<options>} Настройки hyperref
hyperref interior hyperref interior={<options>} Hyperref для внутренней части
hyperref node hyperref node={<options>} Hyperref для узла
hyperref title hyperref title={<options>} Hyperref для заголовка
hypertarget hypertarget={<name>} Цель гиперссылки
hyperurl hyperurl={<url>} Гиперссылка-URL
hyperurl interior hyperurl interior={<url>} URL для внутренней части
hyperurl node hyperurl node={<url>} URL для узла
hyperurl title hyperurl title={<url>} URL для заголовка
hyperurl* hyperurl*={<url>} Альтернативный гиперurl
hyperurl* interior hyperurl* interior={<url>} Альтернативный URL для внутренней части
hyperurl* node hyperurl* node={<url>} Альтернативный URL для узла
hyperurl* title hyperurl* title={<url>} Альтернативный URL для заголовка
hyphenationfix hyphenationfix Исправление переносов
if odd page if odd page={<code>} Условие для нечетной страницы
if odd page or oneside if odd page or oneside={<code>} Условие для нечетной/односторонней страницы
if odd page or oneside* if odd page or oneside*={<code>} Альтернативное условие
if odd page* if odd page*={<code>} Альтернативное условие нечетной страницы
IfBlankF IfBlankF={<arg>}{<code>} Условный код если аргумент пуст (ложь)
IfBlankT IfBlankT={<arg>}{<code>} Условный код если аргумент пуст (истина)
IfBlankTF IfBlankTF={<arg>}{<if>}{<else>} Полное условие для пустого аргумента
IfBooleanF IfBooleanF={<arg>}{<code>} Условие для булева значения (ложь)
IfBooleanT IfBooleanT={<arg>}{<code>} Условие для булева значения (истина)
IfBooleanTF IfBooleanTF={<arg>}{<if>}{<else>} Полное булево условие
IfEmptyF IfEmptyF={<arg>}{<code>} Условие для пустого значения (ложь)
IfEmptyT IfEmptyT={<arg>}{<code>} Условие для пустого значения (истина)
IfEmptyTF IfEmptyTF={<arg>}{<if>}{<else>} Полное условие для пустого значения
IfNoValueF IfNoValueF={<arg>}{<code>} Условие если нет значения (ложь)
IfNoValueT IfNoValueT={<arg>}{<code>} Условие если нет значения (истина)
IfNoValueTF IfNoValueTF={<arg>}{<if>}{<else>} Полное условие для отсутствия значения
IfValueF IfValueF={<arg>}{<code>} Условие если есть значение (ложь)
IfValueT IfValueT={<arg>}{<code>} Условие если есть значение (истина)
IfValueTF IfValueTF={<arg>}{<if>}{<else>} Полное условие для наличия значения
ignore nobreak ignore nobreak Игнорирование запрета разрыва
image comment image comment={<text>} Комментарий к изображению
index index={<entry>} Запись в индекс
index actual index actual={<options>} Фактические настройки индекса
index annotate index annotate={<options>} Аннотации индекса
index colorize index colorize={<options>} Раскрашивание индекса
index command index command={<cmd>} Команда индекса
index command name index command name={<name>} Имя команды индекса
index default settings index default settings Настройки индекса по умолчанию
index format index format={<format>} Формат индекса
index gather all index gather all Сбор всех элементов в индекс
index gather colors index gather colors Сбор цветов в индекс
index gather commands index gather commands Сбор команд в индекс
index gather counters index gather counters Сбор счетчиков в индекс
index gather environments index gather environments Сбор окружений в индекс
index gather keys index gather keys Сбор ключей в индекс
index gather lengths index gather lengths Сбор длин в индекс
index gather none index gather none Отключение сбора в индекс
index gather paths index gather paths Сбор путей в индекс
index gather values index gather values Сбор значений в индекс
index german settings index german settings Немецкие настройки индекса
index key formatter index key formatter={<formatter>} Форматирование ключей индекса
index keys formatter index keys formatter={<formatter>} Форматирование нескольких ключей
index level index level={<level>} Уровень индекса
index quote index quote={<text>} Цитата в индексе
index* index*={<entry>} Альтернативная запись в индекс
inherit height inherit height Наследование высоты
interior code interior code={<code>} Пользовательский код внутренней части
interior code app interior code app={<code>} Код внутренней части для приложений
interior code pre interior code pre={<code>} Предварительный код внутренней части
interior empty interior empty Пустая внутренняя часть
interior engine interior engine={<name>} Движок внутренней части
interior hidden interior hidden Скрытая внутренняя часть
interior style interior style={<style>} Стиль внутренней части
interior style image interior style image={<image>} Стиль внутренней части с изображением
interior style tile interior style tile={<options>} Стиль внутренней части с плиткой
interior titled code interior titled code={<code>} Код внутренней части с заголовком
interior titled code app interior titled code app={<code>} Код внутренней части с заголовком для приложений
interior titled code pre interior titled code pre={<code>} Предварительный код внутренней части с заголовком
interior titled empty interior titled empty Пустая внутренняя часть с заголовком
interior titled engine interior titled engine=<name> Движок для внутренней части с заголовком
invisible invisible Делает бокс полностью невидимым (но сохраняет содержимое)
keywords bold keywords bold Выделение ключевых слов жирным шрифтом в документации
label label=<text> Метка для перекрестных ссылок
label is label label is label Использовать стандартные метки LaTeX
label is zlabel label is zlabel Использовать zref-метки
label separator label separator=<text> Разделитель между меткой и текстом
label type label type=<type> Тип метки (например, ’tcb@label')
left left=<length> Отступ слева для основного содержимого
left skip left skip=<length> Горизонтальный отступ слева
left* left*=<length> Альтернативный отступ слева
lefthand ratio lefthand ratio=<value> Соотношение для левой части (в split боксах)
lefthand width lefthand width=<length> Ширина левой части (в split боксах)
leftlower leftlower=<length> Отступ слева для нижней части
leftright skip leftright skip=<length> Одновременный отступ слева и справа
leftrule leftrule=<length> Толщина левой границы
lefttitle lefttitle=<length> Отступ слева для заголовка
leftupper leftupper=<length> Отступ слева для верхней части
lifted shadow lifted shadow={<options>} Эффект “приподнятой” тени
lines before break lines before break=<number> Минимальное количество строк перед разрывом
list entry list entry=<text> Запись для списка (оглавления)
list text list text=<text> Текст для списка
listing above comment listing above comment={<text>} Листинг с комментарием сверху
listing above text listing above text={<text>} Листинг с текстом сверху
listing and comment listing and comment={<text>} Комбинация листинга и комментария
listing engine listing engine=<name> Движок для обработки листингов
listing file listing file={<filename>} Файл с кодом для листинга
listing inputencoding listing inputencoding=<encoding> Кодировка входного файла листинга
listing only listing only Только листинг (без дополнительного текста)
listing options listing options={<options>} Опции для листинга
listing remove caption listing remove caption Удаление подписи у листинга
listing side comment listing side comment={<text>} Листинг с боковым комментарием
listing side text listing side text={<text>} Листинг с боковым текстом
listing style listing style={<style>} Стиль оформления листинга
listing utf8 listing utf8 Использование UTF-8 для листинга
lower separated lower separated Разделение нижней части визуальной линией
lowerbox lowerbox Обработка нижней части как бокса
marker marker={<options>} Маркеры для оформления
math math Математический режим в основном содержимом
math lower math lower Математический режим в нижней части
math upper math upper Математический режим в верхней части
middle middle=<length> Вертикальное выравнивание по середине
minipage minipage Обработка содержимого как minipage
minipage boxed title minipage boxed title Заголовок как minipage
minted language minted language={<lang>} Язык для пакета minted
minted options minted options={<options>} Опции для minted
minted style minted style={<style>} Стиль для minted
move upwards move upwards=<length> Сдвиг содержимого вверх
nameref nameref Использование nameref для ссылок
natural height natural height Естественная высота содержимого
no borderline no borderline Удаление дополнительных границ
no boxed title style no boxed title style Отключение стиля для заголовка в рамке
no extras no extras Отключение дополнительных стилей
no finish no finish Отключение завершающих стилей
no label type no label type Отключение специального типа метки
no listing options no listing options Отключение опций листинга
no overlay no overlay Отключение наложений
no shadow no shadow Отключение теней
no underlay no underlay Отключение подложек
no watermark no watermark Отключение водяных знаков
nobeforeafter nobeforeafter Отключение отступов before/after
nofloat nofloat Запрет плавающего размещения
noparskip noparskip Отключение parskip
notitle notitle Отключение заголовка
octogon arc octogon arc Восьмиугольная форма углов
on line on line Размещение в строке текста
only only={<options>} Условное отображение содержимого
opacityback opacityback=<value> Прозрачность фона
opacitybacktitle opacitybacktitle=<value> Прозрачность фона заголовка
opacityframe opacityframe=<value> Прозрачность рамки
opacitytext opacitytext=<value> Прозрачность текста
outer arc outer arc Скругление внешних углов
overlay overlay={<code>} Наложение TikZ-кода
oversize oversize Разрешение содержимому выходить за границы
pad at break pad at break=<length> Заполнение при разрыве
page ref formatter page ref formatter={<code>} Форматирование ссылок на страницы
parbox parbox Обработка содержимого как parbox
parskip parskip Использование parskip между абзацами
phantom phantom Невидимый бокс, занимающий место
process code process code={<code>} Обработка кода перед вставкой
raster columns raster columns=<number> Количество колонок в сетке
raster equal height raster equal height Выравнивание высоты элементов сетки
raster rows raster rows=<number> Количество строк в сетке
record record Запись параметров бокса
right right=<length> Отступ справа для основного содержимого
right skip right skip=<length> Горизонтальный отступ справа
rightrule rightrule=<length> Толщина правой границы
rotate rotate=<angle> Вращение бокса
rounded corners rounded corners=<length> Скругление углов
run pdflatex run pdflatex Запуск pdflatex для обработки содержимого
savedelimiter savedelimiter={<text>} Сохранение разделителя
saveto saveto={<filename>} Сохранение содержимого в файл
scale scale=<factor> Масштабирование содержимого
segmentation at break segmentation at break Разделитель при разрыве
segmentation code segmentation code={<code>} Пользовательский код разделителя
segmentation style segmentation style={<style>} Стиль линии-разделителя между верхней и нижней частями
separator sign separator sign={<char>} Символ-разделитель в описаниях
separator sign colon separator sign colon Использование двоеточия как разделителя
separator sign dash separator sign dash Использование тире как разделителя
separator sign none separator sign none Отсутствие разделителя
set alt set alt={<text>} Установка альтернативного текста
set temporal set temporal={<text>} Временная установка значения
shadow shadow={<options>} Настройка тени вокруг бокса
sharp corners sharp corners Острые углы (без скругления)
sharpish corners sharpish corners Слегка скругленные углы
shield externalize shield externalize Защита от externalize
short title short title={<text>} Краткий вариант заголовка
show bounding box show bounding box Отображение ограничивающей рамки
shrink break goal shrink break goal={<length>} Целевое значение сжатия при разрыве
shrink tight shrink tight Плотное сжатие содержимого
sidebyside sidebyside Размещение содержимого бок о бок
sidebyside align sidebyside align={<option>} Выравнивание side-by-side содержимого
sidebyside gap sidebyside gap={<length>} Зазор между side-by-side элементами
sidebyside switch sidebyside switch Переключение порядка side-by-side
size size={<option>} Размер бокса (normal, small, etc.)
skin skin={<name>} Скин для оформления бокса
skin first skin first={<name>} Скин для первого бокса в группе
skin last skin last={<name>} Скин для последнего бокса в группе
skin middle skin middle={<name>} Скин для средних боксов в группе
smart shadow arc smart shadow arc Умное скругление теней
space space={<length>} Вертикальный промежуток
space to space to={<length>} Гибкий вертикальный промежуток
space to lower space to lower={<length>} Промежуток до нижней части
space to upper space to upper={<length>} Промежуток до верхней части
spartan spartan Минималистичный стиль оформления
split split={<options>} Разделение бокса на части
spread spread Равномерное распределение пространства
spread downwards spread downwards Распределение вниз
spread inwards spread inwards Распределение внутрь
spread outwards spread outwards Распределение наружу
spread upwards spread upwards Распределение вверх
square square Квадратная форма бокса
squeezed title squeezed title Сжатый заголовок
standard standard Стандартный стиль оформления
standard jigsaw standard jigsaw Стандартный стиль с “пазлами”
step step={<counter>} Шаг нумерации
step and label step and label Автоматическая нумерация и метка
store to box array store to box array={<name>} Сохранение в массив боксов
subtitle style subtitle style={<style>} Стиль подзаголовка
tabularx tabularx Использование tabularx внутри
tcbimage comment tcbimage comment={<text>} Комментарий к изображению
tcbox raise tcbox raise={<length>} Поднятие бокса
tempfile tempfile Использование временного файла
temporal temporal={<text>} Временное значение
terminator sign terminator sign={<char>} Конечный символ в описаниях
text above listing text above listing={<text>} Текст над листингом
text and listing text and listing Комбинация текста и листинга
text fill text fill Заполнение текстом
text height text height={<length>} Высота текстовой области
text width text width={<length>} Ширина текстовой области
theorem theorem Стиль для теорем
theorem label supplement theorem label supplement={<text>} Дополнение к метке теоремы
theorem style theorem style={<name>} Стиль оформления теоремы
tikz tikz={<options>} Опции TikZ
tikz lower tikz lower={<options>} TikZ для нижней части
tikz upper tikz upper={<options>} TikZ для верхней части
tikznode tikznode Обработка как TikZ-узел
tile tile Плиточное оформление фона
title title={<text>} Заголовок бокса
title after break title after break={<text>} Заголовок после разрыва
title style title style={<style>} Стиль заголовка
titlerule titlerule={<length>} Линия под заголовком
toggle enlargement toggle enlargement Переключение увеличения
toggle left and right toggle left and right Переключение левого/правого
top top={<length>} Отступ сверху
toprule toprule={<length>} Верхняя граница
unbreakable unbreakable Запрет разрыва бокса
underlay underlay={<code>} Подложка (TikZ-код под содержимым)
underlay boxed title underlay boxed title={<code>} Подложка для заголовка
underlay first underlay first={<code>} Подложка для первой части
underlay last underlay last={<code>} Подложка для последней части
underlay middle underlay middle={<code>} Подложка для средней части
underlay vignette underlay vignette={<options>} Виньетка в качестве подложки
upperbox upperbox Обработка верхней части как бокса
use alt use alt Использование альтернативного текста
use color stack use color stack Использование стека цветов
valign valign={<option>} Вертикальное выравнивание
varwidth upper varwidth upper Переменная ширина верхней части
verbatim verbatim Режим verbatim
visible visible Видимый бокс (антоним invisible)
watermark graphics watermark graphics={<file>} Водяной знак из изображения
watermark opacity watermark opacity={<value>} Прозрачность водяного знака
watermark text watermark text={<text>} Текстовый водяной знак
watermark tikz watermark tikz={<code>} Водяной знак TikZ
width width={<length>} Ширина бокса

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

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

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

Ключ Синтаксис Назначение
color color={<name>} Цвет для документации
commands commands={<list>} Список команд
counter counter={<name>} Счетчик для документации
environment environment={<name>} Окружение для документации
index index={<options>} Настройки индекса
key key={<name>} Ключ документации
length length={<name>} Длина для документации
new new Пометка нового элемента
path path={<name>} Путь для документации
updated updated Пометка обновленного элемента
value value={<val>} Значение для документации

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

Ключ Синтаксис Назначение
- - Стандартный режим externalize
! ! Форсированный режим externalize
compiler compiler={<name>} Компилятор для внешних файлов
environment environment={<name>} Окружение для внешнего контента
externalize externalize Активация externalize
name name={<base>} Базовое имя для файлов
preamble preamble={<code>} Преамбула для внешних файлов
prefix prefix={<text>} Префикс для имен файлов
runner runner={<command>} Команда для запуска
safety safety={<options>} Настройки безопасности

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

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

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

Ключ Синтаксис Назначение
colspacing colspacing=<length> Расстояние между колонками
columns columns=<number> Количество колонок
height height=<length> Высота постера
rowspacing rowspacing=<length> Расстояние между строками
showframe showframe Показать рамки
width width=<length> Ширина постера

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

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

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

Ключ Синтаксис Назначение
tcb fill frame tcb fill frame={<color>} Заливка рамки
tcb fill interior tcb fill interior={<color>} Заливка внутренней части
tcb fill title tcb 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=true false(по умолчанию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=true false` Включает/отключает заливку фона заголовка. По умолчанию: 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 upper halign=flush left Выравнивание верхней части по левому краю
center upper halign=flush center Выравнивание верхней части по центру
flushright upper halign=flush right Выравнивание верхней части по правому краю
flushleft lower halign lower=flush left Выравнивание нижней части по левому краю
center lower halign lower=flush center Выравнивание нижней части по центру
flushright lower halign lower=flush right Выравнивание нижней части по правому краю
flushleft title halign title=flush left Выравнивание заголовка по левому краю
center title halign title=flush center Выравнивание заголовка по центру
flushright title halign 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, minimal size=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.0 opacityback=0.3
opacitybacktitle /tcb/opacitybacktitle=⟨fraction⟩ Прозрачность фона заголовка 0.0-1.0 opacitybacktitle=0.7
opacityfill /tcb/opacityfill=⟨fraction⟩ Прозрачность заливки (рамка + фон + заголовок) 0.0-1.0 opacityfill=0.6
opacityupper /tcb/opacityupper=⟨fraction⟩ Прозрачность текста верхней части 0.0-1.0 opacityupper=0.4
opacitylower /tcb/opacitylower=⟨fraction⟩ Прозрачность текста нижней части 0.0-1.0 opacitylower=0.8
opacitytext /tcb/opacitytext=⟨fraction⟩ Прозрачность всего текста (верх + низ) 0.0-1.0 opacitytext=0.5
opacitytitle /tcb/opacitytitle=⟨fraction⟩ Прозрачность текста заголовка 0.0-1.0 opacitytitle=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⟩ Окружает верхнюю часть tikzpicture tikz upper={scale=0.5}
tikz lower /tcb/tikz lower=⟨options⟩ Окружает нижнюю часть tikzpicture tikz lower={rotate=30}
tikznode upper /tcb/tikznode upper=⟨options⟩ Помещает контент в TikZ node tikznode upper={draw}
tikznode lower /tcb/tikznode lower=⟨options⟩ Помещает нижнюю часть в TikZ node tikznode 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 и first overlay unbroken and first={\draw[blue] (frame.south west) -- (frame.north east);}
overlay middle and last /tcb/overlay middle and last=⟨graphical code⟩ Комбинация middle и last overlay middle and last={\draw[green] (frame.south west) -- (frame.north east);}
overlay unbroken and last /tcb/overlay unbroken and last=⟨graphical code⟩ Комбинация unbroken и last overlay unbroken and last={\draw[red] (frame.south west) -- (frame.north east);}
overlay first and middle /tcb/overlay first and middle=⟨graphical code⟩ Комбинация first и middle overlay 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=true false` Игнорировать запрет разрыва после заголовка
before nobreak /tcb/before nobreak=⟨code⟩ Код перед боксом при запрете разрыва before nobreak={\noindent}
parfillskip restore `/tcb/parfillskip restore=true false` Восстанавливать значение \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. Основные команды и стили

Опция Синтаксис Описание Значение по умолчанию
parbox parbox=true / parbox=false Определяет, будет ли текст обрабатываться как в minipage/parbox (влияет на форматирование абзацев). true
hyphenationfix hyphenationfix=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. Основные команды и параметры

Опция / Команда Синтаксис Описание
tempfile tempfile=<имя_файла> Устанавливает имя временного файла (по умолчанию: \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 raise tcbox raise=<длина> Поднимает \tcbox на указанную высоту (например, 5mm).
tcbox raise base tcbox raise base Выравнивает \tcbox по базовой линии текста.
on line on 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

Опция / Стиль Синтаксис Описание
verbatim verbatim Уменьшает размеры \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. Основные опции для работы с метками

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

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

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

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

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

Пример с cleveref:

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

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

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

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 page check odd page=true/false Включает точную проверку чётности страницы (требует 2-х компиляций)
if odd page if odd page={нечётные}{чётные} Разные стили для чётных/нечётных страниц
if odd page or oneside if 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 externalize shield externalize=true/false Защищает tcolorbox от внешнего экспорта (по умолчанию false)
external external=имя_файла Устанавливает имя файла для экспорта TikZ-рисунков внутри бокса
remake remake=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. Сброс настроек

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

Пример:

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

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

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

Пример с IfValueTF:

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

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

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

Пример:

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

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

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

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

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

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

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

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

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

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

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

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

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

  1. reset:

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

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

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

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

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

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

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

\begin{document}

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

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

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

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

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

\end{document}

5. Вывод

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