Introducir código de R en un documento LaTeX

Para introducir código informático en nuestro ducmento, ya sea este de R, C++ o Python por ejemplo, hay varios paquetes que se pueden introducir. Pero el que me resultó más sencillo de utilizar, cómodo y dando buen resultado fue el paquete listings.

Este paquete acepta una larga serie de lenguajes de programación y cuenta con muchas opciones que vale la pena probar. Para conocerlas lo mejor es acudir a la documentación del paquete en CTAN (Cromprehesive TeX Archive Network) el repositorio oficial de paquetes TeX.

Para ello basta con escribir estas líneas en el preámbulo. También se usa el paquete color para darle algo de vidilla al código.

\usepackage{listings}
\lstset{
    frame=tb,                        %opciones de bordes
    framerule=0pt,
    aboveskip=3mm,
    belowskip=3mm,
    framextopmargin=3pt,
    framexbottommargin=3pt,
    framexleftmargin=0.2cm,
    framesep=0pt,
    rulesep=.4pt,
    backgroundcolor=\color{gray97},  %opciones de color
    rulesepcolor=\color{black},
    stringstyle=\color{mauve},
    showstringspaces = false,        %opciones de letra y estilo
    basicstyle=\small\ttfamily,
    commentstyle=\color{dkgreen},
    keywordstyle=\color{blue},
    numbers=left,
    numbersep=-6.5pt,
    numberstyle=\tiny\color{gray},
    numberfirstline = false,
    breaklines=true,
    morekeywords={*,...}
   }

\usepackage{color}
\definecolor{gray97}{gray}{.97}
\definecolor{mauve}{rgb}{0.58,0,0.82}
\definecolor{dkgreen}{rgb}{0,0.6,0}

Ahora para aplicar estas opciones a nuestro texto solo tendremos que escribir lo siguiente o utilizar \lstinputlisting{rutadearchivo} si no quieres modificar tu código.

\begin{lstlisting}[language = R]
  AE <- function(i,j) {
 
    Ri = i$V5
    Rj = j$V5

    angulo = acos (sum(Ri*Rj)/(sqrt(sum(Ri^2))*sqrt(sum(Rj^2))))
    return(angulo)
  }
\end{lstlisting}

Teniendo como resultado el siguiente (en un código más elaborado para poder bien los colores):

listingsOtra opción que a la que vale la pena echar un ojo es la de minted. Aunque es algo más complicada de implementar, sobre todo a la hora de compilar el código, ofrece un resultado más fino y estético.

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s