我在让 \Crefformat 遵守子节的格式时遇到了一些麻烦。我的(非)工作示例如下。
\documentclass[11pt]{article}
\usepackage{amssymb,amsfonts,amsmath}
\usepackage{xcolor}
\usepackage{url}
\usepackage[colorlinks,
linkcolor=black!75!red,
citecolor=blue,
pdftitle={},
pdfproducer={pdfLaTeX},
pdfpagemode=None,
bookmarksopen=true
bookmarksnumbered=true]{hyperref}
\usepackage[amsmath,thmmarks,hyperref]{ntheorem}
\usepackage{cleveref}
\crefname{section}{Section}{Sections}
\crefformat{section}{#2Section~#1#3}
\Crefformat{section}{#2Section~#1#3}
\crefname{subsection}{Subsection}{Subsections}
\crefformat{subsection}{#2Boo#1#3}
\Crefformat{subsection}{#2Boo#1#3}
\begin{document}
\section{One}\label{se}
\subsection{one.one}\label{subse}
\Cref{se}
\Cref{subse}
\end{document}
这部分 Cref
命令的行为符合预期:它显示一个可点击的Section 1
。但第二次调用 时Cref
,Subsection 1.1
显示Subsection
联合国可点击(因此超链接仅跨越1.1
)。
\Crefformat{subsection}
如果我只是指示,这就是我所期望的#2#1#3
。令我困惑的是,命令Boo
中的\Crefformat{subsection}
被完全忽略了。
答案1
cleveref
重置很多利用的东西\AtBeginDocument
,这样做会覆盖你的设置;最好延迟你自己的定义:
\documentclass[11pt]{article}
\usepackage{amssymb,amsfonts,amsmath}
\usepackage{xcolor}
\usepackage{url}
\usepackage[colorlinks,
linkcolor=black!75!red,
citecolor=blue,
pdftitle={},
pdfproducer={pdfLaTeX},
pdfpagemode=None,
bookmarksopen=true
bookmarksnumbered=true]{hyperref}
\usepackage[amsmath,thmmarks,hyperref]{ntheorem}
\usepackage{cleveref}
\crefname{section}{Section}{Sections}
\crefformat{section}{#2Section~#1#3}
\Crefformat{section}{#2Section~#1#3}
\crefname{subsection}{Subsection}{Subsections}
\AtBeginDocument{%
\crefformat{subsection}{#2Boo#1#3}%
\Crefformat{subsection}{#2Boo#1#3}%
}
\begin{document}
\section{One}\label{se}
\subsection{one.one}\label{subse}
\Cref{se}
\Cref{subse}
\end{document}