Robitex's Blog
Ideas in the web
Un tabellone da lotteria – Parte 2
Pubblicato da su 10/07/2009
Evoluzione del linguaggio
Proseguiamo la costruzione del nostro tabellone da lotteria migliorando il codice per generare la griglia. Possiamo infatti utilizzare le capacità di scaling del disegno di TikZ per mezzo delle chiavi xscale e yscale. I fattori di scala vengono applicati ai valori delle coordinate che hanno come unità di default 1 cm.
In questo modo il punto di coordinata (18.5mm , 30.2 mm) potrà essere più semplicemente indicato con le coordinate (1 , 1) una volta impostati i giusti fattori che corrispondono alle fissate dimensioni di una cella del tabellone come determinate nel post precedente.
La creazione della griglia può quindi essere riscritta così:
\tikz[xscale=1.85,yscale=3.02] \draw (0, 0) grid (10, 9);
Disegnare i numeri nelle celle
Novanta numeri disposti su nove righe per dieci colonne si gestirebbero molto facilmente con un doppio ciclo for nidificato, uno dei costrutti standard dei linguaggi di programmazione. Anche in PGF è disponibile proprio quello che cercavamo: il costrutto \foreach che prevede una variabile di ciclo che assumerà il set di valori di una lista tra parentesi graffe.
Ecco il codice dimostrativo che scrive su righe e colonne il numero 1 dato come argomento all’oggetto nodo:
\tikz
\foreach \y in {8,7,...,0}
\foreach \x in {0,1,...,9}
\draw (\x , \y ) node {1};
Un normale contatore LaTeX, chiamiamolo num, incrementato da 1 a 90 completerà il codice dell’intero documento:
\documentclass[a4paper]{article}
\usepackage[margin=12mm]{geometry}
\usepackage{tikz}
\pagestyle{empty}
\newcounter{num} % number lottery counter
\setcounter{num}{0}
\begin{document}
% basic PGF unit is 1 cm
\Huge\slshape\noindent
\begin{tikzpicture}[xscale=1.85,yscale=3.02]
\draw[color=gray] (0,0) grid (10,9);
\foreach \y in {8,7,...,0}
\foreach \x in {0,1,...,9}
\stepcounter{num}
\draw[xshift=0.5cm,yshift=0.78cm] (\x , \y ) node {\thenum};
\end{tikzpicture}
\end{document}
Noterete che il documento si apre regolando le dimensioni e la forma (slanted) del carattere, e aprendo un ambiente tikzpicture più comodo del comando \tikz usato finora per gli esempi.
Le coordinate (\x , \y) si riferiscono all’angolo in basso a sinistra della cella, quindi per posizionare correttamente il numero nella cella stessa ho utilizzato un xshift di 0,5cm (in asse nella cella) ed un yshift di 0.78cm ovvero una posizione più a nord rispetto al centro della cella.
Il comando \thenum non fa altro che restituire il valore del contatore numerico in testo.
Questa è la parte meno elegante del codice poiché un contatore LaTeX non fa parte della sintassi PGF, ma pensandoci bene la cosa si potrebbe modificare…
Per ora godetevi il risultato finale:

Recent comments