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.