PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : keywords in matlabcode blau färben



angelina86
30-12-2009, 23:09
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? :confused:
Weiß jemand, was ich falsch mache? Ich bin für jede Hilfe sehr dankbar!

Viele Grüße,
angelina


Mein header:


\documentclass[
pdftex,
a4paper,
oneside,
12pt,
halfparskip,
bibtotoc,
liststotoc,
]{scrbook}

\definecolor{LinkColor}{rgb}{0,0,0.5}
\definecolor{ListingBackground}{rgb}{0.85,0.85,0.8 5}
\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:


\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}

mechanicus
31-12-2009, 09:53
Erstelle mal bitte beim nächsten mal nicht solche Fragmente. Hier ein Beispiel, wie es richtig funktioniert:


\documentclass[12pt]{scrreprt}


\usepackage[usenames]{xcolor}
\definecolor{LinkColor}{rgb}{0,0,0.5}
\definecolor{ListingBackground}{rgb}{0.85,0.85,0.8 5}
\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

angelina86
31-12-2009, 10:35
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

mechanicus
31-12-2009, 11:36
Hi,


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.



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

angelina86
31-12-2009, 12:06
Hi Marco!

Super, dann hab ich jetzt kapiert! :)

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