Fundo

Fundo

Fundo

Eu estava tentando desenhar um mapa mental usando a tikz mindmapbiblioteca para possível uso em uma beamerapresentação.

O problema

Dependendo da minha escolha de cores, a cor dos nós não corresponde às cores dos conectores que os ligam a outros nós. Isto é verdade quer as conexões sejam criadas automaticamente usando a hierarquia do mapa mental ou quer as conexões sejam adicionadas manualmente posteriormente em uma \pathoperação.

MWE

Este código demonstra o problema. O primeiro mapa vem direto da página 662 do manual e funciona bem. O segundo mapa é igual ao primeiro, exceto que as cores utilizadas são 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}

Esquisitices para colorir mapas mentais

Existem dois problemas:

  1. As cores dos nós não são as esperadas. Isto é menos óbvio no caso do amarelo, mas muito óbvio no caso do ciano e do magenta.
  2. As cores não sãoconsistente. Ou seja, os conectores parecem usar cores como as que eu esperaria, embora os nós não o façam. Portanto, os conectores não fluem suavemente de/para os nós.

Investigação

As cores que funcionam de forma consistente são todas definidas usando o modelo RGB. As cores que produzem resultados inconsistentes são todas definidas usando o modelo CMYK. Uma solução alternativa é definir cores alternativas no modelo RGB. Por exemplo, para definir uma nova cor, rgbmagentaapenas como magentamas em termos de rgbem vez 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}

Mindmap com definições alternativas de cores

Pergunta

Por que exatamente isso acontece? Isso pode ser evitado sem redefinir as cores como fiz na solução alternativa?

Temo que esta pergunta seja certamente uma duplicata, mas a pesquisa até agora não revelou nada especialmente esclarecedor. Encontrei tópicos sugerindo que o TikZ pode estar convertendo cores do modelo CMYK para RGB, mas embora isso possa explicar que as cores não são exatamente as esperadas, não explica as inconsistências.

Responder1

Atualizar

Desde a versão 3.1.3, tikzsuporta sombreamentos CMYK, portanto o MWE abaixo funcionará sem carregar arquivos pgf-cmykshadings.


Há um novo pacote pgf-cmykshadingsque suporta sombreamentos CMYK em pgfe tikz. É possível produzir sombreamentos RGB e CMYK no mesmo documento definindo o xcolormodelo de cores. Basta carregarpgf-cmykshadings antes tikz.

No MWE a seguir, o primeiro mapa mental está em RGB e o segundo em CMYK. Ambos têm cores 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}

insira a descrição da imagem aqui

Responder2

TikZ (anterior à versão 3.1.3) usa cores RGB para gradientes de cores.

Com o pacote xcolor(exigido por tikze beamer), você pode:

  1. converter uma cor CMYK em uma cor RGB:

    \colorlet{yellow}[rgb]{yellow}
    
  2. converter uma cor RGB em uma cor CMYK:

    \colorlet{red}[cmyk]{red}
    

Para usar sempre cores RGB, passe a rgbopção para xcolor:

\usepackage[rgb]{xcolor}

Como beamerexige xcolor, você deve passar esta opção antes:

\PassOptionsToPackage{rgb}{xcolor}
\documentclass{beamer}

informação relacionada