Tenere in memoria parti di testo

  • Creatore
    Topic
  • #67223
    Up
    0
    Down
    ::


    Ciao a tutti,

    per prima cosa mi scuso per il titolo della discussione, ma non me n’è venuto uno migliore.

    Quello che mi piacerebbe fare è poter memorizzare una porzione di testo in una memoria, in modo da poterla stampare nel momento in cui desidero inserire nel mio documento quel pezzo, richiamando il contenuto di quella memoria.

    Cerco di spiegarmi meglio. Vorrei definire un comando che accetti diversi argomenti (tutti testuali), ma dove solo alcuni vengono stampati subito; gli altri voglio memorizzarli per poter stampare il loro contenuto in parti successive del documento. Faccio un esempio:
    `\documentclass[a4paper,11pt,openright,twoside]{report}

    \newcommand{\comando}[2]{«#1» metti #2 nella memoria “secondaPorzione1”}

    \begin{document}

    \comando{Ciao.}{Questo è il testo che voglio memorizzare.} %Qui deve essere stampato “«Ciao.»”

    \section{Titolo section}

    \stampa{secondaPorzione1} %Qui deve essere stampato “Questo è il testo che voglio memorizzare.”

    \end{document}`
    Ovviamente ogni volta che uso il nuovo comando “\comando” la variabile di memorizzazione deve cambiare; pensavo di far ciò mediante un contatore. Per il resto, si può fare? Sapete come farlo?

    Spero di essere stato sufficientemente chiaro. Se non avete capito, ditemelo che proverò a spiegarmi diversamente.

    Ciao e grazie,
    Marco.

Visualizzazione 8 filoni di risposte
  • Autore
    Risposte
    • #67224
      Up
      0
      Down
      ::


      Ciao a tutti,

      mi è venuta un’idea. Se TeX o LaTeX non permettono di avere memorie che contengono parti di testo, forse si può aggirare il problema facendo generare dei file .tex nei quali si scrive quella porzione di testo; successivamente, quando la si vorrà “stampare”, basterà usare \input. È possibile far questo?

      Grazie e buona giornata,
      Marco.

    • #67225
      Up
      0
      Down
      ::

      Marco87″ post=66185Ciao a tutti,

      per prima cosa mi scuso per il titolo della discussione, ma non me n’è venuto uno migliore.

      Quello che mi piacerebbe fare è poter memorizzare una porzione di testo in una memoria, in modo da poterla stampare nel momento in cui desidero inserire nel mio documento quel pezzo, richiamando il contenuto di quella memoria.

      Cerco di spiegarmi meglio. Vorrei definire un comando che accetti diversi argomenti (tutti testuali), ma dove solo alcuni vengono stampati subito; gli altri voglio memorizzarli per poter stampare il loro contenuto in parti successive del documento. Faccio un esempio:
      `\documentclass[a4paper,11pt,openright,twoside]{report}

      \newcommand{\comando}[2]{«#1» metti #2 nella memoria “secondaPorzione1”}

      \begin{document}

      \comando{Ciao.}{Questo è il testo che voglio memorizzare.} %Qui deve essere stampato “«Ciao.»”

      \section{Titolo section}

      \stampa{secondaPorzione1} %Qui deve essere stampato “Questo è il testo che voglio memorizzare.”

      \end{document}`
      Ovviamente ogni volta che uso il nuovo comando “\comando” la variabile di memorizzazione deve cambiare; pensavo di far ciò mediante un contatore. Per il resto, si può fare? Sapete come farlo?

      Spero di essere stato sufficientemente chiaro. Se non avete capito, ditemelo che proverò a spiegarmi diversamente.

      Ciao e grazie,
      Marco.

      È possibile fare tutto con LaTeX, qualcuno ha scritto persino un interprete BASIC, usando TeX.
      Bisogna solo mettere in conto un po’ di mal di testa…

      Ma non è il tuo caso: 🙂
      `\documentclass[a4paper,11pt,openright,twoside]{report}

      \usepackage[T1]{fontenc}
      \usepackage[utf8]{inputenc}

      \makeatletter
      \newcounter{porzione}
      \newcommand{\comando}[2]{%
      «#1»%
      \addtocounter{porzione}{1}%
      \@namedef{porzione\theporzione}{#2}}
      \newcommand{\stampa}[1]{\@nameuse{porzione#1}}
      \makeatother

      \begin{document}

      \comando{Primo ciao.}{Primo testo memorizzato.}
      \comando{Secondo ciao.}{Secondo testo memorizzato.}

      \section{Titolo section}

      1: \stampa{1}\\
      2: \stampa{2}

      \end{document}`

      Ciao,
      Antonio

    • #67226
      OldClaudio
      Partecipante
        Up
        0
        Down
        ::


        Be’, le scatole di TeX e LaTeX servono proprio a quello.

        Poi c’è il pacchetto fancyvrb che tra le altre cose permette [er esempio ci scirvere un esercizio e la sua soluzione in un unico ambiente, e poi la soluzione non viene stampata subito, ma viene memorizzata in un file tex, e richiamata per la stampa, per esempio, in una appendice destinata alle soluzioni degli esercizi. Documentazione per fancyvrb: texdoc fancyvrb

        Documentazione per le scatole: dal manuale di Lamport, a qualunque guida non elementare di LaTeX; un riassunto commentato della guida di Lamport è nell’appendice G della Guida GuIt (link qui sopra in “Documentazione”. Con le scatole TeX (per la verità identiche alle scatole LaTeX) ci sono diversi comandi in più che con LaTeX; quest’ultimo definisce una scatola con \newsavebox, la riempie con \savebox, la usa con \usebox.

        TeX definisce una scatola con \newbox, la riempie con \setbox, la usa con diversi comandi che fanno cose diverse, da \box che la svuota nel testo da comporre a \unhbox, \unvbox che la svuotano disinscatolando quello che c’era contenuto, \copybox che estrae il contenuto, senza svuotarla, \unhcopy e \unvcopy che estraggono senza dinsinscatolare, ad altri ancora più specializzati, come \vsplit e \lastbox con cui si possono fare giochetti di alta acrobazia senza rete. Documentazione: The TeXbook, TeX per l’impaziente, Appunti di programmazione in TeX e LaTeX, ecc.

      • #67227
        Up
        0
        Down
        ::

        OldClaudio” post=66227Be’, le scatole di TeX e LaTeX servono proprio a quello.

        Poi c’è il pacchetto fancyvrb che tra le altre cose permette [er esempio ci scirvere un esercizio e la sua soluzione in un unico ambiente, e poi la soluzione non viene stampata subito, ma viene memorizzata in un file tex, e richiamata per la stampa, per esempio, in una appendice destinata alle soluzioni degli esercizi. Documentazione per fancyvrb: texdoc fancyvrb

        Documentazione per le scatole: dal manuale di Lamport, a qualunque guida non elementare di LaTeX; un riassunto commentato della guida di Lamport è nell’appendice G della Guida GuIt (link qui sopra in “Documentazione”. Con le scatole TeX (per la verità identiche alle scatole LaTeX) ci sono diversi comandi in più che con LaTeX; quest’ultimo definisce una scatola con \newsavebox, la riempie con \savebox, la usa con \usebox.

        TeX definisce una scatola con \newbox, la riempie con \setbox, la usa con diversi comandi che fanno cose diverse, da \box che la svuota nel testo da comporre a \unhbox, \unvbox che la svuotano disinscatolando quello che c’era contenuto, \copybox che estrae il contenuto, senza svuotarla, \unhcopy e \unvcopy che estraggono senza dinsinscatolare, ad altri ancora più specializzati, come \vsplit e \lastbox con cui si possono fare giochetti di alta acrobazia senza rete. Documentazione: The TeXbook, TeX per l’impaziente, Appunti di programmazione in TeX e LaTeX, ecc.

        Grande!

        Ancora non ho studiato le scatole praticamente per niente, ma come posso ci metto mano. 😉

      • #67228
        Up
        0
        Down
        ::


        Ciao,

        un grazie mille sia ad Antonio che a Claudio! In questo preciso momento non posso provare a lavorare sul problema, ma appena posso lo farò (seguendo i vostri consigli, ovviamente).

        Ancora grazie e buona giornata,
        Marco.

      • #67229
        Up
        0
        Down
        ::

        Marco87″ post=66185Ciao a tutti,

        per prima cosa mi scuso per il titolo della discussione, ma non me n’è venuto uno migliore.

        Quello che mi piacerebbe fare è poter memorizzare una porzione di testo in una memoria, in modo da poterla stampare nel momento in cui desidero inserire nel mio documento quel pezzo, richiamando il contenuto di quella memoria.

        Cerco di spiegarmi meglio. Vorrei definire un comando che accetti diversi argomenti (tutti testuali), ma dove solo alcuni vengono stampati subito; gli altri voglio memorizzarli per poter stampare il loro contenuto in parti successive del documento. Faccio un esempio:
        `\documentclass[a4paper,11pt,openright,twoside]{report}

        \newcommand{\comando}[2]{«#1» metti #2 nella memoria “secondaPorzione1”}

        \begin{document}

        \comando{Ciao.}{Questo è il testo che voglio memorizzare.} %Qui deve essere stampato “«Ciao.»”

        \section{Titolo section}

        \stampa{secondaPorzione1} %Qui deve essere stampato “Questo è il testo che voglio memorizzare.”

        \end{document}`
        Ovviamente ogni volta che uso il nuovo comando “\comando” la variabile di memorizzazione deve cambiare; pensavo di far ciò mediante un contatore. Per il resto, si può fare? Sapete come farlo?

        Spero di essere stato sufficientemente chiaro. Se non avete capito, ditemelo che proverò a spiegarmi diversamente.

        Ciao e grazie,
        Marco.

        No, non sei stato sufficientemente chiaro. Vuoi provare a dare un esempio più esteso?

        Ciao
        Enrico

      • #67230
        Up
        0
        Down
        ::


        Ciao Enrico,

        dunque, sto provando proprio ora le soluzioni proposte da Antonio e da Claudio. Quello che volevo ottenere è esattamente quanto si ottiene con il codice proposto nella prima risposta di Antonio in questa discussione. Quel codice mi va proprio bene (proverò comunque anche con la soluzione proposta da Claudio).

        Quello che ho fatto è stato prendere il codice di Antonio e modificarlo affinché venisse memorizzato più di un argomento. Ora vorrei automatizzarlo ulteriormente, ma mi servirebbe conoscere l’uso della condizione if nel linguaggio TeX, e come implementarvi un ciclo. Forse però è il caso che lo chieda in una nuova discussione…

        Intanto grazie e ciao,
        Marco.

      • #67231
        OldClaudio
        Partecipante
          Up
          0
          Down
          ::


          Marco, capisco che documentari è più faticoso che non chiedere ad altri come si fa questa o quella cosa; il forum, in fondo è fatto per questo, ma…

          Allora se leggi gli Appunti di programmazione in TeX e LaTeX di Enrico; se leggi l’appendice G della GuidaGuIT, se leggi la documentazione del pacchetto ifthen (texdoc ifthen) hai tutte le risposte che cerchi. Sono tutti documenti accessibili con un click e non devi andare a cercare in giro sulla rete; hai già tutto quel che ti serve qui sul sito del GuIT oppure direttamente sul tuo PC o laptop.

        • #67232
          Up
          0
          Down
          ::


          Ciao Claudio,

          hai ragione, chiedo scusa. Con le documentazioni inglesi a volte faccio un po’ fatica a capire come fare. A volte proprio non trovo il punto dove viene spiegato quello che mi serve. In ogni caso, dalla prossima volta presterò più attenzione; anche perché parte della documentazione era in italiano (almeno gli Appunti di programmazione in TeX e LaTeX di Enrico, e l’appendice G della GuidaGuIT).

          Grazie ancora e buona giornata, 🙂
          Marco.

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

      Go to top