为什么图片里的链接区域这么小?

为什么图片里的链接区域这么小?

我编写了将 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

xdvipdfmxplatex和的后端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}

在此处输入图片描述

相关内容