如何将 nameref 引用到 ref 的部分部分

如何将 nameref 引用到 ref 的部分部分

例如,我有:

\section {first section}
\label{sec:first}\
...

然后我想参考第一部分,我的用法如下:

Please look at `\nameref{first}` for details. 

我会得到:

请查看第一部分以了解详细信息。

但如果我只想要这个(没有部分,只有部分参考):

请首先查看详细信息。

我该如何做才能得到它?

我想一个更好的例子是:

\section{data.h File Description} 
\label{sec:datah}
....
Details are given in \nameref{datah}.  

我真正想要的是:

详细信息在 data.h 中给出。

但我明白:

详细信息请参阅 data.h 文件说明。

我希望这个例子足够清楚。有什么办法吗?

答案1

由于所需的返回值\nameref可能位于 a 的标题中的任何位置\section,因此您可以使用\labelname{<stuff>}如下定义来更新返回的参考文本:

在此处输入图片描述

\documentclass{article}
\usepackage{nameref}% http://ctan.org/pkg/nameref
\makeatletter
\newcommand{\labelname}[1]{% \labelname{<stuff>}
  \def\@currentlabelname{#1}}%
\makeatother
\begin{document}
\section{\texttt{data.h} File Description}
\labelname{\texttt{data.h}}\label{sec:datah}% Overwrite title name/reference
Also see \nameref{sec:dataj}.

\section{File Description for \texttt{data.j}}
\label{sec:dataj}% Keep regular title reference
Details are given in \nameref{sec:datah}.
\end{document}

nameref将前一个标题的名称存储在 中\@currentlabelname,并使用 进行覆盖\labelname

这也兼容hyperref

相关内容