PDF de programación - Clase 18. Prácticas: Tagger

Imágen de pdf Clase 18. Prácticas: Tagger

Clase 18. Prácticas: Taggergráfica de visualizaciones

Publicado el 6 de Septiembre del 2017
512 visualizaciones desde el 6 de Septiembre del 2017
281,4 KB
15 paginas
Creado hace 20a (12/12/2003)
Clase 18. Prácticas: Tagger

18.1 Descripción general

En esta clase explicaremos el diseño de Tagger, un pequeño programa que escribí en el
verano de 2001 y que he utilizado para redactar y editar mis trabajos durante los últimos
meses, así como para el presente documento (curso 6.170) y muchos otros desde junio de
2001 (véase http://sdg.lcs.mit.edu/~dnj/publications).

He escogido Tagger para esta tercera clase práctica por una serie de razones. En primer
lugar, porque lo conozco mejor que otros programas, ya que lo he escrito yo mismo. En
segundo lugar, porque ofrece demostraciones de varios de los patrones y lenguajes
estudiados a lo largo del curso y muestra una utilización muy interesante de la API de
colecciones de Java (el primer caso práctico visto en el curso). Y, por último, porque no se
trata de una tarea tan pulida como las de los dos casos prácticos anteriores, por lo que
posiblemente se adecua mejor a lo que se espera que el estudiante presente en su trabajo de
fin de curso. El diseño del programa me ocupó varios días, más una semana que empleé en
construirlo.

Esta clase práctica puede también consultarse en forma de presentación a base de
transparencias.

18.2 Objetivo

Tagger es una pequeña aplicación de procesamiento de texto diseñada para servir de ayuda
en la producción de artículos y libros de contenido técnico. Se utiliza como una aplicación
de usuario final para programas de diseño tipo WYSIWYG, como QuarkXpress y Adobe
Indesign, que combina las ventajas de éstos con algunas de las ventajas de herramientas de
texto basadas en compilaciones, como TeX.

Las herramientas del tipo TeX son interesantes, ya que permiten al usuario editar
documentos en un editor de texto potente e intercambiarlos fácilmente por correo
electrónico. Al hallarse el formato indicado por medio de etiquetas de texto (tags), se puede
variar mediante los mismos mecanismos (como Buscar y Reemplazar) que se utilizan para
modificar el propio texto. Asimismo, los símbolos de operadores matemáticos se pueden
referenciar simbólicamente (por ejemplo, escribiendo \alpha para indicar el símbolo α), lo
que normalmente permite agilizar el proceso de mecanografiado al no tener que seleccionar
caracteres especiales, así como desacoplar el documento de una fuente matemática
específica. Las referencias cruzadas se expresan de modo sencillo mediante la asignación
de nombres simbólicos a párrafos y utilizando a continuación éstos en las citaciones.

Pero, por otra parte, las herramientas como TeX presentan también graves inconvenientes.

Requieren un considerable trabajo de adaptación por parte del usuario para poder reconocer
la amplia gama de fuentes de postcript actualmente disponibles. Además, los ajustes de
diseño no resultan por lo general fáciles: cualquier modificación, por simple que sea (como
cambiar los márgenes o el espaciado de los títulos), exige normalmente que la persona que
la realiza tenga los conocimientos adecuados. Y la calidad tipográfica de los documentos es
inferior a la que se obtiene con las modernas herramientas de diseño. Tanto Indesign como
Quark, sin ir más lejos, permiten definir una "baseline grid" (cuadrícula de base) para
alinear las líneas de texto en páginas con columnas enfrentadas, y los algoritmos de guiones
que utilizan parecen funcionar mejor. Indesign da acceso a todas las funciones de las
fuentes OpentType, ofreciendo además alineamiento óptico.

El funcionamiento de Tagger es sumamente sencillo. El usuario escribe un documento en
un lenguaje de marcado simple. Este tipo de lenguaje no ofrece prácticamente ningún
control directo sobre el formato, aparte de comandos para poner el texto en negrita, cursiva,
etc. Por el contrario, los párrafos se etiquetan con los nombres de los estilos de párrafo
(paragraph styles). Tagger convierte el documento en un archivo en el formato de
importación de un programa de diseño como Quark. Dentro de Quark, el usuario define una
hoja de estilo (stylesheet) que asigna a cada párrafo sus características tipográficas. De esta
forma, al importarse los párrafos se formatean según el estilo apropiado de la hoja de estilo.

Naturalmente, cabe también la posibilidad de escribir el archivo de importación para el
programa de diseño. Pero ocurre que cada programa de diseño tiene un formato de
importación distinto. Aunque actualmente Tagger sólo genera archivos para Quark, no sería
difícil añadir soporte para Indesign y otros programas similares. Asimismo, los formatos de
importación tienden a ser de bajo nivel y resultan mucho más complicados de escribir que
nuestro lenguaje de marcado. Curiosamente, el formato de importación para Indesign no se
puede ni siquiera preparar en un editor de texto, ya que se halla basado en la distinción
entre saltos de línea y retornos de carro. Tagger también traduce nombres simbólicos de
caracteres matemáticos a información de fuentes e índices: en el formato de importación, en
vez escribir cosas como \alpha para mostrar el carácter α, habría que indicar el nombre de la
fuente matemática y el índice correspondientes.

18.3 Características

Tagger presenta las siguientes características:


• Marcado de párrafos con nombres de estilo. Una hoja de estilo específica determina
para cada estilo un estilo por defecto, por lo que en muchos casos no es necesario
marcar un párrafo explícitamente.

• Numeración automática de párrafos. La hoja de estilo determina qué estilos deben
numerarse, la jerarquía de la numeración (sección, subsección, etc.), en qué estilo se
generarán los números (alfabético, arábigo, latino, etc.) y cómo deben estar
compuestas las cadenas de numeración, con los encabezados, colas y separadores
propios de cada estilo.

• Denominación simbólica de caracteres especiales. Los archivos de asignación
traducen los nombres simbólicos a pares nombre de fuente/índice. Tagger incluye

algunos archivos de este tipo que facilitan la escritura de nuevos archivos que hagan
accesibles los caracteres de otras fuentes.

• Modo math. El programa trata el texto escrito entre dos signos de dólar ($) como
texto matemático. Los caracteres alfabéticos aparecen en cursiva, pero los números,
los signos de puntuación y los símbolos permanecen invariables.

• Referencias cruzadas. Cuando se marca un párrafo con una etiqueta, una cita que
utilice dicha etiqueta en cualquier parte del texto generará una cadena que refiere al
párrafo marcado. Por defecto, esta cadena será la cadena de numeración creada por
la función de numeración automática, aunque el usuario puede especificar otra
cadena explícitamente. Esta característica, combinada con
la numeración
automática, simplifica el manejo de referencias bibliográficas.

• Formato básico de caracteres. Se puede poner el texto en cursiva, insertar

subíndices, etc.

• Espacios en blanco. Los espacios en blanco se mantienen en su mayoría, por lo que

resulta sencillo sangrar el texto con tabulaciones o espacios.

• Atajos. Tagger ofrece varios de los atajos más comunes: por ejemplo, tres puntos
equivalen a puntos suspensivos, dos guiones a un guión de cierre, etc. El texto entre
guiones bajos pasa a cursiva. En cuanto a las comillas, el programa les da la forma
adecuada según el contexto; como por ejemplo en la frase: "Está bien trabajar como
‘ingeniero de software’ en el año '01".



18.4 Diseño: descripción general
La organización básica del programa es muy sencilla. La clase principal, Tagger, utiliza la
clase SourceParser para analizar el texto de entrada y transformarlo en una cadena de
objetos Token, cada uno de los cuales tiene un TokenType. El Token se pasa a un objeto
Engine, que asocia el TokenType a una lista de objetos Action, lo que hace que cada uno
de éstos se ejecute. Un efecto típico de una Action es generar una salida de texto a través de
una interfaz Generator que oculta a la Action la opción de formato de importación, es
decir, el formato de salida). Actualmente sólo existe una clase que implemente esta interfaz,
llamada QuarkGenerator, que produce texto para ser importado por QuarkXpress.

Algunos objetos Action hacen que se lean los archivos: por ejemplo, el texto
\loadstyles{foo.txt} hace que el archivo foo.txt sea procesado como un archivo de estilo. Los
archivos de estilo y los mapas de caracteres comparten una misma sintaxis: una secuencia
de líneas, cada una de ellas formadas por una lista de propiedades, cada una de las cuales, a
su vez, consiste en un par formado por un nombre de propiedad y un valor. Los contenidos
de ambos tipos de archivos se representan como objetos PropertyMap. Cada objeto de este
tipo contiene una asignación de los nombres de propiedad a las listas de propiedad, siendo
éstas listas de objetos Property, y estando formadas cada una de ellas por un nombre de
propiedad y un valor. La clase PropertyParser lleva a cabo el análisis de los archivos de
propiedades.

La clase Numbering crea cadenas de numeración. Se genera una instancia de la clase para
cada archivo de estilo, ya que cada uno de éstos contiene directrices de numeración.


El diagrama de dependencia de módulos (véase el archivo tagger-mdd.doc) muestra los
módulos del programa Tagger y sus dependencias entre sí. El contorno de puntos agrupa
los módulos que comparten dependencias, lo que nos permite evitar el tener que trazar una
flecha de dependencia desde la clase Tagger a prácticamente todas las demás clases. Los
números que figuran junto a los bordes de las dependencias señalan comentarios a la lista
de dependencias no previstas, que explican
  • Links de descarga
http://lwp-l.com/pdf6814

Comentarios de: Clase 18. Prácticas: Tagger (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad