jueves, mayo 25, 2006

Dos módulos perl muy interesantes

Trasteando de nuevo con Perl, he encontrado un par de módulos que me pueden ser de gran utilidad. Además me han gustado mucho! Por cierto! Los he encontrado, como no, en CPAN.

El primero de ellos se llama Games::Sudoku::Component. Esto me suena... Pues sí con este pequeño módulo puedes crear sudokus aleatorios y además resolverlos. Los puedes imprimir como html lo que facilita verlos en el firefox. Como entradas: el tamaño del tablero y el número de blancos.

El segundo se llama Games::Wordfind y permite generar sopas de letras. Como entrada: un listado de palabras y número de columnas de la tabla. Como salida: permite imprimirlo en html, texto plano y LaTeX. Además también lo resuelve. Mola, ¿no?

miércoles, mayo 24, 2006

Docstrip y documentación de un paquete LaTeX

Tras mucho tiempo de buscar, leer, preguntar... he conseguido descifrar cómo funciona la documentación automática en LaTeX.

LaTeX permite escribir comentarios a la vez que escribimos el código de un paquete o clase. Estos comentarios pueden seguir una estructura de documento y se pueden compilar para obtener un manual perfecto. Podemos definir el paquete, sus macros, entornos, etc.

Los paquetes se escriben en formato .dtx. No cambia nada, excepto que los comentarios seguiran una estrutura de documento. Todo el texto comentado es el que aparecerá en el manual.

Posteriormente pasamos el archivo dtx, a través del programa docstrip. Para llamar a docstrip debemos escribir:
latex docstrip.tex (en línea de comandos)
No hay que preocuparse de buscar el archivo docstrip.tex, porque suele ir incluido en las distribuciones latex más populares. Y el propio LaTeX sabrá dónde está. A continuación se nos preguntarán varias cosas:
  1. extensión de archivo de entrada: dtx
  2. extensión de archivo de salida: sty (vamos a generar el paquete)
  3. parámetros: package (para generar el paquete - hay más pero de momento no los conozco)
  4. listado de ficheros a generar sin extensión: paquete (supangamos que nuestro fichero es "paquete.dtx")
  5. ya está!
Una vez hecho esto, tendremos el archivo paquete.sty que contendrá todo el paquete sin comentarios. Y ya podremos utilizarlo con:
\usepackage{paquete}
Para terminar, podemos compilar el archivo paquete.dtx utilizando LaTeX:
latex paquete.dtx
y obtendremos el manual estructurado del paquete.

Para definir nuevas macros podemos escribir lo siguiente en el dtx:
% Permite al usuario añadir notas
% \begin{macrocode}
%<*package>
\newenvironment{Notas}{...}{...}
% \end{macrocode}
%
Con las etiquetas <*package> encerramos todo lo que queremos que se incluya en el documento sty resultante de la ejecución de docstrip.

sábado, mayo 06, 2006

Programando en Perl

Hola!

Ya he empezado con la programación de la aplicación principal, es decir, la aplicación que se encargará de leer las noticias de la base de datos (en formato HTML) y transformarlas en código LaTeX. Una vez creado el documento tex, procederá a su compilación.

En un principio, necesitaba convertir las noticias en formato HTML a formato LaTeX. Si ningún problema. El módulo HTML::LaTeX, que se encuentra en CPAN, hace el trabajo. Adquiere un fichero HTML y lo convierte a un fichero LaTeX. Una vez hecho esto, hay que extraer el cuerpo de la noticia de ese nuevo fichero tex. Para llevar a cabo esta tarea he utilizado el parser LaTeX::TOM. Es muy fácil de manejar y me proporciona todo lo que necesito. Se puede descargar desde la página web de su creador.

Por último, se generará el periódico en base a una serie de datos de configuración. Todavía no tengo muy claro esto pero, probablemente, utilize un módulo para Perl llamado Config::General. Permite la lectura de archivos de configuración como los del servidor web Apache.

ELPAIS.ES lanza 24HORAS


EL PAÍS lanzó hace un par de semanas 24HORAS.

24HORAS se parece mucho al proyecto que yo llevo entre manos. Es un periódico actualizado automáticamente las 24 horas del día. Se genera automáticamente y ofrece las últimas noticias del día en todo momento. Está en formato pdf y ocupa entre 15 y 20 páginas. El tamaño del fichero es aproximadamente de 1.5 MB. Su descarga es gratuita y si eres usuario de pago puedes personalizar tu edición.

El formato elegido es de 4 columnas para todo el texto del periódico. Los titulares de las noticias ocupan el ancho de columna y no se expanden a través de ellas. Incluye fotos en las columnas.

La portada tiene un formato diferente con una noticia principal (normalmente con foto) y dos noticias secundarias. Aparece un gráfico de índices bursátiles además de otros titulares.

En la última página se pueden ver los índices bursátiles detallados y, en otra página, el tiempo (en forma de mapa) y una viñeta de humor.

Estoy buscando fórmulas para poder competir. El acabado es muy bueno y, además, contiene las noticias del mayor periódico de España, lo que le da mucho valor.

Estoy de vuelta

Hola!
Cuanto tiempo... ¿eh?

Siento el retraso en volver a escribir pero se me complicó la cosa. No he tenido tiempo para avanzar en el proyecto y lo había dejado de lado.
Pero ya estoy de vuelta y con muchas noticias.

La primera versión está en marcha. Opté por utilizar newstex para llevarla a cabo pero... newstex estaba creado utilizando TeX y no LaTeX. ¿Y qué pasa? Pues, en un principio, nada pero, poco a poco, la idea fue desvaneciendose. El problema era que, por ejemplo, los acentos no se podían escribir directamente. Había que utilizar la barra invertida para escribirlos (lo que era un engorro cada vez). Tampoco podía utilizar paquetes de LaTeX y los necesitaba... Así que he decidido crear un nuevo entorno newstex para mí. Este entorno funciona en LaTeX. He creado los environments (entornos) y commands (comandos) necesarios y ya está. Por ejemplo:
\noticia{nº cols.}{titular}{subtitular}{cuerpo}, imprime una noticia
y así muchos más!

Más cosas....

Estoy utilizando el sistema CVS para llevar el control de las versiones del proyecto. Utilizo TortoiseCVS y me va muy bien. Yo no soy un experto en CVS pero me da a mí que si lo manejas bien es una pasada. De momento, cada vez que modifico cosas creo una nueva versión para poder recuperarla cuando desee.