是否可以用章节/部分的名称替换\autoref
其编号?
以下命令将定义\fullref
标签的编号和名称将出现在标签的“autorefname”之后:
\newcommand*{\fullref}[1]{\hyperref[{#1}]{\autoref*{#1} \nameref*{#1}}}
但是,标签名称前不需要数字。
答案1
如果我没有理解错的话,应该写的是章节名称而不是章节编号。
这正是它的\nameref*
作用。因此,实际上不需要包装器,但我保留了\fullref
as 命令,更改了其定义。如果链接也可用,请使用\nameref
。
编辑:由于 OP 还希望显示标签的类型(“名称”),因此\namecref
来自cleveref
包的命令很有用。它只打印标签的类型,而\nameref*
可用于获取节/章节标题。
请注意,应cleveref
包括后 hyperref
\documentclass{book}
\usepackage{hyperref}
\usepackage{cleveref}
%\newcommand*{\fullref}[1]{\hyperref[{#1}]{\autoref*{#1} \nameref*{#1}}}
\newcommand*{\fullref}[1]{\namecref{#1} \nameref*{#1}}
\begin{document}
\chapter{First} \label{firstchapter}
\section{First section} \label{firstsection}
\chapter{Second}
In \fullref{firstchapter} we saw ... whereas in \nameref{firstsection}
\end{document}
编辑这是\fullref
考虑到的版本*
:
\documentclass{book}
\usepackage{xparse}
\usepackage{hyperref}
\usepackage{cleveref}
\NewDocumentCommand{\fullref}{sm}{%
\IfBooleanTF{#1}{%
\namecref{#2} \nameref*{#2}%
}{%
\namecref{#2} \nameref{#2}%
}%
}
\begin{document}
\chapter{First} \label{firstchapter}
\section{First section} \label{firstsection}
\chapter{Second}
In \fullref*{firstchapter} we saw ... whereas in \fullref{firstsection}
\end{document}