我想要创建一个命令,该命令定义一个\hypertarget
,其中目标标签(的第一个参数\hypertarget
)由所包含的\label
和一个目标标题(的第二个参数\hypertarget
)由其内容组成。
\documentclass{article}
\usepackage{hyperref}
\newcommand\mytargetcommand[1]{?}
\begin{document}
\mytargetcommand{My content\label{tag}}
\ref{tag}
\end{document}
因此这将输出My content
两次,其中第二次引用第一次。
答案1
也许有更好的方法来分割My content\label{tag}
东西,使其\hypertarget
不会阻塞\label
:使用\def\splitcmd#1\label#2
和类似的命令,用未限定的参数(实际上,\label
这里是参数分隔符)来分割。
这使用了一个虚拟计数器并引用文本,\nameref
而不是使用。
\documentclass{article}
\usepackage{hyperref}
\makeatletter
% Two helper commands --> get the text before \label
\def\splitcmd#1\label#2{%
#1%
}
% Get the label tag
\def\splitcmdother#1\label#2{%
#2%
}
\newcounter{localtagcntr}
\newcommand\mytargetcommand[1]{%
\edef\local@tag{\splitcmdother#1}%
\edef\my@text{\splitcmd#1}%
\refstepcounter{localtagcntr}%
\def\@currentlabelname{\my@text}% Change the label content name
\label{\local@tag}% Set the label
\hypertarget{\local@tag}{\my@text}%
}
\makeatother
\begin{document}
Foostuff
\clearpage
\mytargetcommand{My content\label{tag}}
\ref{tag}
\clearpage
\hyperlink{tag}{Stuff}
\nameref{tag}
\end{document}