Anzeige:
Ergebnis 1 bis 5 von 5

Thema: keywords in matlabcode blau färben

  1. #1
    angelina86
    Gast

    Unhappy keywords in matlabcode blau färben

    Hallo zusammen!

    Ich benutze TeXnicCenter und möchte einen Matlabcode einfügen. Ich möchte, dass der Code so aussieht wie im Matlabfile.
    Mein Problem ist es Keywords (function,for,end,...) blau zu markieren, das funktioniert nicht!! Die bleiben einfach schwarz.
    Komischerweise klappt der Rest schon, also alle Kommentare und Strings richtig zu färben.
    Muss ich vielleicht die Keywords selbst anders definieren oder an einer anderen Stelle einfügen?
    Weiß jemand, was ich falsch mache? Ich bin für jede Hilfe sehr dankbar!

    Viele Grüße,
    angelina


    Mein header:

    Code:
    \documentclass[
    	pdftex,
    	a4paper,
    	oneside,
    	12pt,
    	halfparskip,
                  bibtotoc,
    	liststotoc,
    ]{scrbook}
    
    \definecolor{LinkColor}{rgb}{0,0,0.5}
    \definecolor{ListingBackground}{rgb}{0.85,0.85,0.85}
    \definecolor{green}{rgb}{0,1,0}
    \definecolor{colKeys}{rgb}{0,0,1}
    \definecolor{colIdentifier}{rgb}{0,0,0}
    \definecolor{colString}{rgb}{0,0.5,0}
    \definecolor{dkgreen}{rgb}{0,0.6,0}
    \definecolor{gray}{rgb}{0.5,0.5,0.5}
    
    \usepackage[savemem]{listings}
    \usepackage[usenames,dvipsnames]{color}
    \usepackage{listings,color}
    
    \lstloadlanguages{Matlab}
    \lstset{
       language=Matlab,   			
       keywords={function,for,end},
       float=hbp,
       basicstyle=\ttfamily\small,% Schriftart
       identifierstyle=\color{colIdentifier},
       keywordstyle=\color{colKeys},
       commentstyle=\color{dkgreen},
       stringstyle=\color{Violet},
       columns=flexible,
       tabsize=2,
       frame=single,				  
       numbers=left,					
       numberstyle=\tiny\color{gray},
       stepnumber=1,					
       numbersep=10pt,			
       extendedchars=true,	
       showspaces=false,			
       showstringspaces=false,
       breaklines=true,         
       breakautoindent=true,    
       backgroundcolor=\color{ListingBackground}}
    Mein Dokument:
    Code:
    \input{header}
    \begin{document}
        
    \begin{lstlisting}[language=Matlab]
    function [] = variation()
    
    % ****************************
    %  Kommentar
    % ****************************
    
     filenummer=10000000;
     zeile=1;
     fid=fopen(sprintf('%d.tsk', filenummer), 'w');
    
    for hh= 0:1000:2000
          zeile=zeile+1; 
    end
    
     fclose(fid);
     disp('...fertig!')
    \end{lstlisting}
    \end{document}

  2. #2
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Erstelle mal bitte beim nächsten mal nicht solche Fragmente. Hier ein Beispiel, wie es richtig funktioniert:

    Code:
    \documentclass[12pt]{scrreprt}
    
    
    \usepackage[usenames]{xcolor}
    \definecolor{LinkColor}{rgb}{0,0,0.5}
    \definecolor{ListingBackground}{rgb}{0.85,0.85,0.85}
    \definecolor{green}{rgb}{0,1,0}
    \definecolor{colKeys}{rgb}{0,0,1}
    \definecolor{colIdentifier}{rgb}{0,0,0}
    \definecolor{colString}{rgb}{0,0.5,0}
    \definecolor{dkgreen}{rgb}{0,0.6,0}
    \definecolor{gray}{rgb}{0.5,0.5,0.5}
    
    
    \usepackage{listings}
    \lstset{
       language=matlab,%	
    %    morekeywords={function,for,end},
       float=hbp,
       basicstyle=\ttfamily\small,% Schriftart
       identifierstyle=\color{colIdentifier},
       keywordstyle=\color{colKeys},
       commentstyle=\color{dkgreen},
       stringstyle=\color{violet},
       columns=flexible,
       tabsize=2,
       frame=single,				  
       numbers=left,					
       numberstyle=\tiny\color{gray},
       stepnumber=1,					
       numbersep=10pt,			
       extendedchars=true,	
       showspaces=false,			
       showstringspaces=false,
       breaklines=true,         
       breakautoindent=true,    
       backgroundcolor=\color{ListingBackground}}
    \begin{document}
    \begin{lstlisting}
    function [] = variation()
    
    % ****************************
    %  Kommentar
    % ****************************
    
     filenummer=10000000;
     zeile=1;
     fid=fopen(sprintf('%d.tsk', filenummer), 'w');
    
    for hh= 0:1000:2000
          zeile=zeile+1; 
    end
    
     fclose(fid);
     disp('...fertig!')
    \end{lstlisting}
    \end{document}
    Gruß
    Marco

  3. #3
    angelina86
    Gast

    Thumbs up Super, es klappt! Noch eine Verständnisfrage...

    Hallo Marco!

    Ok, mach ich!
    Ich danke dir vielmals!! Es funktioniert! Mann bin ich froh, das hat mir ganz schön Nerven gekostet!

    Eins würd ich gern noch wissen. Ich hab jez praktisch nirgendswo keywords definiert. Heißt, das, dass das listings package bei der Sprache Matlab gleich weiß was die keywords sind?
    Das heißt, wenn ich jez noch irgendwelche andren Wörter, die er nicht in seiner Liste hat, dann müsste ich nur morekeywords={...} schreiben?

    Vielen Dank nochmal!
    Viele Grüße, angelina

  4. #4
    Registrierter Benutzer Avatar von mechanicus
    Registriert seit
    10.07.2008
    Ort
    Hamburg
    Beiträge
    3.944
    Hi,

    Zitat Zitat von angelina86 Beitrag anzeigen
    Heißt, das, dass das listings package bei der Sprache Matlab gleich weiß was die keywords sind?
    Die Sprache matlab ist vordefiniert. Daher ist es richtig. Mit der Anweisung keywords hast du die vorhandenen Definitionen überschrieben.

    Zitat Zitat von angelina86 Beitrag anzeigen
    Das heißt, wenn ich jez noch irgendwelche andren Wörter, die er nicht in seiner Liste hat, dann müsste ich nur morekeywords={...} schreiben?
    Richtig. Hiermit erweiterst du die Liste.

    Gruß
    Marco

  5. #5
    angelina86
    Gast

    Smile Perfekt

    Hi Marco!

    Super, dann hab ich jetzt kapiert!

    Nochmal viiielen Dank gell!
    Viele Grüße,
    angelina

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •