Problema con ambiente enumerate all’interno di una tabella

  • Creatore
    Topic
  • #115927
    Up
    0
    Down
    ::


    Buongiorno,
    come da titolo sto cercando di inserire correttamente l’ambiente enumerate all’interno di una tabella.
    `
    \documentclass[a4paper,12pt]{article}
    \usepackage[T1]{fontenc}
    \usepackage[utf8]{inputenc}
    \usepackage[italian]{babel}
    \usepackage{graphics}
    \usepackage{pdfpages}
    \usepackage{float}
    \restylefloat{table}
    \usepackage{booktabs}
    \usepackage{multirow}

    \usepackage{tabularx}

    \begin{document}
    \begin{table}[H]
    \centering
    \begin{tabularx}{\textwidth}{lX}
    \toprule
    \textbf{Materie} & \textbf{Nodi concettuali} \\ \midrule
    Tutte & \begin{enumerate}
    \item titolo 1
    \item titolo 2
    \item titolo 3

    \end{enumerate} \\ \bottomrule
    \end{tabularx}
    \end{table}
    \end{document}
    `
    Tuttavia nel risultato l’ambiente enumerate non è allineato con “Tutte” ma è più in basso. Come posso risolvere?

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #115928
      robitex
      Amministratore del forum
        Up
        0
        Down
        ::

        desk7″ post=116338Buongiorno,
        come da titolo sto cercando di inserire correttamente l’ambiente enumerate all’interno di una tabella.
        `
        \documentclass[a4paper,12pt]{article}
        \usepackage[T1]{fontenc}
        \usepackage[utf8]{inputenc}
        \usepackage[italian]{babel}
        \usepackage{graphics}
        \usepackage{pdfpages}
        \usepackage{float}
        \restylefloat{table}
        \usepackage{booktabs}
        \usepackage{multirow}

        \usepackage{tabularx}

        \begin{document}
        \begin{table}[H]
        \centering
        \begin{tabularx}{\textwidth}{lX}
        \toprule
        \textbf{Materie} & \textbf{Nodi concettuali} \\ \midrule
        Tutte & \begin{enumerate}
        \item titolo 1
        \item titolo 2
        \item titolo 3

        \end{enumerate} \\ \bottomrule
        \end{tabularx}
        \end{table}
        \end{document}
        `
        Tuttavia nel risultato l’ambiente enumerate non è allineato con “Tutte” ma è più in basso. Come posso risolvere?

        Ciao.
        Se sei in una tabella, sei in una tabella 🙂
        In altri termini, devi prima chiarire la natura dell’oggetto che rendi con un’enumerazione.
        `\documentclass[a4paper,12pt]{article}
        \usepackage[T1]{fontenc}
        \usepackage[utf8]{inputenc}
        \usepackage[italian]{babel}
        \usepackage{graphics}

        \usepackage{float}
        \restylefloat{table}
        \usepackage{booktabs}
        \usepackage{multirow}

        \usepackage{tabularx}

        \begin{document}
        \begin{table}
        \centering
        \begin{tabularx}{\textwidth}{lX}
        \toprule
        \textbf{Materie} & \textbf{Nodi concettuali}\\
        \midrule
        Tutte & titolo 1\\
        & titolo 2\\
        & titolo 3\\
        \bottomrule
        \end{tabularx}
        \end{table}
        \end{document}`
        Ciao.
        Ps. al posto di graphics usa graphicx

      • #115929
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::

          desk7″ post=116338Buongiorno,
          come da titolo sto cercando di inserire correttamente l’ambiente enumerate all’interno di una tabella.
          `
          \documentclass[a4paper,12pt]{article}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[italian]{babel}
          \usepackage{graphics}
          \usepackage{pdfpages}
          \usepackage{float}
          \restylefloat{table}
          \usepackage{booktabs}
          \usepackage{multirow}

          \usepackage{tabularx}

          \begin{document}
          \begin{table}[H]
          \centering
          \begin{tabularx}{\textwidth}{lX}
          \toprule
          \textbf{Materie} & \textbf{Nodi concettuali} \\ \midrule
          Tutte & \begin{enumerate}
          \item titolo 1
          \item titolo 2
          \item titolo 3

          \end{enumerate} \\ \bottomrule
          \end{tabularx}
          \end{table}
          \end{document}
          `
          Tuttavia nel risultato l’ambiente enumerate non è allineato con “Tutte” ma è più in basso. Come posso risolvere?

          Tutti gli ambienti di tipo “elenco” hanno uno spazio sopra e no sotto, iltre agli spazi fra un elemento elencato e l’altro; Puoi eliminarli se usi il pacchetto enumitem e mediante le sue funzionalità definisci un altro ambiente basato su enumerate, che non abbia gli spazi che ti danno fastidio. Il pacchetto enumitem fornisce talmente tante funzionalità che devi leggertene la documentazione (comando texdoc enuitem da terminale) per usare quelle che ti servono davvero.
          LA soluzione che ti ha dato @robitex va benissimo, ma spariscono le funzionalità degli elenchi. Viene fuori un’altra cosa; sie ti vada bene o no, dipende da quello che vuoi fare davvero, non quello che mostri in un esempio minimo compilabile.

        • #115930
          Up
          0
          Down
          ::


          Grazie per le risposte!
          La soluzione proposta da robitex ha il vantaggio di essere molto semplice ma lo svantaggio di perdere le funzionalità degli elenchi (numerazione automatica etc.)
          Ho letto la documentazione del pacchetto enuitem e, in accordo anche con quanto scritto qui, sono riuscito a ridurre lo spazio verticale, ma non ad eliminarlo.
          `\documentclass[a4paper,12pt]{article}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[italian]{babel}
          \usepackage{graphics}
          \usepackage{pdfpages}
          \usepackage{float}
          \restylefloat{table}
          \usepackage{booktabs}
          \usepackage{multirow}

          \usepackage{tabularx, enumitem}

          \begin{document}

          \begin{table}[H]
          \centering
          \begin{tabularx}{\textwidth}{lX}
          \toprule
          \textbf{Materie} & \textbf{Nodi concettuali} \\ \midrule
          Tutte & \begin{enumerate}[topsep=0pt]
          \item titolo 1
          \item titolo 2
          \item titolo 3

          \end{enumerate} \\ \bottomrule
          \end{tabularx}
          \end{table}

          \end{document}`
          Al di là poi del problema tecnico, poi, mi chiedevo se è tipograficamente corretto l’uso di elenchi all’interno di tabelle, tabelle nidificate etc.

          —————
          Una soluzione funzionante, ma non so quanto elegante, è la seguente
          `\documentclass[a4paper,12pt]{article}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[italian]{babel}
          \usepackage{graphics}
          \usepackage{pdfpages}
          \usepackage{float}
          \restylefloat{table}
          \usepackage{booktabs}
          \usepackage{multirow}

          \usepackage{tabularx, enumitem}

          \begin{document}

          \begin{table}[H]
          \centering
          \begin{tabularx}{\textwidth}{lX}
          \toprule
          \textbf{Materie} & \textbf{Nodi concettuali} \\ \midrule
          Tutte & \vspace{-\topsep} \begin{enumerate}[topsep=0pt]
          \item titolo 1
          \item titolo 2
          \item titolo 3

          \end{enumerate} \\ \bottomrule
          \end{tabularx}
          \end{table}

          \end{document}
          `

        • #115931
          Up
          0
          Down
          ::

          desk7″ post=116341[…]

          Una soluzione funzionante, ma non so quanto elegante, è la seguente
          `\documentclass[a4paper,12pt]{article}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[italian]{babel}
          \usepackage{graphics}
          \usepackage{pdfpages}
          \usepackage{float}
          \restylefloat{table}
          \usepackage{booktabs}
          \usepackage{multirow}

          \usepackage{tabularx, enumitem}

          \begin{document}

          \begin{table}[H]
          \centering
          \begin{tabularx}{\textwidth}{lX}
          \toprule
          \textbf{Materie} & \textbf{Nodi concettuali} \\ \midrule
          Tutte & \vspace{-\topsep} \begin{enumerate}[topsep=0pt]
          \item titolo 1
          \item titolo 2
          \item titolo 3

          \end{enumerate} \\ \bottomrule
          \end{tabularx}
          \end{table}

          \end{document}
          `

          Se insisti a voler usare l’ambiente [tt]enumerate[/tt], c’è una ragione TeXnica (collocazione della linea di base di una [tt]\vtop[/tt] che inizia con colla verticale) che obbliga a ricorrere al trucco di anteporre all’ambiente stesso una spaziatura negativa: azzerare tutti gli spazi verticali ([tt]\topsep[/tt], [tt]\partopsep[/tt]…) non è sufficiente. Una volta entrati in questo — brutto! — ordine di idee, bisogna almeno fare le cose per bene, in modo da ottenere un allineamento preciso. Purtroppo, fare le cose per bene richiede conoscenza degli interna corporis del LaTeX. Nell’esempio che segue, mi auguro di non aver dimenticato nulla.

          L’esempio è stato “ripulito” dei pacchetti non essenziali al suo funzionamento. Si noti che il pacchetto inputenc non è più necessario da un bel po’. Ho aggiunto delle linee orizzontali di riferimento che consentono di verificare agevolmente l’allineamento orizzontale; ovviamente, esse vanno rimosse in una situazione “di vita reale”.

          `
          \documentclass[a4paper,12pt]{article}
          \usepackage[T1]{fontenc}
          % \usepackage[utf8]{inputenc} % non piu` necessario
          \usepackage[italian]{babel}
          % \usepackage{graphics}
          % \usepackage{pdfpages}
          \usepackage{float}
          \restylefloat{table}
          \usepackage{booktabs}
          % \usepackage{multirow}
          \usepackage{tabularx}
          % \usepackage{enumitem}

          \begin{document}

          Testo di riferimento.

          \begin{table}[H]
          \centering
          \begin{tabularx}{\textwidth}{lX}
          \toprule
          \textbf{Materie} & \textbf{Nodi concettuali} \\ \midrule
          \strut Tutte\rlap{\rule{4cm}{.2pt}} &
          \strut \par \vspace{-\glueexpr \topsep + \partopsep + \baselineskip \relax}
          \begin{enumerate} % [topsep=0pt]
          \item titolo 1\rule{4cm}{.2pt}
          \item titolo 2
          \item titolo 3

          \end{enumerate} \\ \bottomrule
          \end{tabularx}
          \end{table}

          Testo di riferimento.

          \end{document}
          `
          La soluzione proposta da @robitex mi sembra molto migliore! 🙂

          Ciao.


          Gustavo

        • #115932
          Up
          0
          Down
          ::

          letteracdp” post=116342

          […]

          Una soluzione funzionante, ma non so quanto elegante, è la seguente
          `\documentclass[a4paper,12pt]{article}
          \usepackage[T1]{fontenc}
          \usepackage[utf8]{inputenc}
          \usepackage[italian]{babel}
          \usepackage{graphics}
          \usepackage{pdfpages}
          \usepackage{float}
          \restylefloat{table}
          \usepackage{booktabs}
          \usepackage{multirow}

          \usepackage{tabularx, enumitem}

          \begin{document}

          \begin{table}[H]
          \centering
          \begin{tabularx}{\textwidth}{lX}
          \toprule
          \textbf{Materie} & \textbf{Nodi concettuali} \\ \midrule
          Tutte & \vspace{-\topsep} \begin{enumerate}[topsep=0pt]
          \item titolo 1
          \item titolo 2
          \item titolo 3

          \end{enumerate} \\ \bottomrule
          \end{tabularx}
          \end{table}

          \end{document}
          `

          Se insisti a voler usare l’ambiente [tt]enumerate[/tt], c’è una ragione TeXnica (collocazione della linea di base di una [tt]\vtop[/tt] che inizia con colla verticale) che obbliga a ricorrere al trucco di anteporre all’ambiente stesso una spaziatura negativa: azzerare tutti gli spazi verticali ([tt]\topsep[/tt], [tt]\partopsep[/tt]…) non è sufficiente. Una volta entrati in questo — brutto! — ordine di idee, bisogna almeno fare le cose per bene, in modo da ottenere un allineamento preciso. Purtroppo, fare le cose per bene richiede conoscenza degli interna corporis del LaTeX. Nell’esempio che segue, mi auguro di non aver dimenticato nulla.

          L’esempio è stato “ripulito” dei pacchetti non essenziali al suo funzionamento. Si noti che il pacchetto inputenc non è più necessario da un bel po’. Ho aggiunto delle linee orizzontali di riferimento che consentono di verificare agevolmente l’allineamento orizzontale; ovviamente, esse vanno rimosse in una situazione “di vita reale”.

          `
          \documentclass[a4paper,12pt]{article}
          \usepackage[T1]{fontenc}
          % \usepackage[utf8]{inputenc} % non piu` necessario
          \usepackage[italian]{babel}
          % \usepackage{graphics}
          % \usepackage{pdfpages}
          \usepackage{float}
          \restylefloat{table}
          \usepackage{booktabs}
          % \usepackage{multirow}
          \usepackage{tabularx}
          % \usepackage{enumitem}

          \begin{document}

          Testo di riferimento.

          \begin{table}[H]
          \centering
          \begin{tabularx}{\textwidth}{lX}
          \toprule
          \textbf{Materie} & \textbf{Nodi concettuali} \\ \midrule
          \strut Tutte\rlap{\rule{4cm}{.2pt}} &
          \strut \par \vspace{-\glueexpr \topsep + \partopsep + \baselineskip \relax}
          \begin{enumerate} % [topsep=0pt]
          \item titolo 1\rule{4cm}{.2pt}
          \item titolo 2
          \item titolo 3

          \end{enumerate} \\ \bottomrule
          \end{tabularx}
          \end{table}

          Testo di riferimento.

          \end{document}
          `
          La soluzione proposta da @robitex mi sembra molto migliore! 🙂

          Ciao.


          Gustavo

          Grazie per la risposta. Come dicevo prima, non voglio insistere nell’usare enumerate ma stavo semplicemente sondando tutte le strade. D’altronde mi pareva che la cosa fosse poco elegante e, a vedere quanto è complicato renderla bene, come hai fatto, ne sono ora convinto.
          Allora vi chiedo: il fatto che ciò che è difficile fare in LaTeX probabilmente non è tipograficamente corretto, vale anche in questo caso? Ovvero è sconsigliato inserire liste all’interno di tabelle? O anche tabelle nidificate?
          Oppure si può fare ma il metodo più elegante è quello suggerito da robitex?
          Grazie

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

      Go to top