Bibliografías múltiples con LaTeX: bibliografía tras cada capitulo con Flexbib

Para un trabajo grupal de un curso de LPIC1 que estoy realizando necesitaba insertar una bibliografía al finalizar cada capitulo, y no quería dejar de utilizar Flexbib para BibTeX por las virtudes que ya comenté en esta entrada. Entre otras cosas, Flexbib permite:

  • Un traducción de las partículas and, in, editors, etc. de acuerdo con el idioma seleccionado. Este es el punto más importante, puesto que podemos tener partículas «y», «en», «editores» para nuestro idioma.
  • Seleccionar un modelo de cita numérico o un modelo autor-año sin necesidad de hacer cambios en el argumento de bibliographystyle bibliografía
  • Cuando el número de autores es superior a dos puede elegirse si se utilizan todos los autores o sólo el primero seguido del grupo «y otros», o lo que corresponda según el idioma en el modelo de citas autor-año.
  • Es posible seleccionar el tipo de letra utilizado para los autores y los títulos
  • Las bases de datos añaden a los campos estándard nuevos campos como abstract, comment, url, isbn, mrnumber, translator que son gestionados por flexbib.

Para poder tener una bibliografía al finalizar cada capítulo, hacemos uso del paquete bibtopic. Lo primero que vamos a hacer es hacer una copia de los .bib necesarios y guardarlos también en otra ubicación, por si acaso. En nuestro ejemplo, vamos a tener dos capítulos y por tanto, dos .bib, uno llamado bibliodebian.bib y otro llamado biblioubuntu.bib. Ahora eliminamos todos los intentos de creación de varias bibliografías en nuestro directorio de trabajo:

  1. rm *.aux
  2. rm *.bbl
  3. rm *.blg

Añadimos bibtopic a la lista de paquetes a usar:
[Latex]
usepackage{bibtopic}
[/Latex]

Piponazo me informa que este paquete tiene dependencias del paquete texlive-bibtex-extra, yo lo tendría ya instalado, pero el que no lo tenga, debe hacerlo:

  1. sudo apt-get install texlive-bibtex-extra

En mi caso, yo estructuro cada capitulo con su chapter, section y subsection variados dentro de un include{fichero}. Antes de estos include vamos a definir el estilo de bibliografía a flexbib:

[Latex]
bibliographystyle{flexbib}
[/Latex]

Seguidamente, es donde viene lo importante, nuestro include{fichero} que contiene el cuerpo del primer capítulo, lo vamos a encerrar entre el siguiente código:

[latex]
begin{btSect}{bibliodebian} % Aquí es donde se le indica el primer fichero .bib
include{debian} % Aquí tenemos nuestro primer contenido con chapter, section, subsection y demás
btPrintAll % Aquí le estamos diciendo que imprima todas las entradas de bibliodebian.bib, aunque no estén citadas
end{btSect} % Fin del código que engloba la primera bibliografía
[/latex]

Y análogamente, para el segundo capítulo:

[Latex]
begin{btSect}{biblioubuntu} % Aquí es donde se le indica el segundo fichero .bib
include{ubuntu} % Aquí tenemos nuestro segundo contenido con chapter, section, subsection y demás
btPrintAll % Aquí le estamos diciendo que imprima todas las entradas de biblioubuntu.bib, aunque no estén citadas
end{btSect} % Fin del código que engloba la segunda bibliografía
[/Latex]

En lugar de que se imprima en cada bibliografía de cada capítulo todas las entradas del .bib asociado, podemos desear que se impriman sólo las que han sido citadas. En este caso en lugar de btPrintAll utilizaremos el comando btPrintCited.

El siguiente paso es compilar con PDFLaTeX el código del documento. Si usamos una GUI como Kile, se nos informará de lo siguiente:

«Package bibtopic Warning: Please (re)run BibTeX on the file(s):

(bibtopic) principal1
(bibtopic) principal2
(bibtopic) and after that rerun LaTeX.»

Para hacer lo que se nos pide, nos movemos al directorio de trabajo y escribimos en una consola:

  1. bibtex principal1
  2. bibtex principal2

Una vez hecho esto, recompilamos con PDFLaTeX y ahora sí, cada uno de los dos capítulos tendrá al final su bibliografía.

Enlace: Airminded

A 1 persona le gusta esta entrada

Crea un manual de código en LaTeX de forma automática

Para la formalización de ciertos proyectos, se pide «redactar» un manual de código en el que aparezcan todos los ficheros que componen la aplicación.

Si utilizáis LaTeX, he creado un script que te permite crear el manual de código de la aplicación con sólo llamarlo con los parámetros adecuados.

Deciros que el esqueleto del script, la parte que recorre directorios y ficheros, está basado en el script Arbol de directorios de Paco Debian.

El código del script es el siguiente:

  1. #!/bin/bash
  2. #set -e
  3. #set -u
  4.  
  5. #set -x
  6.  
  7. func_ficheros()
  8. {
  9.     listaficheros=$(find -maxdepth 1 -type f -iname "*."$extpar | sort) # extraer lista ordenada de ficheros del directorio actual
  10.  
  11.     for item in $listaficheros # recorrer lista de ficheros
  12.     do
  13.         extfich=${item##*.} # obtener extension del fichero
  14.         if [ $extfich = $extpar ] # si la extension es la misma que especificamos en $2
  15.         then
  16.             fichero=${item##*"./"} # eliminar todos los "./" que coloca find
  17.             fichero=${fichero//"_"/"_"} # reemplazar todos los "_" por "_", LaTeX trata "_" como error
  18.             echo "section{Fichero "$fichero"}" # creamos la seccion con el nombre del fichero
  19.             echo -e "lstinputlisting{"$PWD"/"${item##*"./"}"}n" # incluimos el fichero con ruta completa y con "_" porque es ruta fisica
  20.         fi
  21.     done
  22. }
  23.  
  24.  
  25. func_recursiva()
  26. {
  27.     for OBJ in * # recorrer el directorio $1
  28.     do
  29.         (
  30.         if [ -d "${OBJ}" ] # es un directorio
  31.         then
  32.             cd "${OBJ}" # cambiar a este directorio
  33.             var=$(find -maxdepth 1 -type f -iname "*."$extpar | wc -l) # ver si hay en el directorio actual ficheros de tipo $2
  34.            
  35.             if [ $var != "0" ] # si hay ficheros de tipo $2
  36.             then
  37.                 nombrecarpeta=${PWD##*$raiz_pwd} #extraer solo el nombre de la carpeta
  38.                 carpeta=${nombrecarpeta//"_"/"_"} # reemplazar todos los "_" por "_", LaTeX trata "_" como error
  39.                 echo -e "n" # retorno de carro
  40.                 echo "chapter{Carpeta "$dirpar$carpeta"}" # crear nueva subseccion con esta subcarpeta
  41.  
  42.                 func_ficheros # procesar los ficheros de este directorio
  43.             fi
  44.             func_recursiva # seguir mirando subcarpetas
  45.         fi
  46.         )
  47.     done
  48. }
  49.  
  50. #################
  51. #          INICIO            #
  52. #################
  53.  
  54. if [ $# != 3 ] # control de errores - utilizar los tres parametros: nombrecarpeta, extensionfichero y ficherolatex
  55. then
  56.     echo -e "ERROR: Incorrecto numero de argumentosn"
  57.     echo "Uso del programa: ./myscript nombrecarpeta extensionfichero ficherolatex"
  58.     echo "Ejemplo: ./myscript micarpeta php codigo.tex"
  59.     exit 0
  60. fi
  61.  
  62. dirpar=$1 # obtener el parametro de carpeta raiz, en func_recursiva se pierde la visibilidad del parametro
  63. extpar=$2 # obtener el parametro de extension a buscar, en func_recursiva se pierde la visibilidad del parametro
  64.  
  65. exec 1>$3 # enlazar salida de echo a fichero pasado como parametro $3
  66.  
  67. cd $1 # entrar al directorio especificado en $1
  68. raiz_pwd=$PWD # guardar la raiz de este directorio, la perderemos al recorrer el arbol en func_recursiva
  69. echo "chapter{Carpeta "$1"}" # crear la carpeta raiz como capitulo
  70.  
  71. func_ficheros # procesar directorio raiz
  72. func_recursiva # llamar a func_recursiva para exploracion completa del directorio

Como veis, cada línea está bien comentada para que no haya ningún problema de comprensión.

La ejecución del script se realiza de la siguiente manera:

./myscript nombrecarpeta extensionfichero ficherolatex

Si por ejemplo queremos realizar un manual de código del conocido CMS Drupal, deberemos llamar al script de la siguiente forma:

neonigma@neonigma-laptop:/opt/lampp/htdocs$ ./myscript drupal php codigo.tex

En líneas generales, el script recorre la carpeta drupal de nuestro servidor Web buscando ficheros con extensión PHP y genera un fichero de LaTeX con la siguiente estructura:

chapter{Carpeta o subcarpeta}
section{Sección para fichero .php encontrado}
lstinputlisting{ruta al fichero php, que provocará el listado de código del mismo}

  • El pdf resultante del proyecto LaTeX puede descargarse haciendo clic aquí.
  • Podéis descargar el script pulsando aquí.
  • El ejemplo de proyecto LaTeX, que incluye el fichero codigo.tex generado automáticamente por el script, puede descargarse pulsando aquí.
A 5 personas les gusta esta entrada

¿No sabes como escribir un símbolo en LaTeX? ¡Dibújalo!

Leo en el blog Manzana Mecánica esta sorprendente noticia que quería compartir con todo el que desarrolla documentos en LaTeX:

LaTeX es un lenguaje para creación de documentos tremendamente poderoso y ampliamente usado en la academia para escribir artículos científicos, particularmente por lo fácil que es escribir símbolos matemáticos. Sin embargo, la gran variedad de comandos también hace que a veces uno no recuerde cómo describir ciertos símbolos. Detexify te permite que dibujes un símbolo y te indica posibles comandos en LaTeX que describen ese símbolo. ¡Muy útil y totalmente recomendado!

Esta es una imagen de como funciona el tinglado:
detexify

Puedes acceder a Detexify haciendo clic aquí

Fuente: Manzana Mecánica

A 1 persona le gusta esta entrada

Permitir acceso remoto a MySQL Server 5

Aparentemente el acceso de forma remota viene desactivado por defecto en MySQL, calculo que esto lo harán por una cuestión de seguridad, eso no interesa; para permitir el acceso tanto solo hay que editar el archivo

/etc/mysql/my.cnf

y encontrar la linea

bind-address = 127.0.0.1

y comentarla anteponiendo #

#bind-address = 127.0.0.1

Luego guardar el arhivo y reiniciar el servicio

/etc/init.d/mysql restart

Ahora si, ya deberian poder conectar en forma remota al servidor MySQL.

Fuente (y agradecimientos): tinchio.com

Sé el primero en valorar positivamente

Listas de viñetas personalizadas con itemize en LaTeX

En lugar de las aproximaciones de otra gente en la que redefinen algún comando, encontré por ahí esta forma, mucho más útil:

begin{itemize}
item[b.] Opción b.
item[c.] Opción c.
end{itemize}

Cuya salida es algo como:

b. Opcion b.
c. Opción c.

Esto es algo que no tiene la redefinición de comandos, que empieza desde la letra a, por ejemplo. Además, podemos anidar como queramos:

begin{itemize}
item[b.] Opción b.
begin{itemize}
item[i.] Opción b1.
item[x.] Opción c.x.
end{itemize}
item[c.] Opción c.
end{itemize}

Y, todavía mejor, se pueden añadir símbolos matemáticos (estrellas, triángulos, etc...):

begin{itemize}
item[$star$] Estrellita 1
item[$triangleright$] Triangulito 1

Esta entrada sustituye a una antigua que voy a eliminar.

Saludos.

A 10 personas les gusta esta entrada

Currículum vitae profesional con LaTeX: el paquete moderncv

El gran Reyes me ha preguntado hoy por este estupendo paquete para hacer un currículum vitae bastante majo. Comparto en esta entrada la manera de hacerlo. En primer lugar tenéis que instalar lo siguiente:

neonigma@neonigma-laptop:~$ sudo apt-get install texlive-latex-extra texlive-fonts-recommended lmodern

  • texlive-latex-extra => contiene el paquete moderncv y otros muchos más.
  • texlive-fonts-recommended => contiene las fuentes marvosym, necesarias para la clase moderncv.
  • lmodern => contiene las fuentes lmodern.

Hecho esto ya podemos codificar nuestro currículum en LaTeX. Todavía podemos mejorar un poquito más la clase programada, ya que la original introduce una característica que para mí es un problemilla. Me refiero a que cuando especificáis vuestro correo electrónico en el currículum, si os fijáis en la imagen a continuación, la clase original añade un enlace a este correo electrónico, en forma de recuadro.

recuadro.png

Pues bien, cuando sacamos nuestro currículum por la impresora, el cuadro permanece y, la verdad, me parece un poco feote. Para eliminarlo, es tan sencillo como abrir la plantilla de currículum que utilicéis (en mi caso, utilizo la plantilla clásica):

neonigma@neonigma-laptop:~$ sudo gedit /usr/share/texmf-texlive/tex/latex/moderncv/moderncvstyleclassic.sty &

Se debe modificar la línea 95, donde dice:

Letter~emaillink{@email}% 

por esto otro:

Letter~@email%

Y listo, ya no tendremos el fastidioso cuadrito alrededor de nuestra dirección de email a la hora de imprimir.

En este enlace os dejo el ejemplo que el programador de moderncv nos deja de base, además de mi currículum y un ejemplo en pdf. Por supuesto, los datos son falsos, así que no me llaméis... :P.

Actualización 15-03-2010: Carmen Pastor ha creado una plantilla en .odt a partir de la plantilla classic de moderncv. Con ella, podremos editar nuestro CV en OpenOffice sin necesidad de saber LaTeX. Podéis descargarla haciendo clic aquí.
Para que esta plantilla se parezca aún más a moderncv, debéis descargar las fuentes MarvoSym y Latin Modern (lmodern) . Las fuentes se copian en el directorio /usr/share/fonts/truetype

A 7 personas les gusta esta entrada

KBibTex: edición fácil de bibliografía para BibTex

Hace tiempo os recomendé en esta entrada el estupendo programa JabRef (ahora en los repositorios) para editar bibliografía para BibTex. Pues bien, me entero por Debian Package of the Day de la existencia de otro editor para KDE llamando KBibTex, disponible también en los repositorios. Podéis ver una imagen de este estupendo programa a continuación:

Después de haber probado los dos, os comento que JabRef me parece mucho más ligero y con menos opciones y, aunque basado en Java, no se nota ni un ápice de lentitud. KBibTex me parece bastante más completo y con muchas más opciones, demasiadas quizás. La elección depende de vosotros.

Recordad que para introducir una página Web como referencia bibliográfica se suele utilizar la categoría Misc, que tiene un campo URL (en KBibTex aparece en la pestaña External).

Sé el primero en valorar positivamente

Tablas de ajuste automático en LaTeX: de OpenOffice Calc a LaTeX, con Calc2LaTeX, booktabs y tabulary

Siento escribir poco, pero se acercan los terribles exámenes de la Licenciatura y hay que ir terminando muchas prácticas.

Hoy os traigo una macro que me parece interesantísima y que, junto al artículo de tabulary que publiqué en este post, dotan de una gran potencia al diseño de tablas con ajuste automático para LaTeX.

La macro en cuestión se llama Calc2LaTeX y se integra en el editor de hojas de cálculo (oocalc) de OpenOffice. Veamos los pasos para tenerlo funcionando y unos sencillos ejemplos.

Paso 1.
Descargar la macro de este enlace y descomprimir el archivo en algún sitio. Respecto a la instalación de la macro una vez descomprimido el archivo descargado, tenéis una estupenda guía de instalación aquí, proporcionada por sus creadores y que, debido a su simplicidad, no voy a comentar. La guía contiene una buena cantidad de imágenes que os dirigen paso a paso.

Paso 2.
Una vez instalada la macro con los sencillos pasos anteriores, pasamos a crear una tabla cualquiera en OpenOffice. En la siguiente imagen podéis ver un ejemplo, una tabla cualquiera que he creado.

01.png

Paso 3.
Ahora hay que seleccionar la porción de celdas a exportar. Seguidamente, para obtener el código fuente en LaTeX de esta tabla, sólo es necesario acudir a OpenOffice y seguir la siguiente ruta en los menús: Herramientas – Macros – Ejecutar macro. A continuación, en la ventana que aparece, simplemente desplegamos el elemento Calc2LaTeX y, dentro de él, escogemos la macro Calc2LaTeX. Con estos pasos, a la derecha nos aparecen las funciones a ejecutar de esta macro, seleccionamos Main y ya podemos pulsar el botón de Ejecutar.

La siguiente ventana que aparece ya es la de la macro en todo su apogeo, con una serie de opciones. La verdad es que suelo dejar las que vienen por defecto porque creo que son las más acertadas. Pulsando en el botón Convert, la macro os devuelve el código en LaTeX, que sólo tenéis que pegar en vuestro proyecto Kile o en vuestro editor de textos preferido.

Debajo podéis ver el proceso en imágenes.

02.png03.png
04.png05.png
06.png07.png

El código único de la tabla que nos ha devuelto la macro es el siguiente:

begin{table}[htbp]
caption{}
begin{tabular}{|r|r|r|r|r|r|r|r|r|r|}
hline
multicolumn{1}{|l|}{} & textbf{0} & textbf{1} & textbf{2} & textbf{3} & textbf{4} & textbf{5} & textbf{6} & textbf{7} & textbf{8} \ hline
textbf{0} & 0 & 1,3 & 0,6 & 1,6 & 1,7 & 10 & 1,4 & 0,7 & 1,6 \ hline
textbf{1} & 1,3 & 0 & 0,8 & 1,8 & 1,1 & 9,4 & 1,6 & 0,7 & 1,8 \ hline
textbf{2} & 0,6 & 0,8 & 0 & 1,8 & 1,8 & 9,6 & 1,5 & 0,6 & 1,8 \ hline
textbf{3} & 1,6 & 1,8 & 1,8 & 0 & 0,8 & 10 & 0,5 & 1 & 0,3 \ hline
textbf{4} & 1,7 & 1,1 & 1,8 & 0,8 & 0 & 10 & 1,1 & 0,3 & 1,3 \ hline
textbf{5} & 10 & 9,4 & 9,6 & 10 & 10 & 0 & 10 & 9,6 & 10 \ hline
textbf{6} & 1,4 & 1,6 & 1,5 & 0,5 & 1,1 & 10 & 0 & 10 & 1,5 \ hline
textbf{7} & 0,7 & 0,7 & 0,6 & 1 & 0,3 & 9,6 & 10 & 0 & 1,1 \ hline
textbf{8} & 1,6 & 1,8 & 1,8 & 0,3 & 1,3 & 10 & textit{1,5} & textit{1,1} & 0 \ hline
end{tabular}
label{}
end{table}

Fijaos que la macro incluso nos ha respetado las negritas de la primera fila y la primera columna y las cursivas de los dos últimos elementos de la última fila ;).

Vamos a solucionar un pequeño errorcillo que introduce la macro. Como podéis ver en el código interior, se introduce un multicolumn de una sola columna. Pensando con un poco de lógica, una multicolumna de una sola columna… sobra. Así que, cuando peguéis el código de la tabla, si encontrais el siguiente código:

 multicolumn{1}{|l|}{loquesea} & ... 

debéis eliminar el multicolumn y dejar únicamente

 loquesea & ... 

Otros cambios serían bajar el caption{} debajo de la tabla (justo antes o después de label{}), además de reducir un poco el tamaño de la fuente y centrar la tabla, escribiendo debajo del begin{table}[htbp]:

 centering scriptsize 

En este caso la tabla se ha ajustado bien por su estructura, pero… ¿y si resulta que es tan larga que se sale por los bordes? No hay problema, como explicaba en este artículo, podemos hacer uso del magnífico paquete tabulary. Simplemente importamos el paquete al principio del documento, debajo de documentclass, con la siguiente línea:

 usepackage{tabulary} 

y después modificamos la línea begin{tabular} de nuestra tabla, sustituyéndola por:

 begin{tabulary}{15cm}{|C|C|C|C|C|C|C|C|C|C|} 

El tamaño en centímetros es el ancho deseado para nuestra tabla. En cuanto al tercer parámetro, C => centrado, L => ajustado a la izquierda, R => a la derecha, J => justificado. No se nos puede olvidar tampoco realizar un cierre correcto sustituyendo:

 end{tabular} 

por esto otro:

 end{tabulary} 

Ahora se trata antes que nada de dar un buen formato a la tabla. Hace poco leí un buen documento (en inglés) sobre cómo realizar tablas bastante profesionales. Se lo dedicaban al paquete booktabs. El documento en concreto podéis descargarlo de aquí. Es necesario cargar el paquete booktabs de la forma que ya sabéis:

 usepackage{booktabs} 

El documento explica en primer lugar que las barras verticales son poco recomendables, por lo que el begin{tabulary} queda de la siguiente forma:

 begin{tabulary}{15cm}{CCCCCCCCCC} 

Además, especifica otra forma de utilizar reglas horizontales, en lugar de usar hrule para todas las filas, utiliza:

  • toprule para la primera fila.
  • midrule para las filas centrales.
  • bottomrule para la última fila.
  • La verdad es que cuando acercas con zoom el documento y ves las reglas o líneas de celda mucho más ajustadas (automáticamente) y ordenadas en grosor, el resultado es mucho más profesional que con hrule. Podéis ver el resultado en la siguiente imagen:

    08.png

    En este enlace os dejo el código LaTeX de la tabla correctamente creada.

    Puede ocurrir que debido a la estructura de la tabla se ajuste bien y, a la primera, tengamos ya todo terminado. Pero hay otras tablas un poco más dificilitas debido a su estructura, y a lo mejor tengamos en los títulos de la primera celda las palabras muy cortadas. Pongamos por ejemplo la tabla de la siguiente imagen, que al usar tabulary se ajusta perfectamente al tamaño especificado pero se ven las cabeceras un poco feotas:

    09.png

    Para estas tablas tendremos que usar ciertas armas, como si de un procesador de textos se tratase. Utilizamos los siguientes comandos:

    • newline, para dar intros a las palabras necesarias.
    • hspace*{«x»cm}, cambiando «x» por 1, 2, 3 cm… lo necesario. Esto mete espacios en una celda.
    • para forzar que una frase se parta en una posición determinada de la celda, por ejemplo Museo arqueo-lógico dará un retorno de carro a lógico y colocará un guión indicando que la palabra está fraccionada.

    Con esta simple combinación, dando intros y espacios horizontales podemos ajustar la tabla a nuestro antojo. El código de la tabla terminada queda de la siguiente forma:

    begin{table}[htbp]
    scriptsize centering
    begin{tabulary}{15cm}{CCCCCCCCCC}
    toprule
    & Torrenewline de lanewline Calahorra & Sinagogahspace*{2cm} & Alcázar de los Reyesnewline Cristianoshspace*{1cm} & Museo arqueo-lógicohspace*{1cm} & Arco del Triunfohspace*{1cm} & Medina Azaharahspace*{1.5cm} & Museo Julio hspace*{0.2cm}Romerohspace*{2cm} & Baños califaleshspace*{1cm} & Mezquita Catedralhspace*{2cm} \ midrule
    Torre denewline Calahorra & 0 & 1,3 & 0,6 & 1,6 & 1,7 & 10 & 1,4 & 0,7 & 1,6 \ midrule
    Sinagoga & 1,3 & 0 & 0,8 & 1,8 & 1,1 & 9,4 & 1,6 & 0,7 & 1,8 \ midrule
    Alcázar de los Reyes Cristianoshspace{1cm} & 0,6 & 0,8 & 0 & 1,8 & 1,8 & 9,6 & 1,5 & 0,6 & 1,8 \ midrule
    Museonewline arqueológico & 1,6 & 1,8 & 1,8 & 0 & 0,8 & 10 & 0,5 & 1 & 0,3 \ midrule
    Arco del Triunfo & 1,7 & 1,1 & 1,8 & 0,8 & 0 & 10 & 1,1 & 0,3 & 1,3 \ midrule
    Medina Azahara & 10 & 9,4 & 9,6 & 10 & 10 & 0 & 10 & 9,6 & 10 \  midrule
    Museo Julio Romero de Torres & 1,4 & 1,6 & 1,5 & 0,5 & 1,1 & 10 & 0 & 10 & 1,5 \  midrule
    Baños califales & 0,7 & 0,7 & 0,6 & 1 & 0,3 & 9,6 & 10 & 0 & 1,1 \  midrule
    Mezquita Catedral & 1,6 & 1,8 & 1,8 & 0,3 & 1,3 & 10 & 1,5 & 1,1 & 0 \ bottomrule
    end{tabulary}
    caption{Tabla ejemplo blog Neonigma}
    label{tbl:id-tabla}
    end{table}

    Fijaos el escaso número de líneas para que la tabla quede profesional. Pero si esto lo veis complicado, hay una forma de que la tabla casi siempre encaje con el documento de forma automática. Esta forma es utilizar tablas apaisadas. Para ello, tenemos que importar el paquete rotating:

     usepackage{rotating} 

    De esta forma, si vemos una tabla complicada que no queda bien a la primera, no hay ganas de dar intros y espacios y no importa presentarla apaisada, cambiamos el siguiente código de apertura de comando tabla:

     begin{table}[htbp] 

    por este:

     begin{sidewaystable}[htbp] 

    y el de cierre del comando:

     end{table}

    por este otro:

     end{sidewaystable}

    Podemos decirle ahora a tabulary que queremos la tabla de unos 21 centímetros, con lo que el ajuste automático queda perfecto a la primera ;). Además, fijaos como al utilizar booktabs, se ajustan automáticamente al centro los contenidos de cada celda. Os dejo el código de la tabla apaisada aquí.

    A 8 personas les gusta esta entrada

Paquete tabulary: tablas de tamaño automático en LaTeX con Kile para Ubuntu

Hace no mucho tiempo descubrí que al instalar el paquete texlive-latex-extra (ya sabéis, sudo apt-get install texlive-latex-extra) se me incluían una serie de nuevos paquetes para LaTeX, entre ellos, uno muy interesante y el que da titulo a este post, es tabulary.

Siempre me había resultado un poco peñazo tener que ir ajustando los anchos de cada columna a mano en mi código LaTeX. Con este paquete, la cosa se simplifica bastante. Basta con incluir las siguientes sentencias antes de nuestro begin{document}:

usepackage{booktabs}
usepackage{tabulary}

Después cuadrar la tabla es muchísimo más sencillo, sigue el siguiente formato:

begin{table}[htbp]
centering
begin{tabulary}{13cm}{CCC}
toprule
textbf{Producto} & textbf{Volumen} & textbf{Precio}  \ midrule
Detergente "pepito"' & 5 l & 3500 pts \ midrule
Lavavajillas "juanito" & 1 l & 130 pts  \ midrule
Manzanas rojas  & 0.150 l & 75 pts \ midrule
Jamón 30 Js  & 7 l & 25000 pts  \ midrule
Bolígrafo "Acme" & 0.010 l & 150 pts \ bottomrule
end{tabulary}
label{tbl:ejemplo}
caption{Una tabla de ejemplo con tabulary}
end{table}

En este ejemplo, puede verse como el tabulary necesita que se le proporcione dos cosas: el ancho de la tabla, que podemos especificar el que queramos y se redimensiona automáticamente, y la alineación de cada columna, aquí es importante saber que tabulary requiere las iniciales de la alineación en mayúsculas. Como puede imaginarse, C significa que el texto en las columnas debe estar centrado, R se alineará a la derecha y L a la izquierda. J justificará el texto.

Podéis bajar el ejemplo descrito aquí.

Si al abrir el PDF observáis que en la tabla existen una serie de caracteres raros, concretamente en las celdas veis escrito algo como:

dubious s case

es un error que lamentablemente incluye la clase. Para corregirlo, buscáis el archivo tabulary.sty (yo lo tengo situado en /usr/share/texmf-texlive/tex/latex/tabulary/tabulary.sty) y en la línea 385 modificáis esto:

d@llarbegin insert@column d@llarend or" dubious s case

por esto:

d@llarbegin insert@column d@llarend or% dubious s case (es decir, sólo el % por ")

Para que consten los cambios, ejecutamos:

sudo texhash

Y ya el paquete funcionará perfectamente. En otro post más adelante os contaré algunas particularidades para que el ajuste automático quede bien cuando se usa multicolumn.

Neonigma

A 4 personas les gusta esta entrada

Convertir un código LaTeX a imagen GIF

Os dejo con esta página rusa bastante útil, en la que insertáis un código en LaTeX y os devuelve una imagen .gif del código interpretado. Por ejemplo, si escribimos

begin{center} $20log frac{0.5}{0.25} = 6dB$ end{center}

Conocemos la atenuacion del canal de transmision, que es 5dB, por tanto la distancia maxima a la que se puede transmitir sin errores de decodificacion sera:

begin{center} $frac{6dB}{5dB} = textbf{1.2Km}$ end{center}

Obtenemos el siguiente gif:

ejemplo-latex

Eso sí, el código LaTeX no debe contener acentos.

A 1 persona le gusta esta entrada