varwidth 和 ocgcolorlinks (hyperref/ocgx2) 之间可能不兼容

varwidth 和 ocgcolorlinks (hyperref/ocgx2) 之间可能不兼容

在下面的简单示例中,varwidth由于hyperref使用选项加载的包,环境中的引用失败。使用相同选项的ocgcolorlinksAding使情况更加糟糕。ocgx2

\documentclass{article}

\usepackage{varwidth}
\usepackage[ocgcolorlinks]{hyperref}
%\usepackage[ocgcolorlinks]{ocgx2}

\begin{document}
    \section{A section} \label{sec}

    A reference outside \texttt{varwidth}: sec.~\ref{sec}.

    \noindent
    \begin{varwidth}{\textwidth}
        A reference \hphantom{outside }\llap{inside} \texttt{varwidth}: sec.~\ref{sec}.
    \end{varwidth}
\end{document}

输出

有人可以提供一个修复程序,允许在环境中使用ref// href/ cref...而不禁用或选项吗?varwidthocgcolorlinkshyperrefocgx2

答案1

您可以尝试在本地将 \pdfliteral 恢复到原始定义(varwidth 重新定义它):

\documentclass{article}
\usepackage{varwidth}
\usepackage{hyperref}
\usepackage[ocgcolorlinks]{ocgx2}

\begin{document}
    \section{A section} \label{sec}

    A reference outside \texttt{varwidth}: sec.~\ref{sec}.

    \makeatletter
    \noindent
    \begin{varwidth}{\textwidth}
        A reference \hphantom{outside }\llap{inside}\texttt{varwidth}: sec.~\mbox{\let\pdfliteral\@@vwid@pdfliteral\ref{sec}}.
    \end{varwidth}
    \makeatother
\end{document}

相关内容