PDF 注释:如何知道“一个框是否是空的”?

PDF 注释:如何知道“一个框是否是空的”?

摘自dvipdfmx文档:

pdf:bann警告:如果和之间的内容pdf:eann为空框,则不会构建注释。

我的 MWE(通过 xelatex):

\documentclass{article}

\begin{document}

\special{pdf:bann << /Subtype /Link
  /BS << /Type /Border /W 0.5 /S /S >>
  /A << /S /URI
    /URI (http://www.tug.org) >> >>}%
http://www.tug.org%
\special{pdf:eann}

\special{pdf:bann << /Subtype /Link
  /BS << /Type /Border /W 0.5 /S /S >>
  /A << /S /URI
    /URI (http://www.tug.org) >> >>}%
\phantom{http://www.tug.org}%
\special{pdf:eann}

\special{pdf:bann << /Subtype /Link
  /BS << /Type /Border /W 0.5 /S /S >>
  /A << /S /URI
    /URI (http://www.tug.org) >> >>}%
\rule{1cm}{1cm}
\special{pdf:eann}

\end{document}

第二和第三个注释不起作用!

如何制作一个具有不可见内容的非空盒子?

附加问题:为什么有这个限制?

答案1

看来注释至少需要一个真实的字符,所以\phantom否则\rule没有任何用处。

如果您使用的是“标准”字体,那么您可以使用带有不可见且与大写字母一样高的字符的textcomp软件包。所以\textcapitalcompwordmark

\documentclass{article}

\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage{textcomp}
\newcommand{\myinvchar}{\textcapitalcompwordmark}

\newcommand{\emptybox}[1]{%
  \sbox0{#1}\makebox[\wd0][s]{\myinvchar\hss\myinvchar}%
}

\begin{document}

X\special{pdf:bann << /Subtype /Link
  /BS << /Type /Border /W 0.5 /S /S >>
  /A << /S /URI
    /URI (http://www.tug.org) >> >>}%
http://www.tug.org%
\special{pdf:eann}X

X\special{pdf:bann << /Subtype /Link
  /BS << /Type /Border /W 0.5 /S /S >>
  /A << /S /URI
    /URI (http://www.tug.org) >> >>}%
\emptybox{http://www.tug.org}%
\special{pdf:eann}X

\end{document}

将产生一个“可点击的空间”:

在此处输入图片描述

如果您通过 使用 OpenType 字体fontspec,则不可见字符可能是 U+00A0:

\newcommand{\myinvchar}{\char\string"00A0 }

答案2

看起来你需要一个字符。如果你使用的是 Unicode 字体,则可以使用 U200B,即零宽度空格:

在此处输入图片描述

\documentclass{article}
\font\zzz="[lmroman10-regular]" at 10pt

\begin{document}
\zzz

\special{pdf:bann << /Subtype /Link
  /BS << /Type /Border /W 0.5 /S /S >>
  /A << /S /URI
    /URI (http://www.tug.org) >> >>}%
http://www.tug.org%
\special{pdf:eann}


a


\special{pdf:bann << /Subtype /Link
  /BS << /Type /Border /W 0.5 /S /S >>
  /A << /S /URI
    /URI (http://www.tug.org) >> >>}%
\mbox{\strut ^^^^200b\phantom{http://www.tug.org}^^^^200b}%
\special{pdf:eann}



b


\special{pdf:bann << /Subtype /Link
  /BS << /Type /Border /W 0.5 /S /S >>
  /A << /S /URI
    /URI (http://www.tug.org) >> >>}%
 ^^^^200b\rule{1cm}{1cm} ^^^^200b
\special{pdf:eann}

\end{document}

答案3

这篇拖船文章pdf:ann如果你想要一个不占用空间的盒子,你可以使用它。我对这一切一无所知,但只是尝试过:

\documentclass{article}

\begin{document}

A\special{pdf:ann bbox 0 0 12 12 << /Subtype /Link
  /BS << /Type /Border /W 0.5 /S /S >>
  /A << /S /URI
    /URI (http://www.tug.org) >> >>}%
B

\end{document}

并且输出确实包含一个不占用空间的可点击框(B紧接着A)。(就好像可点击区域已经用完成了一样rlap)。

相关内容