TeX 中使用 \special 的 Postscript 命令

TeX 中使用 \special 的 Postscript 命令

是否可以直接在 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

相关内容