Queria saber se poderia alterar o número que aparece no meu "\labelcref"? (Eu uso hyperref
, cleveref
e nameref
pacotes) Mais precisamente, estou escrevendo um documento onde existem várias seções que são compostas por algumas subseções. Eu escrevi o código:
\renewcommand{\thesection}{\Roman{section}}
\renewcommand{\thesubsection}{\arabic{subsection}}
Para que minhas seções sejam I,II,III,... e cada subseção por 1,2,3,..(e não I.1,I.2,..).
Mas eu gostaria de ter "ver I.1" e não "ver 1" (o que pode confundir o leitor porque não indica em que seção está). Meu código fica assim:
\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}
Obrigado por qualquer resposta!
Responder1
O kernel do LaTeX já fornece um mecanismo para o que você deseja: sempre que \label
for chamado, a referência atual é feita expandindo
\p@foo\thefoo
onde foo
está o contador “refstep” mais recentemente. Normalmente \p@foo
(no seu caso \p@subsection
) é definido para expandir para nada. Então aqui está um exemplo mínimo do que você deve fazer (removi todos os pacotes não essenciais, para mostrar melhor a parte principal do código).
\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}