No, non è perfetto…
Questo è un codice un po’ più vicino a quello che immaginavi:
Bravo Roberto, si tratta di senso pratico, anche perché lavorare con al ricorsione dentro una tabella è virtualmente impossibile; ogni cella costituisce ua specie di grupp a se stante; quindi qualunque ricorsione che tu faccia a tabella cominciata si esaurisce dentro al cella dentro al quale è fatta, quindi non c’è prricolo che si riesca a raggiungere la fine in modo corretto.
Tuttavia vorrei far notare che esiste un comando poco sfruttato che si chiama \arraystretch il cui valore serve per scalare lo \strutt che viene inserito nella prima cella di ogni riga di una tabella, quindi è in grado di spaziare la tabella di quel che si desidera in modo uniforme, senza bisogno i di ricorrere a una misura fissa, come \rule{0pt}{12pt} oppure a \newdimen\hr \hr=12pt; basta dare la ridefinizione, per esempio`\renewcommand\arraystretch{1.5}` e le varie righe risultano distanziate di quel che occorre (di più o di meno a seconda del fattore introdotto); tieni presente che lo \strut (pilastrino) predefinito, componendo a 10pt, è alto 8.4pt e profondo 3.6pt (circa) per u totale di 12pt; moltiplicare queste misure per 1.5 porta le due misure a circa 12.6pt e 5.4pt. Ovviamente si potrebbe scegliere un fattore di 1.4 per la definizione di \arraystretch, ma non è quello il vantaggio; il vantaggio è che si cambia anche la profondità, in modo che i filetti orizzontali non battano contro i discendenti dei caratteri contenuti nella cella; per fare le cose bene con le colonne di tipo p bisognerebbe mettere qualcosa anche alla fine del testo di ciascuna cella di tipo p, perché per impostazione predefinita lo il pilastrino che rende omogenee le altezze delle righe è pensato per tabelle le cui celle contengono una sola riga.