[R] Best use of LaTeX listings package for pretty printing R code

Vincent Goulet vincent.goulet at act.ulaval.ca
Mon Sep 25 20:43:49 CEST 2006


Le Lundi 25 Septembre 2006 09:31, Frank E Harrell Jr a écrit :
> This is what I have been using.  Does anyone have a better way?  In
> particular I would like to see letters in comment strings not stretched
> so much.  Thanks -Frank
>
> \documentclass{article}
> \usepackage{listings,relsize}
> \lstloadlanguages{R}
> \newcommand{\lil}[1]{\lstinline|#1|}
>
> \begin{document}
> \lstset{language=R,basicstyle=\smaller,commentstyle=\rmfamily\smaller,
>   showstringspaces=false,%
>   xleftmargin=4ex,literate={<-}{{$\leftarrow$}}1 {~}{{$\sim$}}1}
> \lstset{escapeinside={(*}{*)}}   % for (*\ref{ }*) inside lstlistings (S
> code)
> \begin{lstlisting}
> a <- b   # this is a test line
> if(i==3) {  # another line, for y^2
>   y <- 3^3
>   z <- 'this string'
>   qqcat <- y ~ pol(x,2)
> } else y <- 4
> \end{lstlisting}
> That was \lstinline|x <- 22| \lil{q <- 'cat'}.
> \end{document}

listings is a great package to highlight R keywords and comments and --- that 
was my main use of the package --- index those keywords. I found that I had 
to slightly redefine the list of keywords included in listings. I still did 
not take the time to submit a patch to the author, though...

In any case, here's what I use, if it can be of any help to anyone:

\lstloadlanguages{R}
\lstdefinelanguage{Renhanced}[]{R}{%
  morekeywords={acf,ar,arima,arima.sim,colMeans,colSums,is.na,is.null,%
    mapply,ms,na.rm,nlmin,replicate,row.names,rowMeans,rowSums,seasonal,%
    sys.time,system.time,ts.plot,which.max,which.min},
  deletekeywords={c},
  alsoletter={.\%},%
  alsoother={:_\$}}
\lstset{language=Renhanced,extendedchars=true,
  basicstyle=\small\ttfamily,
  commentstyle=\textsl,
  keywordstyle=\mdseries,
  showstringspaces=false,
  index=[1][keywords], 
  indexstyle=\indexfonction}

with

  \newcommand{\indexfonction}[1]{\index{#1@\texttt{#1}}}

-- 
  Vincent Goulet, Associate Professor
  École d'actuariat
  Université Laval, Québec 
  Vincent.Goulet at act.ulaval.ca   http://vgoulet.act.ulaval.ca



More information about the R-help mailing list