我编写了将 google.com 链接应用于图像的代码,例如:
\documentclass[dvipdfmx]{article}
\usepackage{graphicx}
\usepackage{hyperref}
\begin{document}
\href{http://www.google.com}{\includegraphics[width=20em]{150x150.png}}
\href{http://www.google.com}{Google}
\end{document}
但是,执行结果在图像左下角产生了一个小的链接区域。我想将链接区域扩展到整个图像。此外,文本链接也正常工作。以下是这些结果的屏幕截图(图像中的蓝色矩形显示链接区域):
我找到了以下类似的主题,但是这里描述的方法并没有解决我的问题。
我的环境是:
- 编辑器:TexWorks 0.6.2
- 排版:pdfpLaTeX
答案1
xdvipdfmx
platex
和的后端xelatex
需要排版字体字形,以便在 PDF 输出中生成具有非零大小的链接注释。但包含的位图图形不提供它们。
为此,XeTeX 提供了命令,但由于某种原因,\XeTeXLinkBox{...}
它不能与(p)latex
+一起使用。dvipdfmx
因此我们在这里定义我们自己的版本:
\documentclass[dvipdfmx]{article}
\usepackage{graphicx}
\usepackage{hyperref}
\newcommand*\LinkBox[1]{{%
\font\tempa=pzdr scaled 1%
\savebox0{#1}%
\raisebox{-\dp0}[0pt][\dp0]{\makebox[0pt][l]{\tempa\char32}}%
\usebox0%
\raisebox{\ht0}[\ht0][0pt]{\makebox[0pt][r]{\tempa\char32}}%
}}
\begin{document}
\href{http://www.google.com}{\LinkBox{\includegraphics[width=20em]{example-grid-100x100bp.png}}}
\href{http://www.google.com}{Google}
\end{document}
它在所包含的图形文件的左下角和右上角插入 Dingbats 字体中微小的、不可见的空格字符。
答案2
如果链接框中没有字形,dvipdfmx 会不喜欢它。这样它就无法正确计算链接框。这种情况可能会改变,邮件列表中对此进行了一些讨论。在此之前,您可以使用 hyperref 为 xetex 提供的代码来处理这种情况:
\documentclass[dvipdfmx]{article}
\usepackage{graphicx}
\usepackage[]{hyperref}
\makeatletter
\font\XeTeXLink@font=pzdr at 1sp\relax
\newcommand*{\XeTeXLink@space}{%
\begingroup
\XeTeXLink@font
\@xxxii
\endgroup
}%
\renewcommand{\XeTeXLinkBox}[1]{%
\begingroup
\leavevmode
\sbox\z@{#1}%
\begingroup
\dimen@=\dp\z@
\advance\dimen@\XeTeXLinkMargin
\setbox\tw@=\llap{%
\hb@xt@\XeTeXLinkMargin{%
\lower\dimen@\hbox{\XeTeXLink@space}%
\hss
}%
}%
\dp\tw@=\dp\z@
\ht\tw@=\ht\z@
\copy\tw@
\endgroup
\copy\z@
\dimen@=\ht\z@
\advance\dimen@\XeTeXLinkMargin
\setbox\tw@=\rlap{%
\hb@xt@\XeTeXLinkMargin{%
\hss
\raise\dimen@\hbox{\XeTeXLink@space}%
}%
}%
\dp\tw@=\dp\z@
\ht\tw@=\ht\z@
\copy\tw@
\endgroup
}%
\makeatother
\begin{document}
\href{http://www.google.com}{\XeTeXLinkBox{\includegraphics[width=5cm]{3d.png}}}
\end{document}