「\labelcref」に表示される番号を変更できるかどうか疑問に思っています。(、パッケージを使用していますhyperref
)cleveref
よりnameref
正確に言うと、いくつかのサブセクションで構成されている複数のセクションがあるドキュメントを作成しています。次のコードを作成しました。
\renewcommand{\thesection}{\Roman{section}}
\renewcommand{\thesubsection}{\arabic{subsection}}
したがって、セクションは I、II、III、... で始まり、サブセクションはすべて 1、2、3、... で始まります (I.1、I.2、... ではありません)。
しかし、私は「1 を参照」ではなく「I.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}