
Aqui está um exemplo mínimo de trabalho:
\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}
Compilar isso pdflatex
fornece a saída esperada:
Mas compilar isso xelatex
dá o seguinte comportamento estranho:
O texto após \textcolor{red}{Red}
parece estar voltando para preto no formato xelatex
. Existe uma maneira de corrigir isso?
Responder1
Existem questões semelhantes, por exemplo:
A questão principal é que no final \textcolor
há um \reset@color
que não sabe qual a cor adequada para restaurar.
O problema evolui quandoprojetorentra. Basicamente a história é a seguinte:
- gráficoscargas
pdftex.def
ouxetex.def
de acordo com o compilador atual. pdftex.def
irá definir\reset@color
;
xetex.def
irá definir\reset@color@nostack
e\reset@color@stack
.- projetorredefine
\reset@color
. xetex.def
decidirá se será\reset@color@nostack
ou\reset@color@stack
será o\reset@color
.
Aqui1,2,3acontece em \documentclass{beamer}
e4acontece às \begin{document}
.
Agora você pode ver um problema: para XeLaTeX, já que4acontece depois3, reset@color
é redefinido para ser uma versão não-beamer.
O código a seguir ilustra a diferença mais 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}
LaTeX oferece
e XeLaTeX dá
Nenhum deles é esperado. O que queremos é amarelo. Mas, relutantemente, o branco é melhor que o preto. E o branco é realmente feito pela versão beamer \reset@color
e o preto é feito pela xetex.def
versão.