背景
我尝试使用该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}