Array, dimensioni tabelle

  • Questo topic ha 5 risposte, 3 partecipanti ed è stato aggiornato l'ultima volta 20 anni, 10 mesi fa da ev.
  • Creatore
    Topic
  • #6932
    cpl
      Up
      0
      Down
      ::


      Ciao a tutti. ho alcuni problemi con il dimensionamento di tabelle con il
      package array. Ecco un sorgente di esempio:

      `\documentclass[a4paper,12pt]{book}
      \usepackage[ansinew]{inputenc}
      \usepackage[italian]{babel}
      \usepackage{array}
      \begin{document}
      \noindent \framebox[\textwidth]{questa è la larghezza del testo}
      %%Prima tabella
      \setlength{\extrarowheight}{0.5ex}%
      \begin{tabular}{|>{\flushleft}m{0.7\textwidth}|>{\centering}m{0.3\textwidth}|}
      \hline
      Descrizione & B
      \tabularnewline
      \hline
      \end{tabular}
      %%
      %%seconda tabella
      \begin{tabular}{|>{\flushleft}m{0.4\textwidth}|%
      >{\centering}m{0.2\textwidth}|%
      >{\centering}m{0.2\textwidth}|%
      >{\centering}m{0.2\textwidth}|}%
      \hline%
      Descrizione & A & B & C \tabularnewline%
      \hline%
      \end{tabular}
      %%
      \end{document}`

      Le due tabelle dovrebbero avere la stessa larghezza (0.6+0.4=1 e
      0.4+0.2+0.2+0.2=1) ma non è così. Che cosa sbaglio ?
      Ho letto sul manuale di array che

      m{width}…Every entry will be centered in proportion to the rest of the line…

      ma cosa vuol dire esattamente ?
      Il comando \setlength{\extrarowheight}{0.5ex} pare agisca solo per
      incrementare l’altezza delle righe… ma come posso fare a ridurla ?

      Grazie per l’attenzione e a quanti vorranno rispondermi.

    Visualizzazione 4 filoni di risposte
    • Autore
      Risposte
      • #6933
        Up
        0
        Down
        ::

        Ciao a tutti. ho alcuni problemi con il dimensionamento di tabelle con il
        package array. Ecco un sorgente di esempio:`\documentclass[a4paper,12pt]{book}
        \usepackage[ansinew]{inputenc}
        \usepackage[italian]{babel}
        \usepackage{array}
        \begin{document}
        \noindent \framebox[\textwidth]{questa è la larghezza del testo}
        %%Prima tabella
        \setlength{\extrarowheight}{0.5ex}%
        \begin{tabular}{|>{\flushleft}m{0.7\textwidth}|>{\centering}m{0.3\textwidth}|}
        \hline
        Descrizione & B
        \tabularnewline
        \hline
        \end{tabular}
        %%
        %%seconda tabella
        \begin{tabular}{|>{\flushleft}m{0.4\textwidth}|%
        >{\centering}m{0.2\textwidth}|%
        >{\centering}m{0.2\textwidth}|%
        >{\centering}m{0.2\textwidth}|}%
        \hline%
        Descrizione & A & B & C \tabularnewline%
        \hline%
        \end{tabular}
        %%
        \end{document}`Le due tabelle dovrebbero avere la stessa larghezza (0.6+0.4=1 e 0.4+0.2+0.2+0.2=1) ma non è così. Che cosa sbaglio?
        Ho letto sul manuale di array che

        m{width}…Every entry will be centered in proportion to the rest of the line…

        ma cosa vuol dire esattamente ?
        Il comando \setlength{\extrarowheight}{0.5ex} pare agisca solo per
        incrementare l’altezza delle righe… ma come posso fare a ridurla ?

        Sbagli in vari punti.
        (1) Non tieni conto dello spazio tra colonne che viene imposto automaticamente e infatti la seconda tabella supera la prima esattamente di quanto la prima supera la grandezza del testo. In generale non è bene scrivere tabelle che occupino l’intera colonna a meno di non scrivere con colonne strette. Esiste il pacchetto tabularx per la cosa che desideri.
        (2) Lo specificatore m{} è per centrare verticalmente il contenuto della cella rispetto alla riga.
        (3) Usi \flushleft invece di \raggedright; è un errore abbastanza comune confondere i due; ma flushleft è un ambiente, mentre \raggedright è una dichiarazione. Stanno fra loro come center e \centering. È per questo che la prima cella non appare centrata verticalmente; in realtà lo è, perché flushleft comincia imponendo una spaziatura verticale, e \flushleft è equivalente a \begin{flushleft}. Siccome ti manca \end{flushleft} non hai la spaziatura sottostante che riequilibra.
        (4) Invece di \extrarowheight potresti provare a modificare il valore di \arraystretch:`\renewcommand{\arraystretch}{1.2}`aumenta del 20% la distanza fra una riga e l’altra.
        (5) Usi linee verticali e orizzontali quando forse non è necessario; mai mettere una riga in testa e in coda, a sinistra e a destra.
        Ciao
        Enrico

      • #6934
        cpl
          Up
          0
          Down
          ::


          Grazie per le utili indicazioni. Non conoscevo ancora tabularx e, in effetti,
          è quello di cui avevo bisogno; le colonne X risultano particolarmente utili
          e di impiego flessibile.

          Giusta anche l’osservazione su
          \flushleft: sostituendolo con \raggedright l’allineamento è andato a posto.

          Quello che però non capisco è l’uso di linee verticali e orizzontali quando
          forse non è necessario e perchè non bisogna mai mettere una riga in testa e
          in coda, a sinistra e a destra.

          nel sorgente:
          `
          \documentclass[a4paper,12pt]{book}
          \usepackage[ansinew]{inputenc}
          \usepackage[italian]{babel}
          \usepackage{array}
          \usepackage{tabularx}
          \begin{document}
          \noindent \framebox[\textwidth]{questa è la larghezza del testo}
          %%Prima tabella
          \renewcommand{\arraystretch}{1}%
          \begin{tabularx}{\textwidth}{|>{\raggedright}m{0.7\textwidth}|>{\centering}X|}
          \hline
          Descrizione & B
          \tabularnewline
          \hline
          \end{tabularx}
          %%
          \bigskip
          %%seconda tabella
          \begin{tabularx}{\textwidth}{|>{\raggedright}m{0.4\textwidth}|%
          >{\centering}X|%
          >{\centering}X|%
          >{\centering}X|}%
          \hline%
          Descrizione & A & B & C \tabularnewline%
          \hline%
          \end{tabularx}
          %%
          \end{document}
          `

          ci sono linee (verticali e/o orizzontali) non utili ? ciao.

        • #6935
          Up
          0
          Down
          ::

          Quello che però non capisco è l’uso di linee verticali e orizzontali quando forse non è necessario e perchè non bisogna mai mettere una riga in testa e in coda, a sinistra e a destra.
          Nel sorgente:`\documentclass[a4paper,12pt]{book}
          …`ci sono linee (verticali e/o orizzontali) non utili ? ciao.

          Difficile dare una risposta senza vedere la tabella vera. Ma, in generale, le linee iniziali e finali sono una bruttura da evitare. Anche quelle nel corpo della tabella vanno usate con molta cautela. Siamo purtroppo abituati da anni di tabelle viste su fogli di lavoro (spreadsheet, per intenderci), dove le linee si vedono e hanno la loro utilità; ma nella resa tipografica molto spesso non sono necessarie. Molto meglio, per esempio, alternare sfondo bianco e grigio (pacchetto colortbl).

          Ciao
          Enrico

        • #6936
          cpl
            Up
            0
            Down
            ::


            Credo che la tabella, qualunque essa sia, debba essere facilemnte leggibile (filosofia latex!). Ora, ho fatto alcune prove, formattando diverse tabelle (di contenuto diverso, più o meno lungo e largo) con e senza linee, separatori, ecc. ma non riesco a dare giudizi oggettivi univoci. La tabella può risultare esteticamente bella, ma non è detto che sia più facilmente leggibile. Esistono regole tipografiche per questo ? Voglio dire: esistono studi che dicono che una tabella contenente solo numeri deve esere formattata in un certo modo mentre una tabella contenente molto testo deve essere formattata in un altro modo ecc. ecc. ?

          • #6937
            ev
            Partecipante
              Up
              0
              Down
              ::

              Credo che la tabella, qualunque essa sia, debba essere facilemnte leggibile (filosofia latex!).

              Forse si tratta solo di buon senso 🙂

              Esistono regole tipografiche per questo ? Voglio dire: esistono studi che dicono che una tabella contenente solo numeri deve esere formattata in un certo modo mentre una tabella contenente molto testo deve essere formattata in un altro modo ecc. ecc. ?

              Riguardo studi specifici, non so che cosa dirti, però potresti leggere la parte introduttiva della documentazione di booktabs (le prime 3-4 pagine) per farti un’idea dei motivi per i quali Enrico sconsigliava l’uso di linee verticali e parsimonia per quelle orizzontali.

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

          Go to top