如何更改交叉引用中使用的小節編號?

如何更改交叉引用中使用的小節編號?

我想知道是否可以更改“\labelcref”中顯示的數字? (我使用hyperref,cleverefnameref包)更準確地說,我正在編寫一個文檔,其中有幾個部分由幾個小節組成。我寫了程式碼:

\renewcommand{\thesection}{\Roman{section}}
\renewcommand{\thesubsection}{\arabic{subsection}}

這樣我的部分就由 I、II、III... 組成,每個小節由 1、2、3、..(而不是 I.1、I.2、...)組成。

但我希望「參見 I.1」而不是「參見 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}

在此輸入影像描述

相關內容