Robitex's Blog

Ideas in the web

Un tabellone da lotteria – Parte 2


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:

Tabellone di Lotteria

Tabellone di Lotteria

About these ads

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

Iscriviti

Ricevi al tuo indirizzo email tutti i nuovi post del sito.

Unisciti agli altri 30 follower

%d blogger cliccano Mi Piace per questo: