
Ich versuche, SAS-Code in einem LaTeX-Dokument anzuzeigen. Zu diesem Zweck möchte ich eine angepasste LST-Sprache verwenden. Ich habe es geschafft, alles zu implementieren, außer den benutzerdefinierten Variablen, die mit einem "&"-Zeichen beginnen. Jedes Wort, das mit "&" beginnt, sollte fett und blau gedruckt werden, AUSSER es erscheint in einer Zeichenfolge oder einem Kommentar. In meinem Beispiel wird es immer fett und blau geschrieben. Andere Schlüsselwörter werden in Zeichenfolgen oder Kommentaren nicht hervorgehoben. Haben Sie eine Idee, warum es sich in meinem Beispiel nicht so verhält, wie es sollte? Irgendwelche Ideen, wie ich meinen Code reparieren kann?
Dank im Voraus!
\usepackage{listings}
\usepackage{color}
\usepackage[svgnames]{xcolor}
\definecolor{spYellow}{HTML}{ADAD00}
% ---------------------------------------------------------------------
% SAS language definition
\lstdefinelanguage{SAS}{
sensitive=false,
alsoletter={\%\&},
%
% User variables
keywordsprefix={\&},
%
% Comments
morecomment=[f][\color{Green}\slshape][0]*,
morecomment=[s]{/*}{*/},
%
% Strings
morestring=[b]",
morestring=[d]',
%
% Datalines and cards
morecomment=[s][\itshape\color{spYellow}]{datalines;}{;},
morecomment=[s][\itshape\color{spYellow}]{cards;}{;},
%
% Distinct highlight for proc <proc>, data, run, quit
morecomment=[s][\bfseries\color{DarkBlue}]{proc\ }{\ },
morekeywords={keyword1},
morekeywords=[2]{
data ,proc ,run ,quit
},
%
% Macros
morekeywords=[3]{
\%include ,\%let
},
%
% Statements
morekeywords=[4]{libname}
}
% ---------------------------------------------------------------------
% SAS enhanced editor style
\providecommand{\textcolordummy}[2]{#2}
\lstalias{sas}{SAS}
\lstdefinestyle{sas-editor}{
language = SAS,
showstringspaces = false, % Don't underline spaces in strings
showspaces = false, % Don't underline spaces
breaklines = true, % automatic line b\color{Blue}\color{Blue}reaking
breakatwhitespace = true, % breaks only at white space.
basicstyle = \footnotesize\ttfamily,
tabsize = 4, % Tab size
lineskip = 1.5pt, % Sparing between lines of code
numbers = left,
commentstyle = \color{black!50}\itshape \let\textcolor\textcolordummy,
%
% User variables
keywordstyle = {\bfseries\color{NavyBlue}},
%
% Distinct highlight for proc <proc>, data, run, quit
keywordstyle = [2]{\bfseries\color{DarkBlue}},
%
% Built-in macro functions
keywordstyle = [3]{\color{Blue}},
%
% Statements
keywordstyle = [4]{\color{Blue}},
%
% Strings and comments
stringstyle = \color{Purple},
commentstyle = \color{Green}\slshape
}
\lstset{style=sas-editor}
\begin{document}
Text before the code.
\renewcommand{\ttdefault}{pcr}
\begin{lstlisting}%[language=SAS]
/******************Macros************************/
/* Compile all macros */
%include "&incodes.keyword1.makro1.sas";
%include '&incodes.keyword1.makro2.sas';
/*%include "&incodes.keyword1.makro3.sas";*/
/*%include &incodes.keyword1.makro4.sas;*/
%include &incodes.keyword1.makro5.sas;
\end{lstlisting}
Some text after the code.
\end{document}