Перейти к содержанию

cleveref, nameref и varioref в Scissor LaTeX

Пакет cleveref в Scissor LaTeX в основном работает: \cref и \Cref работают с отдельными метками, списками и диапазонами, как и \cpageref, \namecref, параметры capitalise, noabbrev и nameinlink, а также \crefname; \nameref выводит номер вместо названия, а \vref не даёт указания на страницу.

Что делают пакеты

cleveref добавляет к ссылке вид объекта: \cref{fig:plot} выводит «fig. 1» без того, чтобы вы набирали слово, а \cref{a,b} объединяет несколько меток в «figs. 1 and 2». nameref выводит название раздела вместо его номера. varioref с помощью \vref добавляет указания на страницу вроде «on the next page».

Что здесь работает

КомандаВ Scissor LaTeXПримечания
\cref{label}Работает«section 1», «fig. 1», «table 1», «eq. (1)».
\Cref{label}РаботаетС заглавной буквы, без сокращений: «Figure 1», «Equation (1)».
\cref{a,b}, \cref{a,b,c}Работает«sections 1 and 2».
\crefrange{a}{b}Работает«eqs. (1) to (2)».
\cpageref{label}Работает«page 1».
\namecref{label}, \labelcref{label}РаботаетТолько имя («eq.») или только номер («(1)»).
\crefname, \CrefnameРаботаетСобственные имена, в преамбуле.
Параметры capitalise, noabbrev, nameinlinkРаботаетДругие параметры игнорируются.
\nameref{label} (nameref)ЧастичноВыводит номер, а не название.
\vref, \Vref (varioref)ЧастичноВыводит номер без указания на страницу.

Примеры

\cref сам называет вид объекта и объединяет несколько меток:

\cref и \Cref

LaTeXПреамбула: \usepackage{cleveref}Открыть в редакторе (откроется в новой вкладке)
\section{Data}\label{sec:data}
\section{Method}\label{sec:method}
\begin{figure}[h]
  \centering
  \fbox{A plot of the 44 samples}
  \caption{Samples.}\label{fig:samples}
\end{figure}
\begin{table}[h]
  \centering
  \begin{tabular}{lr} Erika & 44 \\ Hans & 38 \\ \end{tabular}
  \caption{Counts.}\label{tab:counts}
\end{table}
As \cref{sec:data,sec:method} explain, \cref{fig:samples} shows
the samples. \Cref{tab:counts} counts them.
Свёрстано в Scissor LaTeX: \cref и \Cref

Уравнения, диапазоны и ссылки на страницы:

Уравнения, \crefrange и \cpageref

LaTeXПреамбула: \usepackage{amsmath,cleveref}Открыть в редакторе (откроется в новой вкладке)
\begin{equation} a + b = 44 \label{eq:sum} \end{equation}
\begin{equation} a - b = 2 \label{eq:diff} \end{equation}
Adding \crefrange{eq:sum}{eq:diff} gives $a = 23$; \Cref{eq:sum}
is on \cpageref{eq:sum}.
Свёрстано в Scissor LaTeX: Уравнения, \crefrange и \cpageref

Параметры capitalise и noabbrev везде пишут полные имена с заглавной буквы, а \crefname задаёт собственные. С capitalise команда \cref использует форму вашего имени с заглавной буквы, поэтому part ниже выводится как «Part»:

Параметры и \crefname

\documentclass{article}
\usepackage[capitalise,noabbrev]{cleveref}
\crefname{section}{part}{parts}
\begin{document}
\section{Overview}\label{sec:overview}
\begin{figure}[h]
  \centering
  \fbox{Diagram}
  \caption{A diagram.}\label{fig:diagram}
\end{figure}
\cref{fig:diagram} belongs to \cref{sec:overview}.
\end{document}

\nameref здесь выводит номер раздела, а не его название:

\nameref выводит номер

LaTeXПреамбула: \usepackage{nameref}Открыть в редакторе (откроется в новой вкладке)
\section{Related work}\label{sec:related}
John Doe's results are summarised in \nameref{sec:related}.

Совместимость

  • Из установленного TeX сюда: ссылки с \cref и родственными командами выглядят так же, как в установленном TeX. \nameref даёт номер вместо названия, а у \vref нет указания «on the next page».
  • Отсюда в установленный TeX: документы компилируются там без изменений. Загружайте cleveref после hyperref, как требует его руководство.

Полные руководства есть на CTAN: ctan.org/pkg/cleveref, ctan.org/pkg/nameref и ctan.org/pkg/varioref. Руководство есть в разделе Метки и перекрёстные ссылки, а о \autoref читайте на странице hyperref.

Вопросы и ответы

Чем \cref отличается от \Cref?

\cref использует короткие имена со строчной буквы, например «fig. 1» или «eq. (1)». \Cref пишет их полностью с заглавной буквы, для начала предложения. Параметр capitalise заставляет \cref везде вести себя как \Cref.

Выводит ли \nameref название раздела?

Пока нет. Она выводит номер раздела, поэтому предложение всё равно читается, но иначе. Если название важно, напишите его полностью.

Каждый пример на этой странице верстается в Scissor LaTeX при сборке сайта. Обновлено 2026-11-07.