背景
私はマインドマップを描こうとしていましたtikz
mindmap
プレゼンテーションで使用できるように、ライブラリbeamer
。
問題
色の選択によっては、ノードの色は他のノードにリンクするコネクタの色と一致しません。これは、マインドマップの階層を使用して接続が自動的に作成されるか、後で手動で接続が追加されるかどうかに関係なく当てはまります。\path
。
ムウェ
このコードは問題を示しています。最初のマップはマニュアルの 662 ページから直接引用したもので、正常に動作します。2 番目のマップは、使用されている色が異なることを除いて、最初のマップとまったく同じです。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{mindmap}
\begin{document}
\tikz[mindmap,concept color=blue!80]
\node [concept] {Root concept}
child[concept color=red,grow=30] {node[concept] {Child concept}}
child[concept color=orange,grow=0] {node[concept] {Child concept}};
\tikz[mindmap,concept color=magenta]
\node [concept] {Root concept}
child[concept color=cyan,grow=30] {node[concept] {Child concept}}
child[concept color=yellow,grow=0] {node[concept] {Child concept}};
\end{document}
問題は2つあります。
- ノードの色が予想どおりではありません。これは黄色の場合はそれほど明白ではありませんが、シアンとマゼンタの場合は非常に明白です。
- 色は一貫性のあるつまり、ノードでは期待どおりの色を使用していないにもかかわらず、コネクタでは期待どおりの色を使用しているようです。そのため、コネクタはノードとの間でスムーズに流れません。
調査
一貫して機能する色はすべて RGB モデルを使用して定義されます。一貫性のない結果を生成する色はすべて CMYK モデルを使用して定義されます。回避策としては、RGB モデルで代替色を定義することです。たとえば、新しい色を定義するには、rgbmagenta
とまったく同じですmagenta
が、 ではrgb
なく を使用しますcmyk
。
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{mindmap}
\definecolor{rgbmagenta}{rgb}{1,0,1}
\definecolor{rgbcyan}{rgb}{0,1,1}
\definecolor{rgbyellow}{rgb}{1,1,0}
\begin{document}
\tikz[mindmap,concept color=rgbmagenta]
\node [concept] {Root concept}
child[concept color=rgbcyan,grow=30] {node[concept] {Child concept}}
child[concept color=rgbyellow,grow=0] {node[concept] {Child concept}};
\end{document}
質問
なぜこのようなことが起こるのでしょうか? 回避策で行ったように色を再定義しなくても回避できますか?
この質問は間違いなく重複しているのではないかと思いますが、これまでのところ検索しても特に有益な情報は見つかりませんでした。TikZ が CMYK モデルから RGB に色を変換している可能性があることを示唆するスレッドを見つけましたが、色が期待どおりではないことは説明できるかもしれませんが、不一致については説明できません。
答え1
アップデート
バージョン 3.1.3 以降ではtikz
CMYK シェーディングがサポートされているため、以下の MWE はロードせずに動作しますpgf-cmykshadings
。
とpgf-cmykshadings
の CMYK シェーディングをサポートする新しいパッケージがあります。カラーモデルを設定することで、同じドキュメントで RGB と CMYK シェーディングを生成することができます。pgf
tikz
xcolor
pgf-cmykshadings
前に tikz
。
次の MWE では、最初のマインドマップは RGB で、2 番目は CMYK です。どちらも色が一貫しています。
\documentclass{standalone}
\usepackage{pgf-cmykshadings}
\usepackage{tikz}
\usetikzlibrary{mindmap}
\begin{document}
\selectcolormodel{rgb}
\tikz[mindmap,concept color=blue!80]
\node [concept] {Root concept}
child[concept color=red,grow=30] {node[concept] {Child concept}}
child[concept color=orange,grow=0] {node[concept] {Child concept}};
\selectcolormodel{cmyk}
\tikz[mindmap,concept color=magenta]
\node [concept] {Root concept}
child[concept color=cyan,grow=30] {node[concept] {Child concept}}
child[concept color=yellow,grow=0] {node[concept] {Child concept}};
\end{document}
答え2
TikZ (バージョン 3.1.3 より前) は、カラー グラデーションに RGB カラーを使用します。
パッケージxcolor
(および で必要tikz
)beamer
を使用すると、次のことが可能になります。
CMYK カラーを RGB カラーに変換します。
\colorlet{yellow}[rgb]{yellow}
RGB カラーを CMYK カラーに変換します。
\colorlet{red}[cmyk]{red}
常に RGB カラーを使用するには、次rgb
のオプションを渡しますxcolor
。
\usepackage[rgb]{xcolor}
beamer
必要なのでxcolor
、以下の前にこのオプションを渡す必要があります。
\PassOptionsToPackage{rgb}{xcolor}
\documentclass{beamer}