Neue Sprache mit Listings

Redefinition von Makros, Definition eigener Befehle sowie neuer Umgebungen


Jule_123
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Fr 12. Aug 2016, 14:31

Neue Sprache mit Listings

Beitrag von Jule_123 »

Hallo!
Ich bin gerade dabei meine Bachelorarbeit zu schreiben und brauche den Quellcode aus einem Stata do-File im Anhang.
Da Listings die Sprache Stata nicht kennt, habe ich sie mir selbst definiert und es klappt alles bis auf ein Detail.
In Stata werden variablenlisten mit einem $ begonnen und in blau geschrieben. Alles danach soll wieder in schwarz kommen.
$variablenliste und das danach
"$variablenliste" soll also in blau und "und das danach" in schwarz.
Bei mir macht es entweder immer alles in schwarz oder wenn was in blau angezeigt wird dann alles zwischen zwei dieser Zeichen $.
Wie kann ich einstellen, dass es nach dem $ zeichen nur ein einzelnes Wort in blau färbt und danach wieder schwarz.

Wäre wirklich sehr dankbar, wenn mir jemand weiterhelfen könnte.. Bin auch über Ideen, die ich noch ausprobieren kann sehr froh! :)

Liebe Grüße!

In den Anhang mach ich mal noch ein Beispiel wie ichs gerne haben würde und wie's bis jetzt aussieht.
Hier ist mein Quellcode:
\NeedsTeXFormat{LaTeX2e}
\documentclass[a4paper,12pt,twoside,openright,DIV=15,BCOR25mm]{scrbook}
\KOMAoptions{DIV=last}

\usepackage{listings}
\usepackage{xcolor}
\usepackage{fontspec}

\definecolor{darkgreen}{rgb}{0,0.55,0}
\definecolor{darkblue}{rgb}{0,0,0.55}
\definecolor{blue}{rgb}{0,0,1}
\definecolor{lightblue}{rgb}{0,0.5,0.5}
\definecolor{marron}{rgb}{0.58,0.08,0}

\lstdefinelanguage{Stata}{
morekeywords={generate, label, keep, if,
}, 
morekeywords=[2]{group, 
},
morecomment=[l]{//}, 
morestring=[b]",
morecomment=[n][keywordstyle9]{`}{'},
morestring=[b][\color{lightblue}]\$,
sensitive=true,
}

\lstdefinestyle{numbers}{
	numbers=left,
	stepnumber=1, 
	numberstyle=\tiny, 
	xleftmargin=2em
}

\lstdefinestyle{nonumbers}{
	numbers=none
}

\lstdefinestyle{stata-plain}{
	language=Stata, 
	basicstyle=\setmonofont{Consolas}\scriptsize\ttfamily,
}

\lstdefinestyle{stata-editor}{
	language=Stata, 
	basicstyle=\setmonofont{Consolas}\scriptsize\ttfamily, 
	keywordstyle={\color{darkblue}}, 
	keywordstyle=[2]{\color{blue}},
	keywordstyle=[9]{\color{lightblue}},
	stringstyle=\color{marron},
	commentstyle=\color{darkgreen},
}

\lstset{language=Stata, style=stata-plain, style=numbers, style=stata-editor, showstringspaces=false, breaklines, frame=single,
}

\begin{document}

\begin{lstlisting}
	//Comment 
	"String list" 
	`macro variable'
	generate label keep if 
	group(...)
	$exp_main something between $exp_traffic $exp_XRF
\end{lstlisting}
 
\end{document}
Dateianhänge
Ziel
Ziel
Example.JPG (12.81 KiB) 2468 mal betrachtet
aktuelles Aussehen
aktuelles Aussehen
Example2.JPG (13.39 KiB) 2433 mal betrachtet

sudo
Forum-Guru
Forum-Guru
Beiträge: 459
Registriert: Mi 3. Okt 2012, 11:32

Beitrag von sudo »

Ein vollständiges Minimalbeispiel (VM) zu erzeugen, ist gar nicht schwer und hilft ganz oft, Fehler selber zu finden. Ohne bekommt man selten gute Antworten. Anleitungen findest du z.B. im golatex Wiki auf TeXWelt oder minimalbeipiel.de
Außerdem hilft das Lesen dieser Seite, Fragen richtig zu stellen.

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2529
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Beitrag von Stefan Kottwitz »

Die einfache Variante von Boris (sudo's Link) funktioniert hier gut, markiert von $ bis zum folgenden Leerzeichen:
morecomment=[s][\color{lightblue}]{$}{\ },
Beim Cross-Post hatte ich auch was simples vorgeschlagen, einfach die keywords konkret zu definieren, wenn es nicht extrem viele sind:
morekeywords = [9]{$exp_main,$exp_traffic,$exp_XRF, ...}
Stefan

Jule_123
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Fr 12. Aug 2016, 14:31

Beitrag von Jule_123 »

Vielen Dank,
es hat funktioniert :)

Antworten