LaTeX. Перекрёстные ссылки. Пакет zref-clever

2026-10-17 · 4 мин. для прочтения
blog computer-science

LaTeX. Перекрёстные ссылки. Пакет zref-clever.

Содержание

1 Общая информация

  • Пакет zref-clever разработан для создания перекрёстных ссылок в LaTeX.
  • Пришёл на смену cleveref.
  • Построен на расширяемой системе zref.
  • CTAN: https://ctan.org/pkg/zref-clever

2 Подключение

  • Простой вариант:
    \usepackage{zref-clever}
    

3 Глобальная настройка

  • Команда \zcsetup используется для глобальной настройки поведения пакета.
  • Должна вызываться в преамбуле.
  • zref-clever не принимает эти опции как аргументы пакета.
    \zcsetup{
      cap,        % Делать первую букву заглавной по умолчанию
      nameinlink, % Включать название в гиперссылку
      % ... другие настройки
    }
    
Таблица 1: Основные опции \zcsetup
ОпцияОписание
cap / nocapВключает/выключает автоматическую капитализацию первого слова названия ссылки.
nameinlink / nonameinlinkВключает/выключает включение названия объекта (например, «рис.») в гиперссылку. По умолчанию false.
sort / nosortВключает/выключает автоматическую сортировку списка меток. По умолчанию true.
comp / nocompВключает/выключает сжатие последовательных ссылок в диапазоны (например, «рис. 1-3»). По умолчанию true.
abbrev / noabbrevИспользовать сокращённые или полные названия (например, «рис.» vs «рисунок»).

4 Основные команды

4.1 Умная ссылка \zcref

  • Основная команда.
  • Автоматически определяет тип объекта (раздел, рисунок, таблица, уравнение и т.д.) и подставляет нужное название.
    \section{Введение}
    \label{sec:intro}
    
    Смотрите раздел~\zcref{sec:intro}. % Выведет: "Смотрите раздел 1."
    

4.2 Ссылка на страницу \zcpageref

  • Для ссылок на страницы используется \zcpageref.

  • Работает аналогично \zcref, но выводит номер страницы.

    \zcpageref{sec:intro} % Выведет: "стр. 1"
    
  • Для создания ссылок, зависящих от положения (например, «на предыдущей странице»), используйте пакет zref-vario, который является расширением для zref-clever.

4.3 Опции для \zcref

  • Можно передавать локальные опции в квадратных скобках для изменения поведения конкретной ссылки.
ОпцияОписаниеПример
[S]Делает первую букву названия заглавной (аналог \Cref).\zcref[S]{sec:intro} → «Раздел 1»
[ref=page]Ссылается на свойство page вместо номера объекта.\zcref[ref=page]{sec:intro} → «1»

5 Настройка типов ссылок

  • zref-clever автоматически распознаёт стандартные окружения LaTeX (section, figure, table, equation).

  • Для нестандартных окружений (например, теорем) или для изменения названий используйте команду \zcRefTypeSetup.

  • Для стандартного типа:

    \zcRefTypeSetup{equation}{
    name-sg = формула, % Название в единственном числе
    name-pl = формулы  % Название во множественном числе
    }
    
  • Для нового окружения (например, леммы):

    \newtheorem{lemma}{Лемма}
    \zcRefTypeSetup{lemma}{
    name-sg = лемма,
    name-pl = леммы
    }
    

6 Управление форматом ссылок

  • Можно настраивать внешний вид ссылок с помощью опций ref и stripprefix.
    • ref : определяет, на какое свойство метки ссылаться (например, default, page, thecounter).
    • stripprefix : удаляет префикс из номера ссылки (например, если ваша метка fig:plot, а номер 1, то stripprefix может убрать fig:).

7 Интернационализация

  • zref-clever интегрируется с babel и polyglossia, адаптируя названия ссылок к текущему языку.
  • Для настройки языковых вариантов используйте команду \zcLanguageSetup.

8 Замена \eqref

8.1 Варианты замены

  • Оставить \eqref для простых ссылок на уравнения.
  • Использовать \zcref для получения единообразных, автоматически форматируемых ссылок на все типы объектов (разделы, рисунки, таблицы, уравнения).
  • Настроить \zcref так, чтобы он эмулировал поведение \eqref для уравнений, если это необходимо.

8.2 Ссылаться на уравнения без слова «уравнение»

  • В математических текстах фраза «см. (1)» звучит естественнее, чем «см. уравнение (1)».
  • zref-clever позволяет настроить это поведение глобально для всех ссылок на уравнения.
  • Для этого нужно переопределить названия типа equation в преамбуле, сделав их пустыми:
    \zcRefTypeSetup{equation}{
      name-sg =,   % Убираем слово "уравнение" (ед. ч.)
      name-pl =,   % Убираем слово "уравнения" (мн. ч.)
      name-sg-ab =, % Убираем сокращение (например, "ур.")
      name-pl-ab =,
    }
    
  • Для конкретного уравнения можно использовать опцию [noname], которая подавляет вывод названия типа для конкретной ссылки:
    \zcref[noname]{eq:1}
    

8.3 Связь c mathtools

  • mathtools — это надстройка над amsmath.

  • Предоставляет опцию showonlyrefs.

  • Эта опция автоматически скрывает номера у тех уравнений, на которые в тексте нет ссылок.

  • Если вы ссылаетесь на уравнение через \eqref, его номер появится.

  • Если не ссылаетесь — номер исчезнет, и уравнение останется без номера.

  • Это позволяет не загромождать текст лишними цифрами.

  • В zref-clever модуль совместимости с mathtools специально адаптирован для поддержки showonlyrefs.

  • Вариант загрузки пакетов:

    \documentclass{article}
    \usepackage{mathtools}
    \mathtoolsset{showonlyrefs}
    \usepackage{zref-clever}
    \begin{document}
    ...
    \end{document}
    
  • Когда showonlyrefs активен, ссылки через \zcref или \eqref сообщают mathtools, что уравнение нужно пронумеровать.

  • Помимо скрытия номеров, zref-clever автоматически сжимает последовательные ссылки на уравнения.

  • Например, \zcref{eq1, eq2, eq4} может вывести уравнения (1)--(2) и (4), а не перечислять их все через запятую.

Дмитрий Сергеевич Кулябов
Authors
Профессор кафедры теории вероятностей и кибербезопасности
Работаю профессором на кафедре теории вероятностей и кибербезопасности Российского университета дружбы народов им. Патриса Лумумбы. Научные интересы относятся к области теоретической физики и математического моделирования.