我使用用graphicx
'\scalebox
命令格式化的超链接文本,其中水平和垂直缩放的独立因子。当在hyperref
' 超链接内应用格式化时,生成的 PDF 中的文本仍然存在于 PDF 中(可能被复制),但变得不可见(并且当添加使用此类解决方案的其他包时也会导致进一步的问题)。
显而易见的解决方法是切换到格式化命令中使用的超链接。不幸的是,在实际文档中\hyperlink
是由其他强制内部格式化的包生成的(如这回答导致识别问题的原始问题)。 然后,relsize
命令\textscale
是一种替代方法,但它不允许在两个维度上进行独立缩放,因此它不能完全替代\scalebox
。
当ocgx2
不使用包(或没有使用ocgcolorlinks
选项)时,内部格式可以正常工作。
梅威瑟:
\documentclass{article}
\usepackage[colorlinks,linkcolor=blue]{hyperref}
\usepackage[ocgcolorlinks]{ocgx2}
\usepackage{graphicx}
\newcommand{\myfmt}[1]{\scalebox{.8}[.7]{#1}}
\begin{document}
\hypertarget{t1}{Some text}.
\hyperlink{t1}{Unformatted link}.
Desired but not working: \hyperlink{t1}{\myfmt{Formatted (inside) link}}.
Working but not applicable: \myfmt{\hyperlink{t1}{Formatted (outside) link}}.
\end{document}
答案1
为以下特殊情况提供了\ocglinkprotect{...}
定义的命令:ocgx2
\documentclass{article}
\usepackage[colorlinks,linkcolor=blue]{hyperref}
\usepackage[ocgcolorlinks]{ocgx2}
\usepackage{graphicx}
\newcommand\myfmt[1]{\ocglinkprotect{\scalebox{.8}[.7]{#1}}}
\begin{document}
\hypertarget{t1}{Some text}.
\hyperlink{t1}{Unformatted link}.
%%%%%%%%%%%
This works: \hyperlink{t1}{\myfmt{Formatted (inside) link}}.
%%%%%%%%%%%
\end{document}
其他用例:
链接文字内的图形:
\hyperlink{t1}{Unformatted link text \ocglinkprotect{\includegraphics[width=1cm]{example-image}} unformatted link text cont'ed}
链接文字内的方框部分:
\hyperlink{t1}{Unformatted link text \ocglinkprotect{\fbox{f-boxed text}} unformatted link text cont'ed}
请注意,的文本参数\ocglinkprotect{...}
不会换行。但这不应该成为问题,因为需要保护的链接文本部分(\scalebox...
、\fbox{...}
等\includegraphics{...}
)无论如何都不会被破坏。