Tabella & enumerate

  • Questo topic ha 4 risposte, 4 partecipanti ed è stato aggiornato l'ultima volta 19 anni, 1 mese fa da DMW.
  • Creatore
    Topic
  • #16445
    Up
    0
    Down
    ::


    Gentili utenti di questo forum, ciao!
    Ho un nuovo problema da sottoporre alla vostra attenta e sempre disponibile attenzione. Di questo vi posso già dire grazie.
    Sono alle prese con una tabella, piuttosto grande (larga come la pagina), anche se non molto complicata. In suddetta tabella, si fa praticamente il confronto tra 2 modelli (messi nelle colonne) su alcune loro proprietà (messe nelle righe). La tabella da cui prendo spunto, per mettere in evidenza le differenze usa un elenco numerato.. mi spiego meglio
    `
    ______________________________________________________________________
    Aspetto Modello 1 Modello 2
    ______________________________________________________________________
    Aspetto 1 1. AspettoModello1 1. AspettoModello2
    2. AspettoModello1 2. Aspetto Modello2

    Aspetto 2 1. Aspetto2 Modello1

    ________________________________________________________
    `

    Spero si capisca!
    Comunque la questione è questa: mettere un elenco numerato all’interno di una cella di una tabella, in modo da poter anche andare a caporiga a piacimento. Ho provato e si può. solo che ad esempio mi lascia uno spazio bianco prima di mettere il primo punto e anche lascia altro spazio, a sx, prima di comiciare la numerazione. Più o meno si piò correggere con \vspace ma non è un granchè.. Anche perchè il contenuto delle celle è abbastanza lungo, insomma, mi piacerebbe riuscire a fare una cosa fatta bene, impostando anche la larghezza delle colonne in modo che le ultime 2, che contengono la maggior parte del testo siamo larghe 3/4 della larghezza totale della tabella ed evitando di appensantire la tabella usando molte righe orizzontali (quelle verticali sono escluse a priori :)) Boh, spero di essermi spiegato. Sennò si potrebbe anche accantonare l’idea della tabella e fare in altro modo. Voi che dite? 🙄
    Grazie mille

    PS: ho visto lo stile booktab.. è bellissimo e molto elegante.. mi piacerebbe usare quello…
    🙂

Visualizzazione 3 filoni di risposte
  • Autore
    Risposte
    • #16446
      Up
      0
      Down
      ::


      Ciao, senza pretesa di risolvere completamente il problema ho trovato un modo (che mi sembra molto malato) per riproporre la tua tabella e in qualche modo impostare la larghezza delle colonne:
      `
      \documentclass[a4paper,10pt]{article}
      \usepackage{vmargin}
      \setmarginsrb{10mm}{10mm}{10mm}{10mm}%
      {0mm}{10mm}{0}{10mm}

      \begin{document}
      \begin{center}
      \begin{tabular}[htb!]{lcc}
      \hline
      Aspetto & Modello 1 & Modello 2 \\
      \hline
      Aspetto 1 &
      \begin{minipage}{8cm}
      \vspace{3mm}
      \begin{enumerate}
      \item Aspetto1 modello1
      \item Aspetto1 modello1
      \end{enumerate}
      \vspace{3mm}
      \end{minipage}
      &
      \begin{minipage}{8cm}
      \vspace{3mm}
      \begin{enumerate}
      \item Aspetto1 modello2
      \item Aspetto1 modello2
      \end{enumerate}
      \vspace{3mm}
      \end{minipage}
      \\
      \hline
      Aspetto 2 &
      \begin{minipage}{8cm}
      \vspace{3mm}
      \begin{enumerate}
      \item Aspetto2 Modello1
      \item Aspetto2 Modello1
      \end{enumerate}
      \vspace{3mm}
      \end{minipage}
      &
      \begin{minipage}{8cm}
      \vspace{3mm}
      \begin{enumerate}
      \item Aspetto2 Modello2
      \item Aspetto2 Modello2
      \end{enumerate}
      \vspace{3mm}
      \end{minipage}
      \\
      \hline
      \end{tabular}
      \end{center}

      \end{document}
      `
      Il codice consente di fare una tabella in cui la prima colonna è grande quanto la parola mentre il resto puoi impostarlo con un certo grado di libertà per farlo più grande.

      C’è un piccolo/grande problema che le mie conoscenze non mi portano a risolvere:
      l’elenco numerato non riesco ad allinearlo rispetto alla prima riga.

      Chiedo scusa per il codice malato ed eventualmente se non sono riuscito a risolvere il problema.

      Ciao Alberto

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


        Purtroppo non sono molto abile nella composizione di tabelle. Il meglio che sono risucito a fare è:
        `\documentclass{article}
        \usepackage{lipsum,enumitem}
        \usepackage{booktabs}
        \usepackage{tabularx}

        \newenvironment{elenco}{%
        \begin{enumerate}[leftmargin=*,noitemsep,topsep=0pt,partopsep=0pt,parsep=0pt]}%
        {\end{enumerate}}

        \begin{document}
        \lipsum[1]
        \bigskip

        \begin{table}[!h]
        \centering
        \begin{tabularx}{\textwidth}{m{0.25\textwidth}XX}
        \toprule
        Aspetto & Modello 1 & Modello 2 \\
        \midrule
        Aspetto 1 &
        \begin{elenco}
        \item Aspetto modello 1
        \item Aspetto modello 1
        \end{elenco}
        &
        \begin{elenco}
        \item Aspetto modello 2
        \item Aspetto modello 2
        \end{elenco} \\
        Aspetto 2 &
        \begin{elenco}
        \item Aspetto modello 2
        \end{elenco} &
        \begin{elenco}
        \item Aspetto modello 2
        \end{elenco}
        \\
        \bottomrule
        \end{tabularx}
        \end{table}

        \bigskip
        \lipsum[2]

        \end{document}
        `
        Il codice usa booktabs. Inoltre, grazie al pacchetto tabularx, ho impostato la larghezza della prima colonna ad un quarto della larghezza totale della tabella: le altre due colonne occupano i restanti tre quarti e sono larghe uguali, che se ho capito bene era quanto volevi.

        Con il pacchetto enumitem ho eliminato la spaziatura prima del numero delle voci dell’elenco e la spaziatura tra le voci dell’elenco.

        Purtroppo non sono risucito a “curare” in modo accettabile la spaziatura tra l’elenco stesso ed il resto. Si potrebbe ovviare con qualcosa come
        `\newenvironment{elenco}{%
        \vspace{-2ex}%
        \begin{enumerate}[leftmargin=*,noitemsep,topsep=0pt,partopsep=0pt,parsep=0pt]}%
        {\end{enumerate}}`
        ma è un codice “sporco”: non usarlo.

        Aspettiamo gli esperti!

        Ciao,
        L.

      • #16448
        Up
        0
        Down
        ::


        WOW! grazie mille a entrambi per l’aiuto, davvero.
        Ho provato a smanettare un po’ pure io. Ho dato giustamente un occhiata alla documentazione di Enumitem (non supponevo esistessa, anche se l’idea di agire sulle proprietà del’ambiente enumerize mi era venuta.. ma tra il dire e il fare..), e ci sono delle cose davvero carine.. si suppongo che come suggerisci tu, Lorenzo, la proprietà topsep serva per gestire lo spazio prima degli elementi dell’elenco.. il punto è che non la prende, anche mettendo un valore negativo, niente.. Boh! 😕
        Vai a capire perchè… (sono sicuro che qualche guru lo sa 😉 )
        E allora ho fatto un misto delle due soluzioni, modificando appena la soluzione di Lorenzo con quella suggerita del gentile Neptune ed ecco qua:
        `\newenvironment{elenco}{%
        \begin{minipage}{5.6cm}
        \begin{enumerate}[leftmargin=*,noitemsep,topsep=0pt,partopsep=0pt,parsep=0pt]}%
        {\end{enumerate}
        \end{minipage}}
        `
        Ho aggiustato la dimensione della minipage a occhio, in modo che sia larga come la cella e per il resto funziona, l’elenco lo mette bene.
        Al limite aggiusto la distanza tra le righe con le proprietà di booktab, ora non mi viene.. quella per separare le righe.. boh, guarderò.
        Questo è quanto, se qualcuno ha qualche altre idea, + che ben accetta.. 🙂
        grazie di nuovo a tutti! 8)

      • #16449
        DMW
          Up
          0
          Down
          ::

          WOW! grazie mille a entrambi per l’aiuto, davvero.
          Ho provato a smanettare un po’ pure io. Ho dato giustamente un occhiata alla documentazione di Enumitem (non supponevo esistessa, anche se l’idea di agire sulle proprietà del’ambiente enumerize mi era venuta.. ma tra il dire e il fare..), e ci sono delle cose davvero carine.. si suppongo che come suggerisci tu, Lorenzo, la proprietà topsep serva per gestire lo spazio prima degli elementi dell’elenco.. il punto è che non la prende, anche mettendo un valore negativo, niente.. Boh! 😕
          Vai a capire perchè… (sono sicuro che qualche guru lo sa 😉 )
          E allora ho fatto un misto delle due soluzioni, modificando appena la soluzione di Lorenzo con quella suggerita del gentile Neptune ed ecco qua:
          `\newenvironment{elenco}{%
          \begin{minipage}{5.6cm}
          \begin{enumerate}[leftmargin=*,noitemsep,topsep=0pt,partopsep=0pt,parsep=0pt]}%
          {\end{enumerate}
          \end{minipage}}
          `
          Ho aggiustato la dimensione della minipage a occhio, in modo che sia larga come la cella e per il resto funziona, l’elenco lo mette bene.
          Al limite aggiusto la distanza tra le righe con le proprietà di booktab, ora non mi viene.. quella per separare le righe.. boh, guarderò.
          Questo è quanto, se qualcuno ha qualche altre idea, + che ben accetta.. 🙂
          grazie di nuovo a tutti! 8)

          C’è un modo migliore.

          Ti riporto direttamente l’esempio.
          `
          \documentclass[a4paper,12pt]{article}
          \usepackage{array}
          \usepackage{lipsum,enumitem}
          \usepackage{booktabs}
          \usepackage{tabularx}
          \makeatletter
          \def\noVSpace{\@minipagetrue}
          \newenvironment{tabenum}{%
          \@minipagetrue%
          \begin{enumerate}[leftmargin=*,noitemsep,partopsep=0pt,parsep=0pt]
          }{\vspace{-\normalbaselineskip}%
          \end{enumerate}}
          \makeatother

          \begin{document}

          \begin{table}[!h]
          \centering
          \begin{tabularx}{\textwidth}{m{0.25\textwidth}XX} \toprule
          Aspetto & Modello 1 & Modello 2 \\
          \midrule
          Aspetto 1 &
          \begin{tabenum}
          \item Aspetto modello 1
          \item Aspetto modello 1
          \end{tabenum}
          &
          \begin{tabenum}
          \item Aspetto modello 2
          \item Aspetto modello 2
          \end{tabenum}\\[\medskipamount]
          Aspetto 1 &
          \begin{tabenum}
          \item Aspetto modello 1
          \item Aspetto modello 1
          \end{tabenum}
          &
          \begin{tabenum}
          \item Aspetto modello 2
          \item Aspetto modello 2
          \end{tabenum}\\
          \bottomrule
          \end{tabularx}
          \end{table}
          \end{document}
          `

          Ho aggiunto un po’ di spazio con \\[\medskipamount], per distanziare un po’ le liste messe l’una sull’altra, che sembrano troppo attaccate.

          Un altro metodo è quello di usare il pacchetto listliketab, che però a me non piace molto.

          Ciao

          Andrea

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

      Go to top