使用 ocgx2 包时,Scalebox 在超链接中无法正常工作

使用 ocgx2 包时,Scalebox 在超链接中无法正常工作

我使用用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{...})无论如何都不会被破坏。

相关内容