HELP Tabelle lunghe

  • Creatore
    Topic
  • #104227
    Up
    0
    Down
    ::


    Ciao a tutti, mi rivolgo a voi dopo aver letto un sacco di manuali (Pantieri et al.) perchè ho un problema con la stesura di una tabella: vi anticipo che per un laboratorio, devo presentare una relazione che contiene tantissimi dati sperimentali (anche 500-1000 dati NUMERICI per colonna organizzati in 3 colonne), pertanto mi viene necessario dividere la tabella su più pagine. Premetto anche che non uso LaTeX da molto tempo quindi non conosco il codice o il linguaggio in tutte le sue varianti. Ho fatto diversi esperimenti usando {longtable}, ma senza risultati (sbaglia impaginazione, non prende la \toprule che gli imposto). Vi prego, qualunque consiglio è ben accetto.

Visualizzazione 7 filoni di risposte
  • Autore
    Risposte
    • #104228
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Benvenuto al forum!

        Se ci facessi vedere almeno le prime 20-30 righe di longtable e le ultime 10 righe, ti si potrebbe dire qualcosa.
        Così con quel poco che dici ti si può solo consigliare di usare longtable.

        Per essere sicuri di poterti dire qualcosa di utile, mostraci un esempio minimo compilabile, cioè da \documentclass fino a \end{document}; nel preambolo (da \documetclass a \begin{document} mettici il minimo necessario per mostrare il fatto che non ti funzioni; nel corpo del documento copia e incolla le prime 30 righe del tuo longtable e le ultime 10 righe. Sistema il codice in mezzo ai tag che ottieni cliccando sull’icona che mostra un trapezio alto su cui sono sovrapposti i segni < e > in celeste (praticamente al centro della lista di icone che compaiono sotto la casella del titolo del messaggio).

      • #104229
        Up
        0
        Down
        ::


        Certo scusami, è la prima volta che posto sul forum e non so bene come muovermi: allora il codice che ho usato sostanzialmente è il seguente, i dati li avevo già scritti tutti quindi alla fine ho fatto solo copia e incolla dal sorgente a qui. Ho tralasciato la parte di indice ecc. come puoi notare. Grazie per qualunque risposta mi darai (darete)

        `
        \documentclass[a4paper]{book}
        \usepackage[T1]{fontenc}
        \usepackage[utf8]{inputenc}
        \usepackage[english,italian]{babel}
        \usepackage{amsmath}
        \usepackage{amssymb}
        \usepackage{xymtex}
        \usepackage{graphicx}
        \usepackage{caption}
        \usepackage{textcomp}
        \usepackage{mhchem}
        \usepackage{chemfig}
        \usepackage{array}
        \usepackage{pgfplots}
        \usepackage{pgfplotstable}
        \usepackage{siunitx}
        \usepackage{longtable}
        \usepackage{multicol}
        \usepackage{booktabs}
        \begin{document}

        \begin{longtable}{lp{0.5\columnwidth}}
        \caption{Idrolisi Acida dell' Acetato di Metile}
        \label{tab:longtable} \\
        \toprule
        \multicolumn{1}{c}{Comando} & \multicolumn{1}{c}{Effetto} \\
        \midrule
        \endfirsthead
        \multicolumn{2}{l}{\footnotesize\itshape\tablename~\thetable:
        continua dalla pagina precedente} \\
        \toprule
        \multicolumn{1}{c}{V [cm^3]} & \multicolumn{1}{c}{pH} & \multicolumn{1}{c}{\frac{\Delta y}{\Delta x}} \\
        \midrule
        \endhead
        \midrule
        \multicolumn{2}{r}{\footnotesize\itshape\tablename~\thetable:
        continua nella prossima pagina} \\
        \endfoot
        \bottomrule
        \multicolumn{2}{r}{\footnotesize\itshape\tablename~\thetable:
        si conclude dalla pagina precedente} \\
        \endlastfoot
        0.000 & 2.445 & 0.000 \\
        0.010 & 2.445 & -0.100 \\
        0.020 & 2.444 & 0.000 \\
        0.030 & 2.444 & 0.045 \\
        0.646 & 2.472 & 0.046 \\
        1.300 & 2.502 & 0.053 \\
        2.040 & 2.541 & 0.066 \\
        2.766 & 2.589 & 0.093 \\
        3.472 & 2.655 & 0.124 \\
        4.116 & 2.735 & 0.199 \\
        4.720 & 2.855 & 0.303 \\
        5.182 & 2.995 & 0.536 \\
        5.542 & 3.188 & 0.506 \\
        5.716 & 3.276 & 0.556 \\
        6.058 & 3.466 & 0.686 \\
        6.376 & 3.684 & 0.452 \\
        6.604 & 3.787 & 0.522 \\
        6.784 & 3.881 & 0.403 \\
        7.124 & 4.018 & 0.312 \\
        7.518 & 4.141 & 0.234 \\
        7.966 & 4.246 & 0.339 \\
        8.470 & 4.417 & 0.407 \\
        8.900 & 4.592 & 0.215 \\
        9.258 & 4.669 & 0.350 \\
        9.518 & 4.760 & 0.436 \\
        9.940 & 4.944 & 0.534 \\
        10.318 & 5.146 & 0.727 \\
        10.604 & 5.354 & 1.185 \\
        10.788 & 5.572 & 1.929 \\
        10.858 & 5.707 & 2.222 \\
        10.894 & 5.787 & 3.012 \\
        10.978 & 6.040 & 4.250 \\
        11.010 & 6.176 & 5.400 \\
        11.030 & 6.284 & 5.500 \\
        11.050 & 6.394 & 10.696 \\
        11.106 & 6.993 & 47.500 \\
        11.116 & 7.468 & 43.500 \\
        11.126 & 7.903 & 24.333 \\
        11.138 & 8.195 & 13.500 \\
        11.148 & 8.330 & 9.700 \\
        11.178 & 8.621 & 6.895 \\
        11.216 & 8.883 & 4.120 \\
        11.266 & 9.089 & 3.392 \\
        11.340 & 9.340 & 2.261 \\
        11.428 & 9.539 & 1.550 \\
        11.548 & 9.725 & 1.031 \\
        11.710 & 9.892 & 0.665 \\
        11.928 & 10.037 & 0.442 \\
        12.222 & 10.167 & 0.297 \\
        12.596 & 10.278 & 0.253 \\
        13.054 & 10.394 & 0.174 \\
        13.542 & 10.479 & 0.117 \\
        14.104 & 10.545 & 0.109 \\
        14.730 & 10.613 & 0.090 \\
        15.372 & 10.671 & 0.077 \\
        16.038 & 10.722 & 0.067 \\
        16.726 & 10.768 & 0.644 \\
        \end{longtable}
        \end{document}

        `

      • #104230
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Certo che non ti funziona. l’argomento del comando di apertura contiene la descrizione di due colonne; poi all’interno ce ne metti tre. Non h capito, visto che si tratta di colonne numeriche non troppo larghe, perché definisci la seconda colonna come [tt]p{0.5\columnwidth}[/tt], piuttosto larga e poco adatta a contenere numeri.

          Nota che la dichiarazione nel comando di apertura vale per tutte le colonne dell’intera longtable; le intestazioni delle colonne, eventualmente raggruppate, sono tutte composte in modo diverso dentro le \multicolumn.
          Ti ho corretto alcune cose: le maiuscole nella didascalie sono tutte a proposito tranne la prima.
          Le unità di misura NON si indicano fra parentesi quadre — questa è una vecchia leggenda metropolitana difficile da sradicare; le quadre vogliono dire “unità di misura di” ed è propio quel “di” (che si riferisce al contenuto delle parentesi quadre) che fa la sostanziale differenza.
          Ho messo in modo matematico l’esponente dei centimetri.
          Ho modificato le indicazioni in corsivo e allargato lo spazio fra le colonne, perché quelle scritte erano troppo larghe rispetto alla larghezza delel colonne; ne ho mascherato la larghezza dentro i comandi \rlap e \llap, ma poi sporgono fuori dalla tabella; quindi è meglio lasciare scritto solo continua e togliere ogni indicazione dall’ultimo piede; si capisce da solo che quel filetto spesso conclude la tabella. Eccoti il risultato non bellissimo, ma non orrendo.`\documentclass[a4paper]{book}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[english,italian]{babel}
          \usepackage{amsmath}
          \usepackage{amssymb}
          \usepackage{xymtex}
          \usepackage{graphicx}
          \usepackage{caption}
          \usepackage{textcomp}
          \usepackage{mhchem}
          \usepackage{chemfig}
          \usepackage{array}
          \usepackage{pgfplots}
          \usepackage{pgfplotstable}
          \usepackage{siunitx}
          \usepackage{longtable}
          \usepackage{multicol}
          \usepackage{booktabs}
          \begin{document}

          {\tabcolsep=10mm
          \begin{longtable}{rrr}
          \caption{Idrolisi acida dell'acetato di metile}
          \label{tab:longtable} \\
          \toprule
          \multicolumn{1}{c}{Comando} & \multicolumn{2}{c}{Effetto} \\
          \cmidrule{2-3}
          \multicolumn{1}{c}{$V$ (cm$^3$)} & \multicolumn{1}{c}{pH} & \multicolumn{1}{c}{${\Delta y}/{\Delta x}$} \\
          \midrule
          \endfirsthead
          %
          \multicolumn{3}{l}{\rlap{\footnotesize\itshape\tablename~\thetable: continua}} \\
          \midrule
          \multicolumn{1}{c}{$V$ (cm$^3$)} & \multicolumn{1}{c}{pH} & \multicolumn{1}{c}{${\Delta y}/{\Delta x}$} \\
          \midrule
          \endhead
          %
          \midrule
          \multicolumn{3}{r}{\llap{\footnotesize\itshape\tablename~\thetable: continua}} \\
          \endfoot
          %
          \bottomrule
          \endlastfoot
          %
          0.000 & 2.445 & 0.000 \\
          0.010 & 2.445 & -0.100 \\
          0.020 & 2.444 & 0.000 \\
          0.030 & 2.444 & 0.045 \\
          0.646 & 2.472 & 0.046 \\
          1.300 & 2.502 & 0.053 \\
          2.040 & 2.541 & 0.066 \\
          2.766 & 2.589 & 0.093 \\
          3.472 & 2.655 & 0.124 \\
          4.116 & 2.735 & 0.199 \\
          4.720 & 2.855 & 0.303 \\
          5.182 & 2.995 & 0.536 \\
          5.542 & 3.188 & 0.506 \\
          5.716 & 3.276 & 0.556 \\
          6.058 & 3.466 & 0.686 \\
          6.376 & 3.684 & 0.452 \\
          6.604 & 3.787 & 0.522 \\
          6.784 & 3.881 & 0.403 \\
          7.124 & 4.018 & 0.312 \\
          7.518 & 4.141 & 0.234 \\
          7.966 & 4.246 & 0.339 \\
          8.470 & 4.417 & 0.407 \\
          8.900 & 4.592 & 0.215 \\
          9.258 & 4.669 & 0.350 \\
          9.518 & 4.760 & 0.436 \\
          9.940 & 4.944 & 0.534 \\
          10.318 & 5.146 & 0.727 \\
          10.604 & 5.354 & 1.185 \\
          10.788 & 5.572 & 1.929 \\
          10.858 & 5.707 & 2.222 \\
          10.894 & 5.787 & 3.012 \\
          10.978 & 6.040 & 4.250 \\
          11.010 & 6.176 & 5.400 \\
          11.030 & 6.284 & 5.500 \\
          11.050 & 6.394 & 10.696 \\
          11.106 & 6.993 & 47.500 \\
          11.116 & 7.468 & 43.500 \\
          11.126 & 7.903 & 24.333 \\
          11.138 & 8.195 & 13.500 \\
          11.148 & 8.330 & 9.700 \\
          11.178 & 8.621 & 6.895 \\
          11.216 & 8.883 & 4.120 \\
          11.266 & 9.089 & 3.392 \\
          11.340 & 9.340 & 2.261 \\
          11.428 & 9.539 & 1.550 \\
          11.548 & 9.725 & 1.031 \\
          11.710 & 9.892 & 0.665 \\
          11.928 & 10.037 & 0.442 \\
          12.222 & 10.167 & 0.297 \\
          12.596 & 10.278 & 0.253 \\
          13.054 & 10.394 & 0.174 \\
          13.542 & 10.479 & 0.117 \\
          14.104 & 10.545 & 0.109 \\
          14.730 & 10.613 & 0.090 \\
          15.372 & 10.671 & 0.077 \\
          16.038 & 10.722 & 0.067 \\
          16.726 & 10.768 & 0.644 \\
          \end{longtable}}

          \end{document}`

        • #104231
          Up
          0
          Down
          ::



          @OldClaudio
          credo che il suo problema nascesse dal fatto che le frasi Tabella 1: continua dalla pagina precedente e Tabella 1: continua alla pagina seguente generassero un allineamento delle colonne poco elegante, io ho provato a modificare il codice così:
          `\documentclass[a4paper]{book}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[english,italian]{babel}
          \usepackage{amsmath}
          \usepackage{amssymb}
          \usepackage{xymtex}
          \usepackage{graphicx}
          \usepackage{caption}
          \usepackage{textcomp}
          \usepackage{mhchem}
          \usepackage{chemfig}
          \usepackage{array}
          \usepackage{pgfplots}
          \usepackage{pgfplotstable}
          \usepackage{siunitx}
          \usepackage{longtable}
          \usepackage{multicol}
          \usepackage{booktabs}
          \begin{document}

          \begin{longtable}{*{3}{S[table-format=-2.3]}}
          \caption{Idrolisi Acida dell' Acetato di Metile}
          \label{tab:longtable}\\
          %
          %intestazione iniziale
          \toprule
          %\multicolumn{1}{c}{Comando} & \multicolumn{2}{c}{Effetto} \\
          {V [\si{\centi\metre\cubed}]} & {pH} &{$\frac{\Delta y}{\Delta x}$} \\
          \midrule
          \endfirsthead
          %
          %intestazione normale
          \multicolumn{3}{l}{\makebox[2.5cm][l]{\footnotesize\itshape\tablename~\thetable:
          continua dalla pagina precedente}} \\
          \midrule
          {V [\si{\centi\metre\cubed}]} &{pH} & {$\frac{\Delta y}{\Delta x}$} \\
          \midrule
          \endhead
          %
          %piede normale
          \midrule
          \multicolumn{3}{r}{\makebox[2.5cm][r]{\footnotesize\itshape\tablename~\thetable:
          continua nella prossima pagina}} \\
          \endfoot
          %
          %piede finale
          \bottomrule
          \multicolumn{3}{r}{\makebox[2.5cm][r]{\footnotesize\itshape\tablename~\thetable:
          si conclude dalla pagina precedente}} \\
          \endlastfoot
          %
          %
          0.000 & 2.445 & 0.000 \\
          0.010 & 2.445 & -0.100 \\
          0.020 & 2.444 & 0.000 \\
          0.030 & 2.444 & 0.045 \\
          0.646 & 2.472 & 0.046 \\
          1.300 & 2.502 & 0.053 \\
          2.040 & 2.541 & 0.066 \\
          2.766 & 2.589 & 0.093 \\
          3.472 & 2.655 & 0.124 \\
          4.116 & 2.735 & 0.199 \\
          4.720 & 2.855 & 0.303 \\
          5.182 & 2.995 & 0.536 \\
          5.542 & 3.188 & 0.506 \\
          5.716 & 3.276 & 0.556 \\
          6.058 & 3.466 & 0.686 \\
          6.376 & 3.684 & 0.452 \\
          6.604 & 3.787 & 0.522 \\
          6.784 & 3.881 & 0.403 \\
          7.124 & 4.018 & 0.312 \\
          7.518 & 4.141 & 0.234 \\
          7.966 & 4.246 & 0.339 \\
          8.470 & 4.417 & 0.407 \\
          8.900 & 4.592 & 0.215 \\
          9.258 & 4.669 & 0.350 \\
          9.518 & 4.760 & 0.436 \\
          9.940 & 4.944 & 0.534 \\
          10.318 & 5.146 & 0.727 \\
          10.604 & 5.354 & 1.185 \\
          10.788 & 5.572 & 1.929 \\
          10.858 & 5.707 & 2.222 \\
          10.894 & 5.787 & 3.012 \\
          10.978 & 6.040 & 4.250 \\
          11.010 & 6.176 & 5.400 \\
          11.030 & 6.284 & 5.500 \\
          11.050 & 6.394 & 10.696 \\
          11.106 & 6.993 & 47.500 \\
          11.116 & 7.468 & 43.500 \\
          11.126 & 7.903 & 24.333 \\
          11.138 & 8.195 & 13.500 \\
          11.148 & 8.330 & 9.700 \\
          11.178 & 8.621 & 6.895 \\
          11.216 & 8.883 & 4.120 \\
          11.266 & 9.089 & 3.392 \\
          11.340 & 9.340 & 2.261 \\
          11.428 & 9.539 & 1.550 \\
          11.548 & 9.725 & 1.031 \\
          11.710 & 9.892 & 0.665 \\
          11.928 & 10.037 & 0.442 \\
          12.222 & 10.167 & 0.297 \\
          12.596 & 10.278 & 0.253 \\
          13.054 & 10.394 & 0.174 \\
          13.542 & 10.479 & 0.117 \\
          14.104 & 10.545 & 0.109 \\
          14.730 & 10.613 & 0.090 \\
          15.372 & 10.671 & 0.077 \\
          16.038 & 10.722 & 0.067 \\
          16.726 & 10.768 & 0.644 \\
          \end{longtable}
          \end{document}`

          Tuttavia
          `\multicolumn{3}{l}{\makebox[2.5cm][l]{\footnotesize\itshape\tablename~\thetable:
          continua dalla pagina precedente}} \\`

          che ho scritto io adesso, quindi solo mia è la colpa di questo obrobrio, non mi sembra mandare a capo la frase in modo corretto. Forse Lei ha una soluzione più elegante e funzionale.
          Ho anche introdotto lo stile di colonna S visto che carica il pacchetto Siunitx.
          Poi non riesco a capire esattamente se il problema della toprule sia risolto.

        • #104232
          OldClaudio
          Partecipante
            Up
            0
            Down
            ::



            @schwarz89it
            , si può fare tutto quello che hai detto tranne usare le parentesi quadre epr racchiudere le unità di misura.
            Poi per quella sola indicazione di unità e quel solo esponente, lascerei perdere siunitx, anche se è caricato; certo il codice che ho scritto mente tu mi anticipavi di pochi munti, riduce molto i problemi, anche se la tabella continua ad essere brutta, am almeno si compila e non ci sono cose che disturbano gli incolonnamenti.

            Non ho provato, ma direi che questo è un caso in cui, forse, si potrebbe ottenere un migliore risultato usando il pacchetto multicol; su due colonne la tabella dovrebbe riempire meglio la pagina. Lascio le prove ad altri.

          • #104233
            Up
            0
            Down
            ::


            Il l’uso di S[table-format=2.3] lo suggerivo per l’allineamento delle cifre, si potrebbe anche usare D{.}{.}{2.3}, ma trovo più versatile il formato di siuntx, mi sono proprio dimenticato di correggere le parentesi quadre, grazie di averlo fatto notare.
            Visto che ci sono consiglio di moificare
            `\multicolumn{3}{l}{\makebox[2.5cm][l]{\footnotesize\itshape\tablename~\thetable:
            continua dalla pagina precedente}} \\`
            con
            `\multicolumn{3}{l}{\parbox[c]{3.5cm}{\footnotesize\itshape\tablename~\thetable:
            continua dalla pagina precedente}} \\`
            il risultato è leggermente migliore.

            Se invece vuole usare multicol passo la mano perché io personalmente non l’ho mai usato. Attendiamo novità da @caramgonzo

          • #104234
            OldClaudio
            Partecipante
              Up
              0
              Down
              ::


              No, ho provato io; longtable non funziona né dentro l’ambiente multicols del pacchetto multicol, né in modo \twocolumn. Lo stesso comando di apertura di longtable si accorge se si trova in quella modalità.

              Un altro errore di cui mi sono accorto prima e che ci è sfuggito e quello che non si può mettere nessuna riga tabellare prima di \toprule e dopo \bottomrule, perché questi comandi mancano di spazio verticale rispettivamente sopra o sotto; in mancanza di questo spazio, il contenuto della riga sopra \toprule batte contro il filetto e nello stesso modo per la riga sotto \bottomrule.

              Infine un’altra cosa che mi è sfuggita, la lettera V nella prima colonna deve essere in modo matematico; ora correggo anche sopra nel mio messaggio.

              Commento finale: Tu @schwartz92it hai usato le tecniche migliori e sempre consigliabili per le tabelle di numeri. Ma una tabella di questo genere, specialmente se deve risultare di una decina di pagine o forse di più, è sostanzialmente impresentabile sia come l”ho fatta io sia come l’hai fatta tu.

              Ho la sensazione che sia necessario spezzare a mano la longtable in modo che contenga solo un numero di righe che stiano nella pagina (35-40 righe) e poi ricomporle una dopo l’altra dentro una ambiente multicols (due colonne con la mia soluzione, tre colonne con la tua) che cominci su una nuova pagina (pacchetto afterpage e comando \afterpage) in modo da riempire bene le pagine.

              In ogni coso consiglierei a @caramgonzo di mettere tutto questo materiale in un’appendice, tanto col giochetto dei \label, \ref, \pageref, vi può fare riferimento in qualunque punto del suo testo.

              @caramgonzo; se non hai mai usato i pacchetti multicol e afterpage, leggine la documentazione aprendo un terminale o prompt dei comandi, scrivendoci dentro texdoc seguito dal nome del pacchetto, premendo il tasto invio, e leggendo nella schermata che ti si apre. Fai sempre così; L’Arte di scrivere con LaTeX è essenziale per cominciare, ma per proseguire occorre la dimestichezza con i singoli pacchetti, che si acquisisce solo leggendone la documentazione.

            • #104235
              Up
              0
              Down
              ::


              Grazie ragazzi! Era esattamente quello di cui stavo parlando, e devo dire che le due soluzioni sono entrambe perfettamente funzionanti. Per quanto riguarda la documentazione, cercherò di leggerne sempre di più; purtroppo avendo cominciato da poco devo assestarmi un attimo sul modus operandi del tutto. Vi ringrazio per il tempo dedicatomi, spero di poter contribuire un giorno (quando ne saprò sicuramente più di ora).

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

          Go to top