Xelatex 和 tikz 中奇怪的文本颜色行为

Xelatex 和 tikz 中奇怪的文本颜色行为

这是一个最小的工作示例:

\documentclass{beamer}
\usepackage{tikz}

\setbeamercolor{background canvas}{bg=black}
\setbeamercolor{normal text}{fg=white}

\begin{document}

\begin{frame}
\frametitle{Test}

Normal \textcolor{red}{Red} Normal

\begin{tikzpicture}
\node at (0,0) {Normal \textcolor{red}{Red} Normal};
\end{tikzpicture}

\end{frame}

\end{document}

编译此代码pdflatex可得到预期的输出: 在此处输入图片描述

但编译这个会xelatex产生以下奇怪的行为: 在此处输入图片描述

后面的文本\textcolor{red}{Red}似乎默认恢复为黑色xelatex。有办法修复这个问题吗?

答案1

还有类似的问题,例如:

\textcolor主要的问题是,最后\reset@color不知道要恢复什么颜色才是正确的。


问题出现在基本上故事是这样的:

  1. 加载pdftex.defxetex.def根据当前编译器。
  2. pdftex.def将定义\reset@color
    xetex.def将定义\reset@color@nostack\reset@color@stack
  3. 重新定义\reset@color
  4. xetex.def将决定\reset@color@nostack是否\reset@color@stack成为\reset@color

这里123发生在\documentclass{beamer}4发生在\begin{document}

现在你可以看到一个问题:对于 XeLaTeX,由于4发生于3reset@color被重新定义为非光束版本。


下面的代码更清楚地说明了区别

\documentclass{beamer}
\usepackage{tikz}

\setbeamercolor{background canvas}{bg=teal}
\setbeamercolor{normal text}{fg=white}

\begin{document}

\frame{
    \tikz{
        \node[text=yellow]{
            Yellow
            \textcolor{red}{Red}
            What?
        };
    }
}

\end{document}

LaTeX 提供

XeLaTeX 给出

两者都不是预期的。我们想要的是黄色。但无奈的是,白色比黑色好。白色确实是由 Beamer 版本完成的,\reset@color而黑色是由xetex.def版本完成的。

相关内容