Xelatex и странное поведение textcolor в tikz

Xelatex и странное поведение textcolor в 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.defили xetex.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.

Здесь1,2,3происходит в \documentclass{beamer}и4происходит в \begin{document}.

Теперь вы видите проблему: для XeLaTeX, поскольку4происходит после3, reset@colorпереопределена как версия без поддержки Beamer.


Следующий код более наглядно иллюстрирует разницу.

\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 дает

Ни один из них не ожидается. То, что мы хотим, это желтый. Но неохотно, белый лучше черного. И белый действительно сделан версией прожектора, \reset@colorа черный сделан версией xetex.def.

Связанный контент