Personalizzare ambiente listings (lunghezza riga e colori)

  • Creatore
    Topic
  • #80229
    Up
    0
    Down
    ::


    Ciao a tutti.
    Ho iniziato, con l’aiuto della breve guida “L’arte di scrivere codici con LaTeX”, ad inserire i codici nelle appendici della mia tesi.
    Nel preambolo, ho dato le istruzioni:
    `\usepackage{listings}
    \addto\captionsitalian{\renewcommand{\lstlistingname}{Codice}}
    \lstset{basicstyle=\small\ttfamily,
    language=C++,
    numbers=left,
    numberstyle=\tiny,
    tabsize=4,
    frame=single}`

    e funziona quasi tutto a meraviglia, a parte due comportamenti che non riesco a gestire.

    Il primo è dovuto al fatto che mi capita molto spesso di “sforare” i limiti del frame, sebbene io sia stato attento, nell’editor di testo in cui ho scritto i codici, a non andare oltre le 72 battute (limite spesso consigliato).
    Purtroppo, anche se ho impostato i caratteri come piccoli, non riesco a capire se sia possibile aumentare il numero di battute che possano rientrare nel frame… oppure ridurre ulteriormente la dimensione dei caratteri.

    Un secondo problema è relativo alla colorazione del codice.
    Mi piacerebbe vedere l’effetto grafico, per capire se mi “piace”.
    A tale scopo, ho aggiunto ad lstset le chiavi:
    `
    keywordstyle=\color{black}\bfseries,
    commentstyle=\color{darkgray},
    stringstyle=\color{black}
    `
    … ma o non mi colora nulla… oppure mi dà addirittura errore se inserisco nel codice C++ le direttive del precompilatore.

    Vi ringrazio in anticipo
    Ciao 🙂

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

      l3on4rdo” post=79429Ciao a tutti.
      Ho iniziato, con l’aiuto della breve guida “L’arte di scrivere codici con LaTeX”, ad inserire i codici nelle appendici della mia tesi.
      Nel preambolo, ho dato le istruzioni:
      `\usepackage{listings}
      \addto\captionsitalian{\renewcommand{\lstlistingname}{Codice}}
      \lstset{basicstyle=\small\ttfamily,
      language=C++,
      numbers=left,
      numberstyle=\tiny,
      tabsize=4,
      frame=single}`

      e funziona quasi tutto a meraviglia, a parte due comportamenti che non riesco a gestire.

      Il primo è dovuto al fatto che mi capita molto spesso di “sforare” i limiti del frame, sebbene io sia stato attento, nell’editor di testo in cui ho scritto i codici, a non andare oltre le 72 battute (limite spesso consigliato).
      Purtroppo, anche se ho impostato i caratteri come piccoli, non riesco a capire se sia possibile aumentare il numero di battute che possano rientrare nel frame… oppure ridurre ulteriormente la dimensione dei caratteri.

      Un secondo problema è relativo alla colorazione del codice.
      Mi piacerebbe vedere l’effetto grafico, per capire se mi “piace”.
      A tale scopo, ho aggiunto ad lstset le chiavi:
      `
      keywordstyle=\color{black}\bfseries,
      commentstyle=\color{darkgray},
      stringstyle=\color{black}
      `
      … ma o non mi colora nulla… oppure mi dà addirittura errore se inserisco nel codice C++ le direttive del precompilatore.

      Vi ringrazio in anticipo
      Ciao 🙂

      Problema numero 1: prova la chiave [tt]breaklines=true[/tt] (la trovi sul manuale – texdoc listings pagina 33). Per ridurre le dimensioni:
      `
      \normalfont
      \small
      \footnotesize
      \scriptsize
      \tiny
      ` in ordine di corpo decrescente. Vanno inserite nelle dichiarazioni di stile, vedi esempio successivo.

      Problema numero 2; prova qualcosa tipo:
      `
      \lstset{language=C++,
      basicstyle=\small\ttfamily,
      keywordstyle=\small\color{blue}\ttfamily,
      stringstyle=\small\color{red}\ttfamily,
      commentstyle=\small\color{green}\ttfamily,
      morecomment=[l][\small\color{magenta}]{\#}
      }`
      con un codice di esempio:
      `
      \begin{lstlisting}
      #include
      #include
      // A comment
      int main(void)
      {
      printf(“Hello World\n”);
      return 0;
      }
      \end{lstlisting}
      ` Il risultato dovrebbe essere così.

      Ciao
      Claudio

    • #80231
      Up
      0
      Down
      ::


      Grazie, ho iniziato ad usare il pacchetto ieri e non sono ancora molto pratico.
      Nel pomeriggio faccio le prove che mi hai indicato e ti faccio sapere.
      🙂

    • #80232
      Up
      0
      Down
      ::


      Bene, il problema relativo alla colorazione del codice si sta risolvendo.
      Non vedevo nessuna colorazione, sia perché non avevo “attivato” il pacchetto xcolor con l’opzione dvipsnames (perché nella lettura della guida, ieri, mi era sfuggito).
      Ora però sto notando che la colorazione non corrisponde a quello che io immaginavo.
      Ovvero, io pensavo che venissero colorate in automatico “tutte” le parole chiave del C++, per esempio. Più o meno come avviene in un editor.

    • #80233
      GKT
      Partecipante
        Up
        0
        Down
        ::

        l3on4rdo” post=79442Bene, il problema relativo alla colorazione del codice si sta risolvendo.
        Non vedevo nessuna colorazione, sia perché non avevo “attivato” il pacchetto xcolor con l’opzione dvipsnames (perché nella lettura della guida, ieri, mi era sfuggito).
        Ora però sto notando che la colorazione non corrisponde a quello che io immaginavo.
        Ovvero, io pensavo che venissero colorate in automatico “tutte” le parole chiave del C++, per esempio. Più o meno come avviene in un editor.

        Se alcune parole non vengono riconosciute e quindi colorate in automatico, devi aggiungerle a mano con comandi come [tt]morekeywords[/tt]: la guida di Listings fornisce esempi a sufficienza a questo proposito. C’è anche questo argomento di discussione (molto recente) sul forum.

        Lorenzo

      • #80234
        Up
        0
        Down
        ::


        Scusate se rispondo dopo tanto, ma sto lavorando proprio a questo documento.
        Perdonate la leggerezza di non aver fatto la ricerca. La guida “L’arte di scrivere codici con LaTeX” l’avevo letta. Pensavo, avendo letto che si può indicare il linguaggio, che le varie parole chiave fossero tutte riconosciute. Da qui ho ritenuto che fosse un problema “mio” e non ho pensato a fare una ricerca sul forum.
        Pertanto, per ulteriori chiarimenti magari faccio fede alla discussione indicata e chiedo lì.

        Al momento, però, non riesco ancora a gestire come vorrei i codici nel mio documento.
        Sono parecchi e non ne ho il controllo che vorrei.
        Magari devo solo approfondire l’argomento, però per esempio mi è capitato di leggere documenti (per esempio il Gapil) che presumo siano scritti in LaTeX e che, almeno a me, sembrano gestire le dimensioni del frame. Ovvero oltre a rimpicciolire la dimensione del carattere, rimpiccoliscono anche il frame… e di conseguenza il suo contenuto.
        Non so se sia fattibile o sia semplicemente un mio abbaglio.

      • #80235
        Up
        0
        Down
        ::


        Da quanto ho trovato nelle documentazioni, sembra che l’unico modo per evitare che le righe “sforino” sia quello di impostare breaklines=true
        Pensavo si potesse “giocare” con dimensioni del frame e dei caratteri, ma sembra proprio di no.

        Aspetto la conferma di qualcuno più istruito di me in merito (ci vuole poco, eh! 🙂 ) e poi considero il problema risolto.

        Ciao.

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

    Go to top