listings: moreastring e stringhe di tipo b

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


      Ciao a tutti. Mi resta da risolvere un ultimo dubbio relativo alle stringhe di tipo b, introdotte con la chiave morestring del pacchetto listings. Da quello che ho capito:

      I tipo più comune per le stringhe è b, con un delimitatore che inizia e conclude la stringa; se dentro una stringa c’è bisogno di scrivere il delimitatore (caso raro, ma possibile), si può usare il carattere di barra rovescia backslash) per scrivere il delimitatore senza che venga conclusa la stringa.

      1. Ho capito bene?

      In effetti, il seguente codice funziona, nel senso che scrivendo
      `\”`
      dentro ad una stringa, la stringa prosegue.
      `\documentclass{article}
      \usepackage[italian]{babel}
      \usepackage[applemac]{inputenc}
      \usepackage{listings}
      \usepackage{xcolor}

      \lstdefinelanguage{rock}
      {morekeywords=%
      {one,two,three,four,five,six,seven,eight,
      nine,ten,eleven,twelve,o,clock,rock,around,the,tonight},
      morecomment=[l][\color{green}]{//},
      morecomment=[\color{green}]{/*}{*/},
      morestring=[\color{red}]”}

      \lstset{language=rock}

      \begin{document}
      \begin{lstlisting}
      Parole chiave: one, two, …
      “Una str\”inga” Del testo
      // Una riga di commento
      /*Un commento*/ Del testo
      \end{lstlisting}
      \end{document}`
      2. Tuttavia mi chiedo se sia davveo utile una possibilità come la precedente. Se all’interno di una stringa ci fosse bisogno di inserire il simbolo “, non credo si vorrebbe che esso fosse preceduto dalla barra rovescia. In altre parole, troverei più logico che il carattere di barra rovescia non fosse visualizzato nell’output finale (un po’ come accade con i delimitatori di tipo i, definibili con moredelim).

      C’è qualcosa che mi sfugge… 🙄

      Grazie mille,
      L.

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


        Penso che dipenda dal linguaggio, inquelli che conosco (C e Python) la sintassi per introdurre il carattere “, delimitatore di stringa, all’interno di una stringa è proprio quella usata da listings, per cui la barra rovescia deve comparire nel listato.
        Ad esempio il codice C
        `printf(“Ciao \”mondo\””);`scrive nello standard output il testo:
        Ciao “mondo”
        così come in Python`print “Ciao \”mondo\””`
        Ciao
        Matteo

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

    Go to top