# [R] How to format R code in LaTex documents

Michael Dewey info at aghmed.fsnet.co.uk
Tue Jan 16 18:13:24 CET 2007

At 14:12 15/01/2007, Frank E Harrell Jr wrote:
>Benjamin Dickgiesser wrote:
>>Hi,
>>I am planning on putting some R script in an appendix of a LaTex
>>document. Can anyone recommend me a way of how to format it? Is there
>>a way to keep all line breaks without having to insert \\ in every
>>single line?
>>Thank you!
>>Benjamin
>
>Here's one way and I would appreciate anyone's
>improvements.  I've also included solutions from
>two others.  Please let me know what you decide to use.  -Frank

Some interesting ideas below so just to add that
I find I often have to use the linewidth
parameter to avoid lines wrapping. This is
valuable if you are also going to include bits of
R output as well (you can control the width of
your own code fragments of course).

>\usepackage{listings,relsize}
>  showstringspaces=false,%
>  xleftmargin=4ex,literate={<-}{{$\leftarrow$}}1 {~}{{$\sim$}}1}
>\lstset{escapeinside={(*}{*)}}   % for (*\ref{ }*) inside lstlistings (S code)
>
>. . .
>\begin{lstlisting}
>. . . S code . . .
>\end{lstlisting}
>
>The following code was provided by Vincent Goulet:
>
>
>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:
>
>\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,
>   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
>
>Anupam Tyagi provided the following:
>
>\documentclass{report}
>\usepackage{listings}
>\begin{document}
>
>Somethings .....
>
>\lstset{% general command to set parameter(s)
>basicstyle=\small, % print whole in small
>stringstyle=\ttfamily, % typewriter type for strings
>numbers=left, % numbers on the left
>numberstyle=\tiny, % Tiny numbers
>stepnumber=2, % number every second line of code
>numbersep=5pt, % 5pt seperation between numbering and code listing
>language=R }
>
>\lstinputlisting{text1.R}
>
>\end{document}
>
>

Michael Dewey
http://www.aghmed.fsnet.co.uk