Problemi con enumitem

  • Creatore
    Topic
  • #36985
    Up
    0
    Down
    ::


    Sono nuovamente a chiedere lumi…
    Sto usando il pacchetto enumitem con soddisfazione, ma con mia sorpresa mi accorgo che usando un elenco alfabetico dopo la lettera ‘z’ si blocca e mi dice che non può andar oltre. E’ possibile aggiungere qualcosa al comando in modo tale che riparta, magari con le maiuscole oppure con un a’, b’ etc.?
    Questo è il comando ridefinito:
    \begin{enumerate}[label={\alph*.},leftmargin=*,noitemsep=,widest=*]
    \item
    \item

    \end {enumerate}
    Immagino che se usassi li numeri in luogo delle lettere non dovrebbero esserci i problemi, ma dovrei rispettare l’uso delle lettere. C’è qualcuno che può aiutarmi?
    Grazie infinite in anticipo,
    luca

Visualizzazione 12 filoni di risposte
  • Autore
    Risposte
    • #36986
      Up
      0
      Down
      ::

      Sono nuovamente a chiedere lumi…
      Sto usando il pacchetto enumitem con soddisfazione, ma con mia sorpresa mi accorgo che usando un elenco alfabetico dopo la lettera ‘z’ si blocca e mi dice che non può andar oltre. E’ possibile aggiungere qualcosa al comando in modo tale che riparta, magari con le maiuscole oppure con un a’, b’ etc.?
      Questo è il comando ridefinito:
      \begin{enumerate}[label={\alph*.},leftmargin=*,noitemsep=,widest=*]
      \item
      \item

      \end {enumerate}
      Immagino che se usassi li numeri in luogo delle lettere non dovrebbero esserci i problemi, ma dovrei rispettare l’uso delle lettere. C’è qualcuno che può aiutarmi?

      Premesso che elenchi numerati con più di ventisei elementi sarebbero da rifuggire e che se proprio necessari non vanno numerati con lettere, puoi provare così:
      `\usepackage{enumitem}
      \makeatletter
      \AddEnumerateCounter{\alphprime}{\@alphprime}{m$'$}
      \def\alphprime#1{\expandafter\@alphprime\csname c@#1\endcsname}
      \def\@alphprime#1{%
      \ifnum#1<53
      \ifnum#1<27
      \@alph#1%
      \else
      \expandafter\@alph\expandafter{\numexpr(#1-26)\relax}$'$%
      \fi
      \else
      \@ctrerr
      \fi}
      \makeatother

      \begin{document}

      \begin{enumerate}[label={\alphprime*.}]`
      Ciao
      Enrico

    • #36987
      Up
      0
      Down
      ::


      Grazie infinite Enrico: funziona!!!
      Lo so che può sembrare sconveniente, ma per il mio scopo è perfetto (troppo lungo entrare nei dettagli). E poi i casi nei quali sarò costretto ad ‘eccedere’ (dipendo da un testo giuridico del Cinquecento) non saranno numerosi.
      Rinnovo la mia gratitudine,
      Luca

    • #36988
      Up
      0
      Down
      ::


      Alcuni giorni fa Enrico mi aveva gentilmente risolto il problema che avevo incontrato usando il pacchetto enumitem. Ora mi sono accorto lavorando sul testo che dovrei impedire che mi generi automaticamente la lettera j: in altre parole dovrei espungerla e far in modo che mi passi dalli ‘i’ direttamente alla ‘k’. Enrico, chiedo davvero troppo questa volta?
      Questo il codice modificato che sto usando dopo l’aiuto ricevuto:

      \usepackage{enumitem}
      \makeatletter
      \AddEnumerateCounter{\alphprime}{\@alphprime}{m$’$}
      \def\alphprime#1{\expandafter\@alphprime\csname c@#1\endcsname}
      \def\@alphprime#1{%
      \ifnum#1<53
      \ifnum#1<27
      \@alph#1%
      \else
      \expandafter\@alph\expandafter{\numexpr(#1-26)\relax}$’$%
      \fi
      \else
      \@ctrerr
      \fi}
      \makeatother

      \begin{document}

      \begin{enumerate}[label={\alphprime*.}]

      Ringrazio comunque, anche solo dell’attenzione,
      Luca

    • #36989
      Up
      0
      Down
      ::

      Alcuni giorni fa Enrico mi aveva gentilmente risolto il problema che avevo incontrato usando il pacchetto enumitem. Ora mi sono accorto lavorando sul testo che dovrei impedire che mi generi automaticamente la lettera j: in altre parole dovrei espungerla e far in modo che mi passi dalli ‘i’ direttamente alla ‘k’. Enrico, chiedo davvero troppo questa volta?

      Quaerendo invenietis
      `\makeatletter
      \AddEnumerateCounter{\alphprimej}{\@alphprimej}{m$'$}
      \def\alphprimej#1{\expandafter\@alphprimej\csname c@#1\endcsname}
      \def\@alphprimej#1{%
      \ifnum#1<51
      \ifnum#1<26
      \@alphj#1%
      \else
      \expandafter\@alphj\expandafter{\numexpr(#1-25)\relax}$^\prime$%
      \fi
      \else
      \@ctrerr
      \fi}
      \def\@alphj#1{%
      \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or
      k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or
      y\or z\else\@ctrerr\fi}
      \makeatother`
      Usa \alphprimej dove avresti usato \alphprime

      Ciao
      Enrico

    • #36990
      Up
      0
      Down
      ::


      Grazie infinite Enrico: in codice funziona perfettamente!!! A questo punto mi chiedo perché non proponi tu un nuovo pacchetto ‘potenziato’ se così si può dire, su base enumitem?
      Ciao,
      Luca

    • #36991
      Up
      0
      Down
      ::

      Grazie infinite Enrico: in codice funziona perfettamente!!! A questo punto mi chiedo perché non proponi tu un nuovo pacchetto ‘potenziato’ se così si può dire, su base enumitem?

      Non ci penso nemmeno: ritengo questa applicazione un modo scorretto di etichettare le liste, come già ti ho spiegato.

      Mi sono accorto di un errore nel codice: dove c’è
      `…\expandafter{\numexpr(#1-26)\relax…`
      va ovviamente
      `…\expandafter{\numexpr(#1-25)\relax…`
      Correggo nel messaggio precedente.

      Ciao
      Enrico

    • #36992
      Up
      0
      Down
      ::


      Sì, avevo intuito il refuso ed ero già intervenuto. Piuttosto ho tentato di capire la sintassi, se mai volessi espungere altre lettere (sarebbero la v e la w,ma debbo ancora decidere) e invece dopo una serie di prove e conseguenti errori, mi sono fatto una ragione di essere solo un povero utilizzatore finale… Anche se, confesso, un po’ mi secca usare LaTeX come fosse word, dal punto della consapevolezza intendo.
      Infine, la questione del potenziamento di enumitem: hai sicuramente ragione perché elenchi così lunghi non hanno senso, ma per la mia particolare esigenza è perfetto.
      Grazie ancora e ciao,
      Luca

    • #36993
      Up
      0
      Down
      ::

      Sì, avevo intuito il refuso ed ero già intervenuto. Piuttosto ho tentato di capire la sintassi, se mai volessi espungere altre lettere (sarebbero la v e la w,ma debbo ancora decidere) e invece dopo una serie di prove e conseguenti errori, mi sono fatto una ragione di essere solo un povero utilizzatore finale… Anche se, confesso, un po’ mi secca usare LaTeX come fosse word, dal punto della consapevolezza intendo.
      Infine, la questione del potenziamento di enumitem: hai sicuramente ragione perché elenchi così lunghi non hanno senso, ma per la mia particolare esigenza è perfetto.
      Grazie ancora e ciao,
      Luca

      Togli le lettere dalla definizione di \alphaj (insieme al comando \or che precede); conti quante ne hai, quel numero x va in \numexpr(#1-[x]) in \alphprimej, che dovrà cominciare con
      ` \ifnum#1<[2x+1] \ifnum#1<[x+1]` Con le parentesi quadre indico la sostituzione dell'espressione con il suo valore numerico. Ciao Enrico

    • #36994
      Up
      0
      Down
      ::


      Fatto e funziona che è una meraviglia! Le lettere le avevo tolte, ma non riuscivo ad entrare nella sintassi del codice e naturalmente mi dava errore. Sono molto soddisfatto del risultato e davvero riconoscente.
      Bisognerebbe correggere solo
      \numexpr{#1-[x])
      in
      \numexpr(#1-[x])
      altrimenti non funziona.
      Ciao e grazie del tempo,
      Luca

    • #36995
      Up
      0
      Down
      ::


      Col rischio di sentirmi rispondere quousque tandem…? torno a chiedere una mano ad Enrico.
      Il codice, come ho già scritto, supporta benissimo ciò che chiedevo. Ma appunto chiedevo… Mi sono infatti accorto che ho qualche caso in cui non mi basta una seconda serie di lettere (la serie è di 23 perché ho tolto le lettere j, v, w). Sono pochi, ma ci sono purtroppo, e quindi avrei pensato di sostituire l’apicino che affianca la seconda serie con un numero in questo caso in pedice per questioni estetiche. Ho controllato l’intero testo e arrivo al massimo (fortunatamente in soli 3 casi) alla terza serie dopo la prima; dovrei quindi riuscire a realizzare questa successione: a1, b1, c1 etc., a2, b2, c2, etc., a3, b3, c3 etc.
      Il codice da cui parto è quello che mi hai gia scritto con la variante delle tre lettere espunte e che riporto qui di seguito per comodità

      \makeatletter
      \AddEnumerateCounter{\alphprimej}{\@alphprimej}{m$’$}
      \def\alphprimej#1{\expandafter\@alphprimej\csname c@#1\endcsname}
      \def\@alphprimej#1{%
      \ifnum#1<47
      \ifnum#1<24
      \@alphj#1%
      \else
      \expandafter\@alphj\expandafter{\numexpr(#1-23)\relax}$^\prime$%
      \fi
      \else
      \@ctrerr
      \fi}
      \def\@alphj#1{%
      \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or
      k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or x\or
      y\or z\else\@ctrerr\fi}
      \makeatother
      Io sono riuscito, molto banalmente, a sostituire all’apicino il numero in pedice, ma non riesco da solo ad implementare il codice in modo tale che prosegua da solo, se necessario, sino alla terza serie; l’unica cosa che mi è venuta in mente è di riscrivere tre codici uguali rispettivamente con i numeri 1, 2 e 3 e ridando poi nel testo tre volte il comando. L’avrei anche fatto, ma mi crea in questo modo uno spazio verticale non gradito tra le tre serie.
      Chiedo troppo questa volta?
      Infine, la luna. Quando la seconda serie presenta solo due voci il mio autore ha pensato bene che non valesse la pena di scomodare le prime due lettere dell’alfabeto ed ha inserito i simboli ٭ e † dopo la z. Simboli che in 4-5 casi ha anche impiegato all’interno di una serie, tra due lettere. C’è un modo per fare un inserimento manuale per riprodurre queste situazioni?
      Sono perfettamente consapevole che sto chiedendo molto, non tanto al pacchetto enumitem, quanto ad Enrico…
      Comunque grazie,
      Luca

    • #36996
      Up
      0
      Down
      ::

      Col rischio di sentirmi rispondere quousque tandem…? torno a chiedere una mano ad Enrico.
      Il codice, come ho già scritto, supporta benissimo ciò che chiedevo. Ma appunto chiedevo… Mi sono infatti accorto che ho qualche caso in cui non mi basta una seconda serie di lettere (la serie è di 23 perché ho tolto le lettere j, v, w). Sono pochi, ma ci sono purtroppo, e quindi avrei pensato di sostituire l’apicino che affianca la seconda serie con un numero in questo caso in pedice per questioni estetiche. Ho controllato l’intero testo e arrivo al massimo (fortunatamente in soli 3 casi) alla terza serie dopo la prima; dovrei quindi riuscire a realizzare questa successione: a1, b1, c1 etc., a2, b2, c2, etc., a3, b3, c3 etc.
      Il codice da cui parto è quello che mi hai gia scritto con la variante delle tre lettere espunte e che riporto qui di seguito per comodità

      \makeatletter
      \AddEnumerateCounter{\alphprimej}{\@alphprimej}{m$’$}
      \def\alphprimej#1{\expandafter\@alphprimej\csname c@#1\endcsname}
      \def\@alphprimej#1{%
      \ifnum#1<47
      \ifnum#1<24
      \@alphj#1%
      \else
      \expandafter\@alphj\expandafter{\numexpr(#1-23)\relax}$^\prime$%
      \fi
      \else
      \@ctrerr
      \fi}
      \def\@alphj#1{%
      \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or
      k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or x\or
      y\or z\else\@ctrerr\fi}
      \makeatother
      Io sono riuscito, molto banalmente, a sostituire all’apicino il numero in pedice, ma non riesco da solo ad implementare il codice in modo tale che prosegua da solo, se necessario, sino alla terza serie; l’unica cosa che mi è venuta in mente è di riscrivere tre codici uguali rispettivamente con i numeri 1, 2 e 3 e ridando poi nel testo tre volte il comando. L’avrei anche fatto, ma mi crea in questo modo uno spazio verticale non gradito tra le tre serie.
      Chiedo troppo questa volta?
      Infine, la luna. Quando la seconda serie presenta solo due voci il mio autore ha pensato bene che non valesse la pena di scomodare le prime due lettere dell’alfabeto ed ha inserito i simboli ٭ e † dopo la z. Simboli che in 4-5 casi ha anche impiegato all’interno di una serie, tra due lettere. C’è un modo per fare un inserimento manuale per riprodurre queste situazioni?
      Sono perfettamente consapevole che sto chiedendo molto, non tanto al pacchetto enumitem, quanto ad Enrico…
      Comunque grazie,
      Luca

      Ciò che chiedi si può certamente fare, tuttavia occorre una riflessione preliminare. Che senso ha una lista numerata in cui compaiono simboli che non appartengono al sistema di numerazione usato? Che senso ha usare quei simboli in posti diversi?

      Ovviamente il sistema di numerazione di cui parlo è alfabetico, ma cambia poco.

      Quanto ad a1, b1, …, z1, a2, … z2, a3 e così via, mi sembra un’idea balzana, perché suggerisce un legame speciale fra gli elementi la cui etichetta ha una “cifra” in comune. I nostri numeri sono letti da sinistra a destra (ma dopo averli esaminati da destra a sinistra per stabilirne l’ordine di grandezza); analogamente si fa per le numerazioni “doppie”: il capitolo 1 ha le sezioni 1.1, 1.2 eccetera. Nella tua lista l’ordine sarebbe rovesciato, causando nel lettore l’incertezza interpretativa.

      L’imperscrutabile decreto regale che bandisce le lettere j v w rende le cose ancora più complesse: chi stia scorrendo la lista trovando “x1” subito dopo “u1” avrà certamente l’impressione che i casi corrispondenti a “v1” e “w1” siano stati omessi.

      E che dire di quando uno trova * e † dopo la z ma in una lista successiva, poniamo, dopo la k? Che significato attribuirà a quelle etichette? Certo non semplici segnaposto, come invece sembra che siano.

      L’idea che in realtà quelle siano liste non numerate mi viene. Prova a convincere chi di dovere che tutto ciò non ha senso, prima di cercare una soluzione. Ma ricorda che a1, …, z1, a2, …, z2, a3, … è un rimedio peggiore del male.

      Ciao
      Enrico

    • #36997
      Up
      0
      Down
      ::


      Per prima cosa grazie Enrico della risposta e al solito della gentilezza.
      Credo di capire il senso di quello che scrivi, e proprio per questo penso a questo punto di essermi spiegato male o di aver scelto una via sbagliata. Proprio stamani mi stavo chiedendo, sfogliando il manuale di memoir, se non fosse più indicato trattare il testo che intendo inserire nell’ambiente ‘elenco’ come endnotes. Se non mi ero persuaso a seguire questa strada è perché (a ragione o a torto) avevo trovato che l’ambiente list si avvicinava molto all’impostazione che desideravo. Poi naturalmente c’è stata la complicazione delle etichette. Provo ora a spiegarti cosa debbo fare (e con quali vincoli).
      Ho 100 capitoli di testo principale; alla fine di ogni capitolo vi sono delle note/commento ad alcune voci del testo più o meno lunghe (ad esempio: a. Cielo] Nell’aria, che sono gli uccelli). Quindi note per il mio autore del ‘500, ma testo altrettanto importante per me editore moderno. Mentre le mie note a pie’ di pagina (sia al testo che alle note/commento originale) sono delle normalissime footnote, il testo delle note/commento del ‘500 ha per etichette le 23 lettere di cui abbiamo parlato, che compaiono sia in apice a fianco della parola o del testo (massimo 3-4 parole), sia, appunto, alla fine del capitolo, come etichetta (non considero etichetta le voci perché talvolta vi sono delle varianti, se pur minime tra voce nel testo e voce riportata nel commento). Ecco perché avevo pensato iniziamente a rendere la seconda serie con degli apicini nell’ambiente list. Lo stampatore del ‘500 invece non si era preccupato della eventuale confusione che sarebbe potuta insorgere nel lettore, e dopo la fine della prima serie di 23 lettere ricominciava tranquillamente da capo senza alcun accorgimento grafico. Pur non dovendo fare una edizione diplomatica, c’era l’idea di rimanere abbastanza fedeli all’impostazione originale (per tutta una serie di ragioni che non vale star qui a dire), ma con qualche accorgimento per non indurre in confusione il lettore moderno.
      I capitoli che hanno a corredo un commento con più di 43 voci sono molto pochi, ma ci sono, ed avere tre apicini non è il massimo. Ecco perché avevo pensato di affiancare un numero mantendendo come etichetta di base la lettera. Ovviamente le tre lettere espunte non vengono recuperate nemmeno per le serie successive. Per la questione dell’incertezza interpretativa ammetto che non ci avevo pensato perché mi pareva fosse chiaro. Avevo pensato anche alla forma aa, bb, cc etc. (la usavano per numerare le carte degli incunaboli), ma nei rari casi di quattro a affiancate la resa grafica sarebbe pessima.

      Scusa per il lungo messaggio, ma almeno così mi puoi dire che l’ambiente list non fa al caso mio, anche se ti assicuro che graficamente è molto ordinato. Nella speranza di ricevere lumi…
      Ciao e ancora grazie,
      Luca

    • #36998
      Up
      0
      Down
      ::


      Ciao Enrico,
      Ho riflettuto a lungo sui tuoi rilievi e mi sono persuaso che hai ragione sul fatto che in un elenco numerato a poco senso stabilire un legame fra elementi che appartengono a sistemi diversi. E poi nella sequenza bisogna seguire una ratio altrimenti il lettore, se pure avvertito, si può disorientare.
      Non ho ancora trovato una soluzione convincente al mio problema, e se qualcuno avesse delle idee…
      Comunque ho capito che per il mio specifico caso è meglio usare description, perché è molto più flessibile, soprattutto se si usa la classe memoir.
      Aggiungo solo, se può essere di utilità a qualcuno, che con enumitem l’opzione per togliere lo spazio tra due liste disposte una di seguito all’altra è , da inserire ovviamente tra gli argomenti opzionali.
      Grazie ancora di tutto,
      Luca

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

Go to top