Los gabinetes de especialistas a los que vamos a dirigir nuestro texto marcado suelen ser muy puntillosos en la forma de remitírselo. Tampoco es nada nuevo, estamos acostumbrados en la vida diaria a pasar por toda clase de formalismos endemoniados cuando tratamos de realizar ciertas gestiones que desde nuestro punto de vista son elementales (que si la maldita fotocopia del DNI, que si una copia compulsada de la cabecera de vaya usted a saber qué recibo, ...). Los receptores de nuestros textos marcados gustan de ese mismo rigor protocolario. Sus razones tienen, y no vamos a analizarlas. Ahora es cuestión sólo de conocer la fórmula y perder el menor tiempo posible en tratar de desentrañar su sentido.
Bien, recurramos a una metáfora que hará más entretenida esta burocrática tarea. Imaginemos que nos dirigimos a la ventanilla de la oficina de nuestro navegador web para informarnos de cómo enviarles el texto que acabamos de marcar. Los funcionarios del navegador nos notificarán que tenemos que utilizar un sobre y que no podemos emplear cualquier clase de sobre. Es necesario un sobre especial, que recibe el nombre
BODY
. Pero no basta, conviene incluir además, en otro sobre aparte ---y que se vea al principio---, llamado HEAD
, información de orden global sobre el documento, por ejemplo, el tipo de codificación de caracteres con el que ha sido escrito. Esos dos sobres deben introducirse a su vez en otro mayor, denominado HTML
, en cuya solapa se pegará una etiqueta donde conste claramente expresado el tipo de documento que remitimos. Si ahora pensamos en los sobres implicados como marcas globales de HTML, nuestro envío deberá atenerse al siguiente formato:
DECLARACIÓN DEL TIPO DE DOCUMENTO
<HTML>
<HEAD>
[Metainformación (como codificación del documento) y otras informaciones de orden global.]
</HEAD>
<BODY>
[Nuestro texto con las marcas HTML.]
</BODY>
</HTML>
Preparados los sobres e informados puntual y minuciosamente por los oficinistas del navegador, rellenamos todo lo burocráticamente necesario y metemos en el sobre
BODY
nuestro texto con las marcas HTML visto ayer:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<HTML>
<HEAD>
<META content="text/html; charset=UTF-8">
</HEAD>
<BODY>
<H2>
Navegación gráfica
</H2>
<DIV>
<P>
Si hubiésemos estado visitando la página con un buen navegador gráfico que disponga de la opción de guardar las páginas web como texto, tendríamos que realizar al menos dos acciones, ambas independientes:
</P>
<OL>
<LI>
Ir al menú "Archivo" del navegador y guardar como texto la página web. (Lo que además implica seleccionar un nombre de fichero y un directorio).
</LI>
<LI>
Crear en <EM>Vim</EM> una nueva ventana para editar en ella el documento que acabamos de guardar, mediante la orden <CODE>:new ruta_fichero</CODE>.
</LI>
</OL>
</DIV>
<H2>
Navegación desde consola
</H2>
<DIV>
<P>
Si navegamos con <EM>w3m</EM>, y gracias a la interacción entre las aplicaciones de consola, bastaría ejecutar una única acción desde el propio <EM>Vim</EM>, que, además, podríamos abreviar para reproducirla en situaciones semejantes. Veamos cómo.
</P>
<P>
Con <EM>w3m</EM> el proceso de convertir una página web en texto es absolutamente elemental: añadir la opción <CODE>-dump</CODE>. Por ejemplo:
</P>
<P>
<CODE>w3m -dump http://www.w3.org/TR/html401/struct/lists.html</CODE>
</P>
<P>
nos devuelve la página dada como argumento, tal cual se presenta en el navegador, pero como puro texto.
</P>
</DIV>
</BODY>
</HTML>
Sería insoportablemente aburrido tener que repetir "el papeleo" cada vez que enviamos al navegador un documento web. Es frecuente, por ese motivo, crearse una plantilla con las partes áridas y comúnmente compartidas por todos los documentos html que vayamos a producir y concentrarse en el marcado del texto propiamente dicho. Por supuesto, otra forma, mucho más del gusto de HAL, sería crear un guión que incorporase nuestra anterior orden
sed
y que de paso añadiese el resto del formulismo.Un guión posible para esta tarea ---uno más para nuestro directorio
guiones
--- sería éste. Lo llamaremos generar_html
:
## --* generar_html - 18/03/09 - átopos *--
## Genera documento HTML canónico a partir de un documento de texto
## marcado con mis marcas informales
SED_F=txt2html.sed # Fichero sed: convierte mis marcas
# informales en marcas HTML
ORIG_F=$1 # Fichero de entrada
DEST_F=$(basename $ORIG_F .txt).html # Fichero HTML de salida
sed -f $SED_F $ORIG_F \
| awk 'BEGIN {
print "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\"";
print "\t\"http://www.w3.org/TR/html4/strict.dtd\">";
print "<HTML>";
print "<HEAD>";
print "<META content=\"text/html; charset=UTF-8\">";
print "</HEAD>";
print "\n<BODY>";
}
{ print $0; }
END { print "</BODY>";
print "</HTML>";
}' \
> $DEST_F
El guión presupone que el fichero
txt2html.sed
, creado el día pasado, se encuentra en el mismo directorio donde está el guión, en nuestro caso, el directorio guiones
.Para generar el documento HTML, deberíamos cambiar el modo del guión y solicitar a HAL su ejecución con la siguiente orden:
./generar_html texto_etiquetado.txt
El resultado será el fichero
texto_etiquetado.html
cuyo contenido será el referido en este artículo.La única orden de HAL que aparece en ese guión y que no hemos explicado todavía en estas conversaciones es la orden
basename
. El lector sabrá encontrar la información concerniente a ella recurriendo a man
.Asimismo, el lector interesado en profundizar en lo expuesto durante estos días podrá encontrar toda clase de información sobre las marcas utilizadas y el resto de marcas HTML en la referencia definitiva de la especificación actualmente más usada de HTML, que se puede encontrar aquí:
http://www.w3.org/TR/html401/
Por supuesto, se debe comprobar que el HTML funciona, abriéndolo con cualquier navegador:
w3m texto_etiquetado.html
¡Felices sueños!
No hay comentarios:
Publicar un comentario