Мне было интересно, могу ли я изменить число, которое появляется в моем "\labelcref"? (Я использую hyperref
, cleveref
и nameref
пакеты) Точнее, я пишу документ, в котором есть несколько разделов, которые состоят из нескольких подразделов. Я написал код:
\renewcommand{\thesection}{\Roman{section}}
\renewcommand{\thesubsection}{\arabic{subsection}}
Таким образом, мои разделы будут иметь вид I,II,III,..., а каждый подраздел — 1,2,3,.. (а не I.1,I.2,..).
Но я бы хотел, чтобы было "see I.1", а не "see 1" (что может сбить с толку читателя, поскольку не указывается, в каком разделе это находится). Мой код выглядит так:
\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[francais]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsthm, thmtools}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{lmodern}
\usepackage{soul}
\usepackage{mathrsfs}
\usepackage{enumitem}
\usepackage{xcolor}
\usepackage{hyperref, nameref, cleveref}
\begin{document}
\section {First}
\subsection {one} \label{I.1}
blablabla
\subsection {two}
blablabla
\section {Second}
\subsection {one}
blablabla and see \labelcref{I.1}
\end{document}
Спасибо за любой ответ!
решение1
Ядро LaTeX уже предоставляет механизм для того, что вам нужно: всякий раз, когда \label
вызывается, текущая ссылка создается путем расширения
\p@foo\thefoo
где foo
— последний «refstepped» счетчик. Обычно \p@foo
(в вашем случае \p@subsection
) определяется как расширяющийся в ноль. Так что вот минимальный пример того, что вам следует сделать (я удалил все ненужные пакеты, чтобы лучше показать основную часть кода).
\documentclass[10pt,a4paper]{article}
\usepackage{hyperref, nameref, cleveref}
\renewcommand{\thesection}{\Roman{section}}
\renewcommand{\thesubsection}{\arabic{subsection}}
\makeatletter
\renewcommand{\p@subsection}{\thesection.}
\makeatother
\begin{document}
\section {First}
\subsection {one} \label{I.1}
blablabla
\subsection {two}
blablabla
\section {Second}
\subsection {one}
blablabla and see \labelcref{I.1} (also known as \cref{I.1})
\end{document}