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.