Фон

Фон

Фон

Я пытался нарисовать ментальную карту с помощью 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}

Странности раскрашивания ментальных карт

Есть две проблемы:

  1. Цвета узлов не такие, как ожидалось. Это менее заметно в случае желтого, но очень заметно в случае голубого и пурпурного.
  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-затенения в pgfи 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) вы можете:

  1. преобразовать цвет CMYK в цвет RGB:

    \colorlet{yellow}[rgb]{yellow}
    
  2. преобразовать цвет RGB в цвет CMYK:

    \colorlet{red}[cmyk]{red}
    

Чтобы всегда использовать цвета RGB, передайте rgbпараметр xcolor:

\usepackage[rgb]{xcolor}

Как beamerтребуется xcolor, вы должны передать эту опцию перед:

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

Связанный контент