domingo, 24 de mayo de 2009

HAL y la burocracia (I)

Entre los muchos impedimentos que han hecho imposible al autor de estos artículos mantener el frenético ritmo de escritura de meses pasados se cuentan las obligaciones laborales, algunas de las cuales han resultado, sin embargo, menos onerosas gracias a la ayuda impagable del propio HAL.

¿Por qué no regresar, al menos provisionalmente, al recuento de estas amigables conversaciones justo para demostrar la utilidad de HAL en esos menesteres tan potencialmente aburridos como inevitables de las tareas burocráticas, ésas de las que echamos pestes, pero que, sin arreglo posible, consumen nuestro precioso tiempo creativo en lo que parece un irrefrenable y pantagruélico festín del papeleo por todos los ámbitos profesionales?

Sí, abandonamos el terreno de las aplicaciones, lo dejamos pendiente hasta mejor ver, para adentrarnos un poco más en el de la conversación compleja, esto es, la escritura de guiones, cuyo colofón aconteció en esta conversación y en las que la precedieron.

Sin mayor explicación y, sin duda, con brutalidad excesiva, veamos el guión que vamos a obtener a lo largo de los próximos días y su efecto inmediato.

Paciencia. El porqué, el para qué y el cómo se explicarán a su debido tiempo (muy pronto). Pero por un sitio hay que empezar y hacerlo de esta forma tan brusca e inopinada es un manera de comprometer al autor y de evitar que siga enmudecido por tiempo indeterminado.

El guion:

#!/bin/sh

#### Directorios y ficheros
# Directorio que contiene la programación del curso
PROGRAMACION=/home/luis/conservatorio/programacion-loe
# Fichero que contiene la plantilla LaTeX del informe
PLANTILLA=informe_plantilla.tex
# Fichero que contiene las notas de los alumnos
NOTAS=notas
# Fichero sed para limpiar etiquetas LaTeX
NOLATEX=limpiar_tex.sed

#### Datos estáticos (constantes)
# Sufijo de los ficheros de objetivos por cursos
OBJETIVOS=objetivos.tex
# Sufijo de los ficheros de contenidos por cursos
CONTENIDOS=minimos.tex
# La nota mínima para aprobar el curso
NOTA_MINIMA=5

for linea in $(cat $NOTAS)
do
if [ $(echo $linea | cut -d':' -f3) -lt $NOTA_MINIMA ]
then
# Nombre y curso del alumno tal como constan en el fichero $NOTAS
ALUMNO=$(echo $linea | cut -d':' -f1)
CURSO=$(echo $linea | cut -d':' -f2)

# Nombre y curso con el formato que tendrán en la salida impresa
ALUMNO_OUTPUT=$(echo $ALUMNO | sed -e 's/-/ /g')
CURSO_OUTPUT=$(echo $CURSO | sed -e 's/\([[:digit:]]*\)-\(.*\)/\1\.º \2/' \
-e 's/ge/EE/' \
-e 's/gm/EP/')

# Ficheros que contienen los objetivos y contenidos del curso
# en que el alumno está matriculado
F_OBJETIVOS=${PROGRAMACION}/${CURSO}-$OBJETIVOS
F_CONTENIDOS=${PROGRAMACION}/${CURSO}-$CONTENIDOS

# Los objetivos y contenidos en un formato apto para la plantilla
# a partir de la que se genera el informe
sed -f $NOLATEX $F_OBJETIVOS > objetivos_tmp.tex
sed -f $NOLATEX $F_CONTENIDOS > contenidos_tmp.tex

# Las propuestas de trabajo se deben introducir interactivamente
echo "Introduzca propuestas de trabajo para $ALUMNO_OUTPUT [\item ... (^D para salir)]: "
cat > trabajo_tmp.tex

# Construcción del fichero .tex del informe a partir de la plantilla
sed -e "s/ALUMNO/$ALUMNO_OUTPUT/" \
-e "s/CURSO/$CURSO_OUTPUT/" \
-e 's/OBJETIVOS/\\input{objetivos_tmp}/' \
-e 's/CONTENIDOS/\\input{contenidos_tmp}/' \
-e 's/RECUPERACIÓN/\\input{trabajo_tmp}/' $PLANTILLA > ${ALUMNO}.tex

# Generación del pdf del informe e impresión
pdflatex ${ALUMNO}.tex > /dev/null
# okular ${ALUMNO}.pdf 2> /dev/null &
lp ${ALUMNO}.pdf > /dev/null

# Eliminación del los ficheros temporales creados
rm *_tmp.tex
rm $(ls ${ALUMNO}* | grep -v '\.pdf')
fi
done

Un fragmento del resultado:

No hay comentarios:

Publicar un comentario