Enumitem contro tutti: alcune soluzioni e un problema

  • Creatore
    Topic
  • #10027
    lorenzo.pantieri
    Partecipante
      Up
      0
      Down
      ::


      Ciao a tutti!

      Per personalizzare gli elenchi, sto sperimentando il pacchetto enumitem: penso sia davvero eccellente, IMHO superiore a enumerate e a paralist.

      Per esempio, in tutti i miei documenti uso elenchi con i numeri romani minuscoli. La soluzione “manuale”
      `\documentclass{article}

      \renewcommand{\labelenumi}{(\textit{\roman{enumi}})}

      \begin{document}

      \begin{enumerate}
      \item foo
      \item bar\label{itm:bar}
      \end{enumerate}

      Per la propriet\`a~(\ref{itm:bar}), si ha che\dots

      \end{document}
      `
      non è edeguata: il riferimento non è reso in corsivo -come dev’essere.

      Il pacchetto enumerate risolve il problema:
      `\documentclass{article}

      \usepackage{enumerate}
      \usepackage{varioref} %notare l'aggiunta

      \begin{document}

      \begin{enumerate}[\upshape(\itshape i\/\upshape)]
      \labelformat{enumi}{\textit{#1}}
      \item foo
      \item bar\label{itm:bar}
      \end{enumerate}

      Per la propriet\`a~(\ref{itm:bar}), si ha che\dots

      \end{document}
      `
      ma il codice è (per me) un po’ ostico e poco intuitivo.

      La soluzione più elegante è IMO offerta dal pacchetto enumitem:
      `\documentclass{article}

      \usepackage{enumitem}

      \begin{document}

      \begin{enumerate}[label=(\emph{\roman*}),ref=(\emph{\roman*})]
      \item foo
      \item bar\label{itm:bar}
      \end{enumerate}

      Per la propriet\`a~\ref{itm:bar}, si ha che\dots

      \end{document}`
      Questa soluzione, oltre ad essere più intuitiva di quella precedente, presenta il vantaggio di scindere la resa grafica del contatore dell’elenco (label) da quella del riferimento (ref).

      Il pacchetto enumitem permette di personalizzare gli elenchi con semplicità e con grande versatilità. Per esempio:
      `\begin{itemize}[leftmargin=*]
      \item Tizio
      \item Caio
      \item Sempronio
      \end{itemize}
      `
      o
      `\begin{itemize}[noitemsep]
      \item Tizio
      \item Caio
      \item Sempronio
      \end{itemize}
      `

      L’unica cosa che non sono riuscito a realizzare in modo pienamente soddisfacente con enumitem è un elenco come l’asparaenum del pacchetto paralist (i due pacchetti sono incompatibili). Ci sono quasi:
      `\documentclass{article}

      \usepackage{enumitem}

      \newenvironment{citazione}%
      {\begin{quotation}\small\ignorespaces}%
      {\end{quotation}}

      \begin{document}

      Testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo

      \begin{citazione}
      Citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione

      \begin{enumerate}[label=\emph{\roman*}),ref=\emph{\roman*}),nolistsep,fullwidth,itemindent=1.5em]

      \item foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo

      \item bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar
      \end{enumerate}

      Citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione
      \end{citazione}

      Testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo
      \end{document}
      `
      Il codice funziona, ma non è molto elegante. Bisognerebbe sosituire al manuale
      `itemindent=1.5em`
      dove 1.5em è il valore di \itemindent relativo al documento in questione ottenuto con il pacchetto layouts, il valore di \itemindent, che può cambiare da un documento all’altro. Se imposto l’opzione
      `itemindent=\itemindent`
      non succeda niente: evidentemente, all’interno dell’ambiente enumerate (con le opzioni selezionate), il valore di \itemindent viene portato a zero. Una soluzione -invero non molto elegante- potrebbe essere quella di memorizzare, nel preambolo, il valore di \itemindent in una “variabile tipografica”, diciamo \mylen, ed usare quella… ma non so come si fa!

      Grazie anticipate a chi vorrà aiutarmi!

      Ciao,
      L.

    Visualizzazione 1 filone di risposte
    • Autore
      Risposte
      • #10028
        lorenzo.pantieri
        Partecipante
          Up
          0
          Down
          ::


          Non capisco… 🙄

          In riferimento all’ultimo codice del mio post precedente -e a quest’altro topic– con
          `\begin{enumerate}[label=\emph{\roman*}),ref=\emph{\roman*}),nolistsep,fullwidth,itemindent=1.5em]
          `
          funziona tutto, mentre imponendo nel preambolo
          `\newlength{\mylen}
          \setlength{\mylen}{\itemindent}
          `
          e scrivendo
          `\begin{enumerate}[label=\emph{\roman*}),ref=\emph{\roman*}),nolistsep,fullwidth,itemindent=\mylen]
          `
          non succede niente!

          ❓ ❓ ❓

          Grazie,
          L.

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


            Scustaemi per l’insistenza con cui continuo questo post… 😳

            Pazzesco: pare che nel preambolo \itemindent sia settato a zero, mentre all’interno dell’ambiente citazione sia settato a 1.5em. 😯 Perché? Me ne sono reso conto con il pacchetto layouts.
            `\documentclass{article}

            \usepackage{layouts}

            \newenvironment{citazione}%
            {\begin{quotation}\small\ignorespaces}%
            {\end{quotation}}

            \begin{document}

            \printinunitsof{pt}
            \listvalues %qui \itemindent vale zero…

            \begin{citazione}

            \listvalues %…e qui \itemindent vale 1.5em.

            Citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione

            \end{citazione}
            `

            A questo punto la soluzione è:
            `\documentclass{article}

            \usepackage{enumitem}

            \newenvironment{citazione}%
            {\begin{quotation}\small\ignorespaces}%
            {\end{quotation}}

            \begin{document}

            Testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo

            \begin{citazione}

            \newlength{\mylen}
            \setlength{\mylen}{\itemindent}

            Citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione

            \begin{enumerate}[label=\emph{\roman*}),ref=\emph{\roman*}),nolistsep,fullwidth,itemindent=\mylen]

            \item foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo foo

            \item bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar bar

            \end{enumerate}

            Citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione citazione
            \end{citazione}

            Testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo testo
            \end{document}
            `e tanti saluti all’eleganza del codice… 😥

            Scusate ancora, e, se avete idee migliori, siete i benvenuti! 😉

            Ciao,
            L.

        Visualizzazione 1 filone di risposte
        • Devi essere connesso per rispondere a questo topic.

        Go to top