Paquete vhistory en español para latex

Latex es una de las herramientas más poderosas que existen para la generación de documentación, así mismo, la cantidad de paquetes adicionales que pueden ser agregados con simples comandos aumentan su flexibilidad para poder realizar casi que cualquier opción que al usuario se le ocurra.

Hace poco se me presentó una duda mientras elaboraba un manual en latex ¿existe alguna forma de colocar el histórico del documento de forma semiautomatizada? En tanto mi documento no está bajo un sistema de versionado como git o svn, no podía acceder a un git log e incluirlo en el cuerpo del documento usando, por ejemplo, latex-git log [1] o latex-diff [2]. Así mismo, semiuatomatizado para mí es que en tanto soy el único autor conozco qué cambios he introducido en cada versión.

Buscando encontré el paquete vhistory el cual cumplía con todos mis requerimientos excepto uno: los mensajes que colocaba estaban en inglés, francés y alemán lo cual me animó a realizar la traducción del mismo al español, cosa que no me tomó más de 10 minutos entre ubicar el archivo .sty, entender el funcionamiento del mismo y colocar los nuevos bloques de mensaje; como resultado obtuve mi control de histórico en el documento con mensajes en español.

El archivo lo pueden conseguir en https://github.com/e1th0r/translations junto con las instrucciones corespondientes a su uso.

Espero les sea útil como lo fue para mí.

[1] https://www.ctan.org/pkg/latex-git-log?lang=en

[2] http://www.ctan.org/tex-archive/support/latexdiff/

Latex Beamer Referencias de figura sin números

Generando unas diapositivas en Latex Beamer para el postgrado, me encontré con un detalle bastante extraño: al insertar una figura no se generaba la referencia respectiva:

Referencia sin número

Investigando un poco [1] conseguí que este error se debe a que me faltaba incluir la opción setbeamertemplate{caption}[numbered] en el encabezado del documento y con eso ya podemos tener nuestras figuras perfectamente referenciadas en Latex Beamer:
Referencia con número
Disfruten la ayuda!

[1] http://tex.stackexchange.com/questions/127145/beamer-presentation-figure-has-no-number

 

Lorem Ipsum

Neque porro quisquam est qui dolorem ipsum quia dolor sit amet consectetur adipisci velit

 Cicerón De finibus bonorum et malorum,  sección 1.10.32–3

El lorem ipsum es un texto bastante conocido cuando se intenta “rellenar” con un texto cualquiera  una publicación: nos interesa ver más como queda que qué contiene en este momento.

Sin embargo, quizás no muchos han averiguado más allá qué significa realmente dicha frase.

Ya Cicerón, unos 100 años antes de la era de Cristo, escribía parte de este texto, con el que empezamos este escrito, en su obra “De finibus bonorum et malorum”, texto que sería rescatado por Richard McClintock en los años 60 del siglo pasado y que la gente de Aldus, los creadores de Page Maker, incorporaron en las plantillas para mostrar su visualización previa.

Hace poco, a propósito de una discusión en twitter [1] necesité verificar ¿cuánto texto plano, aproximadamente, puede contener un archivo de 40 kb?

Lo primero que pensé fue ¿cómo obtengo un archivo de 40 kb de texto? La  respuesta que inmediatamente pensé fue “Lorem ipsum” Sin embargo, ¿cómo genero lorem ipsum para rellenar un archivo de texto de 40 kb? aptitude debe tener una respuesta, así que:

hector@olafo:/tmp$ aptitude search lorem
p   libtext-lorem-perl                                   - random faux Latin text generator
hector@olafo:/tmp$

Me muestra que hay un módulo de perl para generar el texto latino lorem

hector@olafo:/tmp$ aptitude show libtext-lorem-perl
Paquete: libtext-lorem-perl
Nuevo: sí
Estado: no
Instalado automáticamente: no
Versión: 0.3-1
Prioridad: opcional
Sección: perl
Desarrollador: Debian Perl Group <pkg-perl-maintainers@lists.alioth.debian.org>
Arquitectura: all
Tamaño sin comprimir: 81,9 k
Depende de: perl
Descripción: random faux Latin text generator
Often when developing a website or other application it's important to have placeholders for content. Text::Lorem
generates prescribed amounts of fake Latin text.
Página principal: http://search.cpan.org/dist/Text-Lorem/

hector@olafo:/tmp$

Lo instalé y fui a la página de cpan [2] donde se indica como usarlo, así que un simple código de menos de 8 líneas con el siguiente contenido cumplió mi cometido:

hector@olafo:/tmp$ cat generador.pl
#!/usr/bin/env perl
use Text::Lorem;
my $text = Text::Lorem->new();
$paragraphs = $text->paragraphs(190);
print $paragraphs;
hector@olafo:/tmp$

Le paso como argumento 190 que indica el número de párrafos que deseo generándome un archivo cualquiera, en mi caso, lo llamé lorem_ipsum.txt

hector@olafo:/tmp$ ls -l lorem_ipsum.txt
-rw-r--r-- 1 hector hector 39616 mar  2 08:32 lorem_ipsum.txt
hector@olafo:/tmp$

Archivo que contiene menos de 40 kb

Ahora bien, ese archivo tiene las siguientes características:

hector@olafo:/tmp$ cat lorem_ipsum.txt |wc -l
378
hector@olafo:/tmp$

378 líneas

hector@olafo:/tmp$ cat lorem_ipsum.txt |wc -c
39616

hector@olafo:/tmp$

39.616 palabras

Y para saber el número de páginas, lo abro en libreoffice (que reconoce caracteres con tamaño 10) y me indica que son 19 páginas de texto.

Ahora bien, si quieremos ser un poco más “técnicos” podemos usar enscript:

hector@olafo:/tmp$ enscript lorem_ipsum.txt -o lorem_ipsum.ps
[ 12 pages * 1 copy ] copiadas en lorem_ipsum.ps
189 lines were separadas
hector@olafo:/tmp$ ps2pdf lorem_ipsum.ps lorem_ipsum.pdf
hector@olafo:/tmp$ ls -l lorem_ipsum.pdf
-rw-r--r-- 1 hector hector 25942 mar  2 10:21 lorem_ipsum.pdf
hector@olafo:/tmp$

Optimizado y tal el pdf llega a los 25 kb con 12 páginas que poseen un promedio de 66 líneas por cada página

Espero que este ejercicio de “procastinación” les sirva de algo en un momento.

[1] https://twitter.com/e1th0r/status/440101294016307200

[2] http://cpansearch.perl.org/src/ADEOLA/Text-Lorem-0.3/README

Tex, ambiente de trabajo completo, parte II

En esta segunda entrega integraremos un plugin a vim para realizar las compilaciones respectivas para generar los archivos .dvi y .pdf desde un archivo latex y, poderlo visualizar.

Primeramente, instalaremos el paquete adecuado

root@cachama:/tmp/foo# aptitude install vim-latexsuite
Se instalarán los siguiente paquetes NUEVOS:     
libruby1.8{a} ruby{a} ruby1.8{a} vim-addon-manager{a} vim-latexsuite 

A continuación activamos el plugin, desde nuestra cuenta de usuario, para este paso no es necesario ser root.

hector@cachama:/tmp/foo$ vim-addons install latex-suite
Info: installing removed addon 'latex-suite' to /home/hector/.vim
Info: Rebuilding tags since documentation has been modified ...
Processing /home/hector/.vim/doc/
Info: done.
hector@cachama:/tmp/foo$ 

Seguidamente, requeriremos configurar algunos parámetros para que vim pueda usar el plugin, para ello crearemos un archivo en nuestro directorio /home de nombre .vimrc con el siguiente contenido:

"Aplica plugins segun tipo de fichero
filetype plugin on
" OPTIONAL: This enables automatic indentation as you type.
filetype indent on
"Latex-Suite
" IMPORTANTE: grep a veces se saltará el mostrado del 
" nombre de archivo si buscas en un único fichero. 
" Esto confundirá a Latex-Suite. Configura tu programa grep
" para generar siempre un nombre de archivo.
set grepprg=grep -nH $*
" OPCIONAL: Arrancando con Vim 7, el tipo de fichero 
" de ficheros .tex vacíos es por defecto 'plaintex' en vez 
" de 'tex', esto resulta en que vim-latex no sea cargado.
" Lo siguiente cambia el tipo de fichero por defecto a 'tex':
let g:tex_flavor='latex'
"Con esta línea obligamos a vim para que use evince como 
" visor predeterminado de los archivos que sean compilados
let g:Tex_ViewRule_pdf='evince'
"Con esta línea le decimos a vim que deseamos generar 
" archivos pdf por defecto cuando realizemos compilaciones
let g:Tex_DefaultTargetFormat='pdf'

Asi mismo, será necesario crear otro archivo en nuestro directorio /home de nombre  ~.vim/ftplugin/tex.vim y colocarle el siguiente contenido:

set sw=2
" TIP: Si escribes tus label's como label{fig:something}, entonces si
" escribes
" " en ref{fig: y presionas <C-n> podrás seleccionar automáticamente todas
" las etiquetas
" " de figuras. Muy útil!
set iskeyword+=:
imap <buffer> <leader>it <Plug>Tex_InsertItemOnThisLine

Con esto en mano, ya podemos empezar a compilar nuestros archivos text para ello:

a) Para compilar el archivo, lo editamos, luego oprimimos la tecla “escape” (Esc) para dejar el modo de edición en vim. después usamos la tecla y, finalmente, dos veces la tecla l, lo cual sería la siguiente secuencia: Esc+ll

El log de esta compilación dará como reusltado algo parecido a esto:

This is pdfTeX, Version 3.1415926-1.40.10 (TeX Live 2009/Debian)
restricted write18 enabled.
entering extended mode
(./test.tex
LaTeX2e <2009/09/24>
Babel <v3.8l> and hyphenation patterns for english, usenglishmax, dumylang, noh
yphenation, loaded.
(/usr/share/texmf-texlive/tex/latex/base/article.cls
Document Class: article 2007/10/19 v1.4h Standard LaTeX document class
(/usr/share/texmf-texlive/tex/latex/base/size10.clo))
(/usr/share/texmf-texlive/tex/generic/babel/babel.sty
(/usr/share/texmf-texlive/tex/generic/babel/spanish.ldf
(/usr/share/texmf-texlive/tex/generic/babel/babel.def)
Package babel Warning: No hyphenation patterns were loaded for(babel)the language `Spanish'
(babel)                I will use the patterns loaded for language=0 instead.)) 
(/usr/share/texmf-texlive/tex/latex/base/inputenc.sty
(/usr/share/texmf-texlive/tex/latex/base/utf8.def
(/usr/share/texmf-texlive/tex/latex/base/t1enc.dfu)
(/usr/share/texmf-texlive/tex/latex/base/ot1enc.dfu)
(/usr/share/texmf-texlive/tex/latex/base/omsenc.dfu))) (./test.aux) [1{/var/lib
/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./test.aux) )</usr/share/texmf-tex
live/fonts/type1/public/amsfonts/cm/cmr10.pfb></usr/share/texmf-texlive/fonts/t
ype1/public/amsfonts/cm/cmr12.pfb></usr/share/texmf-texlive/fonts/type1/public/
amsfonts/cm/cmr17.pfb></usr/share/texmf-texlive/fonts/type1/public/amsfonts/cm/
cmr7.pfb>
Output written on test.pdf (1 page, 43148 bytes).
Transcript written on test.log.
Pulse INTRO o escriba una orden para continuar

b) Ahora visualizaremos el archivo resultante, para ello, utilizaremos la combinación de teclas Esc+lv lo cual hará que evince sea invocado con el archivo que generamos en el paso anterior como argumento

Si el archivo no tiene ningún error de sintaxis, la compilación no deberá presentar ningçun problema y nos ahorraremos una gran cantidad de tiempo

TIPS:
* Es importante que el archivo finalice con la extensión .tex
* Seleccionando la opción F5, podremos obtener lo que se llama “ambientes” los cuales permiten agilizar tareas que podrían parecer tediosas en vim tales como insertar ecuaciones o ambientes personalizados tales como item y otros:

Este es mi primer documento en LaTeX{}.
Ya podemos acentuar directamente las vocales: á, é í, ó, ú
y generar la letra ñ
end{document}
~                                                                            
~                                                                               
~                                                                               
~                                                                               
~                                                                               
Choose which environment to insert:
(1) eqnarray*   (2) eqnarray
(3) equation    (4) equation*
(5) [          (6) $$
(7) align       (8) align*
Enter name or number of environment :item

Lo que nos genera:

maketitle
begin{item}
end{item}<++>
Este es mi primer documento en LaTeX{}.
Ya podemos acentuar directamente las vocales: á, é í, ó, ú
y generar la letra ñ
end{document}

Más adelante estaremos colocando más tips de uso de este fabuloso plugin, mientras, disfruten la ayuda.

Tex, ambiente de trabajo completo, parte I

Este breve tutorial explicará, paso a paso, como generar un ambiente de trabajo totalmente funcional para text.

Trataremos 3 partes, la primera instalando el sistema básico, la segunda, la integración con vim y la tercera, aumentando nuestro sistema para incluir las clases adecuadas para generar diapositivas y curriculas de forma profesional.

1) Instalando el sistema básico:
Esta instalación asume que posee Debian squeeze o canaima 3.0, no obstante, no debería dar mayores problemas para funcionar en la última versión disponible de Canaima o en debian etch.

Para la instalación del sistema básico, procederemos a descargar los paquetes necesarios;

root@cachama:/media/disco/proyectos# aptitude install 
texlive-latex3

Se instalarán los siguiente paquetes NUEVOS:     
lmodern{a} luatex{a} tex-common{a} texlive-base{a} 
texlive-binaries{a} texlive-common{a} texlive-doc-base{a}
texlive-latex-base{a} texlive-latex-base-doc{a} texlive-latex3
texlive-luatex{a} 

0 paquetes actualizados, 11 nuevos instalados, 0 para eliminar 
y 127 sin actualizar.
Necesito descargar 0 B/94,5 MB de ficheros. 
Después de desempaquetar se usarán 191 MB.

¿Quiere continuar? [Y/n/?] 

Dependiendo de la velocidad de su equipo, este paso podría tardar

Ya con este paso, tendremos una instalación mínima de latex, para probarlo, hagamos un poco de código y para ello, generemos un archivo con el siguiente contenido:

documentclass{article}
% pre'ambulo
usepackage[spanish,activeacute]{babel}
title{Hola Mundo}
author{Mi nombre}
begin{document}
% cuerpo del documento
maketitle
Este es mi primer documento en LaTeX{}.
Por ahora, no puedo acentuar directamente las vocales 
sino con un peque'no  truco
'a, 'e, 'i, 'o, 'u  
end{document}

Compilémoslo con el comando

latex test.tex

Con esto generamos el archivo .dvi adecuado, si queremos generar un pdf directamente, uticemos:

texi2pdf  test.tex

Y obtendremos los archivos finales para ser visualizados o impresos

No obstante, para agilizar nuestro trabajo, cambiaremos el encabezado de nuestro archivo para obtener directamente los acentos; para ello, hagamos un poco de código como:

documentclass{article}
usepackage[spanish]{babel}
selectlanguage{spanish}
usepackage[utf8]{inputenc}
title{Hola Mundo}
author{Mi nombre}
begin{document}
% cuerpo del documento
maketitle
Este es mi primer documento en LaTeX{}.
Ya podemos acentuar directamente las vocales: á, é í, ó, ú 
y generar la letra ñ
end{document}

En nuestra próxima entrega, integraremos el plugin de latex para vim, qué lo disfruten, mientras tanto

¿natbib es un estilo bibliográfico o un paquete?

Hoy, cuando terminaba el texto de una ponencia, me surgió una duda cuando utilizaba bibtex:

bibtex endogeno

This is BibTeX, Version 0.99c (TeX Live 2009/Debian)

The top-level auxiliary file: endogeno.aux

I couldn’t open style file natbib.bst

—line 25 of file endogeno.aux

: bibstyle{natbib

I’m skipping whatever remains of this command

I found no style file—while reading file endogeno.aux

(There were 2 error messages)

Revisé los include del documento text y tenía el usepackage{natbib} y mi estilo bibilográfico tenía la entrada natbib (bibliographystyle{natbib}.
Al revisar documentación en internet mi duda se aclaró: natbib no es un estilo bibliográfico, sino un paquete que provee funcionalidades para realizar citas estilos (autor año) y otras [1].
Así, lo adecuado sería en el encabezado usar:
usepackage[square, comma, sort&compress]{natbib}
En el cuerpo del texto para generar una cita pueden usar lo siguiente:
– Citas con Nombres y solamente el año entre paréntesis:
citet{fulanito2010} –>   Fulanito. (2010)
– Citas con Nombres y año (ambos) entre par?ntesis:
citep{fulanito2010}  –>   (Fulanito.  2010)
Hay muchas otras posibles variaciones que pueden ser consultadas en la excelente hoja de documentación de natbib [2]
Finalmente, al final del documento debemos agregar el estilo que vamos a utilizar, en este caso plainnat
bibliographystyle{plainnat}
Eso es todo para tener sus bibliografías excelentemente generadas.
[1] http://texblog.wordpress.com/tag/bibliographystyle/
[2] http://merkel.zoneo.net/Latex/natbib.php