lunes, 16 de abril de 2012

Código de programación en nuestro documento LaTeX

Ya que LaTeX es una herramienta específica para textos técnicos y científicos, es muy común que queramos añadir unas líneas de programación. Para ello, podemos utilizar el paquete listings. En primer lugar, nuestro archivo .tex será parecido al siguiente:

\documentclass[a4paper,onecolumn,10pt]{article}
\usepackage[spanish]{babel}
\usepackage[latin1]{inputenc}
\usepackage{listings}

\begin{document}

\end{document}



Escribimos nuestras líneas de código entre \begin{lstlisting} \end{lstlisting}, como se muestra en el ejemplo siguiente. Además, podemos definir una serie de propiedades: 
  • language=..., define el lenguaje de programación. No es fundamental elegirlo, pero el formato del texto se ajusta al código usado.
  • breaklines=true, para que si una línea es muy larga, la pase automáticamente al siguiente renglón.
  • basicstyle=..., define el tamaño del texto. 
  • frame=single, encierra el código en una caja. 

Ejemplo con C:

\lstset{language=C, breaklines=true, basicstyle=\footnotesize}
\begin{lstlisting}[frame=single]
#include <stdio.h>
#include <stdlib.h>
// programa muy positivo

void main{
  system("clear");
  printf("Hola mundo!\n");
}
\end{lstlisting}




Podemos numerar las líneas de nuestro código con el comando "stepnumber=x", (donde x significa cada cuántas líneas numeramos) como se muestra a continuación:

Ejemplo con Matlab:

\lstset{language=Matlab, breaklines=true, basicstyle=\footnotesize}
\lstset{numbers=left, numberstyle=\tiny, stepnumber=1, numbersep=-2pt}
\begin{lstlisting}[frame=single]
  % suma de los elementos de un vector

  z = 0;
  n = length(v);
  for i=1:1:n
    z = z + v[i];
  end
\end{lstlisting}


Además, hemos definido la posición de la numeración con "numbers", el tamaño con "numberstyle", y la sangría con "numbersep".



Las propiedades definidas dentro de \lstset{}, valen para todo nuestro documento. Es decir, solo es necesario definirlas una vez, a no ser que queramos usar distintas propiedades cada vez que añadimos el código de programación. Por ejemplo, si a continuación, queremos dejar de numerar las líneas, habría que escribir: "stepnumber=0". Nótese también que, aunque hay muchos lenguajes incorporados a lstlisting, no están todos. Cuando escribimos en un lenguaje que no está definido, lo mejor es poner "language=", para que no use ninguno.

Ejemplo con Modelica:

\lstset{language=,breaklines=true, basicstyle=\footnotesize}
\lstset{stepnumber=0}
\begin{lstlisting}[frame=single]
model test
 Real x(start=5) "variable";

equation
 der(x) = -0.1*x;
end test;
\end{lstlisting}

\end{document}

martes, 3 de abril de 2012

Integrales con LaTeX

En la siguiente entrada mostraré algunas instrucciones útiles, cuando estamos escribiendo integrales con LaTeX. Nuestro archivo .tex será parecido al siguiente, donde además es importante cargar el paquete {amsmath}:

\documentclass[a4paper,openright,12pt]{report}
\usepackage[spanish]{babel} % espanol
\usepackage[latin1]{inputenc} % acentos sin codigo
\usepackage{amsmath}

\begin{document}

\end{document}



De manera general, podemos dibujar una integral, de la manera siguiente:

\begin{equation}
y = \int_{x=0}^{x=2 \pi + 10} f(x) \cdot dx
\end{equation}


Si queremos poner los índices exactamente encima y debajo del símbolo de integral, podemos usar el comando \limits.

\begin{equation}
y = \int \limits_{x=0}^{x=2 \pi + 10} f(x) \cdot dx
\end{equation}


Nótese que LaTeX suele dejar mucho espacio entre el símbolo de la integral, y la función siguiente. A veces, podemos solucionarlo usando repetidamente el comando \!, que genera un espacio negativo.

\begin{equation}
y = \int \limits_{x=0}^{x=2 \pi + 10} \!\!\!\!\!\!\! f(x) \cdot dx
\end{equation}




Para escribir integrales dobles y triples, existen comandos especiales:

\begin{equation}
y = \iint f(x) = \iiint g(x) = \idotsint h(x)
\end{equation}

Aunque si queremos poner límites, tendremos que trabajar como si fueran dos integrales por separado:

\begin{equation}
z = \int _{y=a}^{y=b} \int _{x=g(y)}^{x=h(y)} f(x) \cdot dx \cdot dy
\end{equation} 




Cuando LaTeX escribe una integral dentro de una fracción, la dibuja pequeñita y un poco fea:

\begin{equation}
y = \dfrac{\int_{x=0}^{x=2 \pi + 10} f(x) \cdot dx}{g(x)}
\end{equation}


Para solucionarlo, podemos usar el comando \displaystyle

\begin{equation}
y = \dfrac{\displaystyle \int_{x=0}^{x=2 \pi + 10} f(x) \cdot dx}{g(x)}
\end{equation}




Para las integrales cerradas, podemos usar las instrucciones \oint, \oiint, \oiiint (para integrales sencillas, dobles y triples). En el caso de las dos últimas, necesitaremos cargar el paquete {txfonts} o {pxfonts}.

\usepackage{txfonts}

\begin{equation}
\oint_L = \oiint_A = \oiiint_V
\end{equation}