例如,我有:
\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
。