默认情况下,该hyperref
包将在 URL 周围添加青色框:
\documentclass{amsart}
\usepackage{hyperref}
\begin{document}
\url{https://www.baidu.com}
\end{document}
我怎样才能在任何一段文本周围添加一个青色框,使其看起来像 URL 但不可点击?此框不应显示在打印版本中。“演示”:
\documentclass{amsart}
%???????????????????????????
\begin{document}
\fakeurl{any piece of code}
\end{document}
答案1
Hyperref 框式链接是使用子类型的 PDF 注释实现的/Link
。大多数 PDF 查看器都会识别此类型,并将鼠标光标更改为此类注释上的链接图标,即使链接目标实际上为空。这会产生可点击的外观,即使当链接目标为空时单击此类“链接”实际上没有任何效果。
注释还有其他子类型。其中一个子类型是/Square
,其在 PDF 1.4 参考中定义如下:
方形和圆形注释(PDF 1.3)分别在页面上显示一个矩形或椭圆形。打开时,它们会显示一个弹出窗口,其中包含相关注释的文本。
虽然乍一看这似乎并不满足“不可点击”的要求,但在我尝试过的每个 PDF 查看器中,这种没有操作规范的注释类型确实是不可点击的。
此外,您可以为注释设置各种注释标志,其中之一是ReadOnly
(使用 设置/F 64
)。此标志描述如下:
如果设置,则不允许注释与用户交互。注释可以显示或打印(取决于 NoView 和 Print 标志的设置),但不应响应鼠标点击或根据鼠标移动改变其外观。
因此,大概(但也许不是), 使用设置了只读标志的子类型/Square
将使大多数 PDF 查看器显示该框,但不会改变鼠标光标或在点击时执行任何操作。
Hyperref 为每个编译器和工具链(pdflatex、xelatex、lualatex、dvips、dvipdfm 等)提供了单独的定义文件。以下代码取自 ,hpdftex.def
并应与 一起使用pdflatex
。对于其他编译器,请进行相应修改。该代码是从常规超链接( )的定义中复制而来,\hyper@linkurl
我在其中更改了子类型、删除了操作规范并添加了只读标志。
\documentclass{amsart}
\usepackage{hyperref}
\makeatletter
\def\fakeurl#1{%
\begingroup
\hyper@chars
\leavevmode
\pdfstartlink
attr{%
\Hy@setpdfborder
\Hy@setpdfhighlight
\ifx\@urlbordercolor\relax
\else
/C[\@urlbordercolor]%
\fi
}%
user{%
/Subtype/Square%
/F 64%
}%
\relax
\Hy@colorlink\@urlcolor#1\Hy@xspace@end
\close@pdflink
\endgroup
}
\makeatother
\begin{document}
\url{https://www.baidu.com}
\vspace{5mm}
\fakeurl{any piece of code}
\end{document}
结果:
第二个框不可点击,并且在我测试的查看器(Adobe Reader 9、Evince、Okular、Firefox pdf viewer)打印时不会显示。