[>a2200.html>] [<a2198.html<] [^a2.html^]
Questo capitolo descrive l'organizzazione del sorgente di Appunti di informatica libera, in modo da consentire una comprensione migliore del funzionamento di Alml.
Il sorgente di Appunti di informatica libera è composto da un file principale, molto grande, che fa riferimento ad altri file esterni per vari motivi:
. |-- citazioni/ | `-- *.sgml | |-- contributi/ | `-- *.sgml | |-- figure/ | |-- PNG2PS | |-- PNG2JPG | `-- *.png | |-- formalita/ | `-- *.sgml | |-- inclusi/ | `-- *.sgml | |-- ortografia/ | |-- errorieccezioni | |-- minimo.aff | |-- minimo.hash | |-- minimo.sml | |-- particolari | `-- vocabolario | |-- ospiti/ | `-- <lavoro ospitato>/ | `... | |-- .textchk.rules --> ortografia/errorieccezioni |-- .textchk.special --> ortografia/particolari |-- Makefile `-- a2-nnnnn.sgml
I file figure/PNG2PS
e figure/PNG2JPG
sono script che generano automaticamente una conversione in formato .ps
e .jpg
delle immagini di partenza.
I file .textchk.rules
e .textchk.special
, ovvero ortografia/errorieccezioni
e ortografia/particolari
, servono per l'uso di Textchk; mentre i file rimanenti nella directory ortografia/
riguardano Ispell.
L'inclusione dei file esterni, nel blocco principale, avviene per mezzo di istruzioni SGML del tipo seguente, dove si dichiara un'entità a cui si abbina il contenuto di un file intero:
<!ENTITY ALCOPY SYSTEM "formalita/copy.sgml">
A seconda della circostanza, può essere necessario includere tali file, oppure evitare la cosa. Per esempio, in una composizione che genera un file HTML unico non è il caso di ripetere certe informazioni sul copyright alla fine di ogni capitolo. Per questa e per altre ragioni, si utilizzano delle entità parametriche che nel sorgente vengono dichiarate in modo da disabilitarle:
<!ENTITY % HTML "IGNORE"> <!ENTITY % PLAINHTML "IGNORE"> <!ENTITY % POSTSCRIPT "IGNORE"> <!ENTITY % PLAINPOSTSCRIPT "IGNORE"> <!ENTITY % LEGGIMI "IGNORE"> <!ENTITY % ANNOTAZIONI "IGNORE"> <!ENTITY % SENZACONTROLLO "IGNORE"> <!ENTITY % OBSOLETO "IGNORE">
Queste entità parametriche controllano la dichiarazione di entità normali e l'inclusione di testo normale, come si può vedere nell'estratto seguente:
<![%POSTSCRIPT;[ <!ENTITY ALCOPYINGTOMO SYSTEM "formalita/copying-tomo.sgml"> <!ENTITY ALCOPYINGPARTE SYSTEM "formalita/copying-parte.sgml"> <!ENTITY ALCOPY SYSTEM "formalita/copy.sgml"> <!ENTITY ALDEDICA SYSTEM "formalita/dedica.sgml"> ]]> <![%PLAINPOSTSCRIPT;[ <!ENTITY ALCOPYINGTOMO ""> <!ENTITY ALCOPYINGPARTE ""> <!ENTITY ALCOPY ""> <!ENTITY ALDEDICA SYSTEM "formalita/dedica.sgml"> ]]>
Se tutte le entità parametriche viste in precedenza restano al valore originale (IGNORE), nessuna delle dichiarazioni che si vedono qui viene presa in considerazione. Se invece una di queste entità contiene il valore INCLUDE, allora le dichiarazioni relative hanno significato.
Il sistema controlla l'abilitazione di queste entità parametriche attraverso l'opzione --sgml-include=entità_parametrica, come per esempio nel comando necessario a generare una composizione in PostScript:
$
alml --ps --verbose (segue)
--sgml-include=POSTSCRIPT (segue)
--sgml-include=SENZACONTROLLO (segue)
--sgml-include=OBSOLETO (segue)
--replace-char="÷,−" --replace-char="·, " (segue)
mio_file.sgml
Questa abilitazione preventiva prende il sopravvento sulla dichiarazione di esclusione (IGNORE) interna al sorgente e si ottiene il risultato desiderato.
Anche la dichiarazione delle entità normali segue la regola per cui vale ciò che è stato definito per primo. Pertanto, per evitare problemi, dopo la dichiarazione condizionata all'attivazione delle entità parametriche, viene ripetuta una dichiarazione di tali entità in modo predefinito:
<!ENTITY ALCOPYINGTOMO SYSTEM "formalita/copying-tomo.sgml"> <!ENTITY ALCOPYINGPARTE SYSTEM "formalita/copying-parte.sgml"> <!ENTITY ALCOPY SYSTEM "formalita/copy.sgml"> <!ENTITY ALCOPYING SYSTEM "formalita/copying.sgml"> <!ENTITY ALMIRROR SYSTEM "formalita/mirror.sgml"> <!ENTITY ALDEDICA SYSTEM "formalita/dedica.sgml">
Tutti gli altri file utilizzati vengono dichiarati nello stesso modo, per esempio come nel caso delle citazioni:
<!ENTITY UNI601567 SYSTEM "citazioni/UNI-601567.sgml"> <!ENTITY ManifestoGNU SYSTEM "citazioni/GNU-Manifesto.sgml"> <!ENTITY ProgettoGNU SYSTEM "citazioni/GNU-progetto.sgml"> <!ENTITY LicenzaGNUGPLEN SYSTEM "citazioni/GNU-GPL.en.sgml"> <!ENTITY LicenzaGNUGPLIT SYSTEM "citazioni/GNU-GPL.it.sgml"> <!ENTITY LicenzaGNULGPLEN SYSTEM "citazioni/GNU-LGPL.en.sgml"> <!ENTITY LicenzaGNUFDLEN SYSTEM "citazioni/GNU-FDL.en.sgml"> <!ENTITY LicenzaArtistic SYSTEM "citazioni/Artistic.sgml"> <!ENTITY LicenzaBSD SYSTEM "citazioni/BSD.sgml"> <!ENTITY LicenzaMIT SYSTEM "citazioni/MIT.sgml">
Successivamente, nel corpo del file principale appare il richiamo alle entità relative per indicare il punto di inserzione di tali file:
<appendix> ... &LicenzaGNUGPLEN; &LicenzaGNUGPLIT; &LicenzaGNULGPLEN; &LicenzaGNUFDLEN; &LicenzaArtistic; &LicenzaBSD; &LicenzaMIT;
Le tabelle 155.1 e 155.2 riepilogano le entità parametriche che controllano il sorgente di Appunti di informatica libera e le entità normali più importanti.
Tabella 155.1. Significato delle entità parametriche usate nel sorgente di Appunti di informatica libera.
Macro SGML | Contenuto |
&ALOPERA; | Il nome dell'opera. |
&ALOPERAEMAIL; | L'indirizzo o gli indirizzi di posta elettronica di riferimento. |
&ALPERIODO; | L'anno o gli anni del copyright. |
&ALEDIZIONE; | Edizione, scritta possibilmente come data. |
Tabella 155.2. Significato di alcune entità importanti, usate nel sorgente di Appunti di informatica libera.
Per facilitare la digitazione, vengono usati due caratteri in modo improprio: il codice B716 viene usato per indicare uno spazio non interrompibile, che in generale andrebbe inserito con la macro ; inoltre, il codice F716 viene usato per indicare un trattino speciale, ben visibile, che per Alml andrebbe indicato con la macro −.
Per fare in modo che questi simboli fittizi vengano trasformati nel modo corretto, prima dell'analisi SGML vera e propria, si usano le opzioni:
--replace-char="÷,−" --replace-char="·, "
Il pacchetto dei sorgenti di Appunti di informatica libera include il file Makefile
, per facilitare la composizione dell'opera. La tabella 155.3 riepiloga i comandi principali.
Tabella 155.3. Comandi relativi al file-make di Appunti di informatica libera.
Appunti di informatica libera 2000.07.31 --- Copyright © 2000 Daniele Giacomini -- daniele @ swlibero.org