21 jul 2008

Formato propio de tesis UNAM en LaTeX

Ahora si, tras un año de retraso sobre la fecha final planeada inicialmente, puedo decir que terminé la tesis. La versión actual ya cuenta con todas las correcciones sugeridas y todos los errores corregidos, comentarios sentimentales agregados y últimas pulidas realizadas.

Seguí el consejo de Elisa: ya no la voy a volver a leer... Uno nunca deja de encontrar cosas que modificar y ya le he invertido demasiado tiempo al asunto.

Falta que la UNAM reinicie semestre para terminar los trámites administrativos, fijar fecha de examen y presentar mi examen de grado (POR FIN!!!).

La dichosa tesis la hice en LaTeX y dado que no soy un usuario con mucha experiencia en dicho lenguaje le sufrí algo con todos los detalles que le quise poner. Por esta razón, se me ocurrió subir los fuentes de los formatos que poco a poco fui puliendo por si a alguien le son de utilidad.

Primero que nada la tesis está pensada para imprimirse en formato tesis (cuaderno forma francesa) en doble página. Si no pretenden presentar su documento con estas características necesitarán realizar algunas modificaciones menores.

Estructuré mis archivos dividiéndolos por capítulos (capitulo1.tex, capitulo2.tex, etc...) y llamándolos desde un archivo central (tesis.tex). Además utilicé un archivo con definiciones de comandos (thesinput.tex) creado por Sergio Mendoza al que le moví algunos parámetros.

También cree archivos independientes para la portada (title.tex), dedicatoria (dedicatoria.tex), resumen (resumen.tex) y agradecimientos (agradecimientos.tex). La portada no se parece a la portada oficial de la UNAM.

Primero que nada pongo el código de thesinput.tex:

% Copyright (C) 2000 Sergio Mendoza sergio@mrao.cam.ac.uk
% Astrophysics Group
% Cavendish Laboratory
% Cambridge UK
%
% This program is free software; you can redistribute it and/or modify
% it under the terms of the GNU General Public License as published by
% the Free Software Foundation; either version 2 of the License, or
% (at your option) any later version.
%
% This program is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with this program; if not, write to the Free Software
% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA

% Last modified: 21/July/2008 by Esteban Ricalde e_ricalde@yahoo.com.mx
\usepackage{fancyhdr}
\usepackage{geometry}
\usepackage[small,bf]{caption}

\pagestyle{fancy}

% Coloca una línea en los encabezados
\fancyhf{}
\fancyhead[LE,RO]{\bfseries\thepage}
\fancyhead[LO]{\bfseries\rightmark}
\fancyhead[RE]{\bfseries\leftmark}

% Cambia la estructura de una página en blanco
\fancypagestyle{plain}{
\fancyhead{}
\renewcommand{\headrulewidth}{0pt}
}

% Cambia el ancho del encabezado
\setlength{\headwidth}{16.5cm}

% Cambia el espacio para el encabezado
\setlength{\headheight}{20pt}

% Cambia el margen de los pies de figura
\setlength{\captionmargin}{20pt}

% Borra la palabra Capítulo del \chaptermark:
\renewcommand{\chaptermark}[1]{\markboth{\MakeUppercase
{\thechapter. #1}}{}}

% Define comando para colocar páginas en blanco antes de iniciar cada capítulo
\newcommand{\clearemptydoublepage}{\newpage{\pagestyle{empty}
\cleardoublepage}}
\newcommand{\HRule}{\rule{\linewidth}{0.5mm}}

Con este archivo de configuraciones y comandos generé mi archivo tesis.tex:

\documentclass[12pt,twoside]{report}
\usepackage{amssymb,amsmath,alltt}
\usepackage{graphicx}
\usepackage[latin1]{inputenc}
\usepackage[spanish]{babel}
\usepackage{setspace}
\usepackage{epsfig}

\input{./thesinput.tex}

% Se puede cambiar los siguientes parámetros para modificar el acomodo del texto
\geometry{lmargin=2.5cm,rmargin=2.5cm,tmargin=3cm,bmargin=3cm}
\parskip= 6pt

\includeonly{dedicatoria,resumen,agradecimientos,capitulo1,apendice1}

\begin{document}
\input{title}
\clearemptydoublepage
\include{dedicatoria}
\clearemptydoublepage
\include{resumen}
\clearemptydoublepage
\include{agradecimientos}
\clearemptydoublepage
\tableofcontents
\clearemptydoublepage
\listoffigures
\clearemptydoublepage
\listoftables
\clearemptydoublepage
\pagenumbering{arabic} \setcounter{page}{1}
\include{capitulo1}
\clearemptydoublepage
%Siguientes capitulos con el mismo esquema
\appendix
\include{apendice1}
\clearemptydoublepage
%Otros apendices
\bibliographystyle{abbrv}
\bibliography{myblib}
\clearemptydoublepage
\end{document}

No olviden agregar a \includeonly el nombre de cada archivo nuevo escrito.

Como les decía, la portada es diferente al formato estándar de la UNAM. Si tienen algo de paciencia y mucho tiempo libre seguramente podrían hacer algo más parecido a lo que se tiene que entregar... pero como ya nos dan el formato en Word y éste solo lo hice para la versión electrónica... me dio flojera ponerme a buscar comandos para hacerlo yo. De todos modos les dejo mi portada por si les sirve de algo:

\begin{titlepage}
\setlength{\parindent}{0pt} \setlength{\parskip}{0pt}

\begin{center}

\textsc{\large Universidad Nacional Aut\'onoma de M\'exico}\\[0.2cm]
{\large Instituto de Investigaciones Sofisticadas :)}\\[1cm]
\end{center}

\begin{center}

\includegraphics[width=4.5cm]{./imagenes/UNAM_logo.eps}
\end{center}

\begin{center}

\vfill
{\Large \bfseries Titulo}\\[0.4cm]
\end{center}
\vspace*{\stretch{1}} \HRule
\begin{center}
{\huge T E S I S}\\[0.4cm]
{\Large para obtener el grado de Maestro en Sofisticolog\'{\i}a} \\[0.4cm]
\end{center}
\begin{minipage}{0.5\textwidth}
\begin{center}
\emph{Autor:}\\
Juan P\'erez
\end{center}
\end{minipage}
\begin{minipage}{0.5\textwidth}
\begin{center}
\emph{Directora:} \\
El loco Vald\'es
\end{center}
\end{minipage}
\\[0.4cm]
\HRule \vspace*{\stretch{2}}
\\[0.8cm]
\begin{center}
\large \textsc{2999, Ciudad Universitaria, M\'exico}
\end{center}
\end{titlepage}

Para que este último código les compile necesitaran guardar esta imagen, convertirla a formato eps, cambiarle el nombre a UNAM_logo.eps y meterla en una carpeta llamada imagenes que se encuentre en la ruta donde van a compilar todo ó Editar el código para que jale alguna otra imagen.

Al archivo dedicatoria.tex le moví algunos detalles para que se pareciera más a las dedicatorias que me he encontrado en libros:

\thispagestyle{empty}
\newenvironment{dedication} {\cleardoublepage
\thispagestyle{empty}
\vspace*{\stretch{1}} \begin{center} \em} {\end{center}
\vspace*{\stretch{3}} \clearpage}
\begin{dedication}
\hfill \
\parbox{10cm}{
\begin{verse}
A alguien importante para ti
\end{verse}
}
\end{dedication}

Los archivos agradecimientos.tex y resumen.tex no tienen mucha ciencia, pero de todos modos se los pongo. Aquí va el primero:

\chapter*{Agradecimientos
\markboth{Agradecimientos}{Agradecimientos}}
Agradezco a todas las personas que me he encontrado en mi vida, shalalá shalalá
\vfill
\hfill {\it Juan P\'erez}

Y este es el segundo (que según me han dicho es la sección más importante de toda la tesis):

\pagenumbering{roman} \setcounter{page}{1}
\chapter*{Resumen\markboth{Resumen}{Resumen}}
Vendan bien sus tesis

Los capítulos (capitulo1.tex) y apéndices (apendice1.tex) deben tener una construcción parecida a ésta:

\chapter{Introducci\'on}

En este cap\'{\i}tulo vamos a hablar de...

\section{Motivaci\'on}

Tratar de conquistar al mundo JUA JUA JUA JUA!!!

Finalmente necesitarán un archivo myblib.bib en el que pongan todas las referencias bibliográficas que hayan utilizado. Este archivo no es exactamente LaTeX sino BibTeX.

Ahora bien ¿cómo hacerle para generar un archivo pdf de todo esto? Yo generé un script que producía el pdf y lo revisaba desde ahí. Si ya han utilizad LaTeX por un rato seguramente estarán acostumbrados a revisarlo desde dvi y esperarse a ver las imágenes hasta el final.

Si este no es el caso les dejo el script que armé y que nombré compila.sh:

latex tesis.tex
bibtex tesis
latex tesis.tex
latex tesis.tex
dvips -P cmz -t letter -o tesis.ps tesis.dvi
ps2pdf tesis.ps tesis.pdf
acroread tesis.pdf &

Dado que las revisiones con mi tutora eran capítulo a capítulo se me ocurrió armar un archivo independiente con el que podía compilar un capítulo de manera individual para podérselo enviar como pdf a mi tutora. Nombré a este archivo capitulo_ind.tex:

\documentclass[12pt]{article}

\usepackage{amssymb,amsmath,alltt}
\usepackage{graphicx}
\usepackage[latin1]{inputenc}
\usepackage[spanish]{babel}
\usepackage{fancyhdr, anysize}
\usepackage{epsfig}

\renewcommand{\sectionmark}[1]%
{\markright{{\small \thesection\ #1}}}
\lhead[\fancyplain{}{\bfseries \thepage}]%
{\fancyplain{}{\bfseries \rightmark}}

\rhead[\fancyplain{}{{\small \bfseries \leftmark}}]%
{\fancyplain{}{\bfseries \thepage}}

\sloppy

\parskip=5pt

\hoffset = 0pt
\oddsidemargin = .5cm
\evensidemargin = .5cm
\textheight = 657pt
\textwidth = 15.6cm
\topmargin = -2 cm

\begin{document}
% Cambiar la siguiente línea con el nombre del capítulo a compilar
\title{\bf Cap\'{\i}tulo 1: Introducci\'on}

\author{Juan P\'erez}

\maketitle
\input{capitulo1}
\bibliographystyle{abbrv}
\bibliography{myblib}
\end{document}

Como pueden ver hay que realizar ciertas modificaciones al archivo del capítulo en cuestión y el resultado obtenido no será exactamente el del documento final; pero como me sirvió también se les dejo.

Si son alumnos de la UNAM también tendrán que preocuparse por generar los archivos A1-An.pdf requeridos para la entrega electrónica de la tesis. Después de buscarle un rato la forma en la que se me ocurrió resolver el problema es la siguiente:

dvips -P cmz -p =10 -l =25 -t letter -o A1.ps tesis.dvi
ps2pdf A1.ps A1.pdf

En el comando -p hay que indicar (tras un signo de igual) el número de la primera página que quieren convertir a postscript. De igual manera se especifica el número de la última página del intervalo con el comando -l.

Es un poco engorroso porque hay que ir revisando las páginas modificando los comandos y tirando cada dvips con su respectivo ps2pdf... pero fue como finalmente armé la versión para el CD.

Por último les agradecería mucho que si usan alguno de mis códigos le peguen la siguiente leyenda al inicio:

% Copyright (C) 2008 Esteban Ricalde |e_ricalde@yahoo.com.mx|
%
% Este programa es software libre. Puede redistribuirlo y/o modificarlo
% bajo los términos de la Licencia Pública General de GNU según es publicada
% por la Free Software Foundation, bien de la versión 2 de dicha Licencia o
% bien (según su elección) de cualquier versión posterior.
%
% Este programa se distribuye con la esperanza de que sea útil, pero SIN
% NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL implícita o sin garantizar
% la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR. Véase la Licencia Pública General
% de GNU para más detalles.
%
% Debería haber recibido una copia de la Licencia Pública General junto con este
% programa. Si no ha sido así, escriba a la Free Software Foundation, Inc., en
% 675 Mass Ave, Cambridge, MA 02139, EEUU.
%
% Última modificación: 21/Julio/2008

Bueno eso es todo, con eso termino el post más largo que he escrito hasta el momento, ojala a alguien le sea de utilidad la información. Para dudas sobre LaTeX les recomiendo mucho [1].

Tras todo el trabajo creo que hacer la tesis en LaTeX valió la pena por la calidad del resultado obtenido y por todo lo que aprendí en el camino.

[1] Leslie Lamport, "LaTeX: A Document Preparation System", Editorial Addison-Wesley, 1994.