varwidth 和 ocgcolorlinks (hyperref/ocgx2) 之間可能不相容

varwidth 和 ocgcolorlinks (hyperref/ocgx2) 之間可能不相容

在下面的簡單範例中,varwidth由於hyperref載入了選項的包,環境內部的引用失敗ocgcolorlinks。廣告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...而不禁用or選項嗎?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}

相關內容