zref 中的超链接

zref 中的超链接

我使用 great 软件包zref来创建自己的参考系统。我可以为 pdftex(和 tex4ht)创建超链接吗?

请参阅以下代码。我想让命令\showref可点击,这样我就可以跳转到使用该命令的地方\setdest。这(容易)实现吗?

\documentclass{article}
\usepackage{zref}
\makeatletter
\zref@newlist{zoo}
\zref@newprop{animal}{\currentanimal}
\zref@addprop{zoo}{animal}
\newcommand\setdest[2]{\def\currentanimal{#2}\zref@labelbylist{#1}{zoo}}
\newcommand\showref[1]{\zref@extract{#1}{animal}}
\makeatother

\begin{document}
\section{My favorite pets}
\setdest{label}{Cat}

See the animal \showref{label}.
\end{document}

答案1

按照zref手册来说,hyperref留作以后的工作。

但是,您至少可以使用常规\phantomsection技巧和另一个标签:

\documentclass{article}
\usepackage{zref}
\makeatletter
\zref@newlist{zoo}
\zref@newprop{animal}{\currentanimal}
\zref@addprop{zoo}{animal}
\newcommand\setdest[2]{\def\currentanimal{#2}\zref@labelbylist{#1}{zoo}\phantomsection\label{zref:#1}}
\newcommand\showref[1]{\hyperref[zref:#1]{\zref@extract{#1}{animal}}}
\makeatother

\usepackage{lipsum}

\usepackage{hyperref}

\begin{document}
\section{My favorite pets}
\lipsum[1]

\setdest{label}{Cat}
Cat goes here.

\lipsum[2]

\section{Other}
See the animal \showref{label}.
\end{document}

答案2

我知道这是一个非常古老的问题,但它似乎是对zref支持的“状态”最明确的问题hyperref(即使不是唯一的问题),而公认的答案声称“它留作未来的工作”,这并不完全正确。确实没有 的用户文档,zref-hyperref并且它的实现留下了“未完成 :-(”作为一个警告。但模块功能齐全,并且加载它确实提供了anchor属性(并将其包含在main属性列表中),该属性可用于使用标准hyperref用户宏构建指向引用的超链接。因此,即使事情还不够完善和记录,它们也可以工作:

\documentclass{article}

\usepackage{zref}
\usepackage{zref-hyperref}
\usepackage{hyperref}

\makeatletter
\zref@newlist{zoo}
\zref@newprop{animal}{\currentanimal}
\zref@addprop{zoo}{animal}
\zref@addprop{zoo}{anchor}
\newcommand\setdest[2]{\def\currentanimal{#2}\zref@labelbylist{#1}{zoo}}
\newcommand\showref[1]{%
  \hyperlink{\zref@extractdefault{#1}{anchor}{}}{\zref@extract{#1}{animal}}}
\makeatother

\begin{document}
\section{My favorite pets}
\setdest{label}{Cat}

See the animal \showref{label}.
\end{document}

生成:

在此处输入图片描述

我还没有测试过tex4ht,但我认为它应该和一样能工作\hyperlink(因此,取决于hyperref,而不是zref)。

相关内容