Как добавить индикатор выполнения в узел дерева леса?

Как добавить индикатор выполнения в узел дерева леса?

Я хотел бы добавить под некоторыми узлами моего дерева индикатор выполнения.

Что-то вроде этого:

введите описание изображения здесь

Мой код дерева следующий:

\package{forest}
\begin{document}
\begin{forest}
for tree={calign=fixed edge angles},
[Asp \textsubscript{Habitual} [solere\\]
[Asp \textsubscript{Predispositional}
[tendere]
[Asp \textsubscript{Repetetive \textsubscript{i}} [tornare]
[Mod \textsubscript{Volition}
[volere][,phantom]
]]]]
\end{forest}
\end{document}

В то время как мой код выполнения выглядит следующим образом:

\package{progressbar}
\begin{document}
\progressbar[linecolor=black, filledcolor=green]{0.6}\llap{\raisebox{1.5pt
{\tiny$60\%$}\hspace{0.8cm}} 
\end{document}

Как мне объединить эти два вместе? Я пробовал добавлять код прогресс-бара после каждого узла, но это как будто код не работает в среде леса.

Заранее большое спасибо!

решение1

Поскольку \progressbarTikZ использует внутренние функции, а вложение изображений TikZ по меньшей мере раздражает, мы можем \progressbarзабыть о создании собственного tikzpicture.

Так как стержень создан асимметричным (самая левая точка находится наИкс= 0) мы поместим его в матрицу, которая в свою очередь может быть размещена как узел, что позволит нам использовать label.

Я добавил progressbarключ к лесу, который принимает четыре аргумента:

  1. варианты для \progressbar,
  2. ценность прогресса и
  3. опции для текстового узла с
  4. его содержание.

Код

\documentclass[tikz]{standalone}
\usepackage{forest, progressbar}
\forestset{
  progressbar/.style n args={4}{
    label={[matrix, inner sep=+0pt]below:%
      \let\tikzpicture\scope
      \let\endtikzpicture\endscope
      \progressbar[{#1}]{#2}
      \path (Begin) -- node[{midway,anchor=center,node font=\tiny,#3}] {#4\,\%} (End);
      \expandafter\pgfmatrixendrow}}}
\progressbarchange{linecolor=black, filledcolor=green}
\begin{document}
\begin{forest} for tree={calign=fixed edge angles}
[Asp \textsubscript{Habitual}
  [solere, progressbar={}{.6}{}{60}]
  [Asp \textsubscript{Predispositional}
    [tendere, progressbar={filledcolor=yellow}{.3}{}{30}]
    [Asp \textsubscript{Repetetive \textsubscript{i}}
      [tornare]
      [Mod \textsubscript{Volition}
        [volere, progressbar={filledcolor=blue, width=1cm}{.85}{white}{85}]
        [,phantom]
      ]
    ]
  ]
]
\end{forest}
\end{document}

Выход

введите описание изображения здесь

решение2

Я решил эту проблему, указав этот код после конечного узла, которым я хочу видеть панель:

[volere, tikz={\node[below=-2.5pt of .south]  
{\progressbar[linecolor=black, filledcolor=green]{0.6}\llap{\raisebox{1.5pt
{\tiny$60\%$}\hspace{0.8cm}}};}]

Полный код выглядит следующим образом:

\usepackage{tikz}
\usepackage{forest}
\begin{document}
\begin{forest}
 for tree={calign=fixed edge angles},
 [Asp \textsubscript{Habitual} [solere]
 [Asp \textsubscript{Predispositional}
 [tendere]
 [Asp \textsubscript{Repetetive \textsubscript{i}} [tornare]
 [Mod \textsubscript{Volition}
 [volere, tikz={\node[below=-2.5pt of .south]  { \progressbar[linecolor=black, filledcolor=green]{0.6}\llap{\raisebox{1.5pt}{\tiny$60\%$}\hspace{0.8cm}}};}][,phantom]
 ]]]]
\end{forest}
\end{document}

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