Listings: evidenzia caratteri (<,>,/) e parole con tra

  • Creatore
    Topic
  • #45306
    Up
    0
    Down
    ::


    Ciao a tutti,
    avrei un paio di domande in merito alla formattazione dei codici con listings.

    Devo aiutare una persona a rendere i codici che inserisce nei suoi documenti LaTeX nel modo che più si avvicina alle sue aspettative. La sintassi in questione non è standard ma mescola le caratteristiche di diversi altri linguaggi: in pratica, la formattazione va definita a mano con \lstset.

    Potete farvi un’idea componendo il seguente sorgente minimale:

    `\documentclass{article}

    \usepackage{xcolor}
    \definecolor{arancione}{RGB}{246,138,76}
    \definecolor{blu}{RGB}{35,60,189}
    \definecolor{celeste}{RGB}{0,102,214}
    \definecolor{grigio}{gray}{.8}
    \definecolor{rosso}{RGB}{158,51,0}
    \definecolor{verde}{RGB}{0,100,0}

    \usepackage{listings}
    \lstset{
    emph={annotation,description,execute,match,remove-element},
    emphstyle=\color{blu},
    emph={[2]for,keep-content,select},
    emphstyle={[2]\color{arancione}},
    emph={[3]xsl:apply-templates},
    emphstyle={[3]\color{celeste}},
    basicstyle=\ttfamily,
    morestring=“,
    stringstyle=\color{rosso},
    breaklines}

    \begin{document}

    \begin{lstlisting}

    remove duplicate links #10311
    parent::dd and ancestor::div[@dojotype='dijit.layout.ContentPane']





    \end{lstlisting}

    \end{document}`
    Ecco le domande:

    1. è possibile inserire nell’elenco di “parole” da enfatizzare anche singoli caratteri (esempio: si vorrebbero rendere i caratteri < (minore), > (maggiore) e / (slash) in blu (emph), mentre = (l’uguale) dovrebbe essere colorato di arancione (emph[2]))?

    2. similmente, come inserire nell’elenco delle “parole” da enfatizzare delle stringhe che contengono trattino o due punti (esempio: remove-element in blu (emph), keep-content in arancione (emph[2]) e xsl:apply-templates in celeste (emph[3]))? Come si nota, inserendole direttamente come ho fatto io, le cose non funzionano.

    Nota importante: in quest’ultimo caso, mi rendo conto che si potrebbero inserire nell’elenco le parole “spezzate” (esempio: remove,element in luogo di remove-element), ma in quest’ultimo caso (a parte che il trattino intermedio resterebbe comunque nero) si colorerebbe di blu anche la parola “remove” (come in “remove duplicate links”), che dovrebbe rimanere nera.

    Spero di essermi spiegato in modo sufficientemente chiaro.

    Non ho trovato nulla di simile sul forum. Qualcuno si è già imbattuto in questo tipo di problema?

    Grazie e a presto.

  • Devi essere connesso per rispondere a questo topic.

Go to top