La soluzione di Enrico si basa su TeX e pertanto richiede particolare abilità e conoscenza del linguaggio di Knuth, sicché non è facile e immediato ricavarla.
Rimane certamente come esempio di studio per chi come me dovrebbe cominciare a studiare seriamente TeX e colmare questa vasta lacuna di utilizzatore di LaTeX.
Tuttavia propongo qui un’altra soluzione basata sul pacchetto grafico PGF che offre un linguaggio la cui “filosofia” mi è particolarmente congeniale.
Disegno della griglia:
Per disegnare la griglia della tabella pitagorica utilizziamo il comando \draw specificando un quadrato di 10 di lato (se non si specificano unità PGF intenderà i centimetri):`\draw (0,0) grid (10,10);`
Riempimento della tabella:
Basta scrivere due cicli foreach nidificati che eseguono il disegno di un nodo con la comoda opzione shift. Ho copiato, questo si, il codice di Enrico in TeX per calcolare il risultato dell’espressione x * ()-y che da il valore del prodotto in tabellina, poiché PGF esegue 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 corretta in una griglia di 1cm x 1cm:`\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.
`\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}`
Ringrazio chi ha avuto la pazienza di seguire fino quì e naturalmente anche Enrico.
Firmato un impenitente non utilizzatore di TeX.