El por qué de este blog

Con el cambio de milenio me dijeron un día que tenía que aprender a usar LaTeX, y yo pensé... ezo qué e! A día de hoy sé hacer alguna que otra cosa con este editor de textos científicos y mi intención es compartir mi experiencia con todo aquel que pueda estar interesado.

sábado, 25 de enero de 2014

Presentaciones con LaTeX II: clase POWERDOT

Una buena alternativa (a mi juicio) a las presentaciones con beamer es la clase powerdot. Quizás sea algo menos espectacular que la anterior, pero también ofrece un resultado de gran calidad.

La estructura de partida de un dpcumento podría ser el siguiente:

\documentclass[style=sailor]{powerdot}

    \pdsetup{
      lf=pie de p\'agina izquierdo,
      rf=pie de p\'agina derecho
    }

    \usepackage[spanish]{babel}
    \usepackage[ansinew]{inputenc}
   
    \usepackage{ragged2e} % para justificar el texto
   
    \title{Título}
    \author{Autor}
    \date{Fecha}

\begin{document}

    \maketitle

    \begin{slide}{Contenidos}
        \tableofcontents[content=sections]
    \end{slide}
   
    \section{Sección 1}
   
    \begin{slide}{Econometría}\justifying
        bla bla bla
    \end{slide}
   
    \begin{slide}[toc=]{Econometría}\justifying
        bla bla bla
    \end{slide}

\end{document}

En primer lugar se especifica que el tipo de documento sea powerdot y justo antes, entre corchetes, se le indica que el estilo de la presentación ha de ser sailor (para saber los estilos disponibles consultar las páginas 21 a 26 del manual de powerdot). En segundo lugar se especifica el texto que deseamos que aparezca en el pie de la presentación y lo que viene a continuación es más que conocido: paquetes para los caracteres especiales del español, el paquete ragged2e para justificar el texto y el título de la presentación el autor y la fecha.

En el cuerpo del documento es donde se crean las transparencias con el entorno slide:

\begin{slide}{Título transparencia}
            contenido de la transparencia
\end{slide}

Es decir, la filosofía es la misma que la estudiada anteriormente con beamer, lo único que cambian algunas órdenes como en este caso frame por slide.

Dentro del cuerpo del documento tenemos que:
  • La transparencia que hace referencia al título y autor se obtiene escribiendo \maketitle.
  • Para obtener el índice escribimos en un entorno slide el comando \tableofcontents (en la página 15 del manual de powerdot se pueden ver las opciones que admite esta orden).
  • El comando \justifying para justificar el texto se usa al igual que en beamer.
  • Antes del título de la transparencia, entre corchetes, se puede especificar un título de transparencia corto con el comando toc que será el que aparezca en los menús de la presentación. En este caso, por ejemplo, se indica que no aparezca nada.
  • El documento se puede organizar con secciones al igual que cualquier documento LaTeX.
Además:
  • También es posible dividir la transparencia en dos columnas con la orden \twovolumn (para más información ver página 19 del manual).
  • También se pueden usar los comandos \pause y \onslide comentados para beamer (para más información ver página 12 del manual).
Para terminar hay que destacar que para compilar este tipo de documentos hay que seguir los siguientes pasos: 
  1. Compilar con LaTeX (por lo que si se incluye alguna imagen ha de ser en formato eps).
  2. Pasar de  dvi a ps.
  3. Pasar de ps a pdf.
En caso contrario se obtendrán errores y no se compilará el documento.

Un ejemplo de lo comentado en este post se puede encontrar aquí junto a su código fuente. Un breve e interesante manual sobre powerdot se puede encontrar en el siguiente enlace.

REGALO. Otra opción para hacer una presentación con buena calidad y mínimo esfuerzo puede ser la clase pdfscreen.sty. En el siguiente enlace puedes encontrar un ejemplo. Toda la información está disponible en http://www.ctan.org/pkg/pdfscreen.

Presentaciones con LaTeX I: clase BEAMER

En cualquier ámbito es muy común realizar algún tipo de presentación. Si el contenido está escrito en LaTeX lo más lógico es continuar trabajando con este editor. Lo cual nos resultará muy cómo ya que básicamente habrá que copiar y pegar. 

Dentro de LaTeX hay varias opciones para crear presentaciones, sin embargo, la más extendida es la clase beamer creada por Till Tantau. Toda la información sobre esta clase está disponible en el manual The BEAMER class. USER Guide.

Un documento básico (ver) a partir del cual empezar a trabajar podría ser el siguiente:

\documentclass{beamer}

%%%%%%%%%%%%%%%%%%% para escribir en español
    \usepackage[spanish]{babel}
    \usepackage[ansinew]{inputenc}

%%%%%%%%%%%%%%%%%%% tema de Beamer
    \usetheme{Warsaw}

%%%%%%%%%%%%%%%%%%% título, autor, etc...
    \title[T\'itulo corto]{T\'itulo largo}
    \subtitle{Subt\'itulo}
    \author[Autor corto]{Autor largo}
    \institute[Instituci\'on corta]{Instituci\'on largo}
    \date[Fecha corta]{Fecha larga}

\begin{document}

\begin{frame}
    \titlepage
\end{frame}

\begin{frame}
    \frametitle{T\'itulo transparencia}

\end{frame}

\end{document}

En primer lugar se observa que el tipo de documento ha pasado de ser article, report o book a beamer. A continuación se especifican los dos paquetes que venimos usando para usar los caracteres especiales necesarios para escribir en español. Y en tercer lugar, se especifica el tipo de tema que queremos usar de la clase beamer: Warsaw.

Existen muchas más opciones. Una lista exhaustiva se puede encontrar en las páginas 145 a 158 del manual anteriormente citado. Es más, en su tercera parte se puede encontrar cómo modificar éste y otros aspectos de las presentaciones. Puesto que en este post buscamos una introducción (lo mínimo para obtener una presentación de calidad) no entraremos en más detalles, lo dejamos para un futuro.

En el siguiente bloque de órdenes se especifica el título de la presentación, si se desea un subtítulo, los autores, afiliación y fecha. La diferencia entre lo escrito entre corchetes y paréntesis es que lo primero aparecerá en los menús (como enlace) del documento.

A partir de entonces se tiene el cuerpo del documento donde se especifica el contenido que ha de aparecer en cada transparencia, las cuales se declaran con el entorno frame:

\begin{frame}
          contenido de la transparencia
\end{frame}

Así, podemos observar que la primera está destinada al título, autores, etc (sin más que escribir \titlepage) y la segunda estará en blanco excepto por el título de la misma (especificado con \frametitle).

A partir de aquí es rellenar cada transparencia con sus correspondientes contenidos escribiendo en LaTeX tal y como se ha hecho hasta ahora para escribir fórmulas, tablas, insertar imágenes, referencias bibliográficas, etc.

Ahora bien, es posible mejorar la presentación con una serie de órdenes específicas de esta clase. Así por ejemplo se puede introducir texto dentro de bloques con los siguientes entornos:

 \begin{block}{Título 1}
        Entorno \textit{block}
 \end{block}

 \begin{exampleblock}{Título 2}
        Entorno \textit{exampleblock}
 \end{exampleblock}

 \begin{alertblock}{Título 3}
        Entorno \textit{alertblock}
 \end{alertblock}

Los primeros están destinados a texto normal, los segundos a ejemplos y los terceros para cuando se quiera destacar alguna cuestión.

También es muy común dividir la tranasparencia en columnas, lo cual se consigue con el entorno columns:

\begin{columns}
      % primera columna
      \begin{column}{0.5\textwidth}
            \begin{block}{}
                    Contenido de la 1ª columna.
            \end{block}
      \end{column}
      \hfill
      % segunda columna
      \begin{column}{0.5\textwidth}
            \begin{block}{}
                    Contenido de la 2ª columna.
            \end{block}
      \end{column}
\end{columns}

En este caso se han creado dos columnas (con \begin{column} y \end{column}) cuyo ancho es del 50% del ancho del texto (orden 0.5\textwidth) y que contienen un bloque con texto escrito (evidentemente crear o no un bloque es una cuestión estética que no tiene nada que ver con la creación de las columnas). Dichas columnas quedan a igual distancia gracias a \hfill.

Otra opción interesante es el uso de \pause, que me permite ir descubriendo poco a poco el contenido de una transparencia. Aunque un excesivo uso de este comando, si la presentación es extensa, puede hacer que la exposición sea eterna... Por otro lado, las listas y descripciones permiten algunas opciones especiales en beamer:

 \begin{itemize}
        \item Uno \pause
        \item Dos \pause
        \item y Tres. \pause
 \end{itemize}

 \begin{itemize}[<+-| alert@+>]
        \item Cuatro.
        \item Cinco.
        \item Seis.
        \item Siete.
 \end{itemize}

 \begin{itemize}
        \item<8-> Ocho.
        \item<11> Once.
        \item<9-10> Nueve, diez y no once.
 \end{itemize}

El código anterior escrito en una transparencia hace que aparezcan de forma progresiva los siete primero items (ver la diferencia entre los tres primeros y los cuatro siguientes). Los tres últimos merecen especial atención, concretamente lo escrito entre <>: a) <8-> indica que aparezca a partir del octavo click que se haga en dicha transparencia, b) <11> que aparezca sólo en el onceavo y <9-10> que estén presentes en el noveno y décimo, pero no en el resto.

Unas órdenes que pueden conseguir que nuestras presentaciones sean muy vistosas son \only, \onslide y \visible:

\only<1>{
      \begin{block}{}
               Sólo en el primer click
      \end{block}
}

\onslide<2-3>{
      \begin{exampleblock}{}
               En los clicks 2 y 3.
      \end{exampleblock}
}

\visible<2>{
      \begin{alertblock}{}
               Visible en el segundo click.
      \end{alertblock}
}

\uncover<4>{
      \begin{alertblock}{}
                Descubierto en el cuarto click.
      \end{alertblock}
}

¿Queda claro lo que hace, no? Para más detalles ver las páginas 80 a 82 del manual de beamer.

Si se incluyen todos estos comandos en el documento base inicial nos quedará algo parecido a esto (su código fuente). Si siempre recomiendo visualizar el código que genera el documento, en este caso más que nunca ya que así podrás:
  • Obervar cómo se ha modificado la parte donde se especifican los autores de manera que se pueda introducir para cada autor (en caso de haber más de uno) información como el correo electrónico, categoría profesional, etc.
  • Ver algún ejemplo más sobre el entorno columns.
  • Ver cómo se usa \vspace para obtener espacios verticales.
  • Conseguir que el texto aparezca justificado: escribe \usepackage{ragged2e} en el preámbulo y escribe \justifying a continuación del inicio de transparencia y/o bloque:
\begin{frame}[fragile]\justifying

    \begin{block}{Ejemplo de texto justificado}\justifying
        En un lugar de la Mancha, de cuyo nombre no quiero acordarme, no ha mucho tiempo que vivía  un hidalgo de los de lanza en astillero, adarga antigua, rocín flaco y galgo corredor. Una olla de algo más vaca que carnero, salpicón las más noches, duelos y quebrantos los sábados, lentejas los viernes, algún palomino de añadidura los domingos, consumían las tres partes de su hacienda...
    \end{block}

\end{frame}
  • Para poder usar el entorno verbatim hay que preparar la transparencia para ello escribiendo fragile (ver código anterior).
  • La organización del documento se hace con los comandos \section y \subsection al igual que en cualquier documento de LaTeX. Además, darán lugar al menú de navegación de la presentación (para obtener el índice escribir \tableofcontents dentro de un frame).

miércoles, 22 de enero de 2014

Organización de documentos extensos: clase BOOK

Si bien LaTeX nace con el propósito concreto de escribir textos en los que predominan las fórmulas matemáticas, no es menos cierto que su utilidad ha sobrepasado todas las expectativas y ofrece la posibilidad de componer documentos con calidad comparable a la de una editorial.

En este post abordaremos cómo crear un libro. Muchos pensaréis que simplemente es declarar que el tipo de documento sea book, y no os falta razón. Pero crear un libro es mucho más que eso. Su extensión nos obliga a tener especial cuidado con su organización, por ejemplo.

En este enlace tenéis un ejemplo de lo que podría ser un documento base para escribir una tesis doctoral (aquí el código fuente).

Debido a su extensión se ha de organizar el documento de forma diferente a la hecha hasta ahora, además de aparecer nuevos elementos:
  • En primer lugar nos encontramos con la portada, la cual se obtiene al usar el entorno titlepage:
 \begin{titlepage}
        contenido
\end{titlepage}
  • En este caso es habitual que el documento tenga índice de contenidos, de figura y de tablas (recordar las órdenes \tableofcontents, \listoffigures y \listoftables, respectivamente) y que estos apartados (incluyendo también un prólogo) tengan una numeración distinta (normalmente con números romanos) que el resto del documento (en números arábigos). Este cambio de formato se consigue sin más que escribir donde corresponda las siguientes órdenes:
\pagenumbering{Roman}   \setcounter{page}{1}
\pagenumbering{arabic}   \setcounter{page}{1}
  • Si deseamos distinguir varias partes en el documento (por ejemplo, teoría y problemas; recopilación bibliográfica de los resultados propios; distinguir contenidos básicos de los avanzados, etc) es posible dividir el documento mediante el comando \part (el cual funciona como \chapter, \section, etc). Otra parte especial del libro es el apéndice, en este caso hay que escribir la orden \appendix y a continuación seguir con la estructura de capítulo, subsección, etc (LaTeX cambiará de forma automática su enumeración pasando de números a letras).
  • Si observáis el documento, os encontraréis con tres archivos: Estilo1.tex, Estilo2.tex y Estilo3.tex. En ellos hay información sobre cómo modificar el aspecto de las partes, capítulos, etc. De esta forma se consigue dar aspecto distinto a cada parte del documento. Sin embargo, existe una forma más sencilla de hacerlo (que afecta también a la numeración de las páginas antes indicada) con \frontmatter, \mainmatter y \backmatter (más información aquí). ¿Cuál usar? Os lo dejo a vuestro criterio.
  • También es posible crear un índice con aquellas palabras que se consideren relevantes dentro del texto usando el comando \makeindex. Yo nunca lo he usado, pero no parece díficil hacerlo.
  • Es habitual que el ancabezado y/o el pie de página de cada parte del libro (por ejemplo, cada capítulo) estén personalizados. Por ejemplo, el título del capítulo en las páginas pares y el nombre de los autores en las impares. Esto se obtiene incluyendo en el preámbulo el uso del paquete fancyhdr, especificando que el estilo de la página sea ese, con \pagestyle{fancy}, y escribiendo donde corresponda (al principio de cada capítulo en este caso) los siguientes comandos (head modifica el encabezado y foot el pie de página):
\rhead[derecha]{\thepage} 
\lhead[izquierda]{izquierda}
\chead[centro]{centro}
\rfoot[derecha]{derecha}
\lfoot[izquierda]{izquierda}
\cfoot[centro]{centro}

Si aún no habéis descomprimido el archivo que contiene el código fuente del documento, ahora es el momento. Hasta este momento sólo habíamos trabajado con un archivo .tex, sin embargo en este caso tenemos varios. De entre todos ellos hay uno que es el principal (contiene la cabecera, el preámbulo y el cuerpo del documento) y que incluye al resto con la orden \input (también se podría usar \include, si bien no son equivalentes). Es decir, en lugar de escribir todo el documento en un único archivo, se escriben en archivos distintos que posteriormente son fusionados. Esto permite una mejor organización dentro del trabajo (por ejemplo, en lugar de compilarlo todo se podría compilar sólo la parte en la que se está trabajando en ese momento) y facilita el trabajo colaborativo (por ejemplo, cuando el documento se hace entre varios autores y cada uno trabaja en una parte del mismo).

Para finalizar dos paquetes interesantes:
  • Si se está escribiendo un documento matemático con teoremas, definiciones, corolarios, etc es muy útil el paquete theorem. Aquí se explica cómo usarlo (si no lo has pillado al ver el código fuente). Adviértase que en Definiciones.tex se ha modificado el aspecto de este tipo de entornos.
  • Si tienes la necesidad de incluir un programa hecho con R, MatLab, C++, Stata o qué se yo qué programa puedes incluirlo usando el entorno verbatim para destacarlo del resto. Sin embargo, existe una opción mejor: el paquete listings. Al especificar el tipo de software usado este paquete permite destacar las palabras clave del mismo, introducir el código como un objeto flotante, introducirlo dentro de una caja, numerar las líneas (lo cual es muy útil para explicar lo que se ha hecho: en la línea 3 se define...), etc. Simplemente hay que especificarle el lenguaje de programación usado, algunas características (numeración de líneas, tamaños de los números o salto de los mismos) y a continuación escribir el código usando el entorno lstlisting. Por ejemplo:
\lstset{language=Matlab}
\lstset{numbers=left, numberstyle=\tiny, stepnumber=2, numbersep=5pt}
\begin{lstlisting}
         function [A] = Suma(B, C)
                  A = B + C
\end{lstlisting}