[Pharo-project] Smalltalk syntax highlighting for Latex
Hi guys. I know that: a) for papers we usually write code in black and white and b) even when we may want colors like books or thesis, we still may not want to add colors. Anyway, for my thesis, I do want to make the code a little bit nicer and so I did some Smalltalk syntax highlighting with listings package. Not sure if this would be helpful for someone else, but just in case, I paste at the end the code. Basically, I can detect (and therefore, choose a color/style): globals/classes (start with uppercase), keywords, comments, strings, symbols and numbers. I also attach an screenshot. Cheers btw, thanks to Lukas and Luc for their help. % Source Code \usepackage{color} \usepackage{textcomp} \usepackage{listings} % \usepackage{needspace} % \usepackage{ulem} \definecolor{source}{gray}{0.95} % my comment style \newcommand{\myCommentStyle}[1]{{\footnotesize\ttfamily\itshape\color{gray!100!white} #1}} % my string style \newcommand{\myStringStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}} % my symbol style \newcommand{\mySymbolStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}} % my keyword style \newcommand{\myKeywordStyle}[1]{{\footnotesize\ttfamily\color{green!70!black} #1}} % my global style \newcommand{\myGlobalStyle}[1]{{\footnotesize\ttfamily\color{blue!100!black} #1}} % my number style \newcommand{\myNumberStyle}[1]{{\footnotesize\ttfamily\color{brown!100!black} #1}} \lstset{ language={}, % characters tabsize=3, escapechar={!}, keepspaces=true, breaklines=true, alsoletter={\#}, breakautoindent=true, columns=fullflexible, showstringspaces=false, % background frame=single, aboveskip=1em, % automatic space before framerule=0pt, basicstyle=\footnotesize\ttfamily\color{black}, keywordstyle=\myKeywordStyle,% keyword style commentstyle=\myCommentStyle,% comment style frame=single,% backgroundcolor=\color{source}, % numbering numbersep=5pt, numberstyle=\myNumberStyle, numberfirstline=true, % caption captionpos=b, % formatting (html) moredelim=[is][\textbf]{<b>}{</b>}, moredelim=[is][\textit]{<i>}{</i>}, moredelim=[is][\uline]{<u>}{</u>}, moredelim=[is][\color{red}\uwave]{<wave>}{</wave>}, moredelim=[is][\color{red}\sout]{<del>}{</del>}, moredelim=[is][\color{blue}\uline]{<ins>}{</ins>}, % smalltalk stuff morecomment=[s][\myCommentStyle]{"}{"}, % morecomment=[s][\myvs]{|}{|}, morestring=[b][\myStringStyle]', moredelim=[is][]{<sel>}{</sel>}, moredelim=[is][]{<rcv>}{</rcv>}, moredelim=[is][\itshape]{<symb>}{</symb>}, moredelim=[is][\scshape]{<class>}{</class>}, morekeywords={true,false,nil,self,super,thisContext}, identifierstyle=\idstyle, } \makeatletter \newcommand*\idstyle[1]{% \expandafter\id@style\the\lst@token{#1}\relax% } \def\id@style#1#2\relax{% \ifnum\pdfstrcmp{#1}{\#}=0% % this is a symbol \mySymbolStyle{\the\lst@token}% \else% \edef\tempa{\uccode`#1}% \edef\tempb{`#1}% \ifnum\tempa=\tempb% % this is a global \myGlobalStyle{\the\lst@token}% \else% \the\lst@token% \fi% \fi% } \makeatother \lstset{literate=% *{0}{{{\myNumberStyle{0}}}}1 {1}{{{\myNumberStyle{1}}}}1 {2}{{{\myNumberStyle{2}}}}1 {3}{{{\myNumberStyle{3}}}}1 {4}{{{\myNumberStyle{4}}}}1 {5}{{{\myNumberStyle{5}}}}1 {6}{{{\myNumberStyle{6}}}}1 {7}{{{\myNumberStyle{7}}}}1 {8}{{{\myNumberStyle{8}}}}1 {9}{{{\myNumberStyle{9}}}}1 } %\newcommand{\ct}{\lstinline[backgroundcolor=\color{white}]} \newcommand{\needlines}[1]{\Needspace{#1\baselineskip}} \newcommand{\lct}{\texttt} \lstnewenvironment{code}{% \lstset{% % frame=lines, frame=single, framerule=0pt, mathescape=false } }{} \newenvironment{codeNonSmalltalk} {\begin{alltt}\sffamily} {\end{alltt}\normalsize} -- Mariano http://marianopeck.wordpress.com
Lyx on Linux helps on Latex formatting in a WYSIWYG mode.. On Fri, Jun 15, 2012 at 2:07 PM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Hi guys. I know that: a) for papers we usually write code in black and white and b) even when we may want colors like books or thesis, we still may not want to add colors. Anyway, for my thesis, I do want to make the code a little bit nicer and so I did some Smalltalk syntax highlighting with listings package. Not sure if this would be helpful for someone else, but just in case, I paste at the end the code. Basically, I can detect (and therefore, choose a color/style): globals/classes (start with uppercase), keywords, comments, strings, symbols and numbers. I also attach an screenshot.
Cheers
btw, thanks to Lukas and Luc for their help.
% Source Code \usepackage{color} \usepackage{textcomp} \usepackage{listings} % \usepackage{needspace} % \usepackage{ulem}
\definecolor{source}{gray}{0.95}
% my comment style \newcommand{\myCommentStyle}[1]{{\footnotesize\ttfamily\itshape\color{gray!100!white} #1}}
% my string style \newcommand{\myStringStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}}
% my symbol style \newcommand{\mySymbolStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}}
% my keyword style \newcommand{\myKeywordStyle}[1]{{\footnotesize\ttfamily\color{green!70!black} #1}}
% my global style \newcommand{\myGlobalStyle}[1]{{\footnotesize\ttfamily\color{blue!100!black} #1}}
% my number style \newcommand{\myNumberStyle}[1]{{\footnotesize\ttfamily\color{brown!100!black} #1}}
\lstset{ language={}, % characters tabsize=3, escapechar={!}, keepspaces=true, breaklines=true, alsoletter={\#}, breakautoindent=true, columns=fullflexible, showstringspaces=false, % background frame=single, aboveskip=1em, % automatic space before framerule=0pt, basicstyle=\footnotesize\ttfamily\color{black}, keywordstyle=\myKeywordStyle,% keyword style commentstyle=\myCommentStyle,% comment style frame=single,% backgroundcolor=\color{source}, % numbering numbersep=5pt, numberstyle=\myNumberStyle, numberfirstline=true, % caption captionpos=b, % formatting (html) moredelim=[is][\textbf]{<b>}{</b>}, moredelim=[is][\textit]{<i>}{</i>}, moredelim=[is][\uline]{<u>}{</u>}, moredelim=[is][\color{red}\uwave]{<wave>}{</wave>}, moredelim=[is][\color{red}\sout]{<del>}{</del>}, moredelim=[is][\color{blue}\uline]{<ins>}{</ins>}, % smalltalk stuff morecomment=[s][\myCommentStyle]{"}{"}, % morecomment=[s][\myvs]{|}{|}, morestring=[b][\myStringStyle]', moredelim=[is][]{<sel>}{</sel>}, moredelim=[is][]{<rcv>}{</rcv>}, moredelim=[is][\itshape]{<symb>}{</symb>}, moredelim=[is][\scshape]{<class>}{</class>}, morekeywords={true,false,nil,self,super,thisContext}, identifierstyle=\idstyle, }
\makeatletter \newcommand*\idstyle[1]{% \expandafter\id@style\the\lst@token{#1}\relax% } \def\id@style#1#2\relax{% \ifnum\pdfstrcmp{#1}{\#}=0% % this is a symbol \mySymbolStyle{\the\lst@token}% \else% \edef\tempa{\uccode`#1}% \edef\tempb{`#1}% \ifnum\tempa=\tempb% % this is a global \myGlobalStyle{\the\lst@token}% \else% \the\lst@token% \fi% \fi% } \makeatother
\lstset{literate=% *{0}{{{\myNumberStyle{0}}}}1 {1}{{{\myNumberStyle{1}}}}1 {2}{{{\myNumberStyle{2}}}}1 {3}{{{\myNumberStyle{3}}}}1 {4}{{{\myNumberStyle{4}}}}1 {5}{{{\myNumberStyle{5}}}}1 {6}{{{\myNumberStyle{6}}}}1 {7}{{{\myNumberStyle{7}}}}1 {8}{{{\myNumberStyle{8}}}}1 {9}{{{\myNumberStyle{9}}}}1 }
%\newcommand{\ct}{\lstinline[backgroundcolor=\color{white}]} \newcommand{\needlines}[1]{\Needspace{#1\baselineskip}} \newcommand{\lct}{\texttt}
\lstnewenvironment{code}{% \lstset{% % frame=lines, frame=single, framerule=0pt, mathescape=false } }{}
\newenvironment{codeNonSmalltalk} {\begin{alltt}\sffamily} {\end{alltt}\normalsize}
-- Mariano http://marianopeck.wordpress.com
+1 for lyx 2012/6/15 S Krish <krishnamachari.sudhakar@gmail.com>
Lyx on Linux helps on Latex formatting in a WYSIWYG mode..
On Fri, Jun 15, 2012 at 2:07 PM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Hi guys. I know that: a) for papers we usually write code in black and white and b) even when we may want colors like books or thesis, we still may not want to add colors. Anyway, for my thesis, I do want to make the code a little bit nicer and so I did some Smalltalk syntax highlighting with listings package. Not sure if this would be helpful for someone else, but just in case, I paste at the end the code. Basically, I can detect (and therefore, choose a color/style): globals/classes (start with uppercase), keywords, comments, strings, symbols and numbers. I also attach an screenshot.
Cheers
btw, thanks to Lukas and Luc for their help.
% Source Code \usepackage{color} \usepackage{textcomp} \usepackage{listings} % \usepackage{needspace} % \usepackage{ulem}
\definecolor{source}{gray}{0.95}
% my comment style \newcommand{\myCommentStyle}[1]{{\footnotesize\ttfamily\itshape\color{gray!100!white} #1}}
% my string style \newcommand{\myStringStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}}
% my symbol style \newcommand{\mySymbolStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}}
% my keyword style \newcommand{\myKeywordStyle}[1]{{\footnotesize\ttfamily\color{green!70!black} #1}}
% my global style \newcommand{\myGlobalStyle}[1]{{\footnotesize\ttfamily\color{blue!100!black} #1}}
% my number style \newcommand{\myNumberStyle}[1]{{\footnotesize\ttfamily\color{brown!100!black} #1}}
\lstset{ language={}, % characters tabsize=3, escapechar={!}, keepspaces=true, breaklines=true, alsoletter={\#}, breakautoindent=true, columns=fullflexible, showstringspaces=false, % background frame=single, aboveskip=1em, % automatic space before framerule=0pt, basicstyle=\footnotesize\ttfamily\color{black}, keywordstyle=\myKeywordStyle,% keyword style commentstyle=\myCommentStyle,% comment style frame=single,% backgroundcolor=\color{source}, % numbering numbersep=5pt, numberstyle=\myNumberStyle, numberfirstline=true, % caption captionpos=b, % formatting (html) moredelim=[is][\textbf]{<b>}{</b>}, moredelim=[is][\textit]{<i>}{</i>}, moredelim=[is][\uline]{<u>}{</u>}, moredelim=[is][\color{red}\uwave]{<wave>}{</wave>}, moredelim=[is][\color{red}\sout]{<del>}{</del>}, moredelim=[is][\color{blue}\uline]{<ins>}{</ins>}, % smalltalk stuff morecomment=[s][\myCommentStyle]{"}{"}, % morecomment=[s][\myvs]{|}{|}, morestring=[b][\myStringStyle]', moredelim=[is][]{<sel>}{</sel>}, moredelim=[is][]{<rcv>}{</rcv>}, moredelim=[is][\itshape]{<symb>}{</symb>}, moredelim=[is][\scshape]{<class>}{</class>}, morekeywords={true,false,nil,self,super,thisContext}, identifierstyle=\idstyle, }
\makeatletter \newcommand*\idstyle[1]{% \expandafter\id@style\the\lst@token{#1}\relax% } \def\id@style#1#2\relax{% \ifnum\pdfstrcmp{#1}{\#}=0% % this is a symbol \mySymbolStyle{\the\lst@token}% \else% \edef\tempa{\uccode`#1}% \edef\tempb{`#1}% \ifnum\tempa=\tempb% % this is a global \myGlobalStyle{\the\lst@token}% \else% \the\lst@token% \fi% \fi% } \makeatother
\lstset{literate=% *{0}{{{\myNumberStyle{0}}}}1 {1}{{{\myNumberStyle{1}}}}1 {2}{{{\myNumberStyle{2}}}}1 {3}{{{\myNumberStyle{3}}}}1 {4}{{{\myNumberStyle{4}}}}1 {5}{{{\myNumberStyle{5}}}}1 {6}{{{\myNumberStyle{6}}}}1 {7}{{{\myNumberStyle{7}}}}1 {8}{{{\myNumberStyle{8}}}}1 {9}{{{\myNumberStyle{9}}}}1 }
%\newcommand{\ct}{\lstinline[backgroundcolor=\color{white}]} \newcommand{\needlines}[1]{\Needspace{#1\baselineskip}} \newcommand{\lct}{\texttt}
\lstnewenvironment{code}{% \lstset{% % frame=lines, frame=single, framerule=0pt, mathescape=false } }{}
\newenvironment{codeNonSmalltalk} {\begin{alltt}\sffamily} {\end{alltt}\normalsize}
-- Mariano http://marianopeck.wordpress.com
Lyx works cross platform.. On Fri, Jun 15, 2012 at 2:26 PM, camille teruel <camille.teruel@gmail.com>wrote:
+1 for lyx
2012/6/15 S Krish <krishnamachari.sudhakar@gmail.com>
Lyx on Linux helps on Latex formatting in a WYSIWYG mode..
On Fri, Jun 15, 2012 at 2:07 PM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Hi guys. I know that: a) for papers we usually write code in black and white and b) even when we may want colors like books or thesis, we still may not want to add colors. Anyway, for my thesis, I do want to make the code a little bit nicer and so I did some Smalltalk syntax highlighting with listings package. Not sure if this would be helpful for someone else, but just in case, I paste at the end the code. Basically, I can detect (and therefore, choose a color/style): globals/classes (start with uppercase), keywords, comments, strings, symbols and numbers. I also attach an screenshot.
Cheers
btw, thanks to Lukas and Luc for their help.
% Source Code \usepackage{color} \usepackage{textcomp} \usepackage{listings} % \usepackage{needspace} % \usepackage{ulem}
\definecolor{source}{gray}{0.95}
% my comment style \newcommand{\myCommentStyle}[1]{{\footnotesize\ttfamily\itshape\color{gray!100!white} #1}}
% my string style \newcommand{\myStringStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}}
% my symbol style \newcommand{\mySymbolStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}}
% my keyword style \newcommand{\myKeywordStyle}[1]{{\footnotesize\ttfamily\color{green!70!black} #1}}
% my global style \newcommand{\myGlobalStyle}[1]{{\footnotesize\ttfamily\color{blue!100!black} #1}}
% my number style \newcommand{\myNumberStyle}[1]{{\footnotesize\ttfamily\color{brown!100!black} #1}}
\lstset{ language={}, % characters tabsize=3, escapechar={!}, keepspaces=true, breaklines=true, alsoletter={\#}, breakautoindent=true, columns=fullflexible, showstringspaces=false, % background frame=single, aboveskip=1em, % automatic space before framerule=0pt, basicstyle=\footnotesize\ttfamily\color{black}, keywordstyle=\myKeywordStyle,% keyword style commentstyle=\myCommentStyle,% comment style frame=single,% backgroundcolor=\color{source}, % numbering numbersep=5pt, numberstyle=\myNumberStyle, numberfirstline=true, % caption captionpos=b, % formatting (html) moredelim=[is][\textbf]{<b>}{</b>}, moredelim=[is][\textit]{<i>}{</i>}, moredelim=[is][\uline]{<u>}{</u>}, moredelim=[is][\color{red}\uwave]{<wave>}{</wave>}, moredelim=[is][\color{red}\sout]{<del>}{</del>}, moredelim=[is][\color{blue}\uline]{<ins>}{</ins>}, % smalltalk stuff morecomment=[s][\myCommentStyle]{"}{"}, % morecomment=[s][\myvs]{|}{|}, morestring=[b][\myStringStyle]', moredelim=[is][]{<sel>}{</sel>}, moredelim=[is][]{<rcv>}{</rcv>}, moredelim=[is][\itshape]{<symb>}{</symb>}, moredelim=[is][\scshape]{<class>}{</class>}, morekeywords={true,false,nil,self,super,thisContext}, identifierstyle=\idstyle, }
\makeatletter \newcommand*\idstyle[1]{% \expandafter\id@style\the\lst@token{#1}\relax% } \def\id@style#1#2\relax{% \ifnum\pdfstrcmp{#1}{\#}=0% % this is a symbol \mySymbolStyle{\the\lst@token}% \else% \edef\tempa{\uccode`#1}% \edef\tempb{`#1}% \ifnum\tempa=\tempb% % this is a global \myGlobalStyle{\the\lst@token}% \else% \the\lst@token% \fi% \fi% } \makeatother
\lstset{literate=% *{0}{{{\myNumberStyle{0}}}}1 {1}{{{\myNumberStyle{1}}}}1 {2}{{{\myNumberStyle{2}}}}1 {3}{{{\myNumberStyle{3}}}}1 {4}{{{\myNumberStyle{4}}}}1 {5}{{{\myNumberStyle{5}}}}1 {6}{{{\myNumberStyle{6}}}}1 {7}{{{\myNumberStyle{7}}}}1 {8}{{{\myNumberStyle{8}}}}1 {9}{{{\myNumberStyle{9}}}}1 }
%\newcommand{\ct}{\lstinline[backgroundcolor=\color{white}]} \newcommand{\needlines}[1]{\Needspace{#1\baselineskip}} \newcommand{\lct}{\texttt}
\lstnewenvironment{code}{% \lstset{% % frame=lines, frame=single, framerule=0pt, mathescape=false } }{}
\newenvironment{codeNonSmalltalk} {\begin{alltt}\sffamily} {\end{alltt}\normalsize}
-- Mariano http://marianopeck.wordpress.com
this is really cool!! Do you have the code for the example you posted? Cheers! On Fri, Jun 15, 2012 at 5:37 AM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Hi guys. I know that: a) for papers we usually write code in black and white and b) even when we may want colors like books or thesis, we still may not want to add colors. Anyway, for my thesis, I do want to make the code a little bit nicer and so I did some Smalltalk syntax highlighting with listings package. Not sure if this would be helpful for someone else, but just in case, I paste at the end the code. Basically, I can detect (and therefore, choose a color/style): globals/classes (start with uppercase), keywords, comments, strings, symbols and numbers. I also attach an screenshot.
Cheers
btw, thanks to Lukas and Luc for their help.
% Source Code \usepackage{color} \usepackage{textcomp} \usepackage{listings} % \usepackage{needspace} % \usepackage{ulem}
\definecolor{source}{gray}{0.95}
% my comment style \newcommand{\myCommentStyle}[1]{{\footnotesize\ttfamily\itshape\color{gray!100!white} #1}}
% my string style \newcommand{\myStringStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}}
% my symbol style \newcommand{\mySymbolStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}}
% my keyword style \newcommand{\myKeywordStyle}[1]{{\footnotesize\ttfamily\color{green!70!black} #1}}
% my global style \newcommand{\myGlobalStyle}[1]{{\footnotesize\ttfamily\color{blue!100!black} #1}}
% my number style \newcommand{\myNumberStyle}[1]{{\footnotesize\ttfamily\color{brown!100!black} #1}}
\lstset{ language={}, % characters tabsize=3, escapechar={!}, keepspaces=true, breaklines=true, alsoletter={\#}, breakautoindent=true, columns=fullflexible, showstringspaces=false, % background frame=single, aboveskip=1em, % automatic space before framerule=0pt, basicstyle=\footnotesize\ttfamily\color{black}, keywordstyle=\myKeywordStyle,% keyword style commentstyle=\myCommentStyle,% comment style frame=single,% backgroundcolor=\color{source}, % numbering numbersep=5pt, numberstyle=\myNumberStyle, numberfirstline=true, % caption captionpos=b, % formatting (html) moredelim=[is][\textbf]{<b>}{</b>}, moredelim=[is][\textit]{<i>}{</i>}, moredelim=[is][\uline]{<u>}{</u>}, moredelim=[is][\color{red}\uwave]{<wave>}{</wave>}, moredelim=[is][\color{red}\sout]{<del>}{</del>}, moredelim=[is][\color{blue}\uline]{<ins>}{</ins>}, % smalltalk stuff morecomment=[s][\myCommentStyle]{"}{"}, % morecomment=[s][\myvs]{|}{|}, morestring=[b][\myStringStyle]', moredelim=[is][]{<sel>}{</sel>}, moredelim=[is][]{<rcv>}{</rcv>}, moredelim=[is][\itshape]{<symb>}{</symb>}, moredelim=[is][\scshape]{<class>}{</class>}, morekeywords={true,false,nil,self,super,thisContext}, identifierstyle=\idstyle, }
\makeatletter \newcommand*\idstyle[1]{% \expandafter\id@style\the\lst@token{#1}\relax% } \def\id@style#1#2\relax{% \ifnum\pdfstrcmp{#1}{\#}=0% % this is a symbol \mySymbolStyle{\the\lst@token}% \else% \edef\tempa{\uccode`#1}% \edef\tempb{`#1}% \ifnum\tempa=\tempb% % this is a global \myGlobalStyle{\the\lst@token}% \else% \the\lst@token% \fi% \fi% } \makeatother
\lstset{literate=% *{0}{{{\myNumberStyle{0}}}}1 {1}{{{\myNumberStyle{1}}}}1 {2}{{{\myNumberStyle{2}}}}1 {3}{{{\myNumberStyle{3}}}}1 {4}{{{\myNumberStyle{4}}}}1 {5}{{{\myNumberStyle{5}}}}1 {6}{{{\myNumberStyle{6}}}}1 {7}{{{\myNumberStyle{7}}}}1 {8}{{{\myNumberStyle{8}}}}1 {9}{{{\myNumberStyle{9}}}}1 }
%\newcommand{\ct}{\lstinline[backgroundcolor=\color{white}]} \newcommand{\needlines}[1]{\Needspace{#1\baselineskip}} \newcommand{\lct}{\texttt}
\lstnewenvironment{code}{% \lstset{% % frame=lines, frame=single, framerule=0pt, mathescape=false } }{}
\newenvironment{codeNonSmalltalk} {\begin{alltt}\sffamily} {\end{alltt}\normalsize}
-- Mariano http://marianopeck.wordpress.com
-- Lic. Javier Pimás Ciudad de Buenos Aires
On Fri, Jun 15, 2012 at 4:05 PM, Javier Pimás <elpochodelagente@gmail.com>wrote:
this is really cool!! Do you have the code for the example you posted?
yep, sorry, Luc already told me I should have done that. Pretty easy: \begin{code}{} testSimpleForwarder | proxy | proxy := TargetBasedProxy createProxyFor: (Point x: 3 y: 4) handler: SimpleForwarderHandler new. self assert: proxy x equals: 3. self assert: (proxy perform: #y) equals: 4. \end{code}
Cheers!
On Fri, Jun 15, 2012 at 5:37 AM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Hi guys. I know that: a) for papers we usually write code in black and white and b) even when we may want colors like books or thesis, we still may not want to add colors. Anyway, for my thesis, I do want to make the code a little bit nicer and so I did some Smalltalk syntax highlighting with listings package. Not sure if this would be helpful for someone else, but just in case, I paste at the end the code. Basically, I can detect (and therefore, choose a color/style): globals/classes (start with uppercase), keywords, comments, strings, symbols and numbers. I also attach an screenshot.
Cheers
btw, thanks to Lukas and Luc for their help.
% Source Code \usepackage{color} \usepackage{textcomp} \usepackage{listings} % \usepackage{needspace} % \usepackage{ulem}
\definecolor{source}{gray}{0.95}
% my comment style \newcommand{\myCommentStyle}[1]{{\footnotesize\ttfamily\itshape\color{gray!100!white} #1}}
% my string style \newcommand{\myStringStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}}
% my symbol style \newcommand{\mySymbolStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}}
% my keyword style \newcommand{\myKeywordStyle}[1]{{\footnotesize\ttfamily\color{green!70!black} #1}}
% my global style \newcommand{\myGlobalStyle}[1]{{\footnotesize\ttfamily\color{blue!100!black} #1}}
% my number style \newcommand{\myNumberStyle}[1]{{\footnotesize\ttfamily\color{brown!100!black} #1}}
\lstset{ language={}, % characters tabsize=3, escapechar={!}, keepspaces=true, breaklines=true, alsoletter={\#}, breakautoindent=true, columns=fullflexible, showstringspaces=false, % background frame=single, aboveskip=1em, % automatic space before framerule=0pt, basicstyle=\footnotesize\ttfamily\color{black}, keywordstyle=\myKeywordStyle,% keyword style commentstyle=\myCommentStyle,% comment style frame=single,% backgroundcolor=\color{source}, % numbering numbersep=5pt, numberstyle=\myNumberStyle, numberfirstline=true, % caption captionpos=b, % formatting (html) moredelim=[is][\textbf]{<b>}{</b>}, moredelim=[is][\textit]{<i>}{</i>}, moredelim=[is][\uline]{<u>}{</u>}, moredelim=[is][\color{red}\uwave]{<wave>}{</wave>}, moredelim=[is][\color{red}\sout]{<del>}{</del>}, moredelim=[is][\color{blue}\uline]{<ins>}{</ins>}, % smalltalk stuff morecomment=[s][\myCommentStyle]{"}{"}, % morecomment=[s][\myvs]{|}{|}, morestring=[b][\myStringStyle]', moredelim=[is][]{<sel>}{</sel>}, moredelim=[is][]{<rcv>}{</rcv>}, moredelim=[is][\itshape]{<symb>}{</symb>}, moredelim=[is][\scshape]{<class>}{</class>}, morekeywords={true,false,nil,self,super,thisContext}, identifierstyle=\idstyle, }
\makeatletter \newcommand*\idstyle[1]{% \expandafter\id@style\the\lst@token{#1}\relax% } \def\id@style#1#2\relax{% \ifnum\pdfstrcmp{#1}{\#}=0% % this is a symbol \mySymbolStyle{\the\lst@token}% \else% \edef\tempa{\uccode`#1}% \edef\tempb{`#1}% \ifnum\tempa=\tempb% % this is a global \myGlobalStyle{\the\lst@token}% \else% \the\lst@token% \fi% \fi% } \makeatother
\lstset{literate=% *{0}{{{\myNumberStyle{0}}}}1 {1}{{{\myNumberStyle{1}}}}1 {2}{{{\myNumberStyle{2}}}}1 {3}{{{\myNumberStyle{3}}}}1 {4}{{{\myNumberStyle{4}}}}1 {5}{{{\myNumberStyle{5}}}}1 {6}{{{\myNumberStyle{6}}}}1 {7}{{{\myNumberStyle{7}}}}1 {8}{{{\myNumberStyle{8}}}}1 {9}{{{\myNumberStyle{9}}}}1 }
%\newcommand{\ct}{\lstinline[backgroundcolor=\color{white}]} \newcommand{\needlines}[1]{\Needspace{#1\baselineskip}} \newcommand{\lct}{\texttt}
\lstnewenvironment{code}{% \lstset{% % frame=lines, frame=single, framerule=0pt, mathescape=false } }{}
\newenvironment{codeNonSmalltalk} {\begin{alltt}\sffamily} {\end{alltt}\normalsize}
-- Mariano http://marianopeck.wordpress.com
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Mariano http://marianopeck.wordpress.com
Thank you very much for doing and then share this Mariano! 2012/6/15 Mariano Martinez Peck <marianopeck@gmail.com>
On Fri, Jun 15, 2012 at 4:05 PM, Javier Pimás <elpochodelagente@gmail.com>wrote:
this is really cool!! Do you have the code for the example you posted?
yep, sorry, Luc already told me I should have done that. Pretty easy:
\begin{code}{} testSimpleForwarder | proxy | proxy := TargetBasedProxy createProxyFor: (Point x: 3 y: 4) handler: SimpleForwarderHandler new. self assert: proxy x equals: 3. self assert: (proxy perform: #y) equals: 4. \end{code}
Cheers!
On Fri, Jun 15, 2012 at 5:37 AM, Mariano Martinez Peck < marianopeck@gmail.com> wrote:
Hi guys. I know that: a) for papers we usually write code in black and white and b) even when we may want colors like books or thesis, we still may not want to add colors. Anyway, for my thesis, I do want to make the code a little bit nicer and so I did some Smalltalk syntax highlighting with listings package. Not sure if this would be helpful for someone else, but just in case, I paste at the end the code. Basically, I can detect (and therefore, choose a color/style): globals/classes (start with uppercase), keywords, comments, strings, symbols and numbers. I also attach an screenshot.
Cheers
btw, thanks to Lukas and Luc for their help.
% Source Code \usepackage{color} \usepackage{textcomp} \usepackage{listings} % \usepackage{needspace} % \usepackage{ulem}
\definecolor{source}{gray}{0.95}
% my comment style \newcommand{\myCommentStyle}[1]{{\footnotesize\ttfamily\itshape\color{gray!100!white} #1}}
% my string style \newcommand{\myStringStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}}
% my symbol style \newcommand{\mySymbolStyle}[1]{{\footnotesize\ttfamily\color{violet!100!black} #1}}
% my keyword style \newcommand{\myKeywordStyle}[1]{{\footnotesize\ttfamily\color{green!70!black} #1}}
% my global style \newcommand{\myGlobalStyle}[1]{{\footnotesize\ttfamily\color{blue!100!black} #1}}
% my number style \newcommand{\myNumberStyle}[1]{{\footnotesize\ttfamily\color{brown!100!black} #1}}
\lstset{ language={}, % characters tabsize=3, escapechar={!}, keepspaces=true, breaklines=true, alsoletter={\#}, breakautoindent=true, columns=fullflexible, showstringspaces=false, % background frame=single, aboveskip=1em, % automatic space before framerule=0pt, basicstyle=\footnotesize\ttfamily\color{black}, keywordstyle=\myKeywordStyle,% keyword style commentstyle=\myCommentStyle,% comment style frame=single,% backgroundcolor=\color{source}, % numbering numbersep=5pt, numberstyle=\myNumberStyle, numberfirstline=true, % caption captionpos=b, % formatting (html) moredelim=[is][\textbf]{<b>}{</b>}, moredelim=[is][\textit]{<i>}{</i>}, moredelim=[is][\uline]{<u>}{</u>}, moredelim=[is][\color{red}\uwave]{<wave>}{</wave>}, moredelim=[is][\color{red}\sout]{<del>}{</del>}, moredelim=[is][\color{blue}\uline]{<ins>}{</ins>}, % smalltalk stuff morecomment=[s][\myCommentStyle]{"}{"}, % morecomment=[s][\myvs]{|}{|}, morestring=[b][\myStringStyle]', moredelim=[is][]{<sel>}{</sel>}, moredelim=[is][]{<rcv>}{</rcv>}, moredelim=[is][\itshape]{<symb>}{</symb>}, moredelim=[is][\scshape]{<class>}{</class>}, morekeywords={true,false,nil,self,super,thisContext}, identifierstyle=\idstyle, }
\makeatletter \newcommand*\idstyle[1]{% \expandafter\id@style\the\lst@token{#1}\relax% } \def\id@style#1#2\relax{% \ifnum\pdfstrcmp{#1}{\#}=0% % this is a symbol \mySymbolStyle{\the\lst@token}% \else% \edef\tempa{\uccode`#1}% \edef\tempb{`#1}% \ifnum\tempa=\tempb% % this is a global \myGlobalStyle{\the\lst@token}% \else% \the\lst@token% \fi% \fi% } \makeatother
\lstset{literate=% *{0}{{{\myNumberStyle{0}}}}1 {1}{{{\myNumberStyle{1}}}}1 {2}{{{\myNumberStyle{2}}}}1 {3}{{{\myNumberStyle{3}}}}1 {4}{{{\myNumberStyle{4}}}}1 {5}{{{\myNumberStyle{5}}}}1 {6}{{{\myNumberStyle{6}}}}1 {7}{{{\myNumberStyle{7}}}}1 {8}{{{\myNumberStyle{8}}}}1 {9}{{{\myNumberStyle{9}}}}1 }
%\newcommand{\ct}{\lstinline[backgroundcolor=\color{white}]} \newcommand{\needlines}[1]{\Needspace{#1\baselineskip}} \newcommand{\lct}{\texttt}
\lstnewenvironment{code}{% \lstset{% % frame=lines, frame=single, framerule=0pt, mathescape=false } }{}
\newenvironment{codeNonSmalltalk} {\begin{alltt}\sffamily} {\end{alltt}\normalsize}
-- Mariano http://marianopeck.wordpress.com
-- Lic. Javier Pimás Ciudad de Buenos Aires
-- Mariano http://marianopeck.wordpress.com
participants (5)
-
camille teruel -
Guido Chari -
Javier Pimás -
Mariano Martinez Peck -
S Krish