Ahí va la orden para HAL [Después del texto de la orden, se muestra una imagen que contiene la orden completa sin los comentario iniciales ---las líneas precedidas por
#
. La orden se entiende mejor en la imagen, puesto que su estructura sintáctica aparece coloreada]:
#!/bin/sh
## ------------------------------------------------------------------
## extraer-resumenes: Extrae las listas etiquetadas con
## _class="resumen"_ del fichero xml 'Conversaciones con HAL'
## precedidas por el título del artículo y las procesa para obtener
## el fichero 'resumenes_hal.tex', donde el orden de sus secciones es
## el orden inverso de los artículos en el fichero original.
## ------------------------------------------------------------------
## 09/02/2009 @ átopos - http://los-pajaros-de-hogano.blogspot.com
## ------------------------------------------------------------------
#
## FUNCIONAMIENTO:
# 1. grep extrae los títulos de los artículos y las listas de
# resúmenes
# 2. sed convierte la salida a formato LaTeX y elimina fragmentos
# innecesarios. [Los títulos de los artículos se etiquetan como
# 'section' en lugar de '\section' para facilitar el procesamiento
# ulterior con awk: awk funciona mal con separadores que
# incluyen '\']
# 3. El primer awk revierte el orden de las secciones.
# 4. El segundo awk etiqueta correctamente los títulos con '\section'
# y actúa sobre cada sección dependiendo de si ésta contiene o no
# resúmenes.
# 5. El tercer awk envuelve el resultado anterior con el preámbulo
# del fichero LaTeX y su entorno global 'document'.
## ------------------------------------------------------------------
grep -E -o -e "<title type='text'>[^>]*</title>" \
-e '<ul class="resumen">[^<]*' \
Conversaciones\ con\ HAL \
| sed -e 's/<br \/>/\n/g' \
-e '/Los pájaros de hogaño/d' \
-e 's/<title[^>]*>/section{/g' \
-e 's/<\/title>/}/g' \
-e 's/<ul[^&]*>/\\begin{itemize}/g' \
-e 's/<\/ul>/\\end{itemize}/g' \
-e 's/<li[^&]*>/\\item /g' \
-e 's/<\/li>//g' \
-e 's/<code[^&]*>/\\verb=/g' \
-e 's/<\/code>/=/g' \
-e 's/<em>/\\emph{/g' \
-e 's/<\/em>/}/g' \
-e 's/<a href="\([^"]*\)">\([^\&]*\)/\2 (ver \1)/g' \
-e 's/<\/a>//g' \
-e 's/>/>/g' \
-e 's/ \d39/ \d96/g' \
| awk 'BEGIN { RS=""; FS="section"; ORS=""; }
{
for (i = NF; i > 0; --i)
print "section" $i;
}' \
| awk 'BEGIN { RS="section"; FS="\n"; }
{ if (NF > 2)
print "\\section" $0;
else if (FNR != 1)
print "\\section" $0 "\n( Sin resumen. )\n";
}' \
| awk 'BEGIN { print "\\documentclass{article}";
print "\\usepackage[spanish]{babel}";
print "\\usepackage[T1]{fontenc}";
print "\\usepackage[utf8]{inputenc}";
print "\\usepackage{verbatim}";
print "\\usepackage{mathptmx}";
print "\\usepackage[scaled=.90]{helvet}";
print "\\usepackage{courier}";
print "\\title{Resúmenes de HAL}";
print "\\begin{document}";
print "\\maketitle" }
END { print "\\end{document}" }
{ print }' \
> resumenes_hal.tex
A la derecha de la imagen siguiente puede verse un fragmento de lo que se logra tras procesar el fichero resultante
resumenes_hal.tex
con pdflatex
---del que quizá hablemos en otra sesión--- y abrir el pdf con un lector como okular
:[El porqué de todo esto ... el próximo día.]
No hay comentarios:
Publicar un comentario