节点文本颜色未在 xelatex 中继承(但在 pdflatex 和 lualatex 中继承)?

节点文本颜色未在 xelatex 中继承(但在 pdflatex 和 lualatex 中继承)?

我上次更新时circuitikz弹出了一件让我抓狂的奇怪东西:如果你看看1.6.7 手册第 78 页,你可以看到电压源符号才不是跟随组件的颜色。奇怪的是,它们它在我的本地构建上...所以我在追逐奇怪的错误(它还可以在那里……) 直到我记起构建发布手册的 CI 脚本正在使用xelatex(我想是出于某些历史原因)。

为了检查问题,我设法将行为简化为这个 MWE(如果您使用的是与 bash 兼容的 shell,它会生成几个文件和一个脚本来获取最终的屏幕截图):

\begin{filecontents}{do_color_vam.sh}
pdflatex color-vam && mv color-vam.pdf color-vam-p.pdf
lualatex color-vam && mv color-vam.pdf color-vam-l.pdf
xelatex color-vam && mv color-vam.pdf color-vam-x.pdf
pdflatex color-vam-join
\end{filecontents}
\begin{filecontents}{color-vam-join.tex}
\documentclass[varwidth]{standalone}
\usepackage{graphics}
\begin{document}
    \includegraphics{color-vam-p}\par
    \includegraphics{color-vam-l}\par
    \includegraphics{color-vam-x}\par
\end{document}
\end{filecontents}
\documentclass[border=10pt]{standalone}
\usepackage[T1]{fontenc}
\usepackage{tikz}
\usepackage{iftex}
\edef\engine{% just for the three cases tested...
    \ifluatex LuaLaTeX\else\ifxetex XeTeX \else pdfLaTeX\fi\fi
}
\makeatletter
\pgfdeclareshape{foo}{
    \anchor{center}{\pgfpointorigin}%
    \behindbackgroundpath{%
        \pgfscope
        \pgfpathellipse{\pgfpointorigin}{\pgfpoint{0}{0.4cm}}{\pgfpoint{0.4cm}{0}}
        \pgfusepath{draw}
        %\ifxetex
        %    \pgftext[]{\let\current@color\pgf@fillcolor@global\set@color$+$}
        %\else
            \pgftext[]{$+$}
        %\fi
        \endpgfscope
    }
}
\makeatother
\begin{document}
\begin{tikzpicture}
    \draw[color=red, thick]  node[foo]{} ++(1,0)
        node[foo, fill=blue]{} ++(1,0)
        node[right, text width=3cm]{\engine};
\end{tikzpicture}
\end{document}

如果你运行它一次(使用任何引擎,比如说pdflatex),然后运行(在 shell 上)

sh ./do_color_vam

该文件color-vam-join.pdf将如下所示:

在此处输入图片描述

如您所见,xelatex行为有所不同。请注意,前两个“加号”为蓝色,这是正常的因为\pgftext使用填充颜色来呈现文本(由于我明确仅draw\pgftext命令中使用,因此圆圈没有填充也是正常的)。

Ulrike Fischer(感谢!)评论中建议一个可能的解决方案,我将其添加(注释掉)到 MWE:如果您删除注释并重新运行,您将得到:

在此处输入图片描述

这对于默认情况下来说可能更好,但是正如乌尔丽克自己所注意到的,它不会使三个引擎的行为相同。

是否有一些技巧可以使其xelatex像其他两个引擎一样运行?

相关内容