Translate

viernes, 18 de abril de 2014

Usando LaTeX para los informes (No mas Word)

Empezando el documento

Los documentos se escriben en texto plano, por lo cual existen algunos comandos especiales que hay que conocer (y que es exactamente lo que escandaliza a las personas pro-Word). Para escribir los comandos especiales se utilizan uno o más de los siguientes caracteres especiales, ojo con ellos: \ (para escribir comandos), { y } (para los parámetros de los comandos), # (para referencias de parámetros), $ (para el modo matemático), % (para escribir comentarios), & (separador de columnas de tablas), _ (para subíndices) y ^ (para superíndices).
Para escribir un documento al comienzo debe ir el encabezado (también conocido como preámbulo) con instrucciones con definiciones generales al documento (como tipo y tamaño de letra), inclusión de funcionalidades (paquetes) y definición de nuevos comandos. Luego se debe señalar el inicio y el fin de nuestro texto a través de los comandos el begin document y end document:

\documentclass[12pt,letterpaper]{article}
\usepackage[spanish]{babel}
\usepackage[ansinew]{inputenc}
\usepackage[right=2cm,left=3cm,top=2cm,bottom=2cm,headsep=0cm,footskip=0.5cm]{geometry}
\usepackage[dvips]{graphicx}

\begin{document}

... acá se escribe todo ...

\end{document}

Aquí se define el documento como tipo article, útil para pequeños informes. El tipo report nos servirá para informes más grandes que se dividan en capítulos. Se define que el tamaño por defecto para el documento será de 12 puntos y que el papel será tamaño carta. Tip: En WinEdt haces Control-F1 sobre un comando de LaTeX y muestra una ayuda específica.
Los paquetes se utilizan a través del comando usepackage, donde el nombre va entre { } y los parámetros entre [ ]. El paquete babel sirve para crear documentos en distintos idiomas (en este caso español) cambiando los nombres de los encabezados predefinidos. El paquete inputenc sirve para que reconozca un documento de texto escrito con caracteres extendidos, con esto no tendremos problemas en escribir las palabras con acentos o ñ, la opción ansinew es la que se utiliza en Windows y para Linux se utiliza latin1 (aunque no tienen gran diferencia). graphicx nos servirá para incluir imágenes en nuestro texto y dvips será el driver que se utilizará para ser desplegado e impreso (es el driver utilizado normalmente). El paquete geometry es de gran ayuda para definir los márgenes del documento fácilmente.

Escribiendo el texto

Entre el begin document y el end document comenzamos a escribir nuestro informe. Lo único importante al escribir es hacer la separación entre párrafos con una línea en blanco. No importan las separaciones entre palabras ni los quiebres de línea de un mismo párrafo, pues latex las espaciará, quebrará líneas y dividirá palabras según estime mas conveniente para una mejor visualización.
Al escribir un informe debemos declarar cual es su estructura como documento, definiendo las secciones, subsecciones y subsubsecciones con los comandos \section\subsection y \subsubsection. Como consecuencia de declarar la estructura del documento latex podrá crear el índice automáticamente mediante el comando \tableofcontents.
Para dar formato al texto se puede usar el comando \textbf{texto} para negrita (viene de "bold-face") y \textit{texto} para cursiva (viene de "italic"), para recordar los comandos WinEdt tiene botones para los mas usados (existe \emph{texto} que es una cursiva que al ser aplicada dos veces vuelve al original y se utiliza para destacar una palabra dentro de un texto destacado). Para ingresar un salto de línea obligatorio dentro de un párrafo se puede escribir con \\. Si quieres escribir un pie de página utiliza el comando \footnote{texto}. Para escribir comillas los mejor es utilizar dos acentos graves para abrir (``) y dos simples para cerrar(''), por ejemplo ``hola''.
Para el caso de referencias cruzadas debes marcar un sitio de la página con un nombre a través del comando \label{id} y luego las referencias las haces con \ref{id} para la sección o con \pageref{id} para el número de página donde está ubicado el label. Para documentos grandes, es recomendable utilizar prefijos para diferenciar secciones (sec:), figuras (fig:) y tablas (tab:) para mantener un orden. Tip: Si en WinEdt escribes \ref{} aparecerá un listado con labels existentes para que puedas elegir uno.

Una consideración a tener en cuenta es que en el comportamiento por defecto latex prefiere que una palabra traspase el margen derecho (llamado un "overfull box") a tener que bajarla a la línea siguiente y dar un espacio demasiado grande entre las palabras restantes. Sin embargo, no siempre es eso lo que se quiere, así que hay que utilizar el comando \sloppy en el preámbulo para evitarlo.
El caracter % se utiliza para escribir comentarios, por lo que si no lo escapas con \% estarás comentando el resto de la línea y al párrafo le faltarán algunas palabras. Es muy útil poner comentarios ya sea para ordenarte en la escritura texto escribiendo o para separar capítulos y secciones con líneas de asteriscos o guiones.

Los Entornos

Un entorno permite aplicar propiedades a cierto conjunto de texto del documento y son delimitados por los comandos \begin{entorno} y \end{entorno}. Existen entornos para cambiar la alineación del texto, por ejemploflushleft (para alineado a la izquierda), flushright (adivina) y center (también adivina).
Para cambiar los tipos de letras puedes utilizar entornos o comandos, es decir puedes utilizar los entornos small, large, Large, huge, Huge (entre varios otros) que modifican el texto dentro de él. Los comandos son declarativos porque no reciben argumentos \small, \large, \Large, \bfseries (para negrita), \itshape (para cursiva), etc. y modifican todo el texto hasta algún fin de agrupación (que puede ser el final de un entorno, el final de un grupo de texto definido por { y } o hasta el final del archivo).
Para crear las viñetas es necesario utilizar el entorno itemize para puntos o enumerate para viñetas numeradas. Luego escribiendo \item se definirá cada viñeta. Por ejemplo:

\section{Título}
El primer párrafo será éste.
Este es el segundo párrafo del texto que contiene un\\quiebre.
\subsection{Subtítulo}
Los puntos a presentar son los siguientes:
\begin{itemize}
\item Punto uno.
\item Punto dos.
\end{temize}

Para escribir códigos de programa es muy útil el entorno verbatim que permite escribir en un modo en el cual no existen comandos ni caracteres especiales, cambiando el tipo de letra a una de espaciado regular, por ejemplo:

\begin{verbatim}
for(i=0; i<N; ++i){
   S=S+i;
}
\end{verbatim}

El entorno matemático permite crear ecuaciones complejas y caracteres especiales. Para ingresar a él de forma simple existe una abreviación que es escribir un signo "$" para ingresar y otro signo "$" para terminar. Dentro del entorno matemático se pueden escribir subíndices como $X_{i}$, superíndices como $a^{2}$, el caracter "\" con $\backslash$, símbolos griegos, raíces, integrales, etc. Como recordatorio sirve la serie de botones de la GUI Palette de WinEdt.

Las Tablas

Para crear tablas puede ser un poco complicado: se utiliza el entorno tabular donde se definen el número de columnas a crear y su alineación. Luego para separar columnas se ingresa un & y para separar filas se ingresa un\\. Por ejemplo, para una tabla con 3 celdas, la primera con el texto alineado a la izquierda, la segunda centrada, y la tercera a la derecha sería:

\begin{tabular}{lcr}
valores de la primera fila: & val 1 & val 2\\
valores de la segunda fila: & val 3 & val 4\\
\end{tabular}

Ahora si queremos que aparezcan las líneas de separación es necesario escribir un "|" entre la definición de las columnas para las líneas verticales y \hline al final de cada fila para líneas horizontales. La misma tabla ahora cuadriculada sería:

\begin{tabular}{|l|c|r|} \hline
valores de la primera fila: & val 1 & val 2\\ \hline
valores de la segunda fila: & val 3 & val 4\\ \hline
\end{tabular}

¿Y las imágenes?

Para las imágenes se pueden utilizar directamente bmp en miktex, sin embargo hay que definir a mano sus tamaños (alto y ancho) por lo que es recomendable utilizar eps (postcript encapsulado) porque toma automáticamente los tamaños y se incluyen mejor para crear ps o pdf. Para pasar una imagen a eps puedes hacerlo instalando una impresora postcript hacia un archivo, o instalar algún programa especial como adobe illustrator o macromedia freehand para abrir una imagen y guardarla como eps.
Para el primer caso hay que elegir una impresora postcript (por ejemplo la "HP LaserJet 6P/6MP PostScript" o la "IBM 4029 LaserPrinter PS39" funcionan bien) y configurarla para que imprima sobre un archivo (puerto FILE) y encapsulado (output options: EPS), y para cada eps creado tener cuidado con el llamado BoundingBox que señalan los márgenes de la imagen y que utiliza latex para conocer su tamaño, porque por lo general quedarán marcados como el margen de la página impresa y no rodeando la imagen, pero se pueden redefinir automáticamente para que rodeen la imagen utilizando gsview (abrir el archivo y seleccionar "PS to EPS").
Para importar una imagen en tu documento se usa \graphics[parámetros]{nombreArchivo}. Entre los parámetros útiles están widthheight y scale para el tamaño. El programa de visualización de dvi (de nombre yap) hace sólo una vista previa de las imágenes por lo que no te escandalices si en el visor no tienen mucha definición. Tips: En la primera utilización de yap recuerda configurarlo (view->options) para que el tamaño de la página sea el que desees y que al hacer doble clic sobre el texto invoque a WinEdt para editar la línea. Al contener imágenes se vuelve más lenta la visualización, pero puedes escribir la opción draft al importar el paquete graphicx para sólo desplegar un cuadro vacío.
Nota: Esta NO es la única forma de hacer o incluir imágenes si no que existen varias, desde utilizar otros paquetes u otras comandos para crear imágenes (epsfig, ps2epsi, etc.). A modo de recomendación, un buen programa existente para crear diagramas y exportarlos como imágenes es SmartDraw.
Normalmente, cada imagen existente dentro de un documento debe ser referenciada dentro del texto, para esto se puede utilizar el entorno figure para definir un objeto flotante, luego definir un nombre y número con el comando \caption para luego hacer referencias cruzadas como se explicó más arriba. El entorno figure recibe como parámetro los criterios a utilizar para la ubicación del objeto: h para preferir el mismo lugar donde se ingresó comando (ya sea al principio o fin de una página), t para que se ubique al inicio de la próxima página, b para el fin de la próxima página, o p para que exista una página exclusiva para objetos flotantes sin mezclarse con el texto, por ejemplo:


La figura \ref{fig:grafico} muestra un gráfico con los valores de ...
\begin{figure}[ht]
  \begin{center}
    \includegraphics[scale=.75]{grafico.eps}
    \caption{Gráfico de valores} 
    \label{fig:grafico}
  \end{center}
\end{figure}

Recuerda: Si dentro del documento utilizarás muchas veces un código similar, es muy útil crear un comando personalizado o un entorno personalizado para evitar sucesivos copy-paste y asegurarse que quedará un documento uniforme. Para esto utiliza los comandos \newcommand{nombre}{comandos} o \newenvironment{nombre}{comandos al iniciar}{comandos al cerrar}, respectivamente. Por ejemplo es útil definir un comando especial para importar un gráfico, para escribir código fuente, o para escribir nombres de funciones o variables para definir en un solo punto el tipo de letra a utilizar.

Crear una Bibliografía

Para una memoria es usual utilizar bibliografías de un tamaño que se comienza a hacer difícil de manejar, en especial para hacer referencias hacia ella. Para esto funciona bien el paquete BibTeX, donde guardas todos tus libros con sus datos, y luego lo referencias en el documento por un identificador definido por ti. Debes crear un archivo .bib donde van los datos de todos los libros que tienes, no solo los de el trabajo actual si no que tu librería completa, de los cuales referencias sólo los libros que utilizarás en el documento en particular. Puedes registrar varios tipos de fuentes, para cada una existiendo un comando especial (los más usuales son @book, @article, @misc, @manual) y dependiendo de esto son los campos particulares que se despliegan. Un ejemplo de un registro de un libro es el siguiente (el primer campo es el identificador único):

@BOOK{tutorial,
  AUTHOR = "S. Bodoff and D. Green and K. Haase and E. Jendrock and B. Stearns",
  TITLE = "The J2EE Tutorial",
  PUBLISHER = "Addison-Wesley",
  YEAR = 2002,
  ORGANIZATION = "Sun Microsystems, Inc."}

Para referenciar el libro dentro del documento bastaría con escribir \cite{tutorial}, o si quieres señalar un capítulo o página en especial puedes hacerlo por ejemplo con \cite[cap.7]{tutorial}.
Existen varios tipos de bibliografías, las más usadas en papers son alpha y plain. La primera crea los nombres de los documentos con el autor y el año por ej. [Tho97] y la segunda sólo con un número correlativo por ej. [3]. Para crear la página de bibliografía incluye los siguientes dos comandos:

\bibliographystyle{plain} 
\bibliography{archivo}

El primero define el tipo de bibliografía a usar y el segundo para definir el archivo (.bib) con la base de datos de los libros. Para el caso que desees agregar un libro que no hayas referenciado dentro del texto agrégalo con\nocite{id}.

Compilación

Durante la compilación suelen suceder una serie de warnings que los puedes recorrer a través de WinEdt presionando sobre el botón para ver el log. Los más usuales son:
  • "overfull hbox" que tuvo que traspasar el margen. Evitable con \sloppy pero deberás arreglarlo a mano si es el caso de un entorno verbatim.
  • "underfull hbox" cuando debe poner demasiado espacio entre palabras para cumplir con la justificación.
  • "reference undefined" cuando se hace referencia a un label no existese.
En el caso de que suceda un error, latex señalará la línea en la cual se produce el error y esperará que el usuario ingrese una solución, mejor lee el mensaje y escribe una X para salir de latex y revisa la línea del error. Los mensajes más usuales son:
  • "undefined control sequence" cuando un comando está mas escrito.
  • "missing $ inserted" señalando que cierto comando solo existe dentro del entorno matemático, porque hay un signo $ que no tiene pareja, o porque olvidaste escaparlo con \$.
  • "lonely \item ..." señala que cierto comando \item no se encuentra dentro de un entorno itemize o enumerate.
  • "\end{entorno}" probablemente un entorno no fue cerrado correctamente por lo que no calza un comando \end.
Algunas veces ocurren errores debido a que los archivos auxiliares contienen información errónea producto de cambios drásticos de la estructura del documento, como por ejemplo cambiar el estilo del documento dereport a article invalidando los capítulos existentes en el archivo .toc. Para este tipo de situaciones la solución es eliminar los archivos auxiliares, que para el caso de WinEdt es presionar sobre "Erase Output Files".

Ejemplo

A continuación publico parte del archivo .tex con el informe de una memoria para que sirva como base para que inicies la tuya :


A modo de ejemplo este es el informe final de un trabajo de título que fue escrito en LaTeX:

Conclusión

Espero esta columna te haya motivado (y no desmotivado) para al menos probar un informe en latex. De más está decir que todas las formas que están escritas no son las únicas formas de hacerlo (en particular en lo que se refiere a editor, paquetes utilizados, formas de incluir una imagen o crear un pdf), pero es al menos un inicio para que después cada uno investigue la forma que más le acomoda. Existen una gran cantidad de paquetes que permiten hacer un sinfín de cosas en latex (por ejemplo texto que rodee una imagen, cambiar encabezados de página, estilos para títulos, escribir en colores, hacer diapositivas o transparencias, utilizar TeX, etc.), pero hay que ir de a poco... Inicialmente esta columna puede ser una gran cantidad de información, pero luego de ser asimilada puedes sacar provecho de latex y crear unos documentos impecables.
Algunos links útiles (a parte de los dados anteriormente) son:
  • Una Descripción de LaTeX 2e, archivo PDF en español muy bueno para entrar al mundo de LaTeX.
  • CervanTeX, el Grupo de Usuarios de TeX Hispanohablantes. Particularmente lo que es FAQ para español y los manuales.
  • Manuales del CEC, donde existe un manual de LaTeX en HTML y PS bastante detallado particularmente el entorno matemático (se recomienda imprimir la versión en postscript).
  • CTAN, para obtener cualquier software relacionado a LaTeX.

No hay comentarios:

Publicar un comentario