A.4. A organização da tese em módulos

Dada a dimensão da tese e a variedade de formatos para cada imagem (cada imagem é mantida em GIF, PNG e WMF), o seu desenvolvimento dentro de um só ficheiro cedo deixou de ser viável. Assim, houve que estruturá-la em módulos e fazer corresponder cada módulo a um documento.

A tese foi dividida em capítulos, cada capítulo é um documento SGML. Cada imagem é mantida num ficheiro no sistema. Imagens do mesmo formato estão agrupadas numa colecção. Há um documento especial que é o elemento agregador, onde estão declarados os vários módulos, as várias colecções de imagens e onde está especificado em que ordem os módulos são carregados e, no caso particular das imagens, qual a colecção que deve ser carregada (as colecções de imagens encontram-se em secções condicionais e só uma deverá estar activa.

A seguir apresenta-se um extracto desse documento comentado:

<!DOCTYPE BOOK PUBLIC "-//OASIS//DTD DocBook V3.1//EN"
[

<!-- O formato PNG para imagens não fazia parte
     do DTD, houve que declará-lo.               -->

<!NOTATION PNG SYSTEM 'PNG'>

<!-- Declaração dos vários módulos -->

<!ENTITY header SYSTEM 'header.sgm'> 
<!ENTITY prefacio SYSTEM 'prefacio.sgm'>  
<!ENTITY chap2 SYSTEM 'chap2-doc.sgm'> 
...
<!ENTITY ap-a SYSTEM 'ap-a.sgm'>
...
<!ENTITY biblio SYSTEM 'biblio.sgm'>

<!-- Tratamento das letras usadas na matemática
     enquanto as entidades do ISOmscr não forem suportadas -->
<!ENTITY % my-script SYSTEM "script.ent">
%my-script;

<!-- Tratamento das várias colecções de imagens -->
<!ENTITY % my-wmf SYSTEM 'my-wmf.ent'>
<!ENTITY % my-gif SYSTEM 'my-gif.ent'>
<!ENTITY % my-png SYSTEM 'my-png.ent'>

<!-- Apenas uma é carregada: include -->
<!ENTITY % RTF 'INCLUDE'>
<!ENTITY % HTML 'IGNORE'>
<!ENTITY % TEX 'IGNORE'>
]>

<!-- tese.sgm: o documento -->
<BOOK LANG='pt'>
&header;
<TOC></TOC>
&prefacio;
&chap2;   
...  
&ap-a;
...
&biblio;  
</BOOK>

Os restantes módulos são documentos SGML simples.

Para gerir todas as especificações envolvidas, DTD - cerca de 30 ficheiros, especificação DSSSL - cerca de 60 ficheiros, tese - cerca de 110 ficheiros, usaram-se identificadores públicos (acaba por ser um identificador abstracto). Estes identificadores públicos são depois mapeados em identificadores do sistema; isto faz-se usando declarações próprias no ficheiro catalog. A vantagem é que podemos reutilizador várias vezes um módulo, carregando o seu conteúdo, referenciando-o por aquele identificador público. Se um dia decidirmos alterar a localização ou o ficheiro que está a ser usado para o módulo só será preciso alterar a respectiva declaração no catalog.

A título de exemplo apresenta-se o catalog principal da tese:

--Main Catalog file for my phd thesis --
--jcr 1999.11.12                      --

CATALOG "..\dtd\docbook.cat"
CATALOG "wmf.cat"
CATALOG "gif.cat"
CATALOG "eps.cat"
CATALOG "iso-ent.cat"

CATALOG "..\style1.50\docbook\catalog"

É fácil concluir que este catálogo é constituído apenas por referências a outros catálogos. Por exemplo, a primeira declaração indica onde está o catálogo para o DTD (cada versão do DTD traz um - para actualizar para uma versão mais actual basta-nos instalar a nova versão e alterar esta declaração para procurar o novo catálogo), a última indica qual o catálogo para a especificação DSSSL. As outras entradas carregam os meus catálogos das colecções de imagens.

A título de exemplo apresenta-se a seguir um excerto do catálogo para as imagens PNG:

-- CHAP8 - Validacao com GAs - S4 --
PUBLIC "-//jcr//ENTITIES S4: Arquitectura Conceptual 19991216//PNG" "../imagens/PDF/s4-arq-conceptual.png"
PUBLIC "-//jcr//ENTITIES INES: Arquitectura Funcional 19991112//PNG" "../imagens/PDF/ines-arq.png"
PUBLIC "-//jcr//ENTITIES S4: Arquitectura Funcional 19991217//PNG" "../imagens/PDF/s4-arq-func.png"
PUBLIC "-//jcr//ENTITIES Arquitectura funcional de um editor estruturado 20000120//PNG" "../imagens/PDF/estrutura-editor.png"

Esta apresentação dos catálogos encerra a discussão da implementação modular da tese.