Dialoghi in narrativa

  • Creatore
    Topic
  • #11667
    Up
    0
    Down
    ::


    Ciao a tutti,
    E permettetevi di ringraziarvi sin d’ora per il grandissimo servizio che rendete a tutti i neofiti di Latex. 🙂
    Veniamo al mio problema: sto cercando un modo per definire a livello logico l’elemento di testo “dialogo”; ossia vorrei creare un’ambiente, un comando o un qualsiasi altro tipo di marker che mi permetta di specificare quando una riga dell’elaborato è un dialogo fra personaggi in un testo di narrativa. Per ottenere il mio scopo per ora ho definito un comando siffatto:
    `\newcommand{\dia}[1]{\setlength{\origpar}{\parindent}\setlength{\parindent}{0cm}

    — #1

    \setlength{\parindent}{\origpar}}`
    Così facendo ottengo un risultato (soddisfacente) di questo tipo (non sapendo come altro fare, ho forzato il parindent inserendo dei puntini nel testo che segue):

    …Era una notte buia e tempestosa, proprio come da tradizione, quel mercoledì 4 Novembre. Il commissario Ulivi era di ritorno da una scena del crimine decisamente macabra, quando incontrò il suo vicino.
    — Cosa ci fa in giro a quest’ora?
    — Nulla.
    E poi non credo di doverle dare spiegazioni.
    …Il solito antipatico carattere di Ulivi.

    (Si, lo so: non si va a capo in questa maniera. E’ strumentale, per far capire il layout)
    Questa soluzione è per il momento accettabile, e sono in grado, se dovessi decidere di voler formattare i dialoghi in altra maniera, di cambiare la definizione di \dia.
    Ho però due domande; la prima: c’è una maniera più rapida per marcare i dialoghi, in modo che sia meno laboriosa la scrittura in Latex?
    La seconda: supponiamo che io voglia ottenere una formattazione simile a quella che ho qui descritto, ma facendo in modo che le righe di dialogo successive alla prima rientrino dove inizia il testo (e non sotto alla lineetta), così:

    — E tu, come hai detto che ti chiami? Asmodeus? Buffo nome, direi. Non era
    …forse il nome di un demone?

    In pratica, lasciando una colonna vuota sotto alla lineetta che indica il dialogo… Come potrei ottenere un effetto del genere?

    Grazie mille
    Marco

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

      Se fossi in te, darei un’occhiata al pacchetto dramatist. Non l’ho mai usato, ma l’abstract sembra promettente.

      The present package provides support for drama both in verse and in
      prose. The following facilities are given: two environments for typesetting
      dialogues in prose or in verse; new document divisions corresponding to
      acts and scenes; macros that control the appearance of characters and stage
      directions; and automatical generation of a dramatis personæ list.

      Ciao,
      L.

      Ciao, grazie per la segnalazione, gli darò un’occhiata, anche se dall’abstract mi sembra piuttosto orientato al typesetting di testi per teatro (dramas), più che per romanzi (novels).
      In ogni caso il mio interesse era anche e sopratutto didattico, vorrei capire come si potrebbe realizzare quella particolare formattazione in Latex.
      Grazie ancora comunque per l’indicazione!

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


        Se fossi in te, darei un’occhiata al pacchetto dramatist. Non l’ho mai usato, ma l’abstract sembra promettente.

        The present package provides support for drama both in verse and in
        prose. The following facilities are given: two environments for typesetting
        dialogues in prose or in verse; new document divisions corresponding to
        acts and scenes; macros that control the appearance of characters and stage
        directions; and automatical generation of a dramatis personæ list.

        Ciao,
        L.

      • #11670
        Up
        0
        Down
        ::

        Ciao a tutti,
        E permettetevi di ringraziarvi sin d’ora per il grandissimo servizio che rendete a tutti i neofiti di Latex. 🙂
        Veniamo al mio problema: sto cercando un modo per definire a livello logico l’elemento di testo “dialogo”; ossia vorrei creare un’ambiente, un comando o un qualsiasi altro tipo di marker che mi permetta di specificare quando una riga dell’elaborato è un dialogo fra personaggi in un testo di narrativa. Per ottenere il mio scopo per ora ho definito un comando siffatto:
        `\newcommand{\dia}[1]{\setlength{\origpar}{\parindent}\setlength{\parindent}{0cm}

        — #1

        \setlength{\parindent}{\origpar}}`
        Così facendo ottengo un risultato (soddisfacente) di questo tipo (non sapendo come altro fare, ho forzato il parindent inserendo dei puntini nel testo che segue):

        …Era una notte buia e tempestosa, proprio come da tradizione, quel mercoledì 4 Novembre. Il commissario Ulivi era di ritorno da una scena del crimine decisamente macabra, quando incontrò il suo vicino.
        — Cosa ci fa in giro a quest’ora?
        — Nulla.
        E poi non credo di doverle dare spiegazioni.
        …Il solito antipatico carattere di Ulivi.

        (Si, lo so: non si va a capo in questa maniera. E’ strumentale, per far capire il layout)
        Questa soluzione è per il momento accettabile, e sono in grado, se dovessi decidere di voler formattare i dialoghi in altra maniera, di cambiare la definizione di \dia.
        Ho però due domande; la prima: c’è una maniera più rapida per marcare i dialoghi, in modo che sia meno laboriosa la scrittura in Latex?
        La seconda: supponiamo che io voglia ottenere una formattazione simile a quella che ho qui descritto, ma facendo in modo che le righe di dialogo successive alla prima rientrino dove inizia il testo (e non sotto alla lineetta), così:

        — E tu, come hai detto che ti chiami? Asmodeus? Buffo nome, direi. Non era
        …forse il nome di un demone?

        In pratica, lasciando una colonna vuota sotto alla lineetta che indica il dialogo… Come potrei ottenere un effetto del genere?

        Grazie mille
        Marco

        Se nel tuo testo ci sono molti dialoghi, una sintassi del tipo
        `\dia{Frase}
        \dia{Frase]
        Testo
        \dia{Frase}
        …`
        è pesante e difficile da maneggiare per le troppe graffe di cui tenere conto. Non mi ricordo di alcun testo che adotti un formato come quello che desideri. Quelli che ho consultato e che usano la lineetta per introdurre i dialoghi, la piazzano subito dopo il rientro. Chi legge capisce che è una battuta di dialogo.

        In genere, preferisco le virgolette, alte o basse non importa. Ti do una soluzione, vedi tu se ti piace. Ogni battuta viene introdotta da \dia, senza alcun argomento.
        `\newcommand{\startdia}{—\kern3pt}
        \settowidth{\parindent}{\startdia}
        \newcommand{\dia}{\par\noindent\startdia\hangindent\parindent\hangafter1\relax}`
        Ricordati di separare sempre i paragrafi con righe vuote.

        Se volessi poi tornare al formato usuale, basterebbe commentare la riga in cui si modifica il rientro e definire
        `\newcommand{\dia}{\startdia}`
        Ciao
        Enrico

      • #11671
        Up
        0
        Down
        ::

        Se nel tuo testo ci sono molti dialoghi, una sintassi del tipo
        `\dia{Frase}
        \dia{Frase]
        Testo
        \dia{Frase}
        …`
        è pesante e difficile da maneggiare per le troppe graffe di cui tenere conto. Non mi ricordo di alcun testo che adotti un formato come quello che desideri. Quelli che ho consultato e che usano la lineetta per introdurre i dialoghi, la piazzano subito dopo il rientro. Chi legge capisce che è una battuta di dialogo.

        In genere, preferisco le virgolette, alte o basse non importa. Ti do una soluzione, vedi tu se ti piace. Ogni battuta viene introdotta da \dia, senza alcun argomento.
        `\newcommand{\startdia}{—\kern3pt}
        \settowidth{\parindent}{\startdia}
        \newcommand{\dia}{\par\noindent\startdia\hangindent\parindent\hangafter1\relax}`
        Ricordati di separare sempre i paragrafi con righe vuote.

        Se volessi poi tornare al formato usuale, basterebbe commentare la riga in cui si modifica il rientro e definire
        `\newcommand{\dia}{\startdia}`
        Ciao
        Enrico

        Infatti, è estremamente scomodo usare sempre le graffe, per questo mi chiedevo se ci fosse una soluzione alternativa. Quella che proponi tu in tal senso è perfetta. Devo solo capire come funziona! 🙂
        Per quanto riguarda la formattazione grafica, in diversi romanzi gialli l’ho incontrata, però senza il rientro delle linee che seguono la prima. Quella era solo una domanda “didattica”, per capire come funzionano le cose.
        Grazie mille!

      • #11672
        Up
        0
        Down
        ::

        Infatti, è estremamente scomodo usare sempre le graffe, per questo mi chiedevo se ci fosse una soluzione alternativa. Quella che proponi tu in tal senso è perfetta. Devo solo capire come funziona! 🙂
        Per quanto riguarda la formattazione grafica, in diversi romanzi gialli l’ho incontrata, però senza il rientro delle linee che seguono la prima. Quella era solo una domanda “didattica”, per capire come funzionano le cose.

        `\newcommand{\startdia}{—\kern3pt}
        \settowidth{\parindent}{\startdia}
        \newcommand{\dia}{\par\noindent\startdia\hangindent\parindent\hangafter1\relax}`

        Il primo comando dice come vogliamo sia la lineetta di introduzione dei dialoghi; siccome devo usare la stessa cosa in due punti distinti (secondo e terzo comando), ne definisco uno per essere sicuro di non introdurre differenze

        Il secondo comando assicura che il rientro è esattamente uguale alla dimensione della lineetta seguita dalla spaziatura, in modo che tutto sia allineato.

        Il terzo comando esegue una “fine paragrafo” (\par) con paragrafo successivo senza rientro (\noindent). Compone la lineetta del dialogo seguita da uno spazio; uso \kern e non \hskip (o \hspace in sintassi LaTeX) per evitare che questo spazio partecipi al possibile allargamento o restringimento degli spazi per la giustificazione.

        A questo punto viene la magia. A questo paragrafo viene applicata la seguente “forma”: ogni riga dopo la prima (\hangafter=1) viene rientrata di una dimensione pari al rientro usuale (\hangindent=\parindent). In queste istruzioni (primitive di TeX) il segno di uguale è opzionale, ma è bene far seguire il numero (1, in questo caso) con uno spazio o con \relax.

        Questa forma di paragrafo vale solo per il paragrafo in cui compaiono le istruzioni. Credo che esista qualche pacchetto LaTeX che fornisce lo stesso risultato in sintassi più aderente agli standard, ma non ho voglia di cercarlo.

        Ciao
        Enrico

      • #11673
        Up
        0
        Down
        ::


        Mi dispiace aver letto questa tua spiegazione solo ora. In effetti, ero andato a cercare il significato dei comandi e avevo già ricostruito quello tu hai molto gentilmente spiegato… Grazie!
        L’altro giorno mi sono però accorto che questo tipo di comando va bene quando tutto ciò che devo utilizzare può essere messo a inizio paragrafo… Supponiamo invece che io voglia ora indicare un dialogo non più con un:

        — Ciao, tutto bene?

        Ma con un:

        “Ciao, tutto bene?”

        In questo caso dovrei mettere anche delle virgolette di chiusura dopo il testo del paragrafo (lasciamo stare l’indentazione, supponiamo che sia standard). C’è un modo di farlo senza utilizzare un comando tipo \dia{testo} ma un comando come \dia testo?

        Grazie mille ancora

      • #11674
        Up
        0
        Down
        ::


        Uhm… Più che Latex, mi sa che mi devo imparare bene il Tex!
        Grazie infinite per la disponibilità!

      • #11675
        Up
        0
        Down
        ::

        Mi dispiace aver letto questa tua spiegazione solo ora. In effetti, ero andato a cercare il significato dei comandi e avevo già ricostruito quello tu hai molto gentilmente spiegato… Grazie!
        L’altro giorno mi sono però accorto che questo tipo di comando va bene quando tutto ciò che devo utilizzare può essere messo a inizio paragrafo… Supponiamo invece che io voglia ora indicare un dialogo non più con un:

        — Ciao, tutto bene?

        Ma con un:

        “Ciao, tutto bene?”

        In questo caso dovrei mettere anche delle virgolette di chiusura dopo il testo del paragrafo (lasciamo stare l’indentazione, supponiamo che sia standard). C’è un modo di farlo senza utilizzare un comando tipo \dia{testo} ma un comando come \dia testo?

        Non senza un “mark up” più dettagliato; per esempio: \dia … \edia o qualcosa di simile.

        Se sei stato previdente e le tue battute di dialogo hanno sempre una riga vuota che segue, puoi anche usare quella come delimitatore finale:
        `\def\dia{\par\begingroup\def\par{\unskip''\endgraf\endgroup}“}`
        Come funziona?

        (1) Il \par termina il paragrafo precedente;
        (2) inizio un gruppo, nel quale \par viene ridefinito, apro le virgolette;
        (3) il comando \par adesso: (a) elimina eventuali spazi; (b) compone le virgolette di chiusura; (c) comanda la fine paragrafo (\endgraf è un sinonimo di \par con il significato originale) (d) chiude il gruppo, in modo che \par riprenda il suo significato originale.

        Sarebbe anche possibile la definizione
        `\def\dia#1\par{“#1''\par}`
        che ha lo svantaggio di leggere tutta la battuta come argomento.

        Però, se hai battute che sono composte di più paragrafi, saresti nei pasticci; quindi meglio un approccio
        `\newcommand{\dia}{\par“}
        \newcommand{\edia}{\unskip''}

        \dia … \edia`
        Ciao
        Enrico

      • #11676
        Up
        0
        Down
        ::

        Uhm… Più che Latex, mi sa che mi devo imparare bene il Tex!

        Non necessariamente. Se devi fare cose non “standard”, è meglio prima di tutto analizzare ciò che ti serve e abbondare nel mark up piuttosto che stare scarsi. Poi c’è sempre il forum per avere consigli. 😀

        Ciao
        Enrico

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

    Go to top