Longtable

  • Creatore
    Topic
  • #55368
    OldClaudio
    Partecipante
      Up
      0
      Down
      ::


      Guarda che le lunghe tabelle quando servono si devono fare; in questo caso si devono fare bene, non in modo tale da sollevare le obbiezioni disgustate del lettore “Horribile visu!” oppure “Horresco videns!” (Enrico è sempre formidabile nelle esclamazioni, e anche nelle citazioni a Mr. De La Palice 🙂 ).

      Allora: secondo me sarebbe opportuno usare il pacchetto caption per poter disporre del comando \caption* che mette una didascalia senza al parte fissa in neretto con il numero, che va quindi sostituita con qualcosa di equivalente. Nelle didascalie delle pagine successive alla prima e scritte con \caption* basta inserire una sola volta e molto laconicamente in corsivo fra parentesi: (continua) — ripeto: solo nella didascalia.

      Non scriverei niente nel piede, ma metterei solo il filetto.

      Tutto questo però sarebbe inutile o sprecato se la lunga tabella avesse solo due colonne magroline come quelle dell’esempio; ci sarebbe sicuramente qualche altro modo per riportare l’informazione di una tabella lunga e stretta, che è già brutta di per sé, figuriamoci con testa e piede che la slargano in modo orribile come succede con la tabella del tuo esempio.

      Per una tabella lunga e stretta, basta comporla con diverse colonne affiancate, magari senza usare i bei filetti di booktabs, e usando i filetti verticali, più un numero adeguato di \strut personalizzati (puntelli di cui si siano specificati altezza e profondità) per distanziare i filetti orizzontali affinché non battano sopra le maiuscole o sotto i discendenti delle minuscole.. I filetti verticali, tanto vituperati, in questo caso sarebbero necessari per separare i gruppi di colonne, non ogni colonna da ogni altra colonna adiacente.

      Una tabella non deve assomigliare all’orario dei treni; e sì che anche la benemerita ditta Pozzo, che li pubblicava fino a non molti anni fa, doveva per forza fare lunghe tabelle, spesso con troppi filetti. Ma almeno sapevano come riempire le pagine 😉

    Visualizzazione 2 filoni di risposte
    • Autore
      Risposte
      • #55369
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::

          Tutto questo però sarebbe inutile o sprecato se la lunga tabella avesse solo due colonne magroline come quelle dell’esempio; ci sarebbe sicuramente qualche altro modo per riportare l’informazione di una tabella lunga e stretta, che è già brutta di per sé, figuriamoci con testa e piede che la slargano in modo orribile come succede con la tabella del tuo esempio.

          Naturalmente, quell’esempio era fittizio.

          Però potrebbe succedere davvero (anche se nella pratica raramente, certo) di dover mettere i dati in una longtable. Per esempio, immagina un lunghissimo elenco di materiali, che riporti accanto a ciascuno di essi delle informazioni come densità, calore specifico, resistività, eccetera. Se l’elenco è davvero lungo, e se le voci per ogni materiale sono tante, una longtable può essere utile o addirittura necessaria.

          Riporto l’esempio (farlocco: serve solo per evidenziare il problema):
          `documentclass[12pt]{article}
          \usepackage{booktabs,longtable}
          \begin{document}
          \begin{longtable}{ll}
          % didascalia ed etichetta
          \caption{Un esempio di tabella ripartita su più pagine.}
          \label{tab:longtable} \\ % <--- se tolgo questo \\ c'è un errore![/color] % intestazione iniziale \toprule Comando & Effetto \\ \midrule \endfirsthead % intestazione normale \multicolumn{2}{l}{\footnotesize\itshape Continua dalla pagina precedente} \\ \toprule Comando & Effetto \\ \midrule \endhead % piede normale \midrule \multicolumn{2}{r}{\footnotesize\itshape Continua nella prossima pagina} \\ \endfoot % piede finale \bottomrule \multicolumn{2}{r}{\footnotesize\itshape Si conclude dalla pagina precedente} \\ \endlastfoot % corpo della tabella a & a \\ ... & ... \\ \end{longtable} \end{document} ` La cosa strana è che se tolgo quel `\\` dopo \caption{…} \label {…}, ottengo un errore:
          `! Misplaced \noalign.
          \toprule ->\noalign
          {\ifnum 0=`}\fi \@aboverulesep =\abovetopsep \global \@b…
          l.11 \toprule

          ? `
          Perché?

          Grazie,
          L.

        • #55370
          Up
          0
          Down
          ::

          Tutto questo però sarebbe inutile o sprecato se la lunga tabella avesse solo due colonne magroline come quelle dell’esempio; ci sarebbe sicuramente qualche altro modo per riportare l’informazione di una tabella lunga e stretta, che è già brutta di per sé, figuriamoci con testa e piede che la slargano in modo orribile come succede con la tabella del tuo esempio.

          Naturalmente, quell’esempio era fittizio.

          Però potrebbe succedere davvero (anche se nella pratica raramente, certo) di dover mettere i dati in una longtable. Per esempio, immagina un lunghissimo elenco di materiali, che riporti accanto a ciascuno di essi delle informazioni come densità, calore specifico, resistività, eccetera. Se l’elenco è davvero lungo, e se le voci per ogni materiale sono tante, una longtable può essere utile o addirittura necessaria.

          Riporto l’esempio (farlocco: serve solo per evidenziare il problema):
          `documentclass[12pt]{article}
          \usepackage{booktabs,longtable}
          \begin{document}
          \begin{longtable}{ll}
          % didascalia ed etichetta
          \caption{Un esempio di tabella ripartita su più pagine.}
          \label{tab:longtable} \\ [color=red]% <--- se tolgo questo \\ c'è un errore![/color] % intestazione iniziale \toprule Comando & Effetto \\ \midrule \endfirsthead % intestazione normale \multicolumn{2}{l}{\footnotesize\itshape Continua dalla pagina precedente} \\ \toprule Comando & Effetto \\ \midrule \endhead % piede normale \midrule \multicolumn{2}{r}{\footnotesize\itshape Continua nella prossima pagina} \\ \endfoot % piede finale \bottomrule \multicolumn{2}{r}{\footnotesize\itshape Si conclude dalla pagina precedente} \\ \endlastfoot % corpo della tabella a & a \\ ... & ... \\ \end{longtable} \end{document} ` La cosa strana è che se tolgo quel `\\` dopo \caption{…} \label {…}, ottengo un errore:
          `! Misplaced \noalign.
          \toprule ->\noalign
          {\ifnum 0=`}\fi \@aboverulesep =\abovetopsep \global \@b…
          l.11 \toprule

          ? `
          Perché?

          Grazie,
          L.

          Mi pareva di averlo chiarito: se dopo \caption e l’eventuale \label c’è subito \endfirsthead non occorre un \\; se ci metti \toprule è evidente che ci va. Dov’è il problema? Non c’è alcuna differenza rispetto a
          `\begin{longtable}{ll}
          Codice & Effetto
          \endfirsthead`
          che non ha bisogno di \\.

          TUTTO ciò che va dal preambolo di tabella al comando \endfirsthead fa parte del “firsthead”. Anche \caption, che viene risolto, come spiegavo nella prima risposta, come un \multicolumn.

          Ciao
          Enrico

        • #55371
          lorenzo.pantieri
          Partecipante
            Up
            0
            Down
            ::

            Mi pareva di averlo chiarito: se dopo \caption e l’eventuale \label c’è subito \endfirsthead non occorre un \\; se ci metti \toprule è evidente che ci va. Dov’è il problema? Non c’è alcuna differenza rispetto a
            `\begin{longtable}{ll}
            Codice & Effetto
            \endfirsthead`
            che non ha bisogno di \\.

            TUTTO ciò che va dal preambolo di tabella al comando \endfirsthead fa parte del “firsthead”. Anche \caption, che viene risolto, come spiegavo nella prima risposta, come un \multicolumn.

            Non avevo fatto in tempo a leggere la tua risposta nel topic “sparito” aperto da Tommaso… 😉

            Grazie mille,
            Lorenzo

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

        Go to top