miércoles, 30 de marzo de 2011

Tablas con LaTeX (2)

En la siguiente entrada mostraré algunos ejemplos un poquito más complejos de tablas.

Cuando hacemos tablas, el comando \multicolumn{1}{|c|}{A} es muy útil. Con él podemos fusionar celdas de la misma fila, cambiar el ajuste del texto (centrado, izquierda, derecha...) en una sola celda, o poner líneas verticales solo en algunas celdas. Las primeras llaves dicen las celdas que se van a fusionar ({1} = celda formada por una única celda, es decir, no se fusiona nada). Las segundas llaves dicen el formato ({|c|} = con rayas verticales y el texto centrado). Las últimas llaves dicen el texto de la celda. A continuación, un ejemplo:

\begin{table}[htb]
\centering
\begin{tabular}{ c c c c c }
\hline
\multicolumn{5}{c}{Cuadro mágico.}\\
\hline \hline
11 & 24 & 7 & 20 & 3\\
4 & 12 & 25 & 8 & 16\\
\cline{2-2}
17 & \multicolumn{1}{|c|}{5} & 13 & 21 & 9\\
\cline{2-2} \cline{4-5}
10 & 18 & 1 & \multicolumn{1}{|c}{14} & \multicolumn{1}{c|}{22}\\
\cline{4-5}
23 & 6 & 19 & 2 & 15\\
\hline
\end{tabular}
\caption{Tabla ejemplo.}
\label{tabla:sinlineas}
\end{table}
% cline{1-2} = crea una línea horizontal entre la columna 1 y la 2.




Hay veces, que nos interesa ajustar varios números respecto del punto de los decimales. Una posibilidad es dividir los números en dos columnas, una de la parte entera, ajustada a la derecha, y otra de la parte decimal, ajustada a la izquierda. Cuya separación entre ambas columnas sea un punto, en vez de una raya. Para eso, se utiliza el comando "r@{.}" (en vez de {.} podríamos haber puesto cualquier otro símbolo). A continuación, un ejemplo:

Por ejemplo, la tabla (\ref{tabla:ajustepunto}):

\begin{table}[htb]
\centering
\begin{tabular}{|c|r@{.}l|}
\hline
\multicolumn{3}{|c|}{Números decimales} \\
\hline
A & 2 & 501 \\
\hline
B & 15 & 4 \\
\hline
C & 3700 & 25 \\
\hline
\end{tabular}
\caption{Números ajustados en el punto decimal.}
\label{tabla:ajustepunto}
\end{table}

martes, 29 de marzo de 2011

Figuras y subfiguras en LaTeX

En la siguiente entrada mostraré cómo se añaden figuras en LaTeX. Primero, nuestro documento de LaTeX tendrá que ser parecido a lo siguiente, donde se cargan los paquetes "graphicx" y "subfigure" para añadir figuras y subfiguras respectivamente.

\documentclass[a4paper,openright,12pt]{report}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}

\usepackage{graphicx} % figuras
\usepackage{subfigure} % subfiguras

\begin{document}

\end{document}



Es importante tener en cuenta que LaTeX trabaja con el formato eps para dibujos. Existen muchos programas que te ayudaran a tener los dibujos en este formato. Por ejemplo, Matlab y R permiten salvar los gráficos en eps. Diaw.exe (que es gratuito) es una herramienta muy útil para crear dibujos en eps. Finalmente, el programa Gimp2 (que también es gratuito) te permite (entre otras cosas) transformar muchos formatos de imágenes a eps.

Supongamos ahora que tenemos la imagen "horizonte.eps", que queremos añadir a nuestro documento. "horizonte.eps" lo tenemos salvado en la carpeta "figuras" que está al lado de nuestro archivo .tex. En este caso, para añadir el gráfico podríamos hacer algo similar a lo siguiente:

La figura (\ref{fig:horizonte}) es una foto del mar Atlántico, desde San Vicente de la Barquera, un pueblo del norte de España.

\begin{figure}[htb]
\centering
\includegraphics[width=0.8\textwidth]{./figuras/horizonte}
\caption{Mar Atlántico.} \label{fig:horizonte}
\end{figure}


Nota1: 0.8\textwidth significa que la anchura del dibujo es el 80% de la anchura que ocupa el texto. También se podría haber puesto \columnwidth (si trabajamos en dos columnas) o fijar la anchura directamente en mm, cm, in (pulgadas)... (como en el ejemplo siguiente).

Nota2: [htbp] significa que el orden para que LaTeX trate de incrustar la imagen es: primero que lo intente aquí (h), luego en la parte de arriba (t), a continuación, en la parte de abajo (b), y por último, en la parte de arriba de la siguiente página (p). Puedes reordenar estas letras para seleccionar el orden que prefieras. Eso sí, muchas veces LaTeX hace lo que quiere. Pero si pones [H], indicas a LaTeX que ponga la imagen exactamente ahí. Para usar [H] tienes que cargar el paquete {float}.

Nota3: Como LaTeX trabaja por defecto con dibujos en .eps, no hace falta indicar la extensión a los dibujos.



El paquete "subfigure" permite hacer subfiguras de manera fácil. LaTeX es muy listo y dependiendo del tamaño de cada subfigura, la pasa o no a la línea siguiente. A continuación, un ejemplo donde se añaden tres subfiguras:

\begin{figure}[htbp]
\centering
\subfigure[Starks]{\includegraphics[width=40mm]{./starks1}}
\subfigure[Arya y Reeds]{\includegraphics[width=40mm]{./starks2}}
\subfigure[Lannisters]{\includegraphics[width=80mm]{./lannisters}}
\caption{Legos.} \label{fig:lego}
\end{figure}


Para separar las subfiguras entre sí, puedes usar \vspace y \hspace, para modificar el espacio vertical y horizontal respectivamente:

\begin{figure}[htbp]
\centering
\subfigure[Starks]{\includegraphics[width=40mm]{./starks1}}\hspace{10mm}
\subfigure[Arya y Reeds]{\includegraphics[width=40mm]{./starks2}}\vspace{10mm}
\subfigure[Lannisters]{\includegraphics[width=80mm]{./lannisters}}
\caption{Legos.} \label{fig:lego}
\end{figure}



Una última cosa. La etiqueta de las figuras, aparece debajo de cada figura. Si quieres que vaya arriba, basta con que escribas la etiqueta "\caption{}" antes de "\includegraphics[]{}".

miércoles, 23 de marzo de 2011

Bibliografía en LaTeX

En la siguiente entrada mostraré algunos ejemplos sobre cómo utilizar la bibliografía con LaTeX. En primer lugar, supongamos que tenemos cuatro artículos a los que queremos hacer referencia en nuestro documento. Primero, tenemos que crear el archivo "biblio.bib" con las referencias. Existen programas específicos para hacer eso, como por ejemplo, JabRef, que es el que yo uso.

Los artículos ejemplos son:

@ARTICLE{Alfonso2010a,
author = {M. Alfonso and B. Bernardo and C. Carlos and D. Domingo},
title = {El problema de los gatos y los perros},
journal = {Mascotas},
year = {2010},
volume = {50},
pages = {112-115}
}

@ARTICLE{Alfonso2010b,
author = {M. Alfonso and M. Marta and N. Nuria},
title = {Mi viaje a {EEUU}},
journal = {Revista de viajes},
year = {2010},
volume = {14},
pages = {50-56}
}

@ARTICLE{Patricio2011,
author = {A. Patricio},
title = {Una estrella rosa en el fondo del mar},
journal = {El mar},
year = {2011},
volume = {3},
pages = {1071-1090}
}

@ARTICLE{Zacarias2009,
author = {R. Zacarias and G. Graciela},
title = {¿{C}uál te gusta más?},
journal = {Flores},
year = {2009},
volume = {5},
pages = {45-49}
}

Para indicar a LaTeX qué artículo queremos, caracterizamos cada uno con una etiqueta (en este caso: Alfonso2010a, Alfonso2010b, Patricio2011 y Zacarias2009). A mí me gusta poner el nombre del primer autor más el año. Si el autor publicó más de un artículo ese año, pongo una letra después del año.

Además, es muy importante tener en cuenta lo siguiente:
  • Los autores hay que separarlos con "and".
  • Si en el título hay siglas que tienen que estar siempre en mayúsculas (por ejemplo, EEUU), hay que escribir la palabra en cuestión entre llaves. (De no hacer esto, LaTeX lo escribiría en minúsculas.)
Existen muchos formatos posibles para escribir la bibliografía (cuya extensión es .bst). Algunos formatos .bst ya vienen por defecto en el compilador de LaTeX, pero si el que queremos usar no viniera, bastaría con descargarlo de internet y copiarlo en la misma carpeta donde tengamos el documento que estemos creando. En el siguiente link encontrarás muchos formatos posibles (click aquí).

A continuación muestro los formatos que más me gustan a mí.



1) Artículos ordenados alfabéticamente y referencias con números.

Para ello podemos usar el estilo "acm.bst". Nuestro archivo de LaTeX debería de ser algo similar a lo siguiente. Es importante cargar el paquete "cite" para que LaTeX compacte las referencias (es decir, que ponga [1-4] en vez de [1][2][3][4]).

\documentclass[a4paper,openright,12pt]{report}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}

\usepackage{cite} % para contraer referencias

\begin{document}

Puedes verlo en \cite{Patricio2011}. Te recomiendo leer \cite{Patricio2011, Zacarias2009, Alfonso2010b, Alfonso2010a}.

\bibliographystyle{acm}
\bibliography{biblio}
\end{document}



También podríamos haber usado el estilo "IEEEannot.bst". Es parecido al estilo anterior, pero este no pone los autores en mayúsculas. Este estilo no viene por defecto, así que lo tenemos que descargar (click aquí) y salvar en nuestra carpeta de trabajo (donde tenemos nuestro archivo .tex).

\usepackage{cite} % para contraer referencias

\begin{document}

Puedes verlo en \cite{Patricio2011}. Te recomiendo leer \cite{Patricio2011, Zacarias2009, Alfonso2010b, Alfonso2010a}.

\bibliographystyle{IEEEannot}
\bibliography{biblio}
\end{document}






2) Artículos ordenados por orden de aparición y referencias con números.

En este caso, podemos utilizar el estilo de bibliografía "unsrt.bst", como sigue:

\usepackage{cite} % para contraer referencias

\begin{document}

Puedes verlo en \cite{Patricio2011}. Te recomiendo leer \cite{Patricio2011, Zacarias2009, Alfonso2010b, Alfonso2010a}.

\bibliographystyle{unsrt}
\bibliography{biblio}

\end{document}






3) Artículos ordenados por orden alfabético y referencias por nombre y año.

En ese caso, podemos utilizar el estilo "jtbnew.bst". Este estilo no viene por defecto, así que lo tenemos que descargar (click aquí) y salvar en nuestra carpeta de trabajo. Para contraer correctamente las referencias (y que las escriba más bonitas), en vez de cargar el paquete "cite", hay que cargar el paquete natbib.

\usepackage[sort&compress]{natbib} % para contraer referencias de texto

\begin{document}

Puedes verlo en \cite{Patricio2011}. Te recomiendo leer \cite{Patricio2011, Zacarias2009, Alfonso2010b, Alfonso2010a}.

\bibliographystyle{jtbnew}
\bibliography{biblio}

\end{document}



En el caso de referencias con nombre y año, creo que es mejor hacer las llamadas a cada referencia por separado (excepto cuando dos o más son del mismo autor). Es decir

Puedes verlo en \cite{Patricio2011}. Te recomiendo leer \cite{Zacarias2009}, \cite{Alfonso2010b, Alfonso2010a} y \cite{Patricio2011}.


Otra posibilidad es utilizar el paquete "apalike.bst". También es necesario descargarlo (click aquí) y salvarlo en nuestra carpeta de trabajo.

\usepackage[sort&compress]{natbib} % para contraer referencias de texto

\begin{document}
Puedes verlo en \cite{Patricio2011}. Te recomiendo leer \cite{Zacarias2009}, \cite{Alfonso2010b, Alfonso2010a} y \cite{Patricio2011}.
 

\bibliographystyle{apalike}
\bibliography{biblio}

\end{document}





Algunos últimos comentarios:

Cuando un artículo posee más de dos autores, LaTeX lo contrae utilizando la locución latina "et al." (et alii = "y otros"), mientras que si un artículo tiene exactamente dos autores, los separa por "&" o "and" (dependiendo del formato). Pero si estamos escribiendo en español, esto queda bastante mal. Dos autores deberían ir separdos por "y". En otra entrada, explico cómo solucionar este problema (click aquí).

Otro posible fallo ocurre cuando los apellidos de los autores, tienen acentos, diéresis, eñes, o algún otro símbolo no estándar. En nuestro texto, podemos escribirlos sin ningún problema, pero a veces falla si ese símbolo aparece en la bibliografía. Esto se debe a que hay varios métodos de codificación (latin1, utf8, cp1252...). Si nuestro documetno de LaTeX usa uno, y JabRef otro distinto, no va a funcionar. Si ocurre este problema, en la bibliografía, es mejor poner estos símbolos con código:

\'a \'e \'i \'o \'u \"u
\'A \'E \'I \'O \'U \"U
\~n \~N
?` ?  !` !


Hay veces que queremos que nos aparezca en la lista bibliográfica una cierta referencia, pero sin que la hayamos citado en ningún momento en el texto. Esto lo podemos hacer con el comando "\nocite{}".

Otras veces lo que queremos es añadir una pequeña lista de referencias, independiente de la lista final de bibliografía. Por ejemplo, una lista con los artículos que nosotros hayamos escrito. Tengo otra entrada donde explico cómo hacerlo (click aquí).

Por último, hay veces que queremos añadir algún comentario extra en alguna de las referencias. Esto lo podemos indicar con \note={"texto que queramos"}. Por ejemplo:

@ARTICLE{Zacarias2009,
author = {R. Zacarias and G. Graciela},
title = {¿{C}uál te gusta más?},
journal = {Flores},
year = {2009},
volume = {5},
pages = {45-49},
note = {Premio 2009}
}


miércoles, 16 de marzo de 2011

Formato B5 en hojas A4

Cuando uno está escribiendo una tesis, es muy común presentarla en formato B5 (176 mm x 250 mm), que resulta muy cómodo y manejable. Sin embargo, a la hora de imprimir casi siempre se hace en A4 (210 mm x 297 mm). Una solución muy sencilla sería crear el documento en A4, con márgenes suficientes en un lateral y en la parte inferior. Y a continuación, cortar (en cualquier reprografía) el margen sobrante.

El código que habría que escribir sería similar al siguiente. Los números en milímetros del tamaño de la zona de texto (ancho y alto), margen derecho (para páginas pares e impares) y margen superior, son indicativos. Cada uno debería elegir el margen que más le guste.

\documentclass[a4paper,twoside,12pt]{book}

\setlength{\textwidth}{125mm}
\setlength{\textheight}{195mm}
\setlength{\oddsidemargin}{6mm}
\setlength{\evensidemargin}{28mm}
\setlength{\topmargin}{-5mm}

\begin{document}

\end{document}

En la siguiente figura se muestra el significado de estos márgenes. Hay que tener en cuenta que LaTeX ya da un cierto margen superior y lateral. Con sidemargin y topmargin podemos dejar el margen por defecto (dando un valor de 0mm), aumentarlo o disminuirlo (poniendo un número negativo).

jueves, 3 de marzo de 2011

Dar formato en LaTeX

A continuación, se muestran algunos comandos comunes para dar formato en LaTeX. Lo primero sería crear un archivo .tex con la siguiente estructura, donde se cargan las librerías más importantes. Además, también se carga el paquete soul, para poder realizar tachados.

\documentclass[a4paper,openright,12pt]{report}
\usepackage[spanish]{babel}
\usepackage[utf8]{inputenc}
\usepackage{soul} % para tachar palabras



  • Para escribir en negrita, cursiva, mayúsculas, subrayado, etc., podemos usar los comandos siguientes:

Con LaTeX se puede escribir fácilmente \textbf{en negrita}, \textit{en cursiva}, \textsc{En Mayúsculas}, \emph{enfatizado}, \underline{subrayado}, \texttt{como máquina de escribir}, \textsl{inclinada (no cursiva)}...


Nótese que en este caso, el enfatizado ha puesto la palabra en cursiva. Pero eso no siempre es así. Dependiendo del paquete o tipo de documento, el enfatizado será en cursiva, en rojo, en negrita, etc.



  • Para tachar una palabra, tenemos varias opciones. Podemos cargar el paquete {soul}, y usar el comando \textst:

\usepackage{soul}

Hoy es un día \textst{normal} único. En \emph{tus manos} está que así sea.


Otra opción es cargar el paquete {ulem}, y usar el comando \sout. Es importante tener en cuenta, que al cargar este paquete, las palabras enfatizadas, ahora se ponen subrayadas.

\usepackage{ulem}

Hoy es un día \sout{normal}único. En \emph{tus manos} está que así sea.


El paquete {ulem}, además, tiene varias otras opciones, como muestro a continuación:

\usepackage{ulem}

Este paquete también permite \uuline{hacer doble subrayado}, \uwave{subrayar con curva ondulada} y \xout{tachar con ganas}.




  • El tamaño del texto se puede fijar con los comandos siguentes (de menor a mayor tamaño):
    • \tiny
    • \scriptsize
    • \footnotesize
    • \small
    • \normalsize
    • \large
    • \Large
    • \LARGE
    • \huge
    • \Huge
Estos comandos, cambian el tamaño de todo el texto, desde donde están hasta el final. De esta forma, cuando queramos volver al tamaño normal, habrá que escribir \normalsize:

bla bla bla \huge bla bla bla \normalsize bla bla \\

Otra posibilidad, sería encerrar estos comandos dentro de un bloque \begin{}... \end{}:

bla bla bla \begin{huge}bla bla bla \end{huge}bla bla \\

En ambos casos, el resultado sería el mismo:




  • Cómo separar por sílabas correctamente una palabra.
LaTeX sabe cómo separar las palabras por sílabas, pero hay veces que hay una palabra (un nombre propio, por ejemplo), que lo hace mal. Para decirle a LaTeX cómo hacerlo correctamente, basta con separar las sílabas con "\-" como se muestra a continuación:

Mi agradecimiento a Ya\-rosh\-chuk.



  • Cómo evitar que LaTeX corte las palabras, al final de una línea.
Si no quieres que LaTeX corte ninguna palabra en sílabas, al final de una línea, puedes usar el paquete {hyphenat}:

\usepackage[none]{hyphenat}



  • Cómo mantener una o varias palabras juntas, siempre en la misma línea.
Podemos hacerlo de dos formas, con \mbox{} o con ~. Como muestro a continuación:

Hoy la temperatura no bajará de \mbox{20 °C} durante la noche.
Hoy la temperatura no bajará de 20~°C durante la noche.

Hay una diferencia entre ambos comandos. Con \mbox{}, las palabras estarán siempre en la misma línea. Ninguna de las palabras será cortada ni separada con un guión, y movida al renglón siguiente. Mientras que con ~, sí que una de las dos palabras se puede romper si no cabe en la línea, pero el salto de línea nunca será en ~. Esto puede ser útil, cuando hacemos referencias a tablas, figuras o secciónes. Es decir, con:

En la sección~\ref{se:intro} se resumen...

al final de la línea podremos tener:
 pero nunca:

Cómo usar LaTeX en varios idiomas

A continuación mostraré cómo trabajar en LaTeX en varios idiomas. Nuestro archivo .tex será similar a lo siguiente, donde se han cargado los idiomas "spanish" y "USenglish".

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


\begin{document}

\end{document}

Cuando se cargan más de un idioma, LaTex trabaja con el último paquete. Para ir cambiando el idioma utilizado a lo largo del documento, se utiliza el comando \selectlanguage{spanish}.

\selectlanguage{spanish}

Primero en español. Tenemos que minimizar los costes (\ref{fun:min_esp}).

\begin{equation} \label{fun:min_esp}
\min_{u} J = \sum_{i} y(i) \cdot 1.5
\end{equation}

\selectlanguage{USenglish}

Next, in English. Expenses should be minimized (\ref{fun:min_eng}).

\begin{equation} \label{fun:min_eng}
\min_{u} J = \sum_{i} y(i) \cdot 1.5
\end{equation}


Nótese que LaTeX pone automáticamente "min" con acento o sin acento, y la separación de decimales con coma o punto, dependiendo de si se trabaja en español o inglés.