- Questo topic ha 11 risposte, 5 partecipanti ed è stato aggiornato l'ultima volta 18 anni, 11 mesi fa da
egreg9.
-
CreatoreTopic
-
22 Marzo 2006 alle 9:09 #8562::
Salve cari ragazzi del forum,
sono ancora alle prese con queste diavolo di tabelle che non riesco a far comportare come vorrei!
Ho una tabella di 3 colonne che occupa 5, 6 pagine creata così:
`
\begin{singlespace}
\footnotesize \centering
\begin{longtable}{m{.2\textwidth} m{.3 \textwidth} m{.5\textwidth}}
\toprule
…
\bottomrule \\
\caption{…}
\end{longtable}
\end{singlespace}
`
Mi sembra con le prporzioni di aver occupato il 100% dell’ampiezza del foglio,
in realtà la tabella mi sporge a destra e solo se rimpicciolisco un po’ una colonna mi sta centrata! Ossia dal lato sin non tocca le spaziature, ma invade il lato dastro del margine.
Sarà perchè ho impostato i seguenti margini?
`
\geometry{tmargin=40mm,bmargin=30mm,lmargin=35mm,rmargin=25mm,includefoot}
`In realtà mi farebbe comodo mettere la tabella in orizzontale sul foglio in modo da avere
colonne un po’ più larghe, anche se comunque la tabella dovrebbe occupare più di una pagina, qiuindi continuare a spezzarsi.
Cercando nel forum ho provato con`
\begin{sidewaystable}
il contenuto come il codice di prima
\end{sidewaystable}
`
includendo l’opportuno pacchetto, ma non funziona; la tabella ruota ma non si spezza!Qualcuno sa xkè?
Oppure come posso fare, lasciandola orientata verticalemnte, a fregarmene dei margini laterali del foglio solo x quella tabella?
-
CreatoreTopic
-
AutoreRisposte
-
-
22 Marzo 2006 alle 9:56 #8563
-
22 Marzo 2006 alle 10:01 #8564::
Salve cari ragazzi del forum,
sono ancora alle prese con queste diavolo di tabelle che non riesco a far comportare come vorrei!
Ho una tabella di 3 colonne che occupa 5, 6 pagine creata così:`\begin{singlespace}
\footnotesize \centering
\begin{longtable}{m{.2\textwidth} m{.3 \textwidth} m{.5\textwidth}}
\toprule
…
\bottomrule \\
\caption{…}
\end{longtable}
\end{singlespace}
`Mi sembra con le prporzioni di aver occupato il 100% dell’ampiezza del foglio,
in realtà la tabella mi sporge a destra e solo se rimpicciolisco un po’ una colonna mi sta centrata! Ossia dal lato sin non tocca le spaziature, ma invade il lato dastro del margine.
Sarà perchè ho impostato i seguenti margini? `\geometry{tmargin=40mm,bmargin=30mm,lmargin=35mm,rmargin=25mm,includefoot}`In realtà mi farebbe comodo mettere la tabella in orizzontale sul foglio in modo da avere colonne un po’ più larghe, anche se comunque la tabella dovrebbe occupare più di una pagina, qiuindi continuare a spezzarsi.
Cercando nel forum ho provato con `\begin{sidewaystable}
il contenuto come il codice di prima
\end{sidewaystable}`includendo l’opportuno pacchetto, ma non funziona; la tabella ruota ma non si spezza!Qualcuno sa xkè?
Oppure come posso fare, lasciandola orientata verticalemnte, a fregarmene dei margini laterali del foglio solo x quella tabella?Prima di tutto, si scrive “perché” e “per”, dai! Per favore! 😀
Anche “splittato” non è che sia proprio bellissimo, che dici? 😀
Il problema della “sporgenza” è che non hai tenuto conto degli spazi tra colonne. LaTeX mette uno spazio di ampiezza \tabcolsep prima e dopo ogni colonna. Puoi eliminarlo, ma non andrebbe bene perché le colonne si attaccherebbero l’una all’altra. Carica \usepackage{calc} nel preambolo del documento e usa come specificatore della tabella`\begin{longtable}{
m{.2\textwidth-2\tabcolsep}
m{.3\textwidth-2\tabcolsep}
m{.5\textwidth-2\tabcolsep}
}`Sulla cooperazione fra sidewaystable e longtable avrei parecchi dubbi: sidewaystable ruota solo il contenuto della pagina, non può estendersi a più pagine.Ultima osservazione: \caption in longtable va in “head” o “foot”:`\begin{longtable}{…}
…
\caption{…}
\endhead
\end{longtable}`Ciao
Enrico
-
22 Marzo 2006 alle 10:07 #8565
-
22 Marzo 2006 alle 11:42 #8566::
Non so se funzionano insieme ma puoi provare a mettere la longtable in un ambiente landscape del pacchetto lscape.
Secondo la documentazione sì e una prova lo conferma. Con un piccolo problema, che l’ambiente landscape provoca un cambio di pagina, ma è chiaro che deve essere così.`\begin{landscape}
\begin{longtable}\begin{longtable}{
m{.2\linewidth-2\tabcolsep}
m{.3\linewidth-2\tabcolsep}
m{.5\linewidth-2\tabcolsep}
}
…
\end{longtable}
\end{landscape}`Attenzione, il parametro da usare per stabilire la larghezza delle colonne è \linewidth e non \textwidth.Ciao
Enrico
-
22 Marzo 2006 alle 12:22 #8567
-
3 Ottobre 2007 alle 19:55 #8568::
Uso questo post per porre la mia domanda. Ho la seguente tabella
`{\footnotesize
\begin{sidewaystable}
\centering
\caption{Recognition rate for all the classes together}
\label{tab:k6.7}
\begin{tabularx}{\textwidth}{X|XXXXXXXXXXXXXXXXXXXXX}
\toprule
Ratio & KA & KUe & KUf & TEL & TOd & TOu & WKe & WKs & AD & AL & AN & AND & CL & DE & HA & JA & JO & MI & MIG & TI & VO \\
\midrule
KA &\textbf{0,75}& 0& 0& 0& 0& 0& 0& 0& 0& 0,125& 0& 0& 0& 0& 0& 0& 0,125& 0& 0& 0& 0\\
KUe &0 &\textbf{1} &0 &0 &0 &0& 0 &0 &0 &0 &0 &0 &0 &0& 0& 0& 0& 0& 0 &0 &0\\
KUf &0 &0& \textbf{1} &0 &0 &0& 0 &0 &0 &0 &0 &0& 0& 0& 0& 0 &0 &0 &0 &0 &0\\
TEL &0 &0 &0 &\textbf{1} &0& 0 &0 &0& 0 &0& 0& 0 &0 &0 &0& 0 &0 &0 &0& 0& 0\\
TOd &0 &0 &0 &0 &\textbf{1} &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0\\
TOu &0 &0 &0 &0 &0& \textbf{1} &0 &0 &0 &0 &0 &0 &0& 0 &0 &0 &0& 0& 0 &0& 0\\
WKe &0 &0,125 &0 &0 &0 &0& \textbf{0,875}& 0 &0& 0& 0 &0 &0 &0 &0 &0 &0 &0 &0 &0& 0\\
WKs &0 &0 &0 &0 &0 &0 &0 &\textbf{1} &0 &0 &0 &0&0 &0 &0 &0 &0&0 &0 &0 &0\\
AD &0 &0 &0 &0 &0 &0 &0 &0 &\textbf{0,875} &0 &0 &0 &0 &0 &0 &0 &0,125& 0& 0& 0& 0\\
AL &0 &0 &0 &0 &0 &0,375& 0& 0& 0& \textbf{0,375}& 0& 0,125& 0& 0,125& 0& 0& 0& 0& 0& 0& 0\\
AN &0 &0 &0 &0 &0,125& 0 &0 &0& 0 &0 &\textbf{0,75}& 0& 0 &0 &0,125 &0 &0 &0 &0 &0 & 0\\
AND &0 &0 &0 &0 &0 &0 &0 &0 &0 &0& 0 &\textbf{0,75}& 0,125 &0 &0,125 &0& 0 &0& 0& 0 & 0\\
CL &0 &0 &0 &0 &0,125 &0 &0 &0 &0,125& 0 &0 &0 &\textbf{0,625} &0 &0 &0& 0& 0& 0& 0& 0,125 \\
DE &0 &0 &0 &0 &0 &0,25& 0& 0 &0 &0 &0 &0 &0& \textbf{0,625}& 0 &0 &0,125 &0 &0 &0 & 0\\
HA &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &\textbf{0,75}& 0 &0 &0 &0 &0 &0,25\\
JA &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0,125 &0 &0,125& 0& \textbf{0,75}& 0& 0& 0& 0& 0\\
JO &0 &0 &0 &0 &0 &0& 0& 0 &0 &0 &0 &0& 0 &0 &0 &0 &\textbf{1}& 0 &0 &0& 0 \\
MI &0 &0& 0& 0 &0 &0& 0& 0& 0& 0 &0& 0 &0 &0& 0& 0& 0 &\textbf{0,5}& 0,375& 0& 0,125\\
MIG &0 &0 &0 &0& 0& 0,125& 0& 0& 0 &0 &0 &0& 0& 0 &0& 0& 0 &0& \textbf{0,75}& 0,125 & 0\\
TI &0 &0 &0 &0& 0 &0 &0& 0 &0& 0 &0& 0,125 &0 &0 &0 &0& 0& 0& 0 &\textbf{0,75}& 0,125\\
VO &0& 0& 0 &0 &0 &0& 0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0,125 &0 &0 &\textbf{0,875}\\
\bottomrule
\end{tabularx}
\end{sidewaystable}\par}`
Non riesco ancora a farla stare nella pagina inorizzontale. E pure il testo fuoriesce dalle colonne. Cosa si potrebbe fare?ciao
gab“
-
3 Ottobre 2007 alle 20:59 #8569::
Uso questo post per porre la mia domanda. Ho la seguente tabella
`{\footnotesize
\begin{sidewaystable}
\centering
\caption{Recognition rate for all the classes together}
\label{tab:k6.7}
\begin{tabularx}{\textwidth}{X|XXXXXXXXXXXXXXXXXXXXX}
\toprule
Ratio & KA & KUe & KUf & TEL & TOd & TOu & WKe & WKs & AD & AL & AN & AND & CL & DE & HA & JA & JO & MI & MIG & TI & VO \\
\midrule
KA &\textbf{0,75}& 0& 0& 0& 0& 0& 0& 0& 0& 0,125& 0& 0& 0& 0& 0& 0& 0,125& 0& 0& 0& 0\\
KUe &0 &\textbf{1} &0 &0 &0 &0& 0 &0 &0 &0 &0 &0 &0 &0& 0& 0& 0& 0& 0 &0 &0\\
KUf &0 &0& \textbf{1} &0 &0 &0& 0 &0 &0 &0 &0 &0& 0& 0& 0& 0 &0 &0 &0 &0 &0\\
TEL &0 &0 &0 &\textbf{1} &0& 0 &0 &0& 0 &0& 0& 0 &0 &0 &0& 0 &0 &0 &0& 0& 0\\
TOd &0 &0 &0 &0 &\textbf{1} &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0\\
TOu &0 &0 &0 &0 &0& \textbf{1} &0 &0 &0 &0 &0 &0 &0& 0 &0 &0 &0& 0& 0 &0& 0\\
WKe &0 &0,125 &0 &0 &0 &0& \textbf{0,875}& 0 &0& 0& 0 &0 &0 &0 &0 &0 &0 &0 &0 &0& 0\\
WKs &0 &0 &0 &0 &0 &0 &0 &\textbf{1} &0 &0 &0 &0&0 &0 &0 &0 &0&0 &0 &0 &0\\
AD &0 &0 &0 &0 &0 &0 &0 &0 &\textbf{0,875} &0 &0 &0 &0 &0 &0 &0 &0,125& 0& 0& 0& 0\\
AL &0 &0 &0 &0 &0 &0,375& 0& 0& 0& \textbf{0,375}& 0& 0,125& 0& 0,125& 0& 0& 0& 0& 0& 0& 0\\
AN &0 &0 &0 &0 &0,125& 0 &0 &0& 0 &0 &\textbf{0,75}& 0& 0 &0 &0,125 &0 &0 &0 &0 &0 & 0\\
AND &0 &0 &0 &0 &0 &0 &0 &0 &0 &0& 0 &\textbf{0,75}& 0,125 &0 &0,125 &0& 0 &0& 0& 0 & 0\\
CL &0 &0 &0 &0 &0,125 &0 &0 &0 &0,125& 0 &0 &0 &\textbf{0,625} &0 &0 &0& 0& 0& 0& 0& 0,125 \\
DE &0 &0 &0 &0 &0 &0,25& 0& 0 &0 &0 &0 &0 &0& \textbf{0,625}& 0 &0 &0,125 &0 &0 &0 & 0\\
HA &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &\textbf{0,75}& 0 &0 &0 &0 &0 &0,25\\
JA &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0,125 &0 &0,125& 0& \textbf{0,75}& 0& 0& 0& 0& 0\\
JO &0 &0 &0 &0 &0 &0& 0& 0 &0 &0 &0 &0& 0 &0 &0 &0 &\textbf{1}& 0 &0 &0& 0 \\
MI &0 &0& 0& 0 &0 &0& 0& 0& 0& 0 &0& 0 &0 &0& 0& 0& 0 &\textbf{0,5}& 0,375& 0& 0,125\\
MIG &0 &0 &0 &0& 0& 0,125& 0& 0& 0 &0 &0 &0& 0& 0 &0& 0& 0 &0& \textbf{0,75}& 0,125 & 0\\
TI &0 &0 &0 &0& 0 &0 &0& 0 &0& 0 &0& 0,125 &0 &0 &0 &0& 0& 0& 0 &\textbf{0,75}& 0,125\\
VO &0& 0& 0 &0 &0 &0& 0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0 &0,125 &0 &0 &\textbf{0,875}\\
\bottomrule
\end{tabularx}
\end{sidewaystable}\par}`
Non riesco ancora a farla stare nella pagina inorizzontale. E pure il testo fuoriesce dalle colonne. Cosa si potrebbe fare?Scrivi così:
\begin{sidewaystable}
\centering
\caption{Recognition rate for all the classes together}
\label{tab:k6.7}
\medskip
\footnotesize\setlength{\tabcolsep}{.5\tabcolsep}
\begin{tabular}{l*{22}{c}}
\toprule
…
\bottomrule
\end{tabular}
\end{sidewaystable}[/code]
Riducendo lo spazio tra le colonne alla metà di quello usuale, forse riesci a guadagnare lo spazio necessario.Nota come \footnotesize può andare in un altro posto, riducendo i problemini di sintassi e anche il \medskip fra la didascalia e la tabella. Non userei tabularx, non ha molto senso.
Ciao
Enrico
-
4 Ottobre 2007 alle 14:31 #8570
-
4 Ottobre 2007 alle 15:01 #8571::
ma lo spazio tra didiscalia e tabella non si puó impostare direttamente tra le opzioni del pacchetto?
Metti questo nel preambolo:
`\makeatletter
\toks@=\expandafter{\table}
\edef\table{%
\abovecaptionskip\z@skip
\belowcaptionskip 10\p@\relax
\the\toks@}
\makeatother`
Come funziona? Nelle classi normali (article, report e book), si prevede che la didascalia stia sotto anche alle tabelle, che non è spesso la pratica usuale.Perciò occorre un modo per cambiare la scelta dei parametri di spaziatura prima e dopo la didascalia, che sono 10pt e 0pt, rispettivamente.
Lo faccio però solo per le tavole fuori testo (ambiente table): nel parametro di tipo token \toks@ metto l’espansione di \table; poi eseguo una definizione con espansione di \table. In realtà l’unica cosa che viene espansa è il \the (gli altri comandi che compaiono non sono espandibili); l’espansione di \the, in questo caso, è il contenuto del parametro \toks@.
In questo modo ho ottenuto che la nuova definizione di \table coincide con la precedente, ma preceduta dall’assegnazione di nuovi valori ai parametri di spaziatura. Un modo del tutto equivalente sarebbe di scrivere
`\def\table{%
\abovecaptionskip\z@skip \belowcaptionskip 10\p@\relax
\@float{table}}`
perché \table è definito come “\@float{table}”. Il vantaggio dell’approccio seguito prima è che non è affatto necessario conoscere la definizione di \table.Un altro modo sarebbe di scrivere
`\let\origtable\table
\def\table{%
\abovecaptionskip 0pt\relax
\belowcaptionskip 10ptrelax
\origtable}`
ma con \expandafter e \the è più bello (e non si spreca un comando). 😀Esercizio: perché ho usato \z@skip e \p@?
Ciao
Enrico
-
4 Ottobre 2007 alle 17:27 #8572::
Esercizio: perché ho usato \z@skip e \p@?
Ora non posso provare, perché non ho una distribuzione sotto mano.
Ma non era uguale scrivere 0pt e 10pt seguiti da \relax, come hai fatto dopo?
oppure sotto edef non funge?Poi ho un’altra domanda?
Che differenza c’è tra \def, \gdef \edef, \long\def…non so se ce ne siano altri
Ciao
Andrea
-
4 Ottobre 2007 alle 17:46 #8573::
Esercizio: perché ho usato \z@skip e \p@?
Ora non posso provare, perché non ho una distribuzione sotto mano.
Ma non era uguale scrivere 0pt e 10pt seguiti da \relax, come hai fatto dopo?
oppure sotto edef non funge?Sarebbe stato quasi lo stesso; ma fra “\z@skip” e “0pt plus 0pt minus 0pt” c’è una differenza di 21 token.
Che differenza c’è tra \def, \gdef \edef, \long\def…non so se ce ne sono altri
Qui ci vorrebbe una lunga discussione. Una definizione è della forma
`{ }`
può essere \def, \gdef, \edef oppure \xdef; \gdef e \xdef sono uguali a \def e \edef, rispettivamente, ma il viene definito globalmente. La differenza sostanziale fra \def e \edef è che il
, nel secondo caso, viene espanso. Ovviamente non vengono eseguiti i comandi inespandibili, ma solo eseguita l’espansione: quindi la definizione data è equivalente a
`\def\table{%
\abovecaptionskip\z@skip
\belowcaptionskip 10\p@\relax
}`
L’alternativa
`\edef\table{%
\abovecaptionskip\z@skip
\belowcaptionskip 10\p@\relax
\table}`
non avrebbe funzionato, perché l’espansione di \table richiede la ricerca di argomenti che non verrebbero trovati. Nel modo indiretto che ho usato, si ottiene solo il contenuto della lista di token \toks@ che è l’espansione “di primo livello” di \table.È ovvio poi che \def\table{…\table} non può funzionare. Ma nemmeno \def\table{…\the\toks@}, perché nel momento in cui usiamo \table potremmo non avere più la lista giusta nel parametro \toks@. Occorrerebbe destinare un registro \toks a questo scopo: inutile spreco.
Il
è una qualunque combinazione di \long, \outer e \global; lasciamo perdere \outer; \global dice che la definizione è globale e non vale solo nel gruppo in cui è data. Con \long ammettiamo che negli argomenti del comando ci possa essere il token \par. Le definizioni di LaTeX con \newcommand sono tutte \long; quelle con \newcommand* no.
Ciao
Enrico
-
-
AutoreRisposte
- Devi essere connesso per rispondere a questo topic.