Fondo
Estaba intentando dibujar un mapa mental usando la tikz
mindmap
biblioteca para un posible uso en una beamer
presentación.
El problema
Dependiendo de mi elección de colores, el color de los nodos no coincide con los colores de los conectores que los conectan a otros nodos. Esto es cierto ya sea que las conexiones se creen automáticamente usando la jerarquía del mapa mental o si las conexiones se agregan manualmente después en una \path
operación.
MWE
Este código demuestra el problema. El primer mapa proviene directamente de la página 662 del manual y funciona bien. El segundo mapa es igual al primero excepto que los colores utilizados son diferentes.
\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}
Hay dos problemas:
- Los colores de los nodos no son los esperados. Esto es menos obvio en el caso del amarillo pero muy obvio en el caso del cian y magenta.
- Los colores no soncoherente. Es decir, los conectores parecen usar colores como los que esperaría, aunque los nodos no. Por lo tanto, los conectores no fluyen suavemente hacia/desde los nodos.
Investigación
Todos los colores que funcionan de manera consistente se definen utilizando el modelo RGB. Todos los colores que producen resultados inconsistentes se definen utilizando el modelo CMYK. Una solución alternativa es definir colores alternativos en el modelo RGB. Por ejemplo, para definir un nuevo color, rgbmagenta
como magenta
pero en términos de rgb
en lugar de 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}
Pregunta
¿Por qué sucede esto exactamente? ¿Se puede evitar sin redefinir los colores como hice en la solución alternativa?
Me temo que esta pregunta es seguramente un duplicado, pero hasta ahora la búsqueda no ha arrojado nada especialmente esclarecedor. He encontrado hilos que sugieren que TikZ puede estar convirtiendo colores del modelo CMYK a RGB, pero si bien eso podría explicar que los colores no sean como se esperaba, no explica las inconsistencias.
Respuesta1
Actualizar
Desde la versión 3.1.3, tikz
admite sombreados CMYK, por lo que el MWE a continuación funcionará sin cargar pgf-cmykshadings
.
Hay un nuevo paquete pgf-cmykshadings
que admite sombreados CMYK en pgf
y tikz
. Es posible producir sombreados RGB y CMYK en el mismo documento configurando el xcolor
modelo de color. solo cargapgf-cmykshadings
antes tikz
.
En el siguiente MWE, el primer mapa mental está en RGB y el segundo en CMYK. ¡Ambos tienen colores consistentes!
\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}
Respuesta2
TikZ (antes de la versión 3.1.3) usa colores RGB para degradados de color.
Con el paquete xcolor
(requerido por tikz
y beamer
), puedes:
convertir un color CMYK a un color RGB:
\colorlet{yellow}[rgb]{yellow}
convertir un color RGB a un color CMYK:
\colorlet{red}[cmyk]{red}
Para usar siempre colores RGB, pase la rgb
opción a xcolor
:
\usepackage[rgb]{xcolor}
Según beamer
lo requerido xcolor
, debes pasar esta opción antes:
\PassOptionsToPackage{rgb}{xcolor}
\documentclass{beamer}