是否可以直接在 TeX 中包含图形图像并在其中放置超链接引用?我在下面创建了一个 M(non)WE 示例,试图演示我的想法。(如果删除\special
第一个中的语句,这将变为 MWE \figure
)。
基本上,我想包含图形并在它们之间创建超链接(请注意hypertarget
第二张图中的)。我可以使用 Ghostscript 将超链接添加到 PDF,所以想知道是否可以使用 TeX 中的命令实现相同的功能\special
?目前我正在使用 pdfLaTeX。
\documentclass{article}
\usepackage[a3paper,landscape]{geometry}
\usepackage{graphicx}
\usepackage{hyperref}
\begin{document}
\begin{figure}[p]
\centering
\includegraphics[viewport=597 1069 1088 1320,clip=true]{parent.pdf}
\caption{My Image Caption}
\special{ps:
[ /Rect [602 1083 1087 1320]
/Border [0 0 2]
/Color [1 0 0]
/Dest link_child_page
/Subtype /Link
/ANN pdfmark
}
\end{figure}
\clearpage
\begin{figure}[p]
\centering
\includegraphics[viewport=750 1166 935 1223,clip=true]{child.pdf}
\caption{My Child}
\end{figure}
\hypertarget{link_child_page}{}
\clearpage
\end{document}
答案1
不需要明确的\special
命令,因为您可以将\includegraphics
其作为参数放入\hyperlink
。
\documentclass{article}
\usepackage{graphicx}
\usepackage{lipsum}
\usepackage{hyperref}
\begin{document}
\lipsum[2]
\begin{figure}[htp]
\centering
\hyperlink{link}
{\includegraphics[width=.5\textwidth]{example-image}}
\caption{My Child}
\end{figure}
\lipsum
\hypertarget{link}{Some text for the link}
\lipsum
\end{document}
这是分割链接的概念证明;这里将图像分成四个部分;超链接实现为空框,在环境的帮助下放置,picture
并将图像叠加在它们上面。
\documentclass{article}
\usepackage{graphicx,picture}
\usepackage{lipsum}
\usepackage{hyperref}
\newsavebox{\chrisbox}
\newcommand{\linkbox}{\makebox[.5\wd\chrisbox]{\rule{0pt}{.5\ht\chrisbox}}}
\newcommand{\fourlinks}[4]{%
\begin{picture}(\wd\chrisbox,\ht\chrisbox)
\put(0,.5\ht\chrisbox){\hyperlink{#1}{\linkbox}}
\put(.5\wd\chrisbox,.5\ht\chrisbox){\hyperlink{#2}{\linkbox}}
\put(0,0){\hyperlink{#3}{\linkbox}}
\put(.5\wd\chrisbox,0){\hyperlink{#4}{\linkbox}}
\end{picture}\makebox[0pt][r]{\usebox{\chrisbox}}%
}
\begin{document}
\lipsum[2]
\begin{figure}[htp]
\centering
\sbox\chrisbox{\includegraphics[width=.5\textwidth]{example-image}}
\fourlinks{ul}{ur}{ll}{lr}
\caption{My Child}
\end{figure}
\lipsum
\hypertarget{ul}{Some text for the upper left link}
\lipsum[2]
\hypertarget{ur}{Some text for the upper right link}
\lipsum[2]
\hypertarget{ll}{Some text for the lower left link}
\lipsum[2]
\hypertarget{lr}{Some text for the lower right link}
\lipsum
\end{document}
答案2
虽然花了一段时间,但还是找到了一种可行的解决方案。感谢上面的答案,我玩了很长时间,但最终还是直接编辑了 postscript 图像文件,并用 \includegraphics 包含。我不得不从 pdflatex 转移到 divps,因为现在直接包含 postscript 图像。
我的 perl 脚本在生成 TeX 文件之前将 pdfmark 信息添加到输入的 postscript 文件中。/includegraphics 包运行良好,并遵守 pdfmark 信息。我玩过/psbox 有一点,但无法让它按预期工作。
特克斯:
\begin{figure}[p]
\centering
\includegraphics[viewport=35 272 556 579,clip=true]{image.ps}
\caption{my caption}
\end{figure}
\clearpage
后记:
%%EndObject
[ /Rect [ 50 529 70 569 ]
/Dest /box1
/Border [0 0 2]
/Color [.7 0 0]
/Subtype /Link
/ANN pdfmark
[ /Rect [ 197 273 250 362 ]
/Dest /box2
/Border [0 0 2]
/Color [.7 0 0]
/Subtype /Link
/ANN pdfmark
[ /Dest /box0 /DEST pdfmark