Keywords in einem C-Code-Listing einfärben

Antwort erstellen


Diese Frage dient dazu, das automatisierte Versenden von Formularen durch Spam-Bots zu verhindern.
Smilies
:D :) :( :o :shock: :? 8) :lol: :-x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen:

BBCode ist eingeschaltet
[img] ist eingeschaltet
[flash] ist ausgeschaltet
[url] ist eingeschaltet
Smilies sind eingeschaltet

Die letzten Beiträge des Themas

Ich habe die Datenschutzerklärung gelesen und bin damit einverstanden.

   

Wenn du eine Datei oder mehrere Dateien anhängen möchtest, gib die Details unten ein.

Ansicht erweitern Die letzten Beiträge des Themas: Keywords in einem C-Code-Listing einfärben

Keywords in einem C-Code-Listing einfärben

von xachse » Fr 24. Nov 2017, 22:54

Hallo Ihr Leute,

hätte da mal eine Frage zu Listings; speziel zu Listings mit Quellcode der Sprache C. Ich wollte mich farblich an den Editor "Kate" halten, weil ich den gewöhnt bin. Wie kann ich im folgenden Beispiel "return" schwarz und fett darstellen lassen? Außerdem sollten "\n" und "size_t" blau (bzw. cblau) sein. Hab schon mit google und der Forensuche gesucht, aber nur Lösungen mit dem "morekeywords"-Befehl gefunden. Wenn ich diese Keywords mit "morekeywords" einfärbe, dann färbt er automatisch alle anderen Keywords so ein. Das mit den ßß...ßß, ||...|| und @@...@@ zum einfärben der #include-Befehle und der h-Dateinamen ist nur eine Notlösung, geht es besser?

Hier ist mein Minimalbeispiel:
\documentclass{article}

\usepackage{xcolor}
\usepackage{inconsolata}
\usepackage{listings}

\definecolor{cblau}		{RGB}{  0, 87,174}
\definecolor{cgelb}		{RGB}{176,128,  0}
\definecolor{crot}		{RGB}{191,  3,  3}
\definecolor{cgruen}	{RGB}{  0,110, 40}
\definecolor{corange}	{RGB}{255, 85,  0}

\lstdefinestyle{ccode}{
	belowcaptionskip	=1\baselineskip,
	breaklines			=true,
	xleftmargin			=\parindent,
	language			=C,
	showstringspaces	=false,
	basicstyle			=\ttfamily,
	keywordstyle		=\color{cblau},
  	commentstyle		=\color{gray},
	identifierstyle		=\color{black},
	stringstyle			=\color{crot},
	moredelim			=[is][\color{cgelb}]{ßß}{ßß},
	moredelim			=[is][\color{corange}]{||}{||},
	moredelim			=[is][\color{cgruen}]{@@}{@@},
}

\lstset{
	numbers				=left,
	columns				=fullflexible,
	float,
	numberstyle			=\color{gray},
} 

\begin{document}

\begin{lstlisting}[language=C, style=ccode, caption={C-Code}]
@@#include@@||<stdio.h>||
@@#include@@||<stdlib.h>||
@@#include@@||<string.h>||

int main(){
    char wochentag[]="Freitag";

    int tag=ßß13ßß;
    char monat[]="Mai";
    int jahr=ßß1927ßß;
    char *string;
    const size_t kapazitaet=ßß100ßß;

    string=malloc(kapazitaet);

    snprintf(string, kapazitaet, "%s, der %d. %s %d\n", wochentag, tag, monat, jahr);
    printf("%s", string);

    free(string);

    return ßß0ßß;
}
\end{lstlisting}

\end{document}
Vielen Dank
xachse

Nach oben