为了满足我女朋友对论文的要求:她希望章节引用为“第一章”、“第二章”等。我发现这个答案,看起来可以工作,但我希望在 cleveref \cref
/\Cref
调用中使用这些来利用 hyperref 集成。
到目前为止,
\Crefformat{chapter}{#2Chapter~\Numberstringnum{\getrefnumber{#1}#3}
和
\Crefformat{chapter}{#2Chapter~\mtnumberstring{#1}#3}
导致“第零章”引用 - 尽管超链接是正确的。
编辑-MWE:
\documentclass[12pt]{book}
\usepackage{hyperref}
\usepackage{cleveref}
\usepackage{fmtcount}
\usepackage{refcount}
\newcommand\mtnumberstring[1]{\Numberstringnum{\getrefnumber{#1}}}
%Both attempts included:
%\Crefformat{chapter}{#2Chapter~\Numberstringnum{\getrefnumber{#1}}#3}
\Crefformat{chapter}{#2Chapter~\mtnumberstring{#1}#3}
\begin{document}
\chapter{Abstract}\label{ch:abstract}
\chapter{Intro}\label{ch:intro}
\Cref{ch:abstract}
\end{document}
有什么方法可以实现这一点,或者我不应该添加超链接?
当前解决方案的关键部分是:
\usepackage{fmtcount}
\usepackage{refcount}
\newcommand\mtnumberstring[1]{\numberstringnum{\getrefnumber{#1}}}
\begin{document}
Chapter~\mtnumberstring{ch:label}.
\end{document}
答案1
你之前是非常关闭。
在 的最后一个参数中\Crefformat
,#1
表示格式化的标签(即\thechapter
扩展为的内容)而不是标签名称。因此,如果您使用\numberstringnum{#1}
而不是 ,\numberstringnum{\getrefnumber{#1}}
它就会起作用。
\documentclass{book}
\usepackage{fmtcount}
\usepackage{hyperref}
\usepackage{cleveref}
\Crefformat{chapter}{#2Chapter~\Numberstringnum{#1}#3}
\begin{document}
\tableofcontents
\chapter{Abstract}\label{ch:abstract}
\chapter{Intro}\label{ch:intro}
\Cref{ch:abstract}
\end{document}