
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 pdflatex
se obtiene el resultado esperado:
Pero al compilar esto xelatex
se produce el siguiente comportamiento extraño:
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 \textcolor
hay uno \reset@color
que no sabe cuál es el color adecuado para restaurar.
El problema evoluciona cuandoproyectorentra. Básicamente la historia es la siguiente:
- gráficoscargas
pdftex.def
oxetex.def
según el compilador actual. pdftex.def
definirá\reset@color
;
xetex.def
definirá\reset@color@nostack
y\reset@color@stack
.- proyectorredefine
\reset@color
. xetex.def
decidirá si será\reset@color@nostack
o\reset@color@stack
será 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@color
se 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@color
y el negro lo hace la xetex.def
versión.