Ich möchte unter einigen Knoten in meinem Baum einen Fortschrittsbalken hinzufügen.
Etwas wie das:
Mein Baumcode ist der folgende:
\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}
Mein Fortschrittsbalkencode sieht wie folgt aus:
\package{progressbar}
\begin{document}
\progressbar[linecolor=black, filledcolor=green]{0.6}\llap{\raisebox{1.5pt
{\tiny$60\%$}\hspace{0.8cm}}
\end{document}
Wie kann ich diese beiden kombinieren? Ich habe versucht, nach jedem Knoten den Fortschrittsbalkencode hinzuzufügen, aber es scheint, als ob der Code in der Gesamtstrukturumgebung nicht funktioniert.
Vielen Dank im Voraus!
Antwort1
Da \progressbar
TikZ intern verwendet wird und das Verschachteln von TikZ-Bildern zumindest lästig ist, können wir \progressbar
vergessen, ein eigenes zu erstellen tikzpicture
.
Da der Balken asymmetrisch aufgebaut ist (der linkeste Punkt liegt beiX= 0) Wir platzieren es in einer Matrix, die wiederum wie ein Knoten platziert werden kann, wodurch wir ein verwenden können label
.
Ich habe progressbar
dem Wald einen Schlüssel hinzugefügt, der vier Argumente akzeptiert:
- Optionen zu
\progressbar
, - Fortschrittswert und
- Optionen für den Textknoten mit
- Sein Inhalt.
Code
\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}
Ausgabe
Antwort2
Ich habe das Problem gelöst, indem ich nach dem gewünschten Endknoten für die Leiste diesen Code angegeben habe:
[volere, tikz={\node[below=-2.5pt of .south]
{\progressbar[linecolor=black, filledcolor=green]{0.6}\llap{\raisebox{1.5pt
{\tiny$60\%$}\hspace{0.8cm}}};}]
Der vollständige Code lautet wie folgt:
\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}