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.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

ここ123発生し\documentclass{beamer}4で起こります\begin{document}

ここで問題が分かります。XeLaTeXの場合、4後に起こる3は、reset@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は

どちらも期待されていません。私たちが欲しいのは黄色です。しかし、仕方なく、白は黒よりも優れています。そして、白は確かに のビーマー バージョンで行われ\reset@color、黒は バージョンで行われますxetex.def

関連情報