disporre tabella in orizzontale splittata su più fogli

  • Creatore
    Topic
  • #8562
    Up
    0
    Down
    ::


    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?

Visualizzazione 10 filoni di risposte
  • Autore
    Risposte
    • #8563
      DMW
        Up
        0
        Down
        ::


        Prova con:
        `
        \usepackage{lscape}
        ……..

        \begin{landscape}
        \begin{longtable}
        ….
        \end{longtable}
        \end{landscape}
        `

        Ciao

        Andrea

      • #8564
        Up
        0
        Down
        ::

        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

      • #8565
        Up
        0
        Down
        ::


        Non so se funzionano insieme ma puoi provare a mettere la longtable in un ambiente landscape del pacchetto lscape.

      • #8566
        Up
        0
        Down
        ::

        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

      • #8567
        Up
        0
        Down
        ::


        Ho seguito alla lettera i consigli che mi avete dato e funziona tutto perfettamente!
        Il DVI si incasina, ma il pdf viene bene!
        Grazie a tutti, Rossella.

      • #8568
        Up
        0
        Down
        ::


        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“

      • #8569
        Up
        0
        Down
        ::

        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

      • #8570
        Up
        0
        Down
        ::


        ma lo spazio tra didiscalia e tabella non si puó impostare direttamente tra le opzioni del pacchetto?

        ciao gab

      • #8571
        Up
        0
        Down
        ::

        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

      • #8572
        DMW
          Up
          0
          Down
          ::

          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

        • #8573
          Up
          0
          Down
          ::

          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

      Visualizzazione 10 filoni di risposte
      • Devi essere connesso per rispondere a questo topic.

      Go to top