背景
我試圖使用該tikz
mindmap
庫繪製心智圖,以便在beamer
簡報中使用。
問題
根據我對顏色的選擇,節點的顏色與將它們連結到其他節點的連接器的顏色不匹配。無論是使用心智圖的層次結構自動建立連接,還是隨後在操作中手動新增連接,都是如此\path
。
微量元素
這段程式碼示範了這個問題。第一張地圖直接取自手冊第 662 頁,效果很好。第二張地圖與第一張地圖類似,只是使用的顏色不同。
\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}
有兩個問題:
- 節點顏色不符合預期。這在黃色的情況下不太明顯,但在青色和洋紅色的情況下非常明顯。
- 顏色不是持續的。也就是說,連接器似乎使用了我期望的顏色,即使節點沒有。因此連接器不能順利地流入/流出節點。
調查
一致的工作顏色都是使用 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
支援pgf
和中的 CMYK 陰影tikz
。透過設定色彩模型,可以在同一文件中產生 RGB 和 CMYK 底紋xcolor
。只需加載pgf-cmykshadings
前 tikz
。
在下面的 MWE 中,第一個心智圖採用 RGB 格式,第二個心智圖採用 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}