28
Le tabelle LaTeX Soluzione manuale Soluzione automatica La composizione di tabelle di larghezza specificata Claudio Beccari g u I t meeting 2009 Claudio Beccari () Tabelle di larghezza specificata g u I t meeting 2009 1/19

La composizione di tabelle di larghezza specificata

  • Upload
    others

  • View
    5

  • Download
    0

Embed Size (px)

Citation preview

Page 1: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

La composizione di tabelledi larghezza specificata

Claudio Beccari

guItmeeting2009

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 1/19

Page 2: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Piano della presentazione

1 Le tabelle LaTeX

2 Soluzione manuale

3 Soluzione automatica

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 2/19

Page 3: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Le tabelle LaTeX

Una semplice tabella LaTeX viene composta con ilcodice:

\begin{tabular}{|*3{c|}}\hlinePippo & Pluto & Paperino \\Tizio & Caio & Sempronio \\\hline\end{tabular}

e il risultato è:

Pippo Pluto PaperinoTizio Caio Sempronio

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 3/19

Page 4: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Commenti

Pippo Pluto PaperinoTizio Caio Sempronio

I filetti non costituiscono un buon esempio di stile; quici sono per mettere in evidenza alcune caratteristiche.

I testi di ciascuna cella sono centrati, come si eradesiderato.

I filetti verticali hanno una distanza minima daicontenuti delle celle di una quantità fissata dalparametro \tabcolsep che qui vale 6.0 pt.

La tabella ottenuta ha la sua larghezza naturaleinclusiva dei separatori fissati da \tabcolsep.

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 4/19

Page 5: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Commenti

Pippo Pluto PaperinoTizio Caio Sempronio

I filetti non costituiscono un buon esempio di stile; quici sono per mettere in evidenza alcune caratteristiche.

I testi di ciascuna cella sono centrati, come si eradesiderato.

I filetti verticali hanno una distanza minima daicontenuti delle celle di una quantità fissata dalparametro \tabcolsep che qui vale 6.0 pt.

La tabella ottenuta ha la sua larghezza naturaleinclusiva dei separatori fissati da \tabcolsep.

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 4/19

Page 6: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Commenti

Pippo Pluto PaperinoTizio Caio Sempronio

I filetti non costituiscono un buon esempio di stile; quici sono per mettere in evidenza alcune caratteristiche.

I testi di ciascuna cella sono centrati, come si eradesiderato.

I filetti verticali hanno una distanza minima daicontenuti delle celle di una quantità fissata dalparametro \tabcolsep che qui vale 6.0 pt.

La tabella ottenuta ha la sua larghezza naturaleinclusiva dei separatori fissati da \tabcolsep.

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 4/19

Page 7: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Commenti

Pippo Pluto PaperinoTizio Caio Sempronio

I filetti non costituiscono un buon esempio di stile; quici sono per mettere in evidenza alcune caratteristiche.

I testi di ciascuna cella sono centrati, come si eradesiderato.

I filetti verticali hanno una distanza minima daicontenuti delle celle di una quantità fissata dalparametro \tabcolsep che qui vale 6.0 pt.

La tabella ottenuta ha la sua larghezza naturaleinclusiva dei separatori fissati da \tabcolsep.

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 4/19

Page 8: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Specificazione della larghezza

Talvolta risulta necessario avere tabelle di una datalarghezza; questa non dovrebbe essere inferiore allalarghezza naturale.

Il manuale LaTeX dice che questo risultato si ottieneusando l’ambiente tabular* nel quale, oltre aspecificare la larghezza desiderata, bisogna inserireuna ulteriore spaziatura elastica intercolonna,specificata mediante il comando\extracolsep{\fill}.

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 5/19

Page 9: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Specificazione della larghezza

Talvolta risulta necessario avere tabelle di una datalarghezza; questa non dovrebbe essere inferiore allalarghezza naturale.

Il manuale LaTeX dice che questo risultato si ottieneusando l’ambiente tabular* nel quale, oltre aspecificare la larghezza desiderata, bisogna inserireuna ulteriore spaziatura elastica intercolonna,specificata mediante il comando\extracolsep{\fill}.

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 5/19

Page 10: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Risultato

\begin{tabular*}{\textwidth}%{@{\extracolsep{\fill}\vrule}*3{c|}}\hlinePippo & Pluto & Paperino \\Tizio & Caio & Sempronio \\\hline\end{tabular*}

Pippo Pluto PaperinoTizio Caio Sempronio

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 6/19

Page 11: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Risultato

\begin{tabular*}{\textwidth}%{@{\extracolsep{\fill}\vrule}*3{c|}}\hlinePippo & Pluto & Paperino \\Tizio & Caio & Sempronio \\\hline\end{tabular*}

Pippo Pluto PaperinoTizio Caio Sempronio

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 6/19

Page 12: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Commenti

Pippo Pluto PaperinoTizio Caio Sempronio

Il risultato è inaccettabile!

la prima cella non ha più il filetto sinistro allagiusta distanza dal contenutoi contenuti delle celle non sono più centratiLa spaziatura elastica interviene solo a partiredalla seconda cella e solo a sinistra del suocontenuto

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 7/19

Page 13: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Commenti

Pippo Pluto PaperinoTizio Caio Sempronio

Il risultato è inaccettabile!la prima cella non ha più il filetto sinistro allagiusta distanza dal contenuto

i contenuti delle celle non sono più centratiLa spaziatura elastica interviene solo a partiredalla seconda cella e solo a sinistra del suocontenuto

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 7/19

Page 14: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Commenti

Pippo Pluto PaperinoTizio Caio Sempronio

Il risultato è inaccettabile!la prima cella non ha più il filetto sinistro allagiusta distanza dal contenutoi contenuti delle celle non sono più centrati

La spaziatura elastica interviene solo a partiredalla seconda cella e solo a sinistra del suocontenuto

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 7/19

Page 15: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Commenti

Pippo Pluto PaperinoTizio Caio Sempronio

Il risultato è inaccettabile!la prima cella non ha più il filetto sinistro allagiusta distanza dal contenutoi contenuti delle celle non sono più centratiLa spaziatura elastica interviene solo a partiredalla seconda cella e solo a sinistra del suocontenuto

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 7/19

Page 16: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Prima correzione

\begin{tabular*}{\textwidth}%{@{\extracolsep{\fill}\vrule%\hspace{\tabcolsep}}*3{c|}}\hlinePippo & Pluto & Paperino \\Tizio & Caio & Sempronio \\\hline\end{tabular*}

Pippo Pluto PaperinoTizio Caio Sempronio

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 8/19

Page 17: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Commenti

Senza filetti il risultato sarebbe meno brutto:

Pippo Pluto PaperinoTizio Caio Sempronio

ma questo non sarebbe il modo giusto per ottenere unrisultato decente.

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 9/19

Page 18: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Prima soluzione

La prima soluzione consiste nel determinare il valorecoretto di \tabcolsep per allargare la tabella al valoredesiderato: quanto vale la larghezza naturale dellatabella? Quanto è minore della larghezza desiderata?Quante colonne contiene la tabella?

Nel nostro caso:

larghezza desiderata 137mmlarghezza naturale 71mmlarghezza mancante 66mmnumero di colonne 3numero di separatori 6spazio per separatore: 66 mm=6 = 11mm

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 10/19

Page 19: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Risultato

\centering\tabcolsep=10.8mm\begin{tabular}{*3{c|}}\hlinePippo & Pluto & Paperino \\Tizio & Caio & Sempronio \\\hline\end{tabular}

Pippo Pluto PaperinoTizio Caio Sempronio

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 11/19

Page 20: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Risultato

Sempre ricordando che i filetti sono presenti solo permostrare i difetti di composizione, ora possiamoconstatare che la tabella non mostra più i vistosidifetti iniziali.Va notato però che il valore di \tabcolsep hadovuto essere ricercato con successivi tentativi; ilcalcolo mostrato nella tabella precedente è soloapprossimativo, tanto per avere un valore da cuiiniziare. Il valore finale ottenuto ricomponendo latabella 4 o 5 volte è risultato pari a 10,8mm.

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 12/19

Page 21: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Perché non far fare i calcoli a LaTeX stesso?

Già, perché no?

Peccato che l’interprete dei comandi (pdftex nelleversioni del sistema TeX dal 2005 in poi) sia capacedi fare conti solo con i numeri interi, in particolarenon sarebbe capace di determinare il valore fratto dimillimetri (o di punti) che abbiamo determinato amano.

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 13/19

Page 22: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Che calcoli bisogna fargli fare?

Se con \tabcolsep0 = t0 = 0 la tabella è larga l0 econ \tabcolsep1 = t1 la tabella è larga l1 per averela tabella larga l bisogna usare \tabcolsep = t datoda

t =l` l0l1 ` l0

´ t1

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 14/19

Page 23: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Ma pdftex è capace di fare quei calcoli?

Di sua natura no. Nel senso che non esiste unamacro, e meno che mai un comando primitivo, che siacapace di fare una divisione fratta per ottenere unquoziente fratto.

pdftex fa conti, in pratica, solo con i numeri interi. Eper le divisioni ottiene solo la parte intera delquoziente.

Allora bisogna creare una macro che li faccia.

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 15/19

Page 24: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Il pacchetto widetable.sty

Il pacchetto widetable.sty è riportato negli atti diquesto meeting.Esso contiene una routine (una macro) per determinare ilrapporto fratto fra due lunghezze; questo rapporto vieneusato per moltiplicare la lunghezza \tabcolsep in mododa ottenere il valore necessario per comporre la tabelladella larghezza desiderata.Per ottenere questo risultato la tabella viene composta trevolte; le prime due volte, con valori prefissati di\tabcolsep, servono per determinare le dimensionirisultanti della tabella. Successivamente si determina ilfattore moltiplicativo giusto con una estrapolazione linearee infine si compone la tabella vera e propria.

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 16/19

Page 25: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Uso di widetable.sty

\begin{widetable}{\textwidth}{|*3{c|}}\hlinePippo & Pluto & Paperino \\Tizio & Caio & Sempronio \\\hline\end{widetable}

Pippo Pluto PaperinoTizio Caio Sempronio

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 17/19

Page 26: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Conclusione

Il valore di \tabcolsep calcolato da widetablevale 10,783mm a fronte del valore 10,8mmdeterminato a mano, ma il tempo e la concentrazionenecessari per eseguire il lavoro completamente amano non sono nemmeno confrontabili!

Perciò . . .

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 18/19

Page 27: La composizione di tabelle di larghezza specificata

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

Conclusione

Il valore di \tabcolsep calcolato da widetablevale 10,783mm a fronte del valore 10,8mmdeterminato a mano, ma il tempo e la concentrazionenecessari per eseguire il lavoro completamente amano non sono nemmeno confrontabili!

Perciò . . .

Claudio Beccari () Tabelle di larghezza specificata guItmeeting2009 18/19

Page 28: La composizione di tabelle di larghezza specificata

HappyTeXing!