如何让这些自定义超链接跳转到页面的开头而不是精确的超目标?

如何让这些自定义超链接跳转到页面的开头而不是精确的超目标?

我正在制作一款小型纸笔游戏,游戏的背面有物品索引。在游戏过程中,玩家会遇到一些物品,文档背面有关于如何找到物品详细信息的说明。但是,单击这些超链接时,我会跳转到物品的顶部(而且有点被截断了)。

我如何改变这两个命令,以便在单击超链接时将读者带到包含该项目的页面顶部?

\newcommand{\makeitem}[1]{#1\hypertarget{#1}{}\label{#1}}


\newcommand{\gain}[1]{> \textbf{Gain:} \hyperlink{#1}{#1 (Page: \pageref*{#1})}}

代码示例:

\documentclass[12pt]{article}
\usepackage[hidelinks]{hyperref}

\newcommand{\makeitem}[1]{#1\hypertarget{#1}{}\label{#1}}
\newcommand{\gain}[1]{> \textbf{Gain:} \hyperlink{#1}{#1 (Page: \pageref*{#1})}}

\begin{document}

On this page, the character picks up a torch:

\gain{Torch}

\newpage

And here would be the list of items including the torch:

\makeitem{Torch}

\newpage

Here is a third page so the doc has room to show what the scrolling actually looks like.

\end{document}

答案1

目标(PDF 语音中的目的地)不是链接跳转到的“位置”。它们包含页码和如何显示此页面的说明。

默认情况下,指令会告诉查看者将特定的坐标放入左上角——这给人的印象是链接跳转到了这个地方。

您可以使用(创建目标时全局或本地)更改指令

\hyperref{pdfview=...}

您可能使用的值例如是 Fit 或 FitH。

这通常会改变页面的大小,也许不是您想要的。另一种方法是将目标移动到页面的左上角:

\documentclass[12pt]{article}
\usepackage[hidelinks]{hyperref}

\newcommand{\makeitem}[1]{#1%
 \AddToHookNext{shipout/background}{\put(0pt,0pt){\hypertarget{#1}{}\label{#1}}}}
\newcommand{\gain}[1]{> \textbf{Gain:} \hyperlink{#1}{#1 (Page: \pageref*{#1})}}


\begin{document}

On this page, the character picks up a torch:

\gain{Torch} 
\newpage

And here would be the list of items including the torch:

\makeitem{Torch} 

\newpage

Here is a third page so the doc has room to show what the scrolling actually looks like.

\end{document}

第三种选择是利用 hyperref 创建的页面目标。这需要一种可扩展的方式来检索页码:

\usepackage{zref-user}
\newcommand{\makeitem}[1]{#1\zlabel{#1}\label{#1}}
\makeatletter
\newcommand{\gain}[1]{> \textbf{Gain:} \hyperlink{page.\zref@extractdefault{#1}{page}{0}}{#1 (Page: \pageref*{#1})}}
\makeatother

相关内容