Come si fa una tabella come dio comanda?

  • Creatore
    Topic
  • #9678
    lorenzo.pantieri
    Partecipante
      Up
      0
      Down
      ::


      Apro un nuovo topic correlato a questo.

      Le tabelle che si trovano in molti documenti sono piene zeppe di linee verticali e orizzontali, del tipo
      `\begin{tabular}{|c|c|}
      \hline
      a & b\\
      \hline
      c & d\\
      \hline
      \end{tabular}`
      Enrico sottolinea la bruttezza di questo risultato, probabile retaggio dell'(ab)uso dei fogli elettronici: in particolare le linee “esterne” non servono a nulla.

      Con
      `\begin{tabular}{c|c}
      a & b\\
      \hline
      c & d\\
      \end{tabular}
      `
      la situazione non migliora di molto.

      Mi pare di ricordare di aver sentito dire da Enrico che si può realizzare una tabella a regola d’arte mediante una scala di grigi. Purtoppo però non ho mai trovato il sorgente di una tabella realizzata in questo modo: è possibile averne (almeno) un esempio, da usare come modello?

      Grazie grazie grazie,
      L.

    Visualizzazione 17 filoni di risposte
    • Autore
      Risposte
      • #9679
        Up
        0
        Down
        ::


        Giusto come spunto di lettura, ti suggerisco di leggere la documentazione di booktabs.

        Ciao.

      • #9680
        ev
        Partecipante
          Up
          0
          Down
          ::

          Mi pare di ricordare di aver sentito dire da Enrico che si può realizzare una tabella a regola d’arte mediante una scala di grigi. Purtoppo però non ho mai trovato il sorgente di una tabella realizzata in questo modo: è possibile averne (almeno) un esempio, da usare come modello?

          `\documentclass{article}
          \usepackage[table]{xcolor}

          \colorlet{testa}{gray!50}
          \colorlet{riga}{gray!20}

          \begin{document}

          \rowcolors{3}{riga}{}

          \begin{tabular}{cc}
          \rowcolor{testa}
          \itshape intestazione & \itshape intestazione \\
          riga & riga \\
          riga & riga \\
          riga & riga \\
          riga & riga \\
          \end{tabular}

          \end{document}`

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

            `\documentclass{article}
            \usepackage[table]{xcolor}

            \colorlet{testa}{gray!50}
            \colorlet{riga}{gray!20}

            \begin{document}

            \rowcolors{3}{riga}{}

            \begin{tabular}{cc}
            \rowcolor{testa}
            \itshape intestazione & \itshape intestazione \\
            riga & riga \\
            riga & riga \\
            riga & riga \\
            riga & riga \\
            \end{tabular}

            \end{document}`

            Veramente notevole… Ringrazio di cuore Emanuele per il codice ed Emiliano per la segnalazione!

            Ciao, L.

          • #9682
            Up
            0
            Down
            ::


            Ho scritto un articolo al riguardo (Le tabelle in LaTeX: pacchetti e metodi) che potrai trovare al prossimo meeting. Se ne hai bisogno, ti mando la bozza.

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

              Ho scritto un articolo al riguardo (Le tabelle in LaTeX: pacchetti e metodi) che potrai trovare al prossimo meeting. Se ne hai bisogno, ti mando la bozza.

              Ottima idea! Se vuoi inviarmi la bozza in pm, sarò lieto di leggerla!

              Ciao e grazie,
              L.

            • #9684
              Up
              0
              Down
              ::


              Approfitto di questo utilissimo post per porre all’attenzione un problema che mi è sorto utilizzando la bella soluzione proposta. Con il seguente codice

              `
              \begin{tabular}{m{5cm}>{$}c<{$}m{6cm}} \rowcolor{testa} \bfseries Relazione & \text{\bfseries Formula} & \bfseries Grandezza \\ Equazioni cardinali della statica & \begin{aligned}\vec{R}&=0\\ \vec{M_R}&=0 \end{aligned} & \begin{itemize} \item $R=$risultante del sistema di forze \item $M_R=$ risultante dei momenti del sistema di forze \end{itemize} \end{tabular} ` ottengo la linea di intestazione correttamente colorata in grigio scuro, ma la linea di tabella viene con la prima cella bianca. Qualcuno ha qualche idea (o magari c'è uno o più errori nel mio codice)? Ciao

            • #9685
              ev
              Partecipante
                Up
                0
                Down
                ::

                ottengo la linea di intestazione correttamente colorata in grigio scuro, ma la linea di tabella viene con la prima cella bianca.
                Qualcuno ha qualche idea (o magari c’è uno o più errori nel mio codice)?

                Il risultato sarebbe corretto se tutta la “prima” riga della tabella fosse bianca.

                Saltando a piè pari tutti i dettagli tecnici, che non mi sono chiarito nemmeno io, l’ambiente che usi, così come tanti altri ambienti matematici per l’allieamento di equazioni & Co., usa il meccanismo primitivo alla base anche della costruzione delle tabelle in LaTeX, quindi, in soldoni, nel tuo codice c’è una cosa simile ad una “tabella” dentro un’altra tabella e credo che questo, tanto per restare in tema con il titolo del thread :wink:, mandi il conteggio delle righe a farsi benedire, con effetti collaterali sulla colorazione delle righe, come hai potuto sperimentare di persona.

                Soluzioni? Non credo che ne esistano, ma se qualche TeX Wizard riesce ad elaborarne qualcuna (oppure se faccio indigestione di gelato e m’arriva la biblica illuminazione), stai pur certo che verrà riportata qui sul forum.

              • #9686
                Up
                0
                Down
                ::

                Approfitto di questo utilissimo post per porre all’attenzione un problema che mi è sorto utilizzando la bella soluzione proposta. Con il seguente codice

                `
                \begin{tabular}{m{5cm}>{$}c<{$}m{6cm}} \rowcolor{testa} \bfseries Relazione & \text{\bfseries Formula} & \bfseries Grandezza \\ Equazioni cardinali della statica & \begin{aligned}\vec{R}&=0\\ \vec{M_R}&=0 \end{aligned} & \begin{itemize} \item $R=$risultante del sistema di forze \item $M_R=$ risultante dei momenti del sistema di forze \end{itemize} \end{tabular} ` ottengo la linea di intestazione correttamente colorata in grigio scuro, ma la linea di tabella viene con la prima cella bianca. Qualcuno ha qualche idea (o magari c'è uno o più errori nel mio codice)?

                L’intervento di ev ha fatto scattare il grilletto; non che la soluzione sia bellissima, ma almeno funziona
                `\newsavebox{\entry}
                \sbox{\entry}{$\begin{aligned}\vec{R}&=0\\ \vec{M_R}&=0 \end{aligned}$}`
                Poi, nella tabella, al posto del codice con aligned scrivi \usebox{\entry}.

                In ogni caso, una tabella di quel tipo è bruttina, la lista nell’ultima colonna sbilancia tutto; probabilmente qui sarebbe più indicato un allineamento sulla riga superiore e non al centro.

                Ciao
                Enrico

              • #9687
                ev
                Partecipante
                  Up
                  0
                  Down
                  ::


                  Lo sapevo: ieri sera avrei dovuto strafogarmi di gelato più di quanto non abbia fatto :mrgreen: Vado a comperarmi una vaschetta da 2 kg e torno…

                • #9688
                  Up
                  0
                  Down
                  ::

                  Lo sapevo: ieri sera avrei dovuto strafogarmi di gelato più di quanto non abbia fatto :mrgreen: Vado a comperarmi una vaschetta da 2 kg e torno…

                  Il trucco è “nascondere” la tabella interna (aligned). Il problema, come hai capito, sta nell’interazione fra la scelta del colore e la costruzione delle tabelle; purtroppo (o per fortuna, chissà) TeX non ha nulla a che fare con i colori, che sono implementati tramite \special che sfruttano la struttura a gruppi di TeX; ma i problemi di quando un gruppo si apre o si chiude in presenza di tabelle sono veramente complicati, tanto più in LaTeX dove si usano spesso trucchi come
                  `{\ifnum0=`}\fi … \ifnum0=`{\fi}`
                  per aprire e chiudere graffe in modo “nascosto”. Se vuoi saperne di più, la faccenda sul master counter e sul balance counter è “spiegata” nell’appendice D (dove se no?) del TeXbook.

                  Ciao
                  Enrico

                • #9689
                  Up
                  0
                  Down
                  ::


                  Innanzitutto grazie per le risposte, ad una soluzione di questo tipo non ci sarei mai arrivato. Originariamente la tabella era “corredata” con le solite righe orizzontali e verticali, però ero troppo curioso di provare la soluzione con le righe colorate. Già che ci sono proverò con l’allineamento in alto suggeritomi.
                  Avrei un’altra domanda a riguardo ma ora non mi viene, sarà l’ora e il pranzo in transito…
                  buona giornata a tutti

                • #9690
                  gmc
                    Up
                    0
                    Down
                    ::


                    Ciao,

                    davvero interessante le colonne a doppio colore.

                    Nel mio piccolo per tabelle non troppo complicate utilizzo il pacchetto ctable[\] che permette di inserire linee di spessore diverso. Un esempio è il seguente (tesi di mio fratello…), provare per credere, a me sembra davvero carino:

                    \ctable
                    {ccccc}{}{\FL
                    \textbf{Gas} & \multicolumn{2}{c}{\textbf{Aria Atmosferica}} & \multicolumn{2}{c}{\textbf{Aria Alveolare}}\\
                    & \emph{P} $[mmHg]$ & \emph{C} $[\%]$ & \emph{P} $[mmHg]$ & \emph{C} $[\%]$ \ML
                    \emph{$N_{2}$} & 597.0 & 78.62 & 569.0 & 74.90 \\
                    \emph{$O_{2}$} & 159.0 & 20.84 & 104.0 & 13.60 \\
                    \emph{$CO_{2}$} & 0.3 & 0.04 & 40.0 & 5.30 \\
                    \emph{$H_{2}O$} & 3.7 & 0.50 & 47.0 & 6.20 \LL}

                    Fatemi sapere se vi piace…

                    Ciao
                    Peppe

                  • #9691
                    Up
                    0
                    Down
                    ::

                    Ciao,

                    davvero interessante le colonne a doppio colore.

                    Nel mio piccolo per tabelle non troppo complicate utilizzo il pacchetto ctable che permette di inserire linee di spessore diverso. Un esempio è il seguente (tesi di mio fratello…), provare per credere, a me sembra davvero carino:
                    […]
                    Fatemi sapere se vi piace…

                    No. 🙂

                    Ci sono parecchi errori; la didascalia non va in corsivo, se lo stile dell’editore lo richiede se lo fa lui. È sbagliato, secondo me, ciò che fa ctable, cioè adeguare la didascalia all’ampiezza della tabella. Molto meglio booktabs
                    `\begin{table}
                    \caption{Valori delle pressioni parziali e delle
                    concentrazioni percentuali dei gas respiratori
                    nell'atmosfera e negli alveoli}\label{tab:PresParz}
                    \begin{tabular}{ccccc}
                    \toprule
                    \textbf{Gas} & \multicolumn{2}{c}{\textbf{Aria Atmosferica}} &
                    \multicolumn{2}{c}{\textbf{Aria Alveolare}}\\
                    & \emph{P} [mm\,Hg] & \emph{C} [\%] & \emph{P} [mm\,Hg] & \emph{C} [\%] \\
                    \midrule
                    N$_{2}$ & 597.0 & 78.62 & 569.0 & 74.90 \\
                    O$_{2}$ & 159.0 & 20.84 & 104.0 & 13.60 \\
                    CO$_{2}$ & 0.3 & 0.04 & 40.0 & 5.30 \\
                    H$_{2}$O & 3.7 & 0.50 & 47.0 & 6.20\\
                    \bottomrule
                    \end{tabular}
                    \end{table}`
                    Se la classe non lascia lo spazio fra didascalia e tabella, aggiungi una riga vuota e un \medskip.

                    È sbagliata quasi tutta la scelta dei corsivi; i simboli chimici vanno sempre in carattere tondo e così anche le unità di misura. I millimetri di mercurio sono un’unità illegale, attento. 😀

                    Un altro punto a sfavore di ctabs: costringe a mettere tutta la tabella a argomento del comando, che può causare problemi in certi casi. Invece booktabs non fa nulla di tutto ciò e non usa a sproposito tabularx.

                    Ciao
                    Enrico

                  • #9692
                    Up
                    0
                    Down
                    ::


                    Bella la scala di grigio come sfondo!
                    A questo punto mi domando: e` forse possibile utilizzare la scala di grigio a mo di barra di un istogramma, pur potendoci scrivere sopra?
                    In altre parole, e` possibile dire per ogni riga fino a che colonna applicare lo sfondo?

                    Al momento sto usando quanto proposto da voi in maniera molto artigianale, nel senso che decido la lunghezza delle barre tramite gli &. Chiaramente non posso pero` non posso mettere del testo a destra della barra, e in futuro potrei doverlo fare…

                  • #9693
                    Up
                    0
                    Down
                    ::


                    E infatti.. il futuro di cui parlavo non s’è fatto attendere. avete idea su come si fa a impostare lo sfondo grigio in una singola cella?

                  • #9694
                    Up
                    0
                    Down
                    ::


                    E’ spiegato nel mio articolo sulle tabelle comparso sull’ultimo numero di Ars TeXnica che però adesso non ho sotto mano. Se ce l’hai guarda lì oppure aspetta che io lo recuperi.

                  • #9695
                    Up
                    0
                    Down
                    ::


                    Sbaglio o è riservato solo ai soci?

                    Purtroppo non ero membro dei GuIT… ma ho rimediato subito!
                    Iscritto e versato la quota. Speriamo che mi venga abilitato presto l’accesso! Alla fin fine lo dovevo, visto i molti preziosi consigli che mi sono stati dati in questi anni.

                  • #9696
                    Up
                    0
                    Down
                    ::


                    Se hai accesso all’articolo, tanto meglio. La questione delle celle colorate è trattata al paragrafo 4. Il tuo problema particolare al paragrafo 4.3. Nel frattempo ti preannuncio che devi usare il pacchetto colortbl e mettere il comando \cellcolor all’interno della cella che vuoi colorare.

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

                Go to top