
以下に最小限の動作例を示します。
\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
問題は、ビーマーが登場します。基本的にストーリーは次のようになります。
- グラフィックロード
pdftex.def
またはxetex.def
現在のコンパイラに応じて異なります。 pdftex.def
を定義します\reset@color
。および
xetex.def
を定義します。\reset@color@nostack
\reset@color@stack
- ビーマーを再定義します
\reset@color
。 xetex.def
\reset@color@nostack
または が\reset@color@stack
になるかどうかを決定します\reset@color
。
ここ1、2、3発生し\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
。