pst-pdf和beamer冲突

pst-pdf和beamer冲突

跟进这个问题[auto-]pst-pdf和之间的报告冲突hyperref。这显然是由于内部pst-pdf使用,并且目前与某些机制不兼容,正如讨论的那样previewpreviewhyperref这一页进而这一页

Ulrike Fischer 提出的解决方法目前适用于简单情况,但不适用于在beamer类的框架环境中包含 PostScript 代码的情况。

\documentclass{beamer}

\usepackage{pstricks}
\usepackage[pspdf={-dALLOWPSTRANSPARENCY}]{auto-pst-pdf}

\makeatletter
\AtBeginDocument{
    \ifpdf\else
        \@ifpackageloaded{preview}{
            \ifPreview
                \let\Hy@FirstPageHook\relax
                \let\Hy@EveryPageAnchor\relax
            \fi
        }{}
    \fi
}
\makeatother

\begin{document}

\begin{frame}
Some text
\begin{pspicture}(0,0)(5,5)
\psline(0,0)(5,5)
\end{pspicture}
Other text
\end{frame}

\end{document}

请注意,仅仅加载 beamer 类不会触发该错误,框架环境才会触发该错误。

我正在寻找一种解决方法,使我能够在最新 (2021) texlive 中的 pdflatex 的 beamer 演示文稿中使用 PStricks。

答案1

您可以尝试以下操作。

\documentclass{beamer}
\usepackage{pstricks}
\usepackage[pspdf={-dALLOWPSTRANSPARENCY}]{auto-pst-pdf}

\makeatletter

\AtBeginDocument{
    \ifpdf\else
        \@ifpackageloaded{preview}{
            \ifPreview
                \RemoveFromHook{shipout/firstpage}[hyperref]
                \RemoveFromHook{shipout/before}[hyperref]
                \RemoveFromHook{shipout/before}[beamerbasenavigation]
            \fi
        }{}
    \fi    
}
\makeatother
\begin{document}


\begin{frame}
Some text
\begin{pspicture}(0,0)(5,5)
\psline(0,0)(5,5)
\end{pspicture}
Other text
\end{frame}

\end{document}

相关内容