Elemento numerato che non si aggiorni in base alla posizione nel documento

  • Creatore
    Topic
  • #111689
    Up
    0
    Down
    ::


    Ciao a tutti,
    avrei un’esigenza particolare, devo creare un elemento numerato con le seguenti caratteristiche:
    – numerazione progressiva
    – numerazione attribuita in modo automatico
    – numerazione che non venga aggiornata nel caso venisse inserito un nuovo elemento non in coda ai già esistenti
    – elemento deve essere richiamabile

    L’esigenza è quella di numerare univocamente una serie di requisiti all’interno di un documento. Potrebbe esserci la necessità di aggiungere nuovi requisiti (in una posizione qualsiasi del documento) in seguito alle varie revisioni del documento; questo non deve modificare la numerazione dei requisiti preesistenti per non generare confusione.
    Esistono software dedicati a questo tipo di attività (IBM doors) però volevo cercare di sfruttare LaTeX per realizzare una simile funzionalità.

    Sapete se è possibile farlo e nel caso come?

    Grazie in anticipo a tutti.
    Stefano

Visualizzazione 4 filoni di risposte
  • Autore
    Risposte
    • #111690
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Non ho capito che cosa intendi per “elemento numerato”.

        Dal tuo messaggio sembrerebbe che questi elementi numerabili formino una lista, anzi diverse liste che continuano la stessa numerazione; supponiamo che tu definisca una lista enumerazione usando i comandi per nuove liste del pacchetto enumitem; si tratterebbe forse di aprire nuovamante questo ambiente per inserire oggetti numerati, in modo che la numerazione prosegua quella che quell’ambiente aveva raggiunto alla sua precedente chiusura?

        Se questo è quello che inendevi, allora ti tocca leggere la documentazione di enumitem e poi agire di conseguenza.

        Se invece io non ho capito il tuo problema, ti chiedo scusa, e ti invito a non tenere conto di questo messaggio.

      • #111691
        Up
        0
        Down
        ::


        Ciao Claudio e grazie per la risposta,
        per elemento numerato intendo una frase che debba avere un prefisso numerico (come un’equazione, un titolo di paragrafo o una riga di “enumarate”).

        Questi elementi sarebbero inseriti nel documento e avrebbero come prefisso l’indice numerico che io definirei.
        La cosa fondamentale è che la numerazione non venga aggiornata in base alla posizione in cui una di queste frasi si trovi nel documento (cosa che invece succede con paragrafi o equazioni ad esempio).

        Esempio.
        Se ho un documento in cui ho inserito 10 di queste frasi e decido di inserirne una undicesima a metà documento (supponiamo di inserirla dopo la riga già numerata con 5 per comodità) questa dovrà prendere in automatico il numero 11 (e non 6), ed allo stesso modo la numerazione delle 5 frasi che trovo nel testo dopo di essa non dovrà essere aggiornata.

        Con il pacchetto enumitem si può fare questo?

        Spero di essermi spiegato in modo comprensibile.
        Grazie.

        Stefano

      • #111692
        claudio
        Partecipante
          Up
          0
          Down
          ::

          Tode” post=111996Ciao Claudio e grazie per la risposta,
          per elemento numerato intendo una frase che debba avere un prefisso numerico (come un’equazione, un titolo di paragrafo o una riga di “enumarate”).

          Questi elementi sarebbero inseriti nel documento e avrebbero come prefisso l’indice numerico che io definirei.
          La cosa fondamentale è che la numerazione non venga aggiornata in base alla posizione in cui una di queste frasi si trovi nel documento (cosa che invece succede con paragrafi o equazioni ad esempio).

          Esempio.
          Se ho un documento in cui ho inserito 10 di queste frasi e decido di inserirne una undicesima a metà documento (supponiamo di inserirla dopo la riga già numerata con 5 per comodità) questa dovrà prendere in automatico il numero 11 (e non 6), ed allo stesso modo la numerazione delle 5 frasi che trovo nel testo dopo di essa non dovrà essere aggiornata.

          Con il pacchetto enumitem si può fare questo?

          Spero di essermi spiegato in modo comprensibile.
          Grazie.

          Stefano

          Credo che fai prima a farlo a mano!!
          Per automatizzare, se si può dire, farei così
          da una parte mi costruirei un elenco e con
          hyperref assocerei la chiave dell’elenco con l’elemento
          nel documento. In questo modo non dovrebbe esserci modifica
          claudio

        • #111693
          Up
          0
          Down
          ::


          È chiaro che, negli stretti termini in cui l’hai formulato, il problema è irrisolvibile con (La)TeX in linea di principio.

          Questo perché (La)TeX è un programma di tipocomposizione che funziona compilando uno o più file sorgenti; un file sorgente è un puro e semplice file di testo, cioè una pura e semplice sequenza ordinata di caratteri, e quindi semplicemente non incorpora l’informazione relativa all’ordine temporale nel quale i caratteri sono stati inseriti.

          Mi spiego meglio: dato un file sorgente [tt].tex[/tt] che contenga il testo seguente
          `
          \documentclass{article}
          \begin{document}
          Pippo.\par
          Pluto.\par
          Paperino.\par
          \end{document}
          `
          semplicemente non c’è alcun modo di sapere se esso sia stato scritto tutto in una volta, oppure creando dapprima un file che contenesse solo
          `
          \documentclass{article}
          \begin{document}
          Pippo.\par
          Paperino.\par
          \end{document}
          `
          e poi modificandolo in un secondo momento con l’aggiunta della riga`Pluto.\par`

          Il tuo problema richiede di aggiungere in qualche modo al file sorgente l’informazione circa l’ordine temporale di inserimento delle sue parti, mediante l’utilizzo di un opportuno sistema di markup, che dovrà essere progettato in base alle tue esigenze. Ti chiedo quindi di riflettere su questo punto e di indicarci che tipo di notazione sei disposto a usare per contrassegnare le parti del tuo documento che si rifericono a differenti versioni dello stesso.

          In teoria, sarebbe possibile automatizzare anche quest’aspetto mediante l’utilizzo di file ausilari che trasportino da una compilazione all’altra l’informazione relativa agli stati precedenti del documento: sconsiglio fortemente di adottare un approccio di questo tipo. Creare questa sorta di “metadocumenti appiccicosi” (sticky) crea di solito complicazioni a non finire nella loro gestione. Per esempio, una compilazione viene avviata per errore su una versione del documento nuova, ma non ancora finita; ciò comporta la generazione automatica delle informazioni ausiliarie come se si fosse veramente creata una nuova versione, per cui l’utente si rende conto che, quando avvierà la compilazione della nuova versione completata e corretta, questa verrà interpretata come una versione ulteriore; l’utente cerca allora di cancellare i file ausiliari, ma questo peggiora ulteriormente, e di molto, la situazione… In poco tempo, l’utente finirà col trovarsi nella stessa situazione in cui vanno tipicamente a finire i personaggi dei cartoni animati che maneggiano oggetti appiccicosi, e cioè avvolto in un viluppo inestricabile al quale partecipano anche le sue quattro membra, formando artistici nodi asimmetrici.

          Ciao.


          Gustavo

        • #111694
          robitex
          Amministratore del forum
            Up
            0
            Down
            ::


            Ciao,
            quello che dice @letteracdp è più che giusto 🙂
            Occorre rendere l’informazione dell’ordine di inserimento statica.
            Cosa vuol dire statica? Significa in sostanza che si deve inserire a mano il numero progressivo.
            Per esempio scrivo:
            `1 testo
            2 altro testo
            3 ulteriore testo`
            se aggiungo un nuovo elemento in prima posizione scrivo semplicemente:
            `4 testo nuovo
            1 testo
            2 altro testo
            3 ulteriore testo`

            Fine della storia.

            Quando però inserisco un nuovo elemento da qualche parte in modo manuale, sono obbligato a cercare l’ultimo numero inserito per poter determinare il prossimo intero.
            Dunque sarebbe comodo centralizzare nel file sorgente l’assegnazione di questi codici in modo che molto facilmente si possa aggiungere elementi in coda.
            E questa lista, comporta che nel documento si debba richiamare il numero con un nome, un’etichetta.

            Ho scritto in LuaLaTeX questo esempio minimo di codice che realizza la centralizzazione. Penso infatti che scrivendo la lista in Lua sia poi più semplice gestire numeri strutturati, tipo 5.1 per intenderci:
            `% !TeX program = LuaLaTeX

            \directlua{archive = {
            a = 1,
            b = 2,
            c = 3,
            }}

            \documentclass{article}

            \newcommand{\iditem}[1]{%
            \item[\directlua{tex.sprint(archive[ [==[#1]==] ])}]}

            \begin{document}
            \begin{itemize}
            \iditem{a} testo
            \iditem{b} altro testo
            \iditem{c} ulteriore testo
            \end{itemize}
            \end{document}`

            La macro \iditem prende l’etichetta assegnata e ne ottiene l’ordine d’iserimento dalla lista.

            Quando inserisco il nuovo elemento ho:
            `% !TeX program = LuaLaTeX

            \directlua{archive = {
            a = 1,
            b = 2,
            c = 3,
            d = 4,
            }}

            \documentclass{article}

            \newcommand{\iditem}[1]{%
            \item[\directlua{tex.sprint(archive[ [==[#1]==] ])}]}

            \begin{document}
            \begin{itemize}
            \iditem{d} testo nuovo
            \iditem{a} testo
            \iditem{b} altro testo
            \iditem{c} ulteriore testo
            \end{itemize}
            \end{document}`

            In altre parole, invece di cercare il numero progressivo, devo conoscere l’etichetta, è bene quindi che queste etichette seguano un formato semplice da ricordare. Per esempio legato al numero di versione del documento.

            Si può fare in modo che la numerazione nella lista non sia necessaria, ma forse si rende meno sicuro l’inserimento di nuovi elementi perché l’ordina dipenderà esclusivamente da quello della lista, e non più dal numero assegnato esplicitamente:
            `% !TeX program = LuaLaTeX

            \directlua{archive = {
            [[a]],
            [b],
            [[c]],
            [[d]],
            }}

            \directlua{
            auxarch = {}
            for progr, label in ipairs(archive) do
            auxarch[label] = progr
            end
            }

            \documentclass{article}

            \newcommand{\iditem}[1]{%
            \item[\directlua{tex.sprint(auxarch[ [==[#1]==] ])}]}

            \begin{document}
            \begin{itemize}
            \iditem{d} testo nuovo
            \iditem{a} testo
            \iditem{b} altro testo
            \iditem{c} ulteriore testo
            \end{itemize}
            \end{document}`

            Saluti.
            R.

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

        Go to top