pgf 与透明包之间的冲突

pgf 与透明包之间的冲突

使用时出现以下 MWE 错误pdflatex

\documentclass{article}
\usepackage{pgfkeys, pgfcalendar}
\usepackage{transparent}
\begin{document}
hello world
\end{document}
! Undefined control sequence.

\pgfutil@addpdfresource@extgs ...urce@extgs@plain

                                         {#1}

我可以追溯到,\input pgfutil-common.tex所以它不是真的pgfcalendar,似乎与 pgf 发生了一般冲突。这是一个错误吗?如果是,它是否已知,是否有解决方法。如果不是,它在哪一边,以便我可以报告它。

答案1

我敢说错误在 PGF 那边,如果我错了,我很抱歉。

错误消息中显示的\pgfutil@addpdfresource@extgs似乎是一个通用宏,在当前设置下,它将扩展为\pgf@sys@addpdfresource@extgs@plain。但后者未定义。在文件中搜索该宏时,我在驱动程序特定的定义代码(如pgfsys-pdftex.def和 )中找到了它,似乎未加载它。

我本来想说手动加载pgfsys-pdftex.def(或pgfsys-luatex.defpgfsys-dvipdfmx.def)可以解决问题,但是当仅使用pgfrcs(由 加载pgfcalendar,这会导致错误)时加载驱动程序代码没有多大意义,所以也许解决办法是取消定义\pgfutil@addpdfresource@extgs,这样transparent的代码就不会尝试使用它:

\documentclass{article}
\usepackage{pgfkeys, pgfcalendar}
\makeatletter
\AtBeginDocument{%
  \@ifundefined{pgf@sys@addpdfresource@extgs@plain}%
    {\let\pgfutil@addpdfresource@extgs\SomethingProbablyUndefined}{}}
\makeatother
\usepackage{transparent}
\begin{document}
hello \transparent{0.3}world
\end{document}

在此处输入图片描述

另一种方法是加载pgfsys(和) ,而不是手动加载驱动程序代码,graphicx没有它pgfsys显然不起作用:

\usepackage{graphicx}
\usepackage{pgfkeys, pgfsys, pgfcalendar}

相关内容