Tablas en LaTeX

Sábado, 30 diciembre 2006

Bien, llegadas las Navidades, no es Antena3 la única que se dedica a los refritos y las reposiciones de viejos programas. Por eso, sin ningún tipo de pudor, reedito aquí otro post de LaTeX aparecido en su día en “El Trastero de Mazi“. En el se cuenta como formatear una tabla en LaTeX.

Bueno… llevaba tiempo queriendo escribir éste, mi segundo artículo sobre LaTeX. Esta vez intentaré explicar cómo introducir una tabla en un documento que estemos escribiendo.

Bien, a la hora de introducir nuestra tabla, imaginemos que estamos elaborando un horario para nuestras clases, teclearemos la siguiente secuencia de comandos:

\\begin{table}[h]
\\begin{center}\\begin{tabular}{|c|c|c|c|c|c|}
\\hline
Hora & Lunes & Martes & Miércoles & Jueves & Viernes \\\\
\\hline
8 & Matemáticas & Matemáticas & Matemáticas & Matemáticas & \\\\
\\hline
9 & Programación & Programación & Programación & Programación & Programación \\\\
\\hline
10 & CIA & CIA & Ordenadores & CIA & CIA \\\\
\\hline
11 & Ordenadores & Ordenadores & Ordenadores & Ordenadores & Circuitos \\\\
\\hline
12 & Ordenadores  & Circuitos & Circuitos & Circuitos & \\\\
\\hline
13 & Circuitos & Analógica & Analógica & Analógica & \\\\
\\hline
\\end{tabular}\\end{center}
\\caption{Horario primer cuatrimestre}
\\end{table}

Bien comentamos paso a paso la secuencia:

* El ambiente table del primer comando (\begin{table}[opción]), no es totalmente necesario para la creación de la tabla, pero nos puede resultar beneficioso por dos razones: 1. Para estar seguros de que no ocurrirá “nada raro” en medio de la tabla, de tal forma de que ésta no se corte y continúe en la siguiente página. 2. Para generar tablas numeradas, de tal forma que aparezcan en el índice de tablas. Dentro de los corchetes de la opción, podemos pasar varios parámetros: 1. h: significa que LaTeX creará la tabla en el sitio mismo donde empieza el ambiente table, siempre que esto sea posible. 2. t: esta opción situará la tabla en el borde superior de la página. 3. b: esto provocará que la tabla se sitúe en el borde inferior de la página. 4. p: si usamos esta opción, la tabla será creada en una hoja aparte.

* El ambiente tabular, (\begin{tabular}{|c|l|r|})será el que realmente nos cree la tabla. En él, definiremos el número de columnas de nuestra tabla y la alineación de las mismas. 1. Si escribimos las barras verticales que véis ahí significan eso mismo: que queremos que nuestra tabla tenga líneas verticales que la delimiten y separen sus columnas. 2. Una “c” significa que queremos centrar el contenido de una columna, una “l” que deseamos la alineación a la izquierda del contenido de una columna, una “r” lo mismo pero a la derecha y si escribimos “p{anchura}”, crearemos una columna de una anchura determinada en la que podremos insertar un texto justificado con saltos de línea. También podemos introducir en este espacio la opción “@{.}”, que nos alinearía una columna teniendo en cuenta el punto decimal de las cifras introducidas en ella.

* El comando \hline introduce una línea horizontal y deberemos intoducirlo todas las veces que está ahí arriba si queremos tener todas las líneas horizontales de la tabla.

* Por último, para introducir cada cosa en su columna, se separará cada elemento por un espacio+&, tal y como está escrito. Ah, el comando \caption{texto} nos permite introducir un pequeño texto descriptivo al pie de la tabla. Aunque alguna columna quede vacía, como en este ejemplo pasa varias veces con la última, debemos escribir de todas formas el “&” para obtener un formateado totalmente satisfactorio de la tabla.

Por último (otra vez), LaTeX al crear el índice de tablas y los pies de las mismas, las llama cuadros. ¿Os convence? A mí no, desde luego. Esto lo podemos arreglar y hacer que llame a las cosas por su nombre: tablas. Para eso no tenemos más que introducir estos dos comandos después de la línea que marca el inicio del documento (\begin{document}):

\\renewcommand{\\tablename}{Tabla}

\\renewcommand{\\listtablename}{Indice de tablas}

Si introducís estos comandos en la plantilla del primer post, comprobaréis que se crea una tabla de 6 columnas. La forma de añadir filas, que creo es lo menos evidente, es cerrar línea con doble contrabarra “\\” y luego trazar la línea de separación horizontal con \hline. Bueno, ahora sí que nada más. con esto y un bizcocho… Si queda algo poco claro, pido perdón de antemano. Dudas, ya sabéis. Agur.”

Aparte de eso, saludos a todos, y desearles una feliz salida y entrada de Año. Ciao.

Un poquito de LaTeX (II)

Lunes, 18 diciembre 2006

A continuación, se resuelven una serie de dudas que generó el primer artículo sobre LaTeX que publiqué en “El Trastero de Mazi“. Son un par de cosillas acerca de la compilación y la codificación de caracteres en LaTeX. Aquí van esas dos cuestioncillas que no estaban demasiado claras en su día. Espero que sea útil esta “reedición” de aquellos posts. Un saludo a todos.

“Bueno, con esta segunda entrada, espero dejar zanjadas un par de cuestiones que parecen ser que no quedaron del todo claras ayer con el primer artículo sobre LaTeX.

Lo primero, deciros que he creado la categoría “LaTeX”, donde iré dejando todos los posts que pueda escribir sobre el tema. Así, creo que satisfago, al menos en parte, la sugerencia que me hacía Javi sobre crear un enlace al posts de ayer. De esta forma, los tendrás todos juntitos, sólo te tocará buscar el que quieres :).

En segundo lugar, voy a explicar un poco más detalladamente el proceso para compilar un documento. Escribiremos el documento con un editor cualquiera. Como ya dije, nos vale cualquiera, nano, vim, joe…etc. El fichero, lo guardaremos con extensión .tex. Una vez que lo hayamos escrito, lo podemos compilar con el comando:

$ latex archivo.tex

Esto nos generará varios archivos de salida, lo único que nos interesa realmente es el archivo .dvi que nos genera, ya que los demás los podemos considerar transparentes a nosotros. Podemos convertir este .dvi a .ps o .pdf con los comandos dvips y dvipdf respectivamente. Sin embargo, nos podemos ahorrar todos estos pasos y compilar directamente sacando la salida directamente a .pdf con el comando:

$ pdfelatex archivo.tex

Bien, con esto, espero haber dejado claro el tema de la compilación al que se refería Javi.

Por otro lado, con el tema de la codificación de caracteres me meteré otro día (ayer sólo se trataba de crear una plantilla de documento estándar), sólo decir que el paquete que metía el otro día \usepackage[latin1]{inputenc}, llevaba la opción [latin1], que sirve para las codificaciones ISO, porque es la que usa LaTeX por defecto. Otro día explicaré más a fondo cómo usar UTF y varias otras.

Para acabar, quería explicar un poco mejor qué hace el paquete babel. Este paquete se encarga de que, si escribimos en un idioma distinto del inglés, todo encaje a la perfección. Me explico. Se encarga de separarnos las palabras con corrección de acuerdo a las reglas ortógraficas del idioma en el que escribimos, de traducir el nombre de las secciones y epígrafes a ese idioma (si no lo ponemos, en castellano en vez de capítulos tendremos chapters). Es, por tanto, importante incluir este paquete en las cabeceras para escribir en castellano, ya que si no el compilador creerá que nuestro idioma es el inglés (el que viene por defecto) y habrá algunas cosas que no queden como deseamos.

Si hay algo que no esté claro, ya sabéis donde preguntarlo. Un saludo.”

Un poquito de LaTeX

Jueves, 14 diciembre 2006

Bien el otro día publiqué el primer artículo sobre LaTeX del blog, y si bien están al alcance de la mano los primeros artículos del tema que he escrito, me parece buena idea publicarlos otra vez, ahora en este blog, y así tenerlos todos reunidos. Sin nada más que decir, aquí copio y pego el primer artículo de LaTeX de mi primer blog:

“Una de las poquitas cosas que sé hacer en este mundillo de frikis, es la edición de documentos en LaTeX. Es por eso que he decidido escribir una serie de artículos, en los que explicaré un poco cómo realizar un documento usando esta herramienta.

Por ser lo primero que escribo de este estilo, ando un poco perdido, así que pido perdón de antemano si lo que leéis os resulta muy simplón o muy complicado. Empezaré tratando de explicar la estructura básica de un documento.

La primera línea que deberemos incluir tendrá esta forma:

\documentclass[parametro1,parametro2,parametro3…]{tipo_documento}

En tipo_documento incluiremos alguno de éstos:

  • book: con esto lograremos un estilo de libro, vendrá dividido en partes (\part), capítulos (\chapter) y secciones (\section).
  • article: crearemos un documento al estilo de los artículos científicos. Es uno de los más usados junto al tipo anterior (book). Permite las divisiones en secciones (\section) y subsecciones (\subsection), y, a pesar de lo que he leído por ahí, también permite la división en partes (\part). Con este tipo podremos escribir prácticamente todos los documentos que necesitemos.
  • report: es parecido a article, pero cuenta además con una división en capítulos (\chapter) y que la numeración de tablas y fórmulas va por capítulos y no consecutivamente por todo el documento.
  • letter: este estilo sería el adecuado para escribir cartas.
  • slides: para presentar diapositivas.

Existen otros tipos como pueden ser proc, ltxdoc, ltxguide o minimal, pero no creo que necesitéis usarlos nunca, así que no contaré nada de ellos.

En el apartado de parámetros, introduciremos algunos como éstos:

  • Tamaño de letra, escrito en puntos, por ejemplo: 12pt.
  • Clase de papel, como puede ser a4paper.
  • Lenguaje del documento. Idioma en el que está escrito el documento (spanish, english,…).
  • Impresión por una o dos caras, con los parámetros oneside o twoside, respectivamente.

Después de esta línea, incluiremos varias de la forma: \usepackage{}. La cabecera usepackage nos permite incluir paquetes que proporcionan diferentes utilidades de LaTeX. La sintaxis consiste en indicar el paquete que queremos cargar y las opciones con que queremos hacerlo:

\\usepackage[opcion1,opcion2,opcion3]{nombre_paquete}

Algunos ejemplos pueden ser:

\\usepackage[spanish]{babel} % Paquete para poner el idioma en español.
\\usepackage[latin1]{inputenc} % Caracteres con acentos.
\\usepackage{latexsym} % Símbolos.
\\usepackage{graphicx} % Inclusión de gráficos.
\\frenchspacing %Espacia el contenido de una forma más elegante.

Como ya habréis observado, “%” sirve para introducir comentarios en el texto.

Después de esto, con la inclusión de todos los paquetes que mejor se adecúen a nuestras necesidades, incluiremos otras cabeceras, como:

\\title{} % Dentro de las llaves, incluiremos en cada una lo que corresponda
\\author{} %título, autor y fecha
\\date{}

\pagestyle{} % define el estilo de página. Éste puede ser:

  • plain : opción por defecto, coloca el número de página abajo y centrado, además no pone encabezado.
  • headings: coloca toda la información en el encabezado (nombre de capítulo, sección o subsección y página), dejando el pie de página vacío.
  • empty: dejaremos vacíos tanto el encabezado como el pie de página.
  • myheadings: similar a headings, pero nos da la posibilidad de añadir información propia a través de los comandos markboth y markright

Estas opciones para controlar el estilo de la página son muy limitadas. Si queremos obtener un diseño más completo podemos emplear el paquete fancyhdr. Para emplear el paquete incluiremos la cabecera \usepackage{fancyhdr}, y en la opción pagestyle incluiremos lo siguiente: fancy: sirve para que LaTeX emplee el paquete fancyhdr en el formateo de la cabecera y pie de página del documento.

Con todo esto, podríamos tener ya una plantilla tipo para la edición de nuestros documentos. La emplearemos para hacer el típico programa de “Hola Mundo”:

\\documentclass[a4paper,12pt]{article}
\\usepackage[spanish]{babel}
\\usepackage[latin1]{inputenc} % Caracteres con acentos.
\\usepackage{latexsym} % Símbolos
\\usepackage{graphicx} % Inclusión de gráficos.
\\usepackage{float}
\\frenchspacing

\\title{Hola Mundo}
\\author{ {Oficina de Software Libre}\\\\
{Escuela Universitaria Politécnica}}
\\date{Mayo, 2.005} % La doble contrabarra "\\\\" introduce una nueva línea

\\pagestyle{headings} % páginas con encabezado básico

\\begin{document}

\\maketitle % Se crea una especie de portada
\\newpage
\\tableofcontents % Se genera un índice de materias
\\newpage
\\listoffigures % Índice de figuras
\\newpage % Saltamos de página
\\listoftables % Índice de tablas
\\newpage
\\section{Hola Mundo}
Hola Mundo

\\end{document} % Evidentemente, no tiene ningún sentido tener
% todos esos índices para un "Hola Mundo", pero es sólo un
% ejemplo de plantilla :)

Si escribís y compiláis ese documento, veréis que genera 5 folios en formato .pdf.

Bueno, no sé si he sido muy chapas, si es así lo siento. Espero que haya alguien a quien le haya interesado lo que he escrito aquí. Puede venir bien en algún momento, ¿no? Un saludito.

P.D. Quizá he dado demasiadas cosas por supuestas, pero lo único que se necesita para escribir LaTeX, es un editor de texto cualquiera (nano, vim, joe…) y los paquetes básicos de LaTeX: tetex-extra y los paquetes tetex-base y tetex-bin. Creo que no me equivoco al decir que con estos tres paquetes es suficiente para echar a andar con LaTeX. El documento, deberemos guardarlo con extensión .tex, luego se compila con el comando “latex archivo.tex” y después podemos sacar la salida en formato .pdf, por ejemplo, con el comando ” pdfelatex archivo.tex”. “

Números en LaTeX

Lunes, 27 noviembre 2006

Últimamente, tenemos que hacer una serie de trabajos en Electrónica de Potencia, en los que a causa de la aparición de numerosas fórmulas matemáticas he decidido emplear LaTeX. En este artículo intentaré dar una explicación útil sobre cómo introducir expresiones matemáticas en nuestro documento. Parto de la base de que quien lea el post sabe cómo crear un documento en este sistema de formateo de texto. Si alguien no lo tiene claro, puede mirar aquí. Bueno, al tema.

Para introducir una expresión matemática, deberemos definir un entorno matemático. Eso lo hacemos introduciendo el símbolo dólar $. Así abrimos el entorno, para cerrarlo introuciremos otro. Veamos ejemplos para entenderlo.

  • Una expresión con exponentes. Teclearemos el código:
    $ V^2 = $

    Y sacaremos una V elevada al cuadrado. Nótese que en éste y en todos los ejemplos, los símbolos “$” son nuestro delimitador del entorno matemático, no el código que crea la expresión.

  • Una expresión con exponentes y subíndices. Sigamos con el ejemplo anterior:
    $ V_{oef}^2 = $

    Ahora tendremos la V elevada al cuadrado y con oef de subíndice.
    Nota: para incluir exponentes y subíndices con más de un carácter tendremos que meterlos entre llaves, por eso el exponente, que es sólo un 2, va sin llaves y el subíndice, de tres caracteres sí va entre llaves.

  • Una fracción y el número pi.
    $ V_{oef}^2 = \\frac{1}{2\\pi} $

    Después de \frac, metemos entre llaves primero el numerador y luego en las otras dos llaves el denominador.

  • Una integral. Añadimos código:
    $ V_{oef}^2 = \\frac{1}{2\\pi}*\\int{sen x dx} $

    Hummm… no está mal, pero también es cierto que necesitaremos poner los límites a nuestras integrales, vamos a ello.

    $ V_{oef}^2 = \\frac{1}{2\\pi}*\\int_\\frac{\\pi}{2}^\\pi{sen x dx} $

    Con esto hacemos que nuestra integral sea entre pi/2 y pi.

  • Por último metamos una raíz cuadrada.
    $ V_{oef}^2 = \\frac{1}{2\\pi}*\\int_\\frac{\\pi}{2}^\\pi\\sqrt{{sen x}dx} $

    Y con esto conseguimos la integral de la raiz del sen x.

Por último decir que podemos incluir otros símbolos típicos como letras griegas o equivalencias matemáticas de una forma muy parecida y muy sencilla también. Además todo esto, aunque parece que no, es casi automático en cuanto lo hacemos un par de veces. Sólo es cuestión de habituarse un poquillo. Quería subir un fichero fuente en tex y su resultado en pdf, pero WordPress no me deja así que os dejo una captura de pantalla que con eso no se me queja. Ya sé que esto es denunciable por apología del cutrismo pero no pienso escribir todo el código que sería un fichero .tex. Si queréis ver algo más de cómo se hace esto os creáis un fichero .tex, lo compiláis y lo pasáis a .pdf.

Resultado

Creo que con esto ya es suficiente, porque si me pongo a introducir todos los símbolos y operadores que se pueden usar en matemáticas no acabo. Éstos son una muestra de los que uso habitualmente. Un saludo. Dudas al de siempre.