- Questo topic ha 8 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 17 anni, 8 mesi fa da
robitex.
-
CreatoreTopic
-
10 Novembre 2008 alle 14:11 #28547::
Salve,
sto componendo un documento particolare, si tratta di paginate e paginate di tabelle numeriche.
Di solito utilizzo Word per produrre questi documenti semplicemente perché il file di partenza è in formato rtf.
Stamani però mi sono spazientito per la lentezza e l’inefficienza dell’impaginazione di queste tabelle in Word, pertanto ho deciso di passare a LaTeX: un po’ di lavoro in più ma almeno non si impazzisce.… emh almeno era quello che pensavo, e vengo al punto.
Ho provato con una tabella di quasi 5000 righe e 13 colonne (una delle tante del documento), esportata da rtf in un foglio di calcolo e tramite .CSV importata in .tex.
Ecco l’inizio della tabella:
`\twocolumn[\section{Coordinate e dati dei nodi}]\tiny\sffamily
\tablehead{Nodo&x&y&z&tx&ty&tz&rx&ry&rz&ms&fz&mm\\\hline}
\begin{xtabular}{*{13}{c}}
1&1.1271e+002&2.5100e+002&-1.2000e+001&0&0&0&0&0&0&4385&0&0\\
2&1.7115e+002&2.5100e+002&-1.2000e+001&0&0&0&0&0&0&4385&0&0\\`
La tabella viene composta su due colonne ma viene spezzata prima di raggiungere il fondo pagina, circa 3 cm prima, sprecando molto spazio (3 cm equivalgono a circa 35 linee in meno per pagina).
Il codice si riferisce all’inizio del file provando xtab al posto di supertabular, ma con risultati immutati.Ecco il preambolo:
`\documentclass[a4paper,twoside]{article}\usepackage[margin=18mm]{geometry}
\usepackage[italian]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{lmodern}%font selection
\usepackage{fancyhdr}
\usepackage{xtab}
\usepackage{lastpage}
`
La questione non tocca argomenti di tipografia, ma solo la necessità di riempire il più possibile la pagina di un tabulato.Grazie.
-
CreatoreTopic
-
AutoreRisposte
-
-
10 Novembre 2008 alle 14:58 #28548::
Salve,
sto componendo un documento particolare, si tratta di paginate e paginate di tabelle numeriche.
Di solito utilizzo Word per produrre questi documenti semplicemente perché il file di partenza è in formato rtf.
Stamani però mi sono spazientito per la lentezza e l’inefficienza dell’impaginazione di queste tabelle in Word, pertanto ho deciso di passare a LaTeX: un po’ di lavoro in più ma almeno non si impazzisce.… emh almeno era quello che pensavo, e vengo al punto.
Ho provato con una tabella di quasi 5000 righe e 13 colonne (una delle tante del documento), esportata da rtf in un foglio di calcolo e tramite .CSV importata in .tex.
Ecco l’inizio della tabella:
`\twocolumn[\section{Coordinate e dati dei nodi}]\tiny\sffamily
\tablehead{Nodo&x&y&z&tx&ty&tz&rx&ry&rz&ms&fz&mm\\\hline}
\begin{xtabular}{*{13}{c}}
1&1.1271e+002&2.5100e+002&-1.2000e+001&0&0&0&0&0&0&4385&0&0\\
2&1.7115e+002&2.5100e+002&-1.2000e+001&0&0&0&0&0&0&4385&0&0\\`
La tabella viene composta su due colonne ma viene spezzata prima di raggiungere il fondo pagina, circa 3 cm prima, sprecando molto spazio (3 cm equivalgono a circa 35 linee in meno per pagina).
Il codice si riferisce all’inizio del file provando xtab al posto di supertabular, ma con risultati immutati.Ecco il preambolo:
`\documentclass[a4paper,twoside]{article}\usepackage[margin=18mm]{geometry}
\usepackage[italian]{babel}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{lmodern}%font selection
\usepackage{fancyhdr}
\usepackage{xtab}
\usepackage{lastpage}
`
La questione non tocca argomenti di tipografia, ma solo la necessità di riempire il più possibile la pagina di un tabulato.Non mi risulta. Quello che capita con il tuo input è, prima di tutto, che la colonna di sinistra sfora sopra quella di destra. Non succede se riduci \tabcolsep a 3pt (massimo 3.5pt).
Quello che succede a me, ripetendo le tue due righe di esempio, è che la colonna di sinistra è più corta di una riga rispetto a quella di destra. Nella prima pagina, perché nella seconda la tabella non viene spezzata. Questo usando xtab.
Con supertabular mi viene esattamente come vorresti, con perfetto bilanciamento delle colonne. Alla faccia dei miglioramenti che xtab dovrebbe apportare a supertabular. 😯 Ma con i centimetri mancanti. 🙁
Temo che ci sia poco da fare, evidentemente con una tabella del genere si arriva oltre ai limiti di capacità di supertabular. Puoi provare a mettere, come termina di una riga per ciascuna colonna qualcosa come
`\shrinkheight{-4cm}`
(il valore va calcolato “a occhio”, temo).Ciao
Enrico
-
10 Novembre 2008 alle 16:39 #28549::
Non mi risulta. Quello che capita con il tuo input è, prima di tutto, che la colonna di sinistra sfora sopra quella di destra. Non succede se riduci \tabcolsep a 3pt (massimo 3.5pt).
Quello che succede a me, ripetendo le tue due righe di esempio, è che la colonna di sinistra è più corta di una riga rispetto a quella di destra. Nella prima pagina, perché nella seconda la tabella non viene spezzata. Questo usando xtab.
Con supertabular mi viene esattamente come vorresti, con perfetto bilanciamento delle colonne. Alla faccia dei miglioramenti che xtab dovrebbe apportare a supertabular. 😯 Ma con i centimetri mancanti. 🙁
Temo che ci sia poco da fare, evidentemente con una tabella del genere si arriva oltre ai limiti di capacità di supertabular. Puoi provare a mettere, come termina di una riga per ciascuna colonna qualcosa come
`\shrinkheight{-4cm}`
(il valore va calcolato “a occhio”, temo).Ciao
EnricoSi certo ho già regolato la distanza tra le colonne e proprio a 3.5pt.
Ho già utilizzato il comando \shrinkheight, ma purtroppo non lavora a livello generale ma solo nella colonna in cui si trova. Non è quindi una soluzione perchè è già complicato senza figuriamoci con.Ho dato anche l’opzione debugshow al pacchetto ottenendo il valore considerato da supertabular per l’altezza del testo come 725 pt (circa 25 cm). Mi pare vada bene questo valore.
Avevo utilizzato supertabular altre volte ma mai in maniera così massiccia e con dimensione del carattere minuscola.
Se ci saranno novità vi aggiornerò.Grazie molte prof.
-
10 Novembre 2008 alle 17:28 #28550::
Non mi risulta. Quello che capita con il tuo input è, prima di tutto, che la colonna di sinistra sfora sopra quella di destra. Non succede se riduci \tabcolsep a 3pt (massimo 3.5pt).
Quello che succede a me, ripetendo le tue due righe di esempio, è che la colonna di sinistra è più corta di una riga rispetto a quella di destra. Nella prima pagina, perché nella seconda la tabella non viene spezzata. Questo usando xtab.
Con supertabular mi viene esattamente come vorresti, con perfetto bilanciamento delle colonne. Alla faccia dei miglioramenti che xtab dovrebbe apportare a supertabular. 😯 Ma con i centimetri mancanti. 🙁
Temo che ci sia poco da fare, evidentemente con una tabella del genere si arriva oltre ai limiti di capacità di supertabular. Puoi provare a mettere, come termina di una riga per ciascuna colonna qualcosa come
`\shrinkheight{-4cm}`
(il valore va calcolato “a occhio”, temo).Ciao
EnricoSi certo ho già regolato la distanza tra le colonne e proprio a 3.5pt.
Ho già utilizzato il comando \shrinkheight, ma purtroppo non lavora a livello generale ma solo nella colonna in cui si trova. Non è quindi una soluzione perchè è già complicato senza figuriamoci con.Ho dato anche l’opzione debugshow al pacchetto ottenendo il valore considerato da supertabular per l’altezza del testo come 725 pt (circa 25 cm). Mi pare vada bene questo valore.
Avevo utilizzato supertabular altre volte ma mai in maniera così massiccia e con dimensione del carattere minuscola.
Se ci saranno novità vi aggiornerò.Grazie molte prof.
Credo di aver capito qualcosa. Il pacchetto stima l’altezza delle righe stando leggermente abbondante (di 1pt). Infatti nell’esempio, l’altezza disponibile per la prima colonna è 707.79968pt; supertabular stima l’altezza delle righe con il \baselineskip (6pt per \tiny) più un punto. Le righe che fa stare sono 101, con un disavanzo di 101pt = 3.55cm
Se modifichi la macro \estimate@lineht riempi la pagina; ti propongo questa soluzione:
`\makeatletter
\def\mod@estimate@lineht{%
\ST@lineht=\arraystretch \baslineskp
%\global\advance\ST@lineht by 1\p@
\ST@stretchht\ST@lineht\advance\ST@stretchht-\baslineskp
\ifdim\ST@stretchht<\z@\ST@stretchht\z@\fi \ST@trace\tw@{Average line height: \the\ST@lineht}% \ST@trace\tw@{Stretched line height: \the\ST@stretchht}% } \newenvironment{strictsupertabular} {\let\estimate@lineht\mod@estimate@lineht\supertabular} {\endsupertabular} \makeatother` Ho lasciato la riga incriminata commentandola. L'ambiente strictsupertabular non usa quel punto in più nella stima (tanto sei sicuro che le righe sono tutte alte e profonde il giusto). Ciao Enrico -
11 Novembre 2008 alle 8:20 #28551::
Con supertabular mi viene esattamente come vorresti, con perfetto bilanciamento delle colonne. Alla faccia dei miglioramenti che xtab dovrebbe apportare a supertabular. 😯 Ma con i centimetri mancanti. 🙁
Anch’io ho osservato più di un comportamento bizzarro di xtab. La possibilità di ripartire una tabella su più pagine è intrigante, ma con xtab bisogna preventivare un lavoro manuale di messa a punto non indifferente… 😥
Ciao,
L.
-
11 Novembre 2008 alle 9:47 #28552::
`\makeatletter
\def\mod@estimate@lineht{%
\ST@lineht=\arraystretch \baslineskp
%\global\advance\ST@lineht by 1\p@
\ST@stretchht\ST@lineht\advance\ST@stretchht-\baslineskp
\ifdim\ST@stretchht<\z@\ST@stretchht\z@\fi \ST@trace\tw@{Average line height: \the\ST@lineht}% \ST@trace\tw@{Stretched line height: \the\ST@stretchht}% } \newenvironment{strictsupertabular} {\let\estimate@lineht\mod@estimate@lineht\supertabular} {\endsupertabular} \makeatother`Fantastico. Posso continuare a lavorare con LaTeX.
Grazie molte.Ho aggiustato un po’ il layout della pagina con geometry. Sistemata la cosa il numero di righe effettive su due colonne per la tabella è di 264. Tutte la tabella occupa 17 pagine (twoside saranno solo la metà), ed adesso proseguirò a formare gli altri file tabulati da includere (dovrei rientrare in circa 200 pagine complessive).
Direi che il problema e la sua soluzione andrebbe comunicato agli autori di supertabular.
Anch’io ho osservato più di un comportamento bizzarro di xtab. La possibilità di ripartire una tabella su più pagine è intrigante, ma con xtab bisogna preventivare un lavoro manuale di messa a punto non indifferente…
Nel mio caso la ripartizione multipagina della tabella non è solo intrigante ma essenziale.
Sono tornato a supertabular rispetto a xtab visto che quest’ultimo per ora non aggiunge funzionalità importanti (il pacchetto longtable non funziona su più colonne).Grazie ancora.
-
23 Dicembre 2008 alle 9:21 #28553::
Mi ricollego a questo post per chiedervi se è possibile rimediare ad una serie di (due messaggi per ogni pagina che viene composta):
`Underfull \vbox (badness 10000) has occurred while \output is active`
Sto usando l’ambiente strictsupertabular proposto dal Prof ma l’intestazione della tabella inserita con il comando \tablehead che viene ripetuta a ciascun inizio di pagina, contiene non una ma due righe (la seconda contiene le unità di misura).Se infatti imposto il \tablehead per una sola riga di tabella il problema scompare.
Grazie.
Siamo veramente vicini a Natale, Auguri a tutti.
-
23 Dicembre 2008 alle 10:53 #28554::
Mi ricollego a questo post per chiedervi se è possibile rimediare ad una serie di (due messaggi per ogni pagina che viene composta):
`Underfull \vbox (badness 10000) has occurred while \output is active`
Sto usando l’ambiente strictsupertabular proposto dal Prof ma l’intestazione della tabella inserita con il comando \tablehead che viene ripetuta a ciascun inizio di pagina, contiene non una ma due righe (la seconda contiene le unità di misura).Se infatti imposto il \tablehead per una sola riga di tabella il problema scompare.
Grazie.
Siamo veramente vicini a Natale, Auguri a tutti.
Scrivi \tracingpages=1 prima di cominciare il supertabular e compila. Nel log troverai la descrizione interna delle pagine composte; tra
`%% goal height=578.15999, max depth=4.0`
(il numero sarà diverso) e il successivo messaggio simile c’è la descrizione delle varie righe; dovrebbe essere chiaro quanto manca per avere il riempimento della pagina; aggiungi un puntello opportuno alle righe in \tablehead e sei a posto. 😉Ciao
Enrico
-
7 Gennaio 2009 alle 8:47 #28555::
Mi ricollego a questo post per chiedervi se è possibile rimediare ad una serie di (due messaggi per ogni pagina che viene composta):
`Underfull \vbox (badness 10000) has occurred while \output is active`
Sto usando l’ambiente strictsupertabular proposto dal Prof ma l’intestazione della tabella inserita con il comando \tablehead che viene ripetuta a ciascun inizio di pagina, contiene non una ma due righe (la seconda contiene le unità di misura).Se infatti imposto il \tablehead per una sola riga di tabella il problema scompare.
Grazie.
Siamo veramente vicini a Natale, Auguri a tutti.
Scrivi \tracingpages=1 prima di cominciare il supertabular e compila. Nel log troverai la descrizione interna delle pagine composte; tra
`%% goal height=578.15999, max depth=4.0`
(il numero sarà diverso) e il successivo messaggio simile c’è la descrizione delle varie righe; dovrebbe essere chiaro quanto manca per avere il riempimento della pagina; aggiungi un puntello opportuno alle righe in \tablehead e sei a posto. 😉Ciao
EnricoCiao, buon anno innanzi tutto.
Riporto la soluzione del problema che ho riscontrato.
Attivando l’opzione \tracingpages=1 ottengo nel log le seguenti informazioni (i valori di pagina non fanno testo):
`% t=785.25438 plus 3.24438 g=788.14136 b=70 p=0 c=70#
% t=790.25438 plus 3.24438 plus 1.0fil g=788.14136 b=* p=-10000 c=*
%% goal height=788.14136, max depth=5.0
% t=788.09906 g=788.14136 b=10000 p=0 c=100000#
% t=793.09906 plus 1.0fil g=788.14136 b=* p=-10000 c=*Underfull \vbox (badness 10000) has occurred while \output is active []
[8
]`
Alla quarta riga si sottrae g con t: 788.14136-788.09906=0.0423 (pt).
Questo è il valore di Underfull che va aggiunto al \tablehead tramite un puntello considerando l’altezza di riga (nel mio caso 5.6pt):
`\tablehead{\rule{0pt}{5.6423pt}%
Elemento & Area & Y & Z & Ascissa & Lunghezza\\
& (cm\textsuperscript{2}) & (cm)& (cm)& iniz. (cm)& (cm)\\\hline}`Nel documento mi rimangono un paio di Underfull per le ultime due pagine, ed un Overfull \vbox di 2.822pt in una pagina a metà documento, penso dovuti all’interazione tra i comandi di sezionamento, l’opzione \twocolumn, e l’ambiente supertabular.
Grazie.
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.