Zref 包,hyperref 不起作用

Zref 包,hyperref 不起作用

我使用 zref 从一个文件交叉引用到另一个文件。但我的 Hyperreferencing 不起作用。以下是代码

主文本

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{graphicx}


\usepackage{zref-xr,zref-user}
\usepackage{hyperref}
\zexternaldocument*{trail2}



\begin{document}
Hi, \zref{S1}
\end{document}

trail2.tex

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{graphicx}


\usepackage{zref-xr,zref-user}
\usepackage{hyperref}


\renewcommand{\thefigure}{S\arabic{figure}}


\begin{document}

\newpage

\begin{figure}[htp!]
\centering \Large

\bigskip

\includegraphics[width=1.1\linewidth]{trail_picture}

\caption{\label{S1} trail-picture }
\end{figure}

\end{document}

答案1

zref 并没有真正为超链接做好准备(或者 hyperref 并没有真正为 zref 做好准备)。

因此,您要么使用 hyperref 重新定义的普通 \ref 命令,要么必须使用 zref 提供的信息构建自己的 ref 命令。例如

(这只是草稿,我并没有真正尝试检查所有特殊字符是否都得到正确处理)。

\documentclass[10pt,a4paper]{article}

\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{graphicx}

\usepackage{hyperref}
\usepackage{nameref} %needed by zref-xr

\usepackage{zref-xr,zref-hyperref,zref-user}

\zxrsetup{toltxlabel=true}

\zexternaldocument*{trail2}

{\catcode`\#=12 \gdef\hashchar{#1}}
\makeatletter
\newcommand\hzref[1]{\edef\next{%
    \noexpand\href{%
      \zref@extractdefault{#1}{url}{}%
      \zref@ifrefcontainsprop{#1}{anchor}{%
      \hashchar\zref@extract{#1}{anchor}}{}}%
      {\noexpand\zref{#1}}}\next}
\makeatother

\begin{document}

\ref{S1}, \zref{S1}, \hzref{S1}

\end{document} 

在此处输入图片描述

相关内容