PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Kein farbiger Code bei listings?



schlaefer2
26-08-2005, 15:49
Ich habe noch ein Problem bei den listings.
Inzwischen habe ich eine eigene Programmiersprache über lstdefinelanguage definiert.
Nun habe ich aber Probleme, die Kommentare andersfarbig darzustellen. Über die \commentstyle option kann ich leider nur die Schriftart ändern, aber nicht die Farbe.

Nachfolgend mal ein Beispiel:

\documentclass[a4paper,ngerman]{article}
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{listings}
\usepackage{color}
\definecolor{mygrau}{rgb}{1,.1,.1}
\lstdefinelanguage{PReS}
{morekeywords={ALPHA,NUMERIC,RECORD,INTERNAL,INITI ALIZE,$PDL,
START,MODEL,DELETE,SPOOL,COLOR,GOSUB,AND,OR,SETMAR GIN,SETXY,
LITREC,FONT,TRFREAD,REPLACE,CALCULATE,SETLINEINC,A PPEND,
WORDWRAP,MOVE,LOADGRAPHIC,PREVIEW,PAGEEND,SUBROUTI NE,
RETURN,IF,ELSE},%
sensitive,%
morecomment=[l];%
}

\begin{document}
\lstset{language=PReS, basicstyle=\ttfamily, commentstyle=\textit, showstringspaces=false}
\lstset{commentstyle=\color{mygrau}}
\linewidth=10pt
\lstinputlisting{/home/jana/privat/druck/doku_MPReS/prog_kommentare.c}
\end{document}

und eine entsprechende Input-Datei:

IF($First){ ; --> beim ersten Durchlauf
IF($PDL=7){ ; --> ist PS eingestellt
DELETE "test3.ps" ; --> lösche die alte Datei "test3.ps"
SPOOL "test3.ps",0 ; --> erzeuge neue Datei "test3.ps"
COLOR CMYK ; --> Farbschema CMYK
}

Was mache ich falsch. Theoretisch müsste die Farbe doch angezeigt werden? Ich hab schon gegoogelt und in der Doku zum listings-paket nachgesehen, aber nichts gefunden.

Bitte helft mir.

Grüße Jana

countbela666
26-08-2005, 16:25
Dieses Problem hat mir auch schon schlaflose Nächte bereitet. Ich habe keine Möglichkeit gefunden, ganze Teile des Listings einzufärben. Ich habe dann alle Worte des Kommentars in eine emph-Liste aufgenommen, für die ich dann als emphstyle die entsprechende Farbe gewählt habe. Problem dabei ist, dass evtl. Satzzeichen und somit auch den Kommentar einleitende Token nicht hervorgehoben werden.

Grüße,
Marcel

schlaefer2
26-08-2005, 21:20
Finde ich leider etwas Zeitaufwendig, alles als emph zu schreiben, gibt es keine einfachere Lösung?

Im Zweifel muss ich es wohl so machen, aber ich bin für jede andere Lösung dankbar.

Irgendwo muss doch der Fehler liegen? Ist bestimmt irgendwas ganz simples.

Bitte helft mir.

Viele Grüße
Jana

edico
27-08-2005, 08:25
Vermutlich ueberlese ich etwas ... aber das klappt doch, die Kommentare farblich abzusetzen!?
Ich habe kleine Anpassungen auf mein System vorgenommen:
...
\documentclass[12pt]{article}
%\usepackage{times} % Quatsch, s. ltabu.pdf
%\usepackage[T1]{fontenc}
\usepackage[latin1]{inputenc}
\usepackage{listings}
\usepackage{color}
\definecolor{mygrau}{rgb}{1,.1,.1} % sehr farbiges Grau ;-)
\definecolor{comcol}{rgb}{0.6,0.6,0.6}

\lstdefinelanguage{PReS}
{morekeywords={ALPHA,NUMERIC,RECORD,INTERNAL,INITI ALIZE,$PDL,
START,MODEL,DELETE,SPOOL,COLOR,GOSUB,AND,OR,SETMAR GIN,SETXY,
LITREC,FONT,TRFREAD,REPLACE,CALCULATE,SETLINEINC,A PPEND,
WORDWRAP,MOVE,LOADGRAPHIC,PREVIEW,PAGEEND,SUBROUTI NE,
RETURN,IF,ELSE},%
sensitive,%
morecomment=[l];%
}

\begin{document}
\lstset{language=PReS,
basicstyle=\ttfamily,
% commentstyle=\textit,
% showstringspaces=false,
% commentstyle=\color{mygrau}
}
\lstset{commentstyle=\textit,commentstyle=\color{c omcol}}
%\linewidth=10pt % was ist das denn?

%\lstinputlisting{/home/jana/privat/druck/doku_MPReS/prog_kommentare.c}
\footnotesize
\begin{lstlisting}[]{} %[frame=trbl]{}
IF($First){ ; --> beim ersten Durchlauf :
IF($PDL=7){ ; --> PS eingestellt
DELETE "test3.ps" ; --> loesche alte Datei "test3.ps"
SPOOL "test3.ps",0 ; --> erzeuge neue Datei "test3.ps"
COLOR CMYK ; --> Farbschema CMYK
}
\end{lstlisting}
\end{document}
...
edico

countbela666
27-08-2005, 10:34
Gibt's doch nicht. Hab letztes Jahr wirklich ewig gesessen, um die Kommentare einzufärben und hab dann schließlich doch die von mir oben beschriebene russische Variante genommen.

Bei einem Versuch eben hat es natürlich funktioniert, fragt mich aber bitte nicht, was ich damals falsch gemacht habe. :(
Vielen Dank jedenfalls, edico (und nein, du hast nichts überlesen :D ).

Grüße,
Marcel

schlaefer2
29-08-2005, 09:40
Mit dem Code klappt es endlich, wenigstens mit der Farbe, wenn ich es mir als pdf ansehe. Als DVI klappt es einfach nicht. Ich weiss auch nicht warum. Lag es an den Paketen?

Wenn ich nun "commentstyle=\color{mygrau} " in ein extra \lstset{} einfüge, wird es aber nicht mehr kursiv. Er nimmt einfach nicht beide Befehle (\color und \textit) . Je nachdem, welcher Befehl als letzter steht, dieser wird ausgeführt und der andere scheinbar damit überschrieben. Also wenn als erster Befehl die Farbänderung steht, und danach das es kursiv werden soll, werden die Kommentare nur kursiv gesetzt und nicht farbig und umgekehrt. :confused:

Irgendetwas stimmt doch da nicht? Hat jemand eine Idee, was ich noch machen kann? Ich brauche es unbedingt kursiv UND farbig.

Vielen Dank für eure Hilfe.
Jana

countbela666
29-08-2005, 10:04
Ich weiß nicht, was du anders machst, aber folgendes Minimalbeispiel funktioniert (sowohl nach PDF als auch nach DVI):

\documentclass[12pt,a4paper]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage{listings}
\usepackage{color}
\renewcommand{\ttdefault}{pcr} %typewriter nach Courier umstellen, damit \textbf funzt
\begin{document}
\lstset{language=C,%
basicstyle=\ttfamily,%
keywordstyle=\color{blue}\textbf,%
commentstyle=\color{red}\textit}
\begin{lstlisting}
case OFF_Mode:
break;
// einschalten und initialisieren des Cypress Bausteins
case ON_Mode:
break;
\end{lstlisting}
\end{document}

Grüße,
Marcel

schlaefer2
29-08-2005, 10:14
SUPER!!! Es funktioniert! Ich weiss zwar nicht warum er die Befehle einzeln nicht wollte, aber wenn ich sie so hintereinanderschreibe geht es super. Ich kann es mir als dvi und als pdf ansehen. :D

Vielen Dank an alle.

Grüße JANA