Xelatex y comportamiento extraño del color del texto en tikz

Xelatex y comportamiento extraño del color del texto en tikz

Aquí hay un ejemplo de trabajo mínimo:

\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}

Al compilar esto pdflatexse obtiene el resultado esperado: ingrese la descripción de la imagen aquí

Pero al compilar esto xelatexse produce el siguiente comportamiento extraño: ingrese la descripción de la imagen aquí

El texto que sigue a \textcolor{red}{Red}parece volver a ser negro de forma predeterminada en xelatex. ¿Hay alguna manera de solucionar esto?

Respuesta1

Hay preguntas similares, por ejemplo:

La principal duda es que al final \textcolorhay uno \reset@colorque no sabe cuál es el color adecuado para restaurar.


El problema evoluciona cuandoentra. Básicamente la historia es la siguiente:

  1. cargas pdftex.defo xetex.defsegún el compilador actual.
  2. pdftex.defdefinirá \reset@color;
    xetex.defdefinirá \reset@color@nostacky \reset@color@stack.
  3. redefine \reset@color.
  4. xetex.defdecidirá si será \reset@color@nostacko \reset@color@stackserá el \reset@color.

Aquí1,2,3sucede en \documentclass{beamer}y4sucede en \begin{document}.

Ahora puedes ver un problema: para XeLaTeX, desde4sucede después3, reset@colorse redefine como una versión sin proyector.


El siguiente código ilustra la diferencia más claramente.

\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}

látex da

y XeLaTeX da

No se espera a ninguno de los dos. Lo que queremos es amarillo. Pero, a regañadientes, el blanco es mejor que el negro. Y el blanco lo hace la versión proyector \reset@colory el negro lo hace la xetex.defversión.

información relacionada