如何在 autoref 中显示标签名称来代替其编号

如何在 autoref 中显示标签名称来代替其编号

是否可以用章节/部分的名称替换\autoref其编号?

以下命令将定义\fullref标签的编号和名称将出现在标签的“autorefname”之后:

\newcommand*{\fullref}[1]{\hyperref[{#1}]{\autoref*{#1} \nameref*{#1}}}

但是,标签名称前不需要数字。

答案1

如果我没有理解错的话,应该写的是章节名称而不是章节编号。

这正是它的\nameref*作用。因此,实际上不需要包装器,但我保留了\fullrefas 命令,更改了其定义。如果链接也可用,请使用\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}

在此处输入图片描述

相关内容