Larghezza celle e multicolumn

  • Creatore
    Topic
  • #38818
    Up
    0
    Down
    ::


    Oggi mi sono imbattuto in un comportamento di LaTeX che non conoscevo.
    Considerate la seguente tabella:
    `\documentclass[a4paper]{article}
    \begin{document}
    \begin{tabular}{|c|c|c|}
    \multicolumn{3}{c}{testo molto lungo}\\
    1 & 2 & 3
    \end{tabular}
    \end{document}`
    Se la larghezza della cella “multipla” è maggiore della larghezza complessiva delle celle sottostanti LaTeX, per bilanciare le due righe, interviene in modo non omogeneo.
    Si può notare, infatti, (ho messo le righe verticali solo per quello 🙂 ) che viene aumentata la larghezza della sola ultima cella, quella che contiene “3” nel mio esempio.

    A mio modo di vedere questo risultato non è molto attraente…
    Sapete come è possibile modificare questo comportamento?

    🙂
    LuCa

Visualizzazione 2 filoni di risposte
  • Autore
    Risposte
    • #38819
      Up
      0
      Down
      ::

      Oggi mi sono imbattuto in un comportamento di LaTeX che non conoscevo.
      Considerate la seguente tabella:
      `\documentclass[a4paper]{article}
      \begin{document}
      \begin{tabular}{|c|c|c|}
      \multicolumn{3}{c}{testo molto lungo}\\
      1 & 2 & 3
      \end{tabular}
      \end{document}`
      Se la larghezza della cella “multipla” è maggiore della larghezza complessiva delle celle sottostanti LaTeX, per bilanciare le due righe, interviene in modo non omogeneo.
      Si può notare, infatti, (ho messo le righe verticali solo per quello 🙂 ) che viene aumentata la larghezza della sola ultima cella, quella che contiene “3” nel mio esempio.

      A mio modo di vedere questo risultato non è molto attraente…
      Sapete come è possibile modificare questo comportamento?

      Non in modo automatico:
      `\documentclass[a4paper]{article}
      \newlength{\adjust}

      \begin{document}

      \begingroup
      \settowidth{\adjust}{testo molto lungo}%
      \addtolength{\adjust}{-4\tabcolsep}%
      \setlength{\adjust}{.33333\adjust}%
      \begin{tabular}{|c|c|c|}
      \multicolumn{3}{c}{testo molto lungo}\\
      \makebox[\adjust][c]{1} &
      \makebox[\adjust][c]{2} &
      \makebox[\adjust][c]{3} \\
      4 & 5 & 6
      \end{tabular}\endgroup
      \end{document}`
      Misuro il testo troppo lungo; a questa lunghezza devo togliere gli spazi tra le colonne che, in questo caso sono quattro: LaTeX inserisce uno spazio \tabcolsep all’inizio e alla fine di ogni colonna. Divido la misura per il numero di colonne. In una delle righe inserisco box dell’ampiezza desiderata, basta farlo una volta.

      Spesso però il problema si risolve dividendo il “testo molto lungo” in due righe.

      Ciao
      Enrico

    • #38820
      Up
      0
      Down
      ::


      Grazie mille.
      In questo caso, mi sembra di capire, che il comando \makebox non introduca ulteriori spaziature rispetto a quanto contiene. Confermi?

      [OT]
      Credo che una bella descrizione dei vari \mbox, \fbox, \makebox, \framebox, \parbox, \minipage e compagnia bella potrebbe essere argomento di un artiolo per ArsTeXnica…
      [/OT]

      🙂
      LuCa

    • #38821
      Up
      0
      Down
      ::

      Grazie mille.
      In questo caso, mi sembra di capire, che il comando \makebox non introduca ulteriori spaziature rispetto a quanto contiene. Confermi?

      \makebox[]{…} produce una box larga esattamente ; è \framebox, con la variante semplice \fbox che aggiunge un piccolo spazio per la cornice.

      Ciao
      Enrico

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

Go to top