Я хотел бы добавить под некоторыми узлами моего дерева индикатор выполнения.
Что-то вроде этого:
Мой код дерева следующий:
\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
Поскольку \progressbar
TikZ использует внутренние функции, а вложение изображений TikZ по меньшей мере раздражает, мы можем \progressbar
забыть о создании собственного tikzpicture
.
Так как стержень создан асимметричным (самая левая точка находится наИкс= 0) мы поместим его в матрицу, которая в свою очередь может быть размещена как узел, что позволит нам использовать label
.
Я добавил progressbar
ключ к лесу, который принимает четыре аргумента:
- варианты для
\progressbar
, - ценность прогресса и
- опции для текстового узла с
- его содержание.
Код
\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}