Liverpool” post=83017Visto che nessuno l’ha detto, lo dico io: [tt]coordinate[/tt] non è altro che un nodo particolare, perciò gli si può attribuire direttamente un’etichetta tra le opzioni. Se i nodi ti servono solo per le etichette, allora puoi farne a meno, ad esempio così:
`\coordinate [label=below:$c_1$] (c1) at (1,0);`
In effetti è vero: si veda TikZ: difference between \node and \coordinate? per maggiori dettagli.
In realtà, per automatizzare le cose si può esagerare un pochettino e fare sì che un nuovo comando di tipo nodo realizzi il tutto: `
\poligono[num vertici=4, poligono con etichette] {};
` La vera potenzialità di TikZ, infatti, sono le chiavi che garantiscono una personalizzazione estrema direi e la possibilità di raggruppare in chiavi parte del codice da svolgere. Ecco come avrei fatto io partendo da How to generate n points on a circumference and connect all of them while having constraints on the image size?: `
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc,shapes.geometric} % required for the polygon shape
% Disegnare la griglia
\pgfkeys{/tikz/.cd,
griglia x max/.initial=0,
griglia x max/.get=\grxmax,
griglia x max/.store in=\grxmax,
griglia y max/.initial=0,
griglia y max/.get=\grymax,
griglia y max/.store in=\grymax,
griglia x min/.initial=0,
griglia x min/.get=\grxmin,
griglia x min/.store in=\grxmin,
griglia y min/.initial=0,
griglia y min/.get=\grymin,
griglia y min/.store in=\grymin,
disegna griglia/.code={
\begin{scope}[draw opacity=0.3,text opacity=0.45 ]
\draw[help lines,xstep=1,ystep=1] (\grxmin,\grymin) grid (\grxmax,\grymax);
\pgfmathsetmacro\xstep{\grxmin+1}% da rivedere: se xmin è positivo fa casotto
\pgfmathsetmacro\ystep{\grymin+1}% da rivedere: se xmin è positivo fa casotto
\foreach \x[evaluate=\x as \xprint using int(\x)] in {\grxmin,\xstep,…,\grxmax}{
\node [anchor=north] at (\x,0) {\xprint};
}
\foreach \y[evaluate=\y as \yprint using int(\y)] in {\grymin,\ystep,…,\grymax}{
\node [anchor=east] at (0,\y) {\yprint};
}
\end{scope}
}
}
% Il poligono
\pgfkeys{/tikz/.cd,
num vertici/.initial=6,
num vertici/.get=\vertices,
num vertici/.store in=\vertices,
raggio cerchio/.initial=3,
raggio cerchio/.get=\circleradius,
raggio cerchio/.store in=\circleradius,
angolo poligono/.initial=0,
angolo poligono/.get=\shiftshapeangle,
angolo poligono/.store in=\shiftshapeangle,
angolo etichette/.initial=0,
angolo etichette/.get=\shiftangle,
angolo etichette/.store in=\shiftangle,
at pos/.initial={(0,0)},
at pos/.get=\position,
at pos/.store in=\position,
colore etichette/.initial=black,
colore etichette/.get=\collabel,
colore etichette/.store in=\collabel,
colore poligono/.initial=black,
colore poligono/.get=\colshape,
colore poligono/.store in=\colshape,
colore cerchi/.initial=black,
colore cerchi/.get=\colpin,
colore cerchi/.store in=\colpin,
colore riempimento cerchi/.initial=white,
colore riempimento cerchi/.get=\colfillpin,
colore riempimento cerchi/.store in=\colfillpin,
prefisso etichetta/.initial=x,
prefisso etichetta/.get=\prefixlabel,
prefisso etichetta/.store in=\prefixlabel,
}
% un alias di \node
\makeatletter
\def\poligono{\tikz@path@overlay{node}}
\makeatother
\pgfkeys{/tikz/poligono con etichette/.code={
\pgfmathsetmacro\halfcircleradius{\circleradius/2}
\node [draw=\colshape,
regular polygon,
regular polygon sides=\vertices,
minimum size=\circleradius cm,
name={vertex set},
shape border rotate=\shiftshapeangle] at \position {};
\foreach \x in {1,…,\vertices}{
\node[draw,circle, inner sep=1pt,\colpin, fill=\colfillpin] at (vertex set.corner \x) {};
\pgfmathparse{\shiftangle-360*(\x-1)/ \vertices}
\node at ($(vertex set)+(\pgfmathresult:\halfcircleradius)$)
[label={[font=\small,\collabel]\pgfmathresult:$\prefixlabel_\x$}]{};
}
}
}
\begin{document}
% Personalizzo la griglia
\tikzset{griglia/.style={
griglia x min=-3,
griglia x max=7,
griglia y min=-3,
griglia y max=3,
disegna griglia
}
}
\begin{tikzpicture}[griglia]
% i valori iniziali sono usati per le chiavi
\poligono[at pos={(0,0)}, poligono con etichette] {};
% valori personalizzati
\poligono[num vertici=4,
raggio cerchio=2,
at pos={(5,0)},
angolo poligono=45,
angolo etichette=90,
colore poligono=red,
colore etichette=red,
colore riempimento cerchi=black,
prefisso etichetta=c,
poligono con etichette] {};
\end{tikzpicture}
\end{document}
` Ho aggiunto a quel codice originale la possibilità di disegnare una griglia automaticamente a partire, anche qui, da una personalizzazione iniziale. Ovviamente, in vista dell’articolo non entrerei nel dettaglio di come creare le chiavi e compagnia: questa risposta va intesa come cosa può fare TikZ anche per un disegno semplice come quello voluto. Anche perché, avendo pronto il codice via [tt]pgfkeys[/tt] credo sia molto intuitivo, da parte utente, scrivere solo`
\poligono[num vertici=4,
raggio cerchio=2,
at pos={(5,0)},
angolo poligono=45,
angolo etichette=90,
colore poligono=red,
colore etichette=red,
colore riempimento cerchi=black,
prefisso etichetta=c,
poligono con etichette] {};
` ed avere tutto pronto.
Il risultato:
[attachment=631]Senzanome_2013-03-16.jpg[/attachment]
Ciao
Claudio