domingo, 26 de agosto de 2012

Multicolumna en LaTeX

Después de casi dos meses de buscar trabajo, encontrarlo, acostumbrarme a no tener tiempo libre de las 3pm a las 9pm y ver como aprovechar mejor las mañanas (esto ultimo fue lo mas latoso), creo que ya es hora de poner algo aquí de nuevo.

Una de las cosas que me estuve pensando mientras mandaba mas correos con mi C.V que los spamers rusos es si seria posible replicar el formato que estaba usando con LaTeX y al parecer si lo es (ya solo falta buscar como posicionar una imagen en un lugar muy especifico del documento)

Considero que antes de armar todo el documento seria mejor presentar  las estructuras poco usuales que use para darle forma, empezando con una forma de presentar los datos generales.

Para esto quería una estructura de este modo:

Nombre:                                                     Juan Camaney
Fecha de nacimiento:                                 01/01/1999
Domicilio:                                                  Avenida Siempre viva 123
Telefono:                                                   (000) 12 34 54 7

Nada el otro mundo como notaran, solo la información con los datos en si alineados en la parte derecha, hacer esto en LibreOffice o MS Office no es ningún problema, solo basta hacer uso de la siempre confiable tecla que es el tabulador (aqui no se nota mucho, pero al parecer en el editor de blogger la tecla TAB hace otra cosa).

Ahora hacer eso en LaTeX es un poco mas complejo, una opción seria tratar de alinear manualmente escapando caracteres de espacio, pero eso no solo seria una solución muy poco elegante sino que ademas seria demasiado propensa al error.

Por fortuna existe una solución que hace ese formato sin ningún problema, esta es una combinación de las ya conocidas listas junto con la instrucción multicols del paquete multicol.

Esta instrucción nos permite dividir una sección de texto en el numero de columnas que deseemos, manejando automáticamente cuando texto le toca a cada columna para que quede lo mas parejo posible y su uso es muy sencillo.

La forma de usarlo es la siguiente:

\begin{multicols}{2}

\begin{itemize}
\item[] Nombre.
\item[] Fecha de Nacimiento.
\item[] Estado Civil.
\item[] Domicilio Particular.
\item[] Teléfono.
\item[] E-mail.
\item[] Juan Camaney.
\item[] 1 de Enero 1999.
\item[] Soltero.
\item[] Avenida Siempre Viva \#123.
\item[] 12-34-56-7
\item[] noreply@xmail.com.im
\end{itemize}

\end{multicols}


Donde \begin{multicols}{2} indica que deseamos crear 2 columnas con el texto hasta llegar a \end{multicols}. Un detalle que tal vez note en las instrucciones \item son los corchetes que puse justo despues de estas, esto es unicamente para quitar los puntos que el comando itemize suele poner y para nada una necesidad del comando multicols.

El resultado se ve como en la Figura 1.

Lista de datos después de aplicar multicols.

Como podrá notar esto cumple con lo que se desea, los datos en ambos lados están perfectamente alineados tanto vertical como horizontalmente sin la necesidad de usar espacios escapados u otras forma de alineación manual.


Ya para concluir pongo a continuación el código completo el cual muestra que se agrego el paquete multicol para poder usar la instrucción multicols.

Codigo del documento:

\documentclass[11pt]{article}

\usepackage[utf8]{inputenc} % para usar ñ y acentos en Linux

                            % cambie por latin1 en Windows
\usepackage[spanish]{babel}
\usepackage{hyperref}
\usepackage{graphicx}
\usepackage{multicol}

\begin{document}

\begin{center}
\textbf{Datos Generales}
\end{center}

\begin{multicols}{2}

\begin{itemize}
% Primero ponemos los nombres de los campos
\item[] Nombre.
\item[] Fecha de Nacimiento.
\item[] Estado Civil.
\item[] Domicilio Particular.
\item[] Teléfono.
\item[] E-mail.
% Y ya pasando de la mitad ponemos el valor de cada campo
\item[] Juan Camaney.
\item[] 1 de Enero 1999.
\item[] Soltero.
\item[] Avenida Siempre Viva \#123.
\item[] 12-34-56-7
\item[] noreply@xmail.com.im
\end{itemize}

\end{multicols}

\end{document}



No hay comentarios:

Publicar un comentario