我们如何给标签命名,以便我们进行交叉引用时显示的不是章节编号,而是标签的名称?
例如,
\underline{homogeneity in preferences(HP)\phantomsection\label{hyp3}}
当我使用时,\ref{hyp3}
我希望显示的参考文本是HP
而不是例如5.1
该部分的编号。
有人能帮我吗?
答案1
以 egreg 的优秀答案为例(标记文本并在稍后引用) 并修改它以接受一个额外的可选参数,我可以想出下面的解决方案。它创建一个\labeltext
可以引用的新命令。它接受两个参数和一个可选参数:
\labeltext[optional short ref]{the labeled text}{label name}
如果需要,您还可以设置标签和(可选)引用的标记或突出显示。我将其设置为\emph
而不是,\underline
因为下划线对我来说看起来很糟糕,并且被认为是不好的做法。
梅威瑟:
\documentclass{article}
%\usepackage{underlin}
%\usepackage{hyperref}
\makeatletter
\newcommand{\labeltext}[3][]{%
\@bsphack%
\csname phantomsection\endcsname% in case hyperref is used
\def\tst{#1}%
\def\labelmarkup{\emph}% How to markup the label itself
%\def\refmarkup{\labelmarkup}% How to markup the reference
\def\refmarkup{}%
\ifx\tst\empty\def\@currentlabel{\refmarkup{#2}}{\label{#3}}%
\else\def\@currentlabel{\refmarkup{#1}}{\label{#3}}\fi%
\@esphack%
\labelmarkup{#2}% visible printed text.
}
\makeatother
\begin{document}
Some text. This is text. \labeltext{This is the labeled text with lab1}{lab1}. More text.\\
\labeltext[shorter text 2]{Long labeled text 2}{lab2}\\
\labeltext[HP]{homogeneity in preferences (HP)}{hyp3}
This reference shows lab1: \ref{lab1}.\\
This reference shows lab2: \ref{lab2}.\\
Reference to \ref{hyp3}.
\end{document}
答案2
看起来您正在使用 ref-mechanism 来处理诸如首字母缩略词之类的内容,因此您可能需要考虑使用包glossaries
。这还可以让您自动创建使用首字母缩略词/缩写的列表。
下面是一个如何使用包打印首字母缩略词的示例:第一次打印全文,然后只打印缩写/首字母缩略词。
\documentclass[
english,
]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{babel}
\usepackage{glossaries}
\newacronym{hp}{HP}{homogeneity in preferences}
\begin{document}
This is the first sentence about \gls{hp}.
Somewhere later in the doc it is used again as \gls{hp}.
\end{document}
顺便说一句:请不使用下划线!