
Estou tentando mostrar algum código SAS em um documento LaTeX. Para esse fim, quero usar uma linguagem lst personalizada. Consegui implementar tudo, menos as variáveis definidas pelo usuário que começam com um sinal "&". Cada palavra que começa com "&" deve ser impressa em negrito e azul, A MENOS que apareça em uma string ou comentário. No meu exemplo, estará escrito em negrito e azul o tempo todo. Outras palavras-chave não são enfatizadas em strings ou comentários. Você tem alguma idéia de por que ele não se comporta como deveria no meu exemplo? Alguma idéia de como consertar meu código?
Desde já, obrigado!
\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}