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, оптимизируя процесс сборки сложных документов.