我想在超链接标题中自动使用超目标标题。
例子:
\hypertarget{myTarget}{My Target}
See \hyperlink{myTarget}{\useMyTargetCaption}.
想要的结果:
我的目标
看我的目标。
答案1
您可以重新定义\hypertarget
,以便它定义与其第一个参数相对应的新命令:
\let\oldhypertarget\hypertarget
\renewcommand{\hypertarget}[2]{%
\oldhypertarget{#1}{#2}%
\protected@write\@mainaux{}{%
\string\expandafter\string\gdef
\string\csname\string\detokenize{#1}\string\endcsname{#2}%
}%
}
这样,当你发出
\hypertarget{myTarget}{My Target}
\myTarget
这也保存了文件中命名的命令.aux
。
然后我们定义一个新的命令\myhyperlink
来处理这个问题:
\newcommand{\myhyperlink}[1]{%
\hyperlink{#1}{\csname #1\endcsname}%
}
当你发出
\myhyperlink{myTarget}
这导致
\hyperlink{myTarget}{\myTarget}
梅威瑟:
\documentclass{article}
\usepackage[colorlinks]{hyperref}
\makeatletter
\let\oldhypertarget\hypertarget
\renewcommand{\hypertarget}[2]{%
\oldhypertarget{#1}{#2}%
\protected@write\@mainaux{}{%
\string\expandafter\string\gdef
\string\csname\string\detokenize{#1}\string\endcsname{#2}%
}%
}
\newcommand{\myhyperlink}[1]{%
\hyperlink{#1}{\csname #1\endcsname}%
}
\makeatother
\begin{document}
\hypertarget{myTarget}{My Target}
See \myhyperlink{myTarget}.
\end{document}
输出:
如果您想自定义它,您可以将其更改为,例如,更改为(需要xcolor
包):
\newcommand{\myhyperlink}[1]{%
\hyperlink{#1}{\textcolor{cyan}{\textit{\csname #1\endcsname}}}%
}
结果是: