我使用 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}