Einfärbung eines eigenen Codes mit listing Thema ist als GELÖST markiert

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


Lalira

Einfärbung eines eigenen Codes mit listing

Beitrag von Lalira »

Hallo,

ich habe einen Hänger bei der farblichen Code-Darstellung mit listing.
Vielleicht könnt ihr mir dabei helfen.

Unten ist ein Minimalbeispiel angeführt, das den Code in einem Rahmen darstellt.
Da es sich um ein kleineren Programm handelt, für das hier keine Sprache hinterlegt ist, wollte ich die Einfärbung selber vornehmen. Für die Standard-Anfänge wie bspw. xyz ist dies kein Problem. Bei den Kommentaren komme ich jedoch nicht zurecht.

In dem Programm werden Kommentare mit $ eingeleitet. Ich möchte gerne alles, was auf dieser Zeile hinter dem $ steht, blau einfärben. Das Zeichen selber einzufärben funktioniert ohne Probleme. Wenn ich jedoch die # -Zeichen bzw. die ganzen Wörter der Zeile einfärben will, funktioniert es nicht.

In der Doku konnte ich auch nicht das Richtige finden, bzw. hab es vielleicht überlesen. Könnt ihr mir vielleicht helfen? Wie kann ich die Kommentare komplett einfärben?

Danke vorab für eure Hilfe.

Grüße Lalira


\documentclass[oneside]{scrbook}
 
\usepackage[latin1]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[ngerman]{babel}
\usepackage{fancybox} 		
\usepackage{framed}		
\usepackage{color}		 

\usepackage{alltt}		
\usepackage{listings}		
\lstset{numbers=left, numberstyle=\tiny, stepnumber=1, numbersep=5pt,
	classoffset=1, morekeywords={$},keywordstyle=\color{blue},
	classoffset=0, morekeywords={xyz},keywordstyle=\color{red},
	frame=shadowbox, framexleftmargin=5mm, framexrightmargin=5mm, rulesepcolor=\color{white}}		

\begin{document}
	Dies hier ist ein Test zur Ausgabe eines Code-Ausschnittes.
	
\begin{lstlisting}									
$##################  	
$####### Test ######  				
$##################  				  
xyz abc 1200			$Fensterbreite wird definiert 	       
\end{lstlisting}

\end{document}

Epllus
Forum-Guru
Forum-Guru
Beiträge: 470
Registriert: So 23. Sep 2012, 17:31

Beitrag von Epllus »

Du hast „morecomment“ übersehen.
\documentclass[oneside]{scrbook} 
  
\usepackage[latin1]{inputenc} 
\usepackage[T1]{fontenc} 
\usepackage{lmodern} 
\usepackage[ngerman]{babel} 
\usepackage{fancybox}       
\usepackage{framed}       
\usepackage{color}       

\usepackage{alltt}       
\usepackage{listings}       
\lstset{numbers=left, numberstyle=\tiny, stepnumber=1, numbersep=5pt, 
   classoffset=1, morekeywords={$},keywordstyle=\color{blue}, 
   classoffset=0, morekeywords={xyz},keywordstyle=\color{red}, 
   frame=shadowbox, framexleftmargin=5mm, framexrightmargin=5mm, rulesepcolor=\color{white},
   ,morecomment=[l][\color{blue}]{$},}
          

\begin{document} 
   Dies hier ist ein Test zur Ausgabe eines Code-Ausschnittes. 
    
\begin{lstlisting}                           
$##################     
$####### Test ######               
$##################                 
xyz abc 1200         $Fensterbreite wird definiert           
\end{lstlisting} 

\end{document} 
 
Hoffe es hilft
Epllus

Lalira

Beitrag von Lalira »

Danke für die schnelle Hilfe. Das hatte ich wirklich übersehen.

Gibt es auch eine Variante bei der ich normale Kommentare mit $ blau einfärbe und in der Verbindung $# grün (bzw. alles ab den #) ? Ich bräuchte sozusagen eine Ausnahmeregel für den Befehl.
Wenn ich beide Varainten eingebe, wird alles nur blau entsprechend dem ersten Befehl von morecomment.
...
\lstset{numbers=left, numberstyle=\tiny, stepnumber=1, numbersep=5pt,
	classoffset=1, morekeywords={$},keywordstyle=\color{blue},
	classoffset=0, morekeywords={xyz},keywordstyle=\color{red},
	frame=shadowbox, framexleftmargin=5mm, framexrightmargin=5mm, rulesepcolor=\color{white},
	morecomment=[l][\color{blue}]{$},
	morecomment=[l][\color{green}]{\#}}
...
Probier ich es, den Befehl aufzuheben, wird es lustig. Mit den folgenden Befehl wird das $ in den Zeilen 1-3 blau und der Zeilenrest wird grün, aber der Kommentar in Zeile 4 $Fensterbreite... bleibt schwarz.
...
\lstset{numbers=left, numberstyle=\tiny, stepnumber=1, numbersep=5pt,
	classoffset=1, morekeywords={$},keywordstyle=\color{blue},
	classoffset=0, morekeywords={xyz},keywordstyle=\color{red},
	frame=shadowbox, framexleftmargin=5mm, framexrightmargin=5mm, rulesepcolor=\color{white},
	morecomment=[l][\color{blue}]{$},
	morecomment=[l][\color{green}]{\#},
	deletecomment=[l]{$}}
...
Kann ich die Kommentare denn unterscheiden? Bzw. dafür sorgen, dass der Befehl
morecomment=[l][\color{green}]{\#}
den anderen überschreibt?


Danke schonmal

Lalira

Beitrag von Lalira »

Danke nochmal,

mein letzter Eintrag kann ignoriert werden. Ich hab das Problem selber gelöst.
Indem ich einfach beide Zeichen kombiniere, funktioniert es. Ich hatte nur vergessen das \ an die entsprechende Stelle zu setzen und kam deswegen nie zur Lösung.

Also mit dem folgenden Code funktioniert es.
\lstset{numbers=left, numberstyle=\tiny, stepnumber=1, numbersep=5pt,
	classoffset=1, morekeywords={$},keywordstyle=\color{blue},
	classoffset=0, morekeywords={xyz},keywordstyle=\color{red},
	frame=shadowbox, framexleftmargin=5mm, framexrightmargin=5mm, rulesepcolor=\color{white},
	morecomment=[l][\color{blue}]{$},
	morecomment=[l][\color{green}]{$\#}}	
[/code]

Antworten