Problema allineamento con \multicolumn

  • Creatore
    Topic
  • #70804
    Up
    0
    Down
    ::


    Salve a tutti,
    sto tentanto di impostare una tabella con un numero variabile di colonne (alcune righe hanno tre colonne ed altre due). Esempio:

    | Text A | Text B | Text C |
    | Text D | Text E |

    Ho provato con il seguente codice:

    \begin{tabular}{cccccc}
    \multicolumn{2}{c}{Text A} & \multicolumn{2}{c}{Text B} & \multicolumn{2}{c}{Text C}\\
    \multicolumn{3}{c}{Text D} & \multicolumn{3}{c}{Text E} \\
    \end{tabular}

    L’esempio compila, ma il risultato non è quello atteso, in quanto la cella “Text D” appare allineata a sinistra e non al centro.

    Qualche suggerimento?

    Grazie,

    f.

Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #70805
      Up
      0
      Down
      ::

      biancovic” post=70036Salve a tutti,
      sto tentanto di impostare una tabella con un numero variabile di colonne (alcune righe hanno tre colonne ed altre due). Esempio:

      | Text A | Text B | Text C |
      | Text D | Text E |

      Ho provato con il seguente codice:

      \begin{tabular}{cccccc}
      \multicolumn{2}{c}{Text A} & \multicolumn{2}{c}{Text B} & \multicolumn{2}{c}{Text C}\\
      \multicolumn{3}{c}{Text D} & \multicolumn{3}{c}{Text E} \\
      \end{tabular}

      L’esempio compila, ma il risultato non è quello atteso, in quanto la cella “Text D” appare allineata a sinistra e non al centro.

      Qualche suggerimento?

      Grazie,

      f.

      Benvenuto/a!

      Anche la prima multicolonna della seconda riga è centrata (sulle prime 3 colonne!). Ho messo i filetti verticali solo per mostrare l’allineamento:
      `\begin{tabular}{|c|c|c|c|c|c|}
      a&b&c&d&e&f\\
      \multicolumn{2}{c}{Text A} & \multicolumn{2}{c}{Text B} & \multicolumn{2}{c}{Text C}\\
      \multicolumn{3}{c}{Text D} & \multicolumn{3}{c}{Text E} \\
      \end{tabular}`
      Cosa centrare e dove dipende quindi da come vuoi costruire la tabella.

      Ho però il presentimento che non sia la strada giusta.
      Per capire se c’è una soluzione migliore dovresti darci un po’ più di informazioni
      sul contenuto della tabella.

      Ciao
      Ivan

    • #70806
      Up
      0
      Down
      ::


      Utilizzare n-volte il comando “c” sul ambiente tabular è scomodissimo.

      Prova a sostituire
      `\begin{tabular}{cccccc}`

      con
      `\begin{tabular}{*{N}{c}}`

      in cui “N” è il numero di colonne della tabella da costruire.

      Personalmente inserisci una riga di vuota composta da 6 spazi vuoti
      `&&&&&\\`
      all’interno della tabella. Se dovesse darti fastidio la riga in più che si è generata allora, PRIMA della tabella scrivi:
      `\vspace{-“valore”pt}`
      dove al posto di “valore” ci metti la grandezza del font scelto in documentclass

      Ciao, gmd86

    • #70807
      Up
      0
      Down
      ::


      Grazie mille per le indicazioni. Purtroppo continuo ad avere lo stesso problema. Invio in allegato esempio del risultato che vorrei ottenere.

      Ciao,

      f.

      [attachment=164]TAB.pdf[/attachment]

      Attachments:
      You must be logged in to view attached files.
    • #70808
      Antonio Ledda
      Partecipante
        Up
        0
        Down
        ::

        biancovic” post=70052Grazie mille per le indicazioni. Purtroppo continuo ad avere lo stesso problema. Invio in allegato esempio del risultato che vorrei ottenere.

        Ciao,

        f.

        Se non hai esigenze particolari:
        `\documentclass[a4paper]{book}

        \usepackage[T1]{fontenc}
        \usepackage[utf8]{inputenc}
        \usepackage[italian]{babel}

        \usepackage{booktabs,multicol}

        \begin{document}

        \begin{tabular}{cccccc}%%% Oppure \begin{tabular}{*6{c}}
        \toprule
        Testo A & & Testo B & & Testo C & \\
        \midrule
        & Testo D & & Testo E & & Testo F \\
        \midrule
        Testo A & & Testo B & & Testo C & \\
        \bottomrule
        \end{tabular}

        \end{document}`
        Nell’Arte di scrivere con LaTeX e nella Guida GuIT trovi diverse indicazioni per comporre una tabella.

        Ciao
        Antonio

        Aggiungo: dai anche un’occhiata alle colonne di tipo “p”, che potrebbero esserti utili se il testo da gestire per ogni colonna è più corposo rispetto all’esempio che hai mostrato.

      • #70809
        Up
        0
        Down
        ::


        Ciao Antonio,

        grazie per il suggerimento. In effetti questa è la prima soluzione che ho tentato, ma senza successo. Comunque nel mio caso – e forse è da lì che nasce il problema – è che in una riga debbo riempire 3 caselle, in quella successiva 2 facendo si che queste ultime siano centrate negli spazi delle 3 precedenti (come nell’immagine che allego).
        [attachment=165]TAB.jpg[/attachment]

        Per quanto riguarda le caselle di tipo p, ho tentato anche quest’approccio, fissando anche la larghezza delle colonne (avevo trovato delle indicazioni qui: http://texblog.org/2008/05/07/fwd-equal-cell-width-right-and-centre-aligned-content/). Anche in questo caso, però, l’allineamento che viene fuori è ‘bislacco’. e non riesco a riprodurre il risultato dell’immagine.

        Ciao
        francesco

        Attachments:
        You must be logged in to view attached files.
      • #70810
        Up
        0
        Down
        ::


        Qual è il tuo reale obiettivo? Probabilmente quello che ti serve è il pacchetto bytefield.

        Ciao,
        Antonio

      • #70811
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          A me questo codice
          `
          \begin{table}
          \newcommand\duecelle[1]{\multicolumn2{c|}{#1}}
          \let\DC\duecelle
          \centering
          \begin{tabular}{|*6{c|}}
          \toprule
          \DC{TEXT}&\DC{TEXT}&\DC{TEXT}\\
          \midrule
          \hspace*{1em} &\DC{TEXT}&\DC{TEXT}&\mbox{} \\
          \bottomrule
          \end{tabular}
          \end{table}
          `
          con una aggiustatina allo spazio oggetto del comando [tt]\hspace*[/tt], aggiustatina che a me risulta di 1em ma che con altri contenuti potrebbe essere diversa,
          Mo da il risultato che vuoi tu; nota anche ho messo i filetti verticali per controllare meglio la divisione delle colonne, ma la tabela finale NON deve contenere filetti verticali.

          È ovvio che il risultato è aggiustato al valore dei testi TEXT usati. Usando le colonne p (o m del pacchetto array) si potrebbe specificare la larghezza per tutti i 6 campi, per cui non dovrebbe esserci nessun bisogno di usare [tt]\hspace[/tt]; ma tutto dipende da cosa vuoi scriverci dentro.
          `
          \newdimen\colonna
          \begin{table}
          \colonna=\dimexpr\textwidth/6\relax
          \newcommand\duecelle[1]{\multicolumn2{>{\centering}p{2\dimexpr\colonna+\tabcolsep\relax}|}{#1}}
          \let\DC\duecelle
          \centering
          \begin{tabular}{|*6{>{\centering}p{\colonna}|}}
          \toprule
          \DC{TEXT}&\DC{TEXT}&\DC{TEXT}\\
          \midrule
          &\DC{TEXT}&\DC{TEXT}& \tabularnewline
          \bottomrule
          \end{tabular}
          \end{table}
          `

        • #70812
          Up
          0
          Down
          ::


          Grazie a tutti per le indicazioni. Non mi aspettavo così tante risposte in poco tempo!

          Bytefield è davvero carino, non lo conoscevo. Comunque alla fine ho risolto (sembra) con il seguente codice:

          `
          \newcolumntype{x}[1]{%
          >{\centering\arraybackslash}p{#1}}%

          \begin{tabular}{x{1.0cm}x{1.0cm}x{1.0cm}x{1.0cm}x{1.0cm}x{1.0cm}}
          \multicolumn{2}{x{2.0cm}}{Text A} & \multicolumn{2}{x{2.0cm}}{Text B} & \multicolumn{2}{x{2.0cm}}{Text C}\\
          & \multicolumn{2}{x{2.0cm}}{Text D} & \multicolumn{2}{x{2.0cm}}{Text E} & \\
          \end{tabular}`

          Probabilmente è un po’ macchinoso, però funziona.

          Grazie ancora,
          f.

        • #70813
          Antonio Ledda
          Partecipante
            Up
            0
            Down
            ::


            Francesco,
            prova le soluzioni di Antonio e di Claudio. Senza un esempio concreto, si tira un po’ a indovinare. Un consiglio: una volta lette le guide, quando hai problemi a ottenere un certo risultato con LaTeX, e chiedi aiuto sul forum, è sempre una buona idea mostrare un esempio minimo compilabile del codice che usi: classe, pacchetti essenziali e un esempio reale di testo (TEXT, in questo caso, cosa rappresenta? Una parola, una frase, … ?). Sembra una cosa banale, ma per chi prova ad aiutarti non lo è affatto. 😉

            Buon lavoro!

            Ciao
            Antonio

            EDIT: mi hai anticipato mentre scrivevo la risposta. 🙂

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

        Go to top