varwidth と ocgcolorlinks の間に互換性がない可能性があります (hyperref/ocgx2)

varwidth と ocgcolorlinks の間に互換性がない可能性があります (hyperref/ocgx2)

以下の簡単な例では、オプションでパッケージがロードされたvarwidthために、環境内の参照が失敗します。(同じオプションで) を追加すると、状況はさらに悪化します。hyperrefocgcolorlinksocgx2

\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}

関連情報