Risposte nei forum create
-
AutoreRisposte
-
::
Grazie mille per l’aiuto!
Con la tua soluzione si risolve il problema della colorazione sballata di altre parti del testo, ma nel mio caso spesso non è utilizzabile perché importo direttamente il codice sorgente senza fare il copia incolla sul documento LaTeX 🙁
Purtroppo rimane la differenza di colorazione tra il file incluso mediante apici (che usa giustamente la colorazione delle stringhe) e quello incluso mediante < >!
Sarebbe tutto più semplice se ci fosse un parametro del tipo: colora con questo colore quello che viene dopo questa parola. 8)
Purtroppo dopo aver riletto più volte la documentazione (in modo veloce ovviamente 😛 ) e aver cercato invano con Google penso di dovermi rassegnare! 🙁
::
Ecco il codice richiesto (spero ci sia tutto quello che ti serve)
`
\documentclass[10pt,% % corpo del font principale
a4paper,% % carta A4
twoside,openright% % fronte-retro (openany)
]{book}\usepackage[T1]{fontenc} % codifica dei font:
% NOTA BENE! richiede una distribuzione *completa*
% di LaTeX\usepackage[utf8]{inputenc} % codifica di input; anche [latin1] va bene
% NOTA BENE! va accordata con le preferenze
% dell'editor\usepackage{listings} % inglobare codici di programmazione
\usepackage[dvipsnames]{xcolor} % colori
% gestione delle lettere accentate per il pacchetto listings
\lstset{
literate={è}{{\`e}}1
{é}{{\'e}}1
{ì}{{\`i}}1
{à}{{\`a}}1
{ù}{{\`u}}1
{ò}{{\`o}}1
{À}{{\'A}}1
{È}{{\`E}}1
{É}{{\`E}}1
{Ì}{{\`I}}1
{Ò}{{\`o}}1
{Ù}{{\`U}}1
}% Impostazioni per C
\lstloadlanguages{C} % caricamento del linguaggio C\lstdefinestyle{c}{% % definizione di un nuovo stile per il C
language=C, % impostazione del linguaggio
basicstyle=\scriptsize \ttfamily,% % dimensione e stile del carattere di base
moredelim=[\color{purple}]{<}{>},
%moredelim=[\color{purple}]{\#include}{>}, % riga di prova
%moredelim=[\color{purple}]{\#include}{“}, % riga di prova
commentstyle=\color{OliveGreen} \itshape,% % dimensione e sitle dei commenti
%morekeywords={},% % aggiunta di parole chiave non riconosciute
keywordstyle=\color{RoyalBlue} \bfseries,% % dimensione e stile delle parole chiave
stringstyle =\color{red},% % dimensione e stile delle stringhe
showstringspaces=false,% % non segna gli spazi nelle stringhe
tabsize=4,% % dimensione della tabulazione
numbers=left,% % posizione numeri riga
stepnumber=1,% % passo dei numeri di riga
numberstyle=\tiny,% % stile dei numeri di riga
numbersep=10pt,% % distanza tra numeri di riga e listato
breaklines=true,% % mandare a capo le righe troppo lunghe
breakautoindent=true,% % indenta le righe spezzate
breakindent=30pt,% % punti di indentazione per le righe spezzate
frame=single,%
rulecolor=\color{black},%
captionpos=t% % posizione dell'etichetta del codice
}\begin{document}
\begin{lstlisting}[style=c]
/* Vorrei che il colore del file fosse di un colore diverso sia che sia
messo tra apici (simile alle stringhe, e quindi prende quel colore) sia
che sia messo tra < >. */
#include “pippo.h”
#include/* Nel caso non fosse possibile farlo mi accontenterei di colorarlo anche
come se fosse una stringa. Però ho notato questo problema, cioè se nel testo
incontra il simbolo < listings me lo colora come se fosse compreso tra < > */
for ( i = 0; i < 6; i ++) { /* Ha iniziato a colorare tutto il testo */ if (a = 0) { /* Se adesso utilizzo il carattere > smette di colorarlo */
a = 5;
stringa = “Ciao Mondo!”
}
}
\end{lstlisting}
\end{document}`
In pratica vorrei che “pippo.h” efossero dello stesso colore, ma a loro volta di colore diverso dalla stringa “Ciao Mondo!”
Per quanto riguarda “l’effetto collaterale” lo puoi osservare nel ciclo for dopo che ho utilizzato il simbolo <, e finisce all'interno del commento dopo aver utilizzato il simbolo >.All’interno della definizione del mio stile ci sono due righe commentate, ovvero
`%moredelim=[\color{purple}]{\#include}{>}, % riga di prova
%moredelim=[\color{purple}]{\#include}{“}, % riga di prova`
erano delle prove che avevo fatto, ma non hanno sortito l’effetto voluto! 🙁
::GKT” post=79405
Ho provato con il parametro morekeywords ma non sono riuscito ad ottenere il risultato sperato; ho provato anche a cercare sulla documentazione, ma sinceramente non so cosa cercare! 😳
Evidentemente devi aggiungere [tt]<[/tt] e [tt]>[/tt] come delimitatori. Cerca [tt]moredelimiters[/tt] nella guida di Listings.
Lorenzo
Ho provato a cercare moredelimiters, ma nel manuale c’è solo moredelim e penso tu ti riferissi a questo perché fa proprio quello che mi consigliavi.
Il punto è che questo comando fa in parte quello che volevo…
Mi spiego meglio, con questa opzione posso far colorare il testo all’interno dei delimitatori impostati, invece io volevo sapere se è possibile colorare solo “l’argomento” (se così lo possiamo definire) della direttiva include in modo da far risultare il colore del testo tra apici (e quello tra [tt]< >[/tt]) diverso dal colore utilizzato per le stringhe.Ah quasi dimenticavo… grazie per la risposta tempestiva! 😀
EDIT
Mi sono accorto adesso che utilizzando l’opzione in questo modo
`
moredelim=[\color{brown}]{<}{>},
`
all’interno della definizione del mio stile personale (vedi primo post) ottengo quest’effetto collaterale:

Al che mi domando, ma non dovrebbe colorare solo quello all’interno di [tt]< >[/tt] 😕 😕 😕 😕 😕
::
Ho nuovamente un “problema”, se così si può chiamare, con questo fantastico pacchetto! Dato che si tratta sempre di colorazione ho pensato di non aprire un nuovo thread, ma continuare a scrivere qui. Nel caso non sia corretto fatemelo sapere che provvedo ad aprirne un’altro!Ed ora veniamo all’insormontabile problema! 😆
Come già detto, nel documento che sto scrivendo ho del codice C da riportare.
Mi chiedevo, se possibile, come fare a colorare l’argomento che segue la direttiva #include di un colore particolare?
Per spiegarmi meglio allego anche qui delle immagini.Com’è:

Come vorrei che fosse:

Ho provato con il parametro morekeywords ma non sono riuscito ad ottenere il risultato sperato; ho provato anche a cercare sulla documentazione, ma sinceramente non so cosa cercare! 😳
Per la configurazione del pacchetto listings si può far sempre riferimento al codice che ho riportato nel primo post! 🙂
Grazie a tutti anticipatamente! 😉
-
AutoreRisposte