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