lunes, 30 de abril de 2012

Pretenciones artisticas: Intentando un nuevo formato

Las entradas sobre las tablas me han hecho notar lo obtuso que pueden ser algunas de las funciones de LaTeX.

Por tanto, tras (medio) leer un libro sobre el tema [1] he decidido intentar hacer algunas entradas con formato de cómic, con la esperanza que el aspecto visual haga mas sencilla la comprensión de algunos temas.

Y para empezar con el pie derecho aquí esta el debut del que sera el personaje principal, siendo este un blog lo lógico es que sea un gato de caricatura (con pretensiones de saber informática), al que he nombrado Hash o #, que aquí esta.

Hash 01: La razón de ser.


Referencias:

[1] - Will Eisner - Comics and Sequential Art.


miércoles, 25 de abril de 2012

Redimensionar Tablas en LaTeX

Como se menciono anteriormente al realizar tablas en LaTeX es necesario vigilar manualmente el grosor de la tabla para evitar que la tabla sea mas ancha que la pagina y se "corte".

Sin embargo existe una sencilla para prevenir esos casos, a la vez que le da a la tabla una apariencia mas procesional, el comando \resizebox.

Este comando toma como argumento el ancho que deseamos tenga la tabla y la escala adecuadamente cambiando el tamaño de letra y grosor de las lineas, logrando que la tabla solo tenga el ancho indicado.

Para poder hacer uso de este comando es necesario incluir el paquete graphicx que viene incluido en la instalación por defecto tanto de Tex Live como de MikTeX.

El formato de este comando es el siguiente:

\resizebox{<ancho_deseado>}{!} {

<entorno tabular que se desea escalar>

}

Es muy importante poner las llaves ya que estas delimitan donde tendrá efecto el comando.

Ahora se presentara un pequeño ejemplo con el fin de ilustrar el efecto del comando

Para esto en un documento LaTeX que contenga las declaraciones necesarias (\documentclass , \begin{document}, etc) agrege este codigo

\begin{table}
\centering
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
\multicolumn{5}{|c|}{Puerto fuente} & \multicolumn{4}{|c|}{Puerto destino} \\ \hline
\multicolumn{9}{|c|}{Numero de secuencia} \\ \hline
\multicolumn{9}{|c|}{Numero de reconocimiento} \\ \hline
Longitud cabecera & Reservado & URG & ACK & PSH & RST & SYN & FIN & Tamaño ventana \\ \hline
\multicolumn{5}{|c|}{Suma verificación} & \multicolumn{4}{|c|}{Puntero a datos urgentes} \\ \hline
\multicolumn{9}{|c|}{Opciones} \\ \hline
\multicolumn{9}{|c|}{Datos} \\ \hline
\end{tabular}
\caption{Estructura de un segmento TCP.}
\label{c2_tabla_segento_tcp}
\end{table}

El cual generara una tabla como la mostrara el la figura 1

Figura 1: Tabla sin redimensionar.
Notara que la tabla queda "cortada" por el borde de la pagina y parte del contenido queda fuera vista.

Ahora remplace el codigo de la tabla por este:

\begin{table}
\centering
\resizebox{10cm}{!} {
\begin{tabular}{|c|c|c|c|c|c|c|c|c|}
\hline
\multicolumn{5}{|c|}{Puerto fuente} & \multicolumn{4}{|c|}{Puerto destino} \\ \hline
\multicolumn{9}{|c|}{Numero de secuencia} \\ \hline
\multicolumn{9}{|c|}{Numero de reconocimiento} \\ \hline
Longitud cabecera & Reservado & URG & ACK & PSH & RST & SYN & FIN & Tamaño ventana \\ \hline
\multicolumn{5}{|c|}{Suma verificación} & \multicolumn{4}{|c|}{Puntero a datos urgentes} \\ \hline
\multicolumn{9}{|c|}{Opciones} \\ \hline
\multicolumn{9}{|c|}{Datos} \\ \hline
\end{tabular}
}
\caption{Estructura de un segmento TCP.}
\label{c2_tabla_segento_tcp}
\end{table}

Y recompile el documento, el resultado ahora lucirá como la Figura 2
Figura 2: Tabla redimensionada.

Ahora la tabla cabe perfectamente en la pagina y su contenido es perfectamente visible.

sábado, 21 de abril de 2012

Tablas en LaTeX

Pese a todas sus ventajas y su flexibilidad, hay un aspecto en particular de LaTeX que me a resultado confuso, difícil de usar y en momentos excesivamente rebuscado, esto es la generación de tablas.

Esto es mas que nada por el tener que manejar y vigilar manualmente cosas como el grosor de la tabla con respecto a la pagina, aspecto que si no se vigila puede causar que la tabla se "corte" al extenderse mas halla de la hoja.

Sin embargo, ya que es casi imposible hacer un documento de investigación sin tener que presentar datos tabulares en algún momento es conveniente realizar un pequeño tutorial que cubra al menos las características que requerí al escribir mi tesis de licenciatura.

El entorno Tabular

Para realizar las tablas en LaTeX es necesario acceder al entorno "tabular" para hacer esto basta utilizar los comandos \begin{tabular}{<opciones>} y \end{tabular} estos delimitan los comandos que generaran la tabla.

Notara que al comando \begin{tabular} se le pueden pasar opciones, estas no son opcionales puesto que indican el numero de columnas que tendrá la tabla, el formato es relativamente sencillo para cada columna que se desee utilizar se coloca una letra que indica como se posicionara el texto (centrado, ubicado a la derecha o a la izquierda), su se desea que halla lineas que delimiten las columnas se indican con caracteres |.

Una vez que a hecho esto puede proseguir a ingresar los datos, esto sigue un sencillo formato de la forma

<dato> &

donde el carácter & delimita la columna, solo recuerde no excederse del numero de columnas definido.

Al acabar esa columna escriba el carácter \\ para saltar a la siguiente, si además desea una linea dividiendo las filas utilice el comando \hline.

Como es esto no podría ser mas obtuso, abstracto y antagonista al usuario se presenta un pequeño ejemplo, en el cual se desea hacer una tabla con nueve columnas que tengan centrado el texto con excepción de la primera.

\begin{tabular}{|l|c|c|c|c|c|c|c|c|}
\hline
Octetos  & 7         & 1   & 6 & 6 & 2 & 0-1500 & 0-46 & 4 \\ \hline
Elemento & Preámbulo & SoF & Destino & Origen & Tamaño & Datos & Relleno & Verificación \\ \hline
\end{tabular}


Ahora podría presentarse el caso en que desee que una celda abarque varias columnas para hacer esto se usa la instrucción

\multicolumn{<numero de celdas>}{<contenido>}

Esta es un poco mas clara que las anteriores, con numero de celdas indicando cuantas celdas se desea abarcar y contenido se explica solo.

El entorno table

Si utilizara el entorno tabular directamente en un documento encontrara una serie de dificultades las cuales son

  1. La tabla aparece justo donde se le llamo, interrumpiendo el flujo de texto sin ningún tipo de margen.
  2. Si se llega al final de la pagina la tabla se "corta" quedando una parte en una pagina y el resto en otra.
  3. No se puede colocar un texto descriptivo o caption.
  4. No se numera automáticamente.
  5. No hay forma de hace referencia a dicha tabla desde otro punto del documento.
  6. No aparecerá en la lista de tablas generada por el comando \listoftables
Estas no son dificultades menores ya que afectan la presentación del documento de forma grave y dificultan consultar la tabla de manera eficiente, sin embargo hay una solución sencilla a esto, el entorno table.

Mediante el uso de este se le indica al compilador que debe tratar a la tabla de forma diferente al texto, ubicándola de modo que no interrumpa el flujo del texto y tampoco sea cortada por el cambio de pagina, a su vez que permite agregar texto descriptivo, etiquetas de referencia y llevar la numeración de la tabla de forma automática

El uso de este es muy simple, como muestra el ejemplo a continuación:

\begin{table}

\begin{tabular}{|l|c|c|c|c|c|c|c|c|}
\hline
Octetos  & 7         & 1   & 6 & 6 & 2 & 0-1500 & 0-46 & 4 \\ \hline
Elemento & Preámbulo & SoF & Destino & Origen & Tamaño & Datos & Relleno & Verificación \\ \hline
\end{tabular}

\caption{Trama Ethernet.}
\label{c2_estructura_ethernet}
\end{table}

Notara que los unicos cambios fue agregar las instruciones \begin{table}, \caption, \label y \end{table}

donde \caption contiene el texto descriptivo y  \label la etiqueta identificadora, con esto LaTeX posicionara y numerara la tabla de forma correcta.

Ya para terminar se presenta un ejemplo completo de lo presentado aquí, solo copielo a un archivo .tex y compilelo, le dará como resultado las tablas y lista de figuras mostradas en las siguientes imágenes

Figura 1: Entorno tabular solo

Figura 2: Entorno table

Figura 3: Multicolumn

Figura 4: Lista de tablas.


Ejemplo

\documentclass{article}

\usepackage[utf8]{inputenc}
\usepackage[spanish]{babel}
\usepackage{hyperref}

\begin{document}

Ejemplo de una tabla sencilla

\begin{tabular}{|l|c|c|c|c|c|c|c|c|}
\hline
Octetos  & 7         & 1   & 6 & 6 & 2 & 0-1500 & 0-46 & 4 \\ \hline
Elemento & Preámbulo & SoF & Destino & Origen & Tamaño & Datos & Relleno & Verificación \\ \hline
\end{tabular}

Notara que no se le coloco ningun tipo de texto descriptivo y que carece de numeración, a la vez que queda justo en el
flujo de texto, lo cual puede resultar incomodo de leer, a su vez esta tabla no aparecera en la lista de tablas al final
del documento y no hay forma de referenciarla desde otro punto del documento.


\newpage

Misma tabla sencilla, utilizando el entorno \emph{table}

\begin{table}
%\centering
\begin{tabular}{|l|c|c|c|c|c|c|c|c|}
\hline
Octetos  & 7         & 1   & 6 & 6 & 2 & 0-1500 & 0-46 & 4 \\ \hline
Elemento & Preámbulo & SoF & Destino & Origen & Tamaño & Datos & Relleno & Verificación \\ \hline
\end{tabular}
\caption{Trama Ethernet.}
\label{c2_estructura_ethernet}
\end{table}

Al usar el entorno \emph{table} fue posible agregar las instruciones \emph{caption}, la cual agrega un texto descriptivo a la tabla
y \emph{label} la cual nos permite referenciar la tabla con usar la instrucción \emph{ref}, como se ve aqui \ref{c2_estructura_ethernet}

Notara que la tabla tambien se posiciono automaticamente de modo que no corte el flujo del texto.

\newpage

En el caso que se desee que una de las celdas de la tabla abarque mas comunas, esto se puede lograr por medio del comando
\emph{multicolum} este toma como argumento cuantas columnas abarcara la celda, como se ubicara el texto y el contenido, un ejemplo
de esto se ve en la Tabla \ref{c2_tabla_cabecera_wifi}.


\begin{table}
\centering
\begin{tabular}{|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|p{1.3cm}|c|}
\hline
\multicolumn{7}{|c|}{Cabecera MAC} & & \\ \hline
2 bytes & 2 bytes & 6 bytes & 6 bytes & 6 bytes & 2 bytes & 6 bytes & 0-2312 bytes & 4 bytes \\ \hline
Frame Control & Duration ID & Address 1 & Address 2 & Address 3 & Secuence Control & Address 4 & Frame Body & CRC \\ \hline
\end{tabular}

\caption{Trama IEEE 802.11.}
\label{c2_tabla_cabecera_wifi}
\end{table}


\newpage

Siempre que las tablas se realizen con el entorno \emph{table} podra listarlas con solo usar el comando \emph{listoftables}
\listoftables

\end{document}




jueves, 5 de abril de 2012

Uso basico de Beamer

Como se menciono en la entrada anterior el paquete Beamer permite realizar presentaciones de diapositivas en LaTeX, ahora pues se mostrara el uso básico de dicho paquete.


Para comenzar se detallaran los paquetes que se deben incluir para generar la diapositiva, en todo caso los paquetes a incluir se indican con la instrucción \usepackage, estos son:

beamer: El paquete principal, contiene las funciones que generan las diapositivas.

utf8 o latin1: Para poder escribir directamente los acentos y ñ en sistemas Linux o Windows respectivamente.

babel: Con la opción spanish, con esto los texto generados por LaTeX (Figura, Bibliografía, etc) aparecerán en Español

hyperref: Habilita los enlaces en el documento, de modo que al dar click en un numero de referencia, lo lleve a dicha referencia.

Generación de las Diapositivas

La estructura de presentación es muy sencilla, cada diapositiva esta delimitada por  \begin{frame} y \end{frame} y mostrara lo contenido entre esas instrucciones.

Usando ese par de instrucciones puede generar tantas diapositivas como desee y en las que es posible utilizar todas las funciones disponibles en LaTeX.

Observaciones 
Si ha colocado imágenes en LaTeX, seguramente se habrá encontrado con el problema causado por imágenes demasiado grandes, que quedan "cortadas" si son mas grandes que la hoja en la que aparecen, ese problema también esta presente al hacer presentaciones, por lo que debe de tomarlo en cuenta y escalar las imágenes de modo que quepan en la diapositiva.

Otra observación es la cantidad de renglones de texto que puede poner tampoco es ilimitada, es aproximada mente de 17, tras lo cual el texto se corta.


Ejemplo.
Para concluir se presentara un ejemplo que incluye algunas de las posibilidades, que pueden realizarse, con el fin de mantener el código lo mas sencillo posible no se aplica ningún tema a la diapositiva

\documentclass{beamer}
\usepackage[utf8]{inputenc} % remplace utf8 con latin1
                            % si va a compilar en un sistema
                            % Windows
\usepackage{hyperref}
\usepackage[spanish]{babel}

% Agregamos información del autor y titulo

\title{Ejemplo en Beamer}
\author{David Raygoza Gómez}
\date{6 de Abril del 2012}

\begin{document}

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

\begin{frame}
Este es un ejemplo basico en beamer, el paquete para generar presentaciones en \LaTeX
\end{frame}

\begin{frame}
    Las instruciones \emph{    \textbackslash begin\{frame\} } y \emph{\textbackslash  end\{frame\}} delimitan lo que aparecera en una diapositiva
\end{frame}

\begin{frame}
  
Podemos poner Figuras
  
\begin{figure}
\includegraphics[scale=0.1]{c1-inicio}
\caption{Interfaz}
\label{img_1}
\end{figure}

Teniendo cuidado de que sean del tamaño adecuado
  
\end{frame}

\begin{frame}
Listas
  
\begin{enumerate}
\item Elemento 1
\item Elemento 2
\item Elemento 3
\end{enumerate}
  
\end{frame}

\begin{frame}
\begin{center}
Tambien pueden centrarse elementos
\end{center}
Y referencias figuras, como la Figura \ref{img_1}
\end{frame}

\end{document}

Antes de compilar recuerde cambiar el nombre de la imagen (en la instrucción \includegraphics[scale=0.1]{c1-inicio} ) de c1-inicio al nombre de alguna imagen que tenga en ese mismo directorio

lunes, 2 de abril de 2012

Beamer: Generar presentaciones en LaTeX

Después de la redacción de un documento de investigación el paso siguiente suele ser presentar las ideas de este frente a una audiencia.

La forma mas común de hacer esto es por medio de una presentación que se proyecta con un cañón y que normalmente se presenta como una serie de diapositivas, dado que esta se a convertido en la forma usual de presentar los resultados de una investigación, no es de extrañar que existan paquetes para LaTeX que nos permitan generar dichas presentaciones.

Uno de estos paquetes es Beamer, con el cual es posible generar diapositivas con facilidad y accediendo a las opciones y flexibilidad que el LaTeX proporciona.

Siguiendo el espíritu que han tenido las entradas sobre LaTeX hasta este punto comenzaremos pues con su instalación la cual es bastante simple tanto en sistemas Linux como en Windows.

Para el caso de los sistemas Linux, como lo son Fedora y Ubuntu basta con instalar Tex Live, puesto que este entorno ya incluye Beamer por defecto (Para ver la instalación en la distribución Fedora puede consultar la siguiente entrada en este blog Instalando LaTex en Fedora Linux.  )

En el caso de los sistemas Windows usando MikTex es cuestión de instalarlo desde el manejador de  paquetes del programa, un enlace de como realizar este proceso y que hacer si el paquete no aparece en el manejador se encuentra en la sección de referencias [2]

Si bien los detalles y peculiaridades del uso de Beamer serán el tema de futuras entradas, considero adecuado mostrar un ejemplo sencillo, como con los ejemplos anteriores copie el siguiente texto y compilelo.

\documentclass{beamer}
\usepackage[utf8]{inputenc} % remplace utf8 con latin1

                            % si va a compilar en un sistema
                            % Windows
\usepackage{times}
\usepackage[T1]{fontenc}
\usepackage[spanish]{babel}

% Agregamos información del autor y titulo

\title{Ejemplo en Beamer}
\author{David Raygoza Gómez}
\date{3 de Abril del 2012}

%Definimos la apariencia de las presentaciones
\usetheme{PaloAlto}
\usecolortheme{default}
\setbeamercovered{transparent}

\begin{document}

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

\begin{frame}
Este es un ejemplo basico en beamer, el paquete para generar presentaciones en \LaTeX
\end{frame}

\end{document}


Una ves que compile el documento (y que no halla habido errores) obtendrá dos diapositivas que lucirán con las figuras 1 y 2

Figura 1: Portada
Figura 2: Pagina 1


Referencias
[1] Presentaciones en Latex – Beamer
[2] LaTeX beamer