Marco87″ post=73224Ciao Claudio,
in effetti non ci avevo pensato. A me piacerebbe avere quello stile di freccia in qualsiasi ambito, però se riuscissi a farlo almeno per quegli schemi sarebbe già molto buono. Guardando quegli esempi direi che potrebbe proprio fare al caso mio! Pensi che in questo ambito si possa creare lo stile di freccia che dicevo?
Grazie e ciao,
Marco.
Ho finalmente risolto l’arcano (e con molta soddisfazione per aver imparato ad usare le chiavi TikZ, non bene magari, ma in modo funzionante)! 🙂
Il mio codice, commentato, è:
`
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows,calc} %<= shapes.arrows per lo stile single arrow, calc per un piccolo conto
% macro per estrarre un angolo da due coordinate
% by Altermundus:
% http://tex.stackexchange.com/questions/39293/coordinates-a-b-compute-b-a-and-angle-between-x-and-b-a
\newcommand{\pgfextractangle}[3]{%
\pgfmathanglebetweenpoints{\pgfpointanchor{#2}{center}}
{\pgfpointanchor{#3}{center}}
\global\let#1\pgfmathresult
}
% definizione dello stile freccia
\tikzset{stylefreccia/.style={single arrow, draw=none,fill=gray!80!black,minimum height=#1,minimum width=0.5cm}}
% definizione dei comandi attivati dalla freccia
\tikzset{freccia/.code={
\coordinate (A) at (\tikzparentnode.south); % <= definisco la coordinata della radice
\coordinate (B) at (\tikzchildnode.north); % <= definisco la coordinata della foglia
\pgfextractangle{\angle}{A}{B} % <= calcolo l'angolo fra i due
\node [stylefreccia=1cm,single arrow head indent=1ex,rotate=\angle] (x) at ($(\tikzparentnode.south)!0.5!(\tikzchildnode.north)$){}; % <= inserisco il nodo esattamente a metà fra radice e foglia con l'inclinazione calcolata prima
\draw[gray!20,draw,line width=2pt](x.tail)--(x.tip); % <= disegno centralmente il segmento nel nodo freccia
}
}
\begin{document}
\tikzset{edge from parent/.style={freccia}} % <= definizione della nostra freccia
\begin{center}
\begin{tikzpicture}[level distance=2cm,
level 1/.style={sibling distance=30mm},
level 2/.style={sibling distance=20mm},
level 3/.style={sibling distance=10mm}
]
\node {root}
child {node {left}
child {node{child}}}
child {node {right}
child {node {child}}
child {node {child}}
};
\end{tikzpicture}
\end{center}
\end{document}
`
Risultato grafico:
[attachment=306]Immagine_2012-05-24.jpg[/attachment]
Piccolo problema: non capisco perché il testo nei nodi foglia sembra essere in bold. :(
Ciao
Claudio