la composizione di tabelle di larghezza specificata

Post on 05-Oct-2021

1 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Le tabelle LaTeXSoluzione manuale

Soluzione automatica

La composizione di tabelledi larghezza specificata

Claudio Beccari

guItmeeting2009

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

HappyTeXing!

top related