Robitex's Blog

Ideas in the web

La tabellina pitagorica con PGF


Download articolo in PDF per la stampa

Motivazione

Recentemente un utente del forum del GuIT chiedeva lumi per la composizione in LaTeX di una tabella relativa alla tabellina pitagorica.

Ho provato a fornirgli una riposta fino a che i guru di TeX hanno risolto, ma mi rimaneva da realizzare un idea: disegnare la tabella con il pacchetto grafico PGF.

La tabellina pitagorica compilata in LaTeX con PGF

La tabellina pitagorica compilata in LaTeX con PGF

Disegno della griglia

Per disegnare la griglia della tabella pitagorica utilizziamo il comando \draw specificando un quadrato di 10 unità di lato (se non si specificano unità PGF intenderà centimetri), ecco il comando:

\draw (0,0) grid (10,10);

Riempimento della tabella

Per inserire i numeri nelle celle, risultato del prodotto tra il numero della colonna per quello della riga, basta scrivere due cicli \foreach; nidificati che eseguono il disegno di un nodo al cui centro è composto il testo del numero.

Abbiamo quindi due variabili \x ed \y. Al primo ciclo entrambe avranno valore 1 pertanto per individuare il centro del quadratino occorre dare molto comodamente l’opzione shift di (-0.5,-0.5) che applicate al punto (1,1) fornirà appunto le coordinate (0.5,0.50) ovvero il centro della prima casellina.

Ho copiato, questo si, il codice TeX per calcolare il risultato dell’espressione x * (11-y) che da il valore del prodotto in tabellina, poiché PGF risolve eventuali espressioni solo se si tratta di coordinate mentre per il testo da associare al nodo non effettua alcun parsing:

\foreach \x in {1,2,3,...,10}
\foreach \y in {1,2,3,...,10}
\draw[shift={(-.5,-.5)}] (\x ,\y) node 
                 {\number\numexpr\x*(11-\y)\relax};

Mettendo insieme il codice ecco il primo risultato che da la tabellina pitagorica con griglia di 1cm x 1cm:

% copiare ed incollare questo codice in un file
% testuale con estensione .tex, poi compilarlo con pdflatex
\documentclass[a4paper]{article}

\usepackage{tikz}
\pagestyle{empty}

\begin{document}

\begin{tikzpicture}
% grid definition
\draw (0,0) grid (10,10);

% fill numbers
\foreach \x in {1,2,3,...,10}
\foreach \y in {1,2,3,...,10}
\draw[shift={(-.5,-.5)}] (\x ,\y) node
                 {\number\numexpr\x*(11-\y)\relax};
\end{tikzpicture}

\end{document}

Completando e raffinando un po’ il codice, si ottiene il seguente listato, dove la cosa più importante è l’aggiunta dell’opzione scale all’ambiente tikzpicture che scala tutto tranne che il testo assegnato agli oggetti nodo, pertanto modificando un unico parametro si può regolare le dimensione della tabella.

% copiare ed incollare questo codice in un file
% testuale con estensione .tex, poi compilarlo con pdflatex
\documentclass[a4paper]{article}

\usepackage{tikz}
\pagestyle{empty}

\begin{document}

\begin{tikzpicture}[scale=0.675]
% grid definition
\draw (-1,0) grid (10,10);
\draw (0,10) grid (10,11);
\draw[line width=1pt, color=blue] (0,0) rectangle (10,10);

% fill numbers
\foreach \x in {1,2,3,...,10}
\foreach \y in {1,2,3,...,10}
\draw[shift={(-.5,-.5)}] (\x ,\y) node
                 {\number\numexpr\x*(11-\y)\relax};

% fill first row
\foreach \x in {1,2,3,...,10}
\draw[shift={(-.5,-.5)}] (\x , 11) node {\x};

% fill first column
\foreach \y in {1,2,3,...,10}
\draw[shift={(-.5,-.5)}] (0, 11-\y) node {\y};
\end{tikzpicture}

\end{document}

Il risultato è visibile nell’immagine iniziale, mentre per ottenere il risultato finale in formato PDF scontornato basta fare un click😉 .

Alla prossima.

4 risposte a “La tabellina pitagorica con PGF

  1. Michele Passante 25/10/2009 alle 20:55

    Molto utile, stavo cercando proprio qualcosa del genere!! A me servirebbe per costruire tabelle additive e moltiplicative nell’aritmetica modulare. Ho visto che sarebbe possibile utilizzare la macro \pgfmathmod ma dovrei capire come fare…. (per inciso, il tuo codice a me non funziona ma non ho ora il tempo per capire il perché)

    • robitex 26/10/2009 alle 09:27

      Ciao Michele,
      se non sei riuscito a compilare il codice, controlla che il copia incolla abbia funzionato bene: a volte alcuni caratteri non vengono interpretati correttamente (come i tre puntini anche se cercherò di correggere il sorgente html di wp), ed infine, controlla se la tua distribuzione LaTeX sia abilitata per le estensioni di eTeX (\numexpr non si trova infatti nel nucleo base di TeX).

      Comunque, per risolvere al meglio i tuoi problemi di typesetting di tabelle particolari, ti invito ad avviare una discussione sul forum di GuIT. Può darsi che esista qualche pacchetto che fa al caso tuo. Infatti disegnare queste tabelle con un linguaggio di dettaglio come quello di PGF costa un po’ troppa “fatica”, specie se ne devi generare molte.
      Alla prossima.

  2. Michele Passante 26/10/2009 alle 16:33

    Infatti dava un errore proprio lì… io uso MacTeX con Leopard; di solito installo a mano i package che mi mancano e pensavo di avere tutto a posto ma evidentemente non è così.
    Seguirò il tuo consiglio, anche se voglio provare a realizzare ugualmente la tabella in PGF, non dovrebbe essere difficile adeguare il codice per farlo funzionare. Una sola domanda: cosa sono le estensioni per eTex? Evidentemente non si tratta di semplici package da aggiungere alla mia distribuzione, giusto?

    • robitex 26/10/2009 alle 17:42

      Leggiti “L’arte di scrivere con LaTeX” di Lorenzo Pantieri disponibile dal sito di GuIT, imparerai forse a gestire meglio i pacchetti di MacTeX in automatico.
      Per i tuoi esperimenti con PGF ricordati di farne un sunto sul forum di GuIT, potrebbero dare il via ad ulteriori iniziative.
      Infine eTeX. Si tratta in sostanza di un TeX esteso, ha quindi alcuni comandi in più che il TeX originale di Knuth non ha, in particolare l’estensione da 256 a 32000 del numero dei registri, ecc.
      Tieni conto che quando tu compili un sorgente LaTeX normalmente, nelle moderne distro, entra in funzione un unico programma: si tratta di pdfTeX che ingloba anche eTeX. La cosa è un po’ complicata e deriva dalla varietà dei formati del sorgente (TeX, o LaTeX) e dal formato richiesto in output (dvi, pdf). Per ulteriori informazioni basta studiarsi la guida GuIT (quella coordinata dal Prof. Beccari) che trovi sul sito come sempre.
      Happy TeXing!!!🙂

      PS. Ho modificato il sorgente HTML del post. Adesso il copia ed incolla non dovrebbe più dare problemi. Bye.

Lascia un commento

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...

%d blogger cliccano Mi Piace per questo: