Alml

Introduzione

Il rapido aggiornamento e la facile lettura dell'opera «Appunti di informatica libera» di Daniele Giacomini hanno il beneficio di essere sostenute dall'applicazione di composizione Alml creata appositamente per facilitarne la stesura.

Le prime versioni di «Appunti di informatica libera», già «Appunti Linux», uscirono nell'anno 1997. Inizialmente, l'autore, utilizzò l'Html per la stesura di alcuni capitoli; accortosi dell'esistenza dello SGML e spronato a conoscerlo passò rapidamente a questo sistema di composizione. Dopo lo studio rigoroso del DTD originale capì velocemente che era inadeguato per via della complessità; per questo decise di crearne uno di proposito, attribuendo il nome degli elementi vicini a quelli dello Html, e di sviluppare una famiglia di programmi scritti in linguaggio Perl che controllano il file sorgente e generano la composizione finale del documento.

Il documento può essere generato in Html, così come è strutturato «Appunti di informatica libera», oppure grazie al linguaggio di composizione TeX in Postscript ed eventualmente in PDF (quest'ultimo è ottenuto dal file DVI).

Alml: installazione ed uso

Alml viene distribuito compresso in formato tar; tuttavia chi utilizza la distribuzione Debian può superare i problemi dell'installazione grazie al programma 'apt-get' e alla persona che si occupa di mantenere il pacchetto Debian.

Gli aggiornamenti sono rilevanti per questo anche l'autore stesso consiglia un nuovo aggiornamento solo se strettamente necessario.

I programmi di sostegno a Alml sono molti: 'Perl', 'perl-gettext-locale', 'sp', 'latex', 'psutils', 'dvipdfm', 'uuencode', 'ImageMagick', 'gs', 'html2ps', 'links' e 'sgmltexi'. Sgmltexi è stato ideato da Daniele Giacomini. Alml, durante il processo di composizione, crea un file di diagnostica 'nomesorgente.diag' che va verificato per controllare gli errori dovuti ad una errata installazione o alla mancanza dei prerequisiti richiesti. Se questo non bastasse consiglio di indirizzare l'uscita dello standard error in un nuovo file diagnostico.

L'eseguibile 'alml' richiama più programmi durante il processo di composizione; tra questi 'alml-extra' facilita la riorganizzazione del file Postscript per numero di pagine o per formati particolari che ne facilitano la rilegatura che aiutano a risparmiare carta oppure poggiano in un unico foglio più pagine. Ecco un esempio di utilizzo di 'alml':

$ alml –-paper=a4 --ps esempio.sgml

Viene generato un documento Postscript in formato A4 dal file Alml 'esempio.sgml'. Indicare la dimensione della pagina è fondamentale pena uno stravolgimento nella composizione finale.

$ alml --html esempio.sgml

Viene generato un documento in Html dal file 'esempio.sgml'.

In un file separato compresso in formato tar o nella stessa opera «Appunti di informatica libera» viene fornita la documentazione necessaria per costruire un sorgente in formato Alml. Essa è suddivisa in due parti. La prima riguarda nozioni di tipografia ed editoria elettronica che aiutano il lettore a comprendere anche le scelte stilistiche adottate dall'autore. La seconda parte tratta in modo specifico Alml ed il programma frontale 'alml'. La terza ed ultima parte discute le forme stilistiche che hanno aiutato, facilitato e condizionato la stesura dell'opera; consiglio, anche a colui che non è interessato al sistema di composizione, di leggerla.

Alml: organizzazione generale

Un documento finale in Alml comprende sempre una suddivisione in capitoli mentre, la possibilità di aggiungere parti o tomi è facoltativa. Oltre alla gestione del testo, Alml consente di trattare con facilità immagini in formato PNG, tabelle, diagramma generati con 'xfig', blocchi in formato TeX (indispensabile se si vogliono aggiungere, per esempio, formule matematiche).

Gli elementi di Alml richiamano velocemente quelli dello Html; infatti un tipo di documento è riportato in Listato 1.

<!-- Listato 1 -->
<!DOCTYPE ALML PUBLIC "-//D.G. //DTD Alml//EN">
<alml lang="it" spacing="uniform">
<head>
        <admin>
                <description>Il mio primo documento</description>
                <keywords>Chiave 1, chiave 2</keywords>
                <printedpagesize type=”topmargin”>2.5cm</printedpagesize>
                <printedpagesize type=”bottommargin”>2.5cm</printedpagesize>
                <printedpagesize type=”internalmargin”>2.5cm</printedpagesize>
        </admin>
        <title>Il mio primo documento</title>
        <author>Umberto Zanatta&nbsp;&nbsp;umbertoz@inwind.it</author>
        <date>2002.11.05</date>
        <abstract>
                <p>Questo documento introduce....</p>

        </abstract>
        <legal>
           <p>Questo documento si può riprodurre...</p>
        </legal>
        <dedications>

                <p>Bla bla...</p>

        </dedications>
        <maincontents levels="2">Indice generale</maincontents>
</head>

<intro>
<h1>Introduzione</h1>
</intro>
<body>
<h1 id=”cap1”>Primo capitolo</h1>
<p>Bla Bla...</p>

<ol>
<li>

        <p>Questo è un elenco numerato.</p>

</li>
</ol>
</body>
</alml>

Il documento è organizzato in due sezioni: la prima compresa tra gli elementi 'head', la seconda è compresa tra gli elementi 'body'; entrambi sono obbligatori. I commenti sono compresi tra gli elementi '<!--' e '-->'.

L'autore assegna all'elemento 'head' il compito di organizzare la copertina del documento: in esso vi sono racchiusi altri elementi come 'title', il titolo del documento; 'date' la data della composizione finale; 'author' l'autore dell'opera ed altri ancora.

La composizione finale in Postscript e PDF può essere variata cambiando corpo del carattere con l'elemento 'printfontsize' racchiuso nell'elemento 'admin'; il testo viene poggiato nel foglio con l'elemento 'printedpagesize' sempre all'interno dell'elemento 'admin'. Esso accetta i tipi speciali 'topmargin' per lo spazio vuoto assegnato al margine superiore, 'bottommargin' per lo spazio vuoto assegnato al margine inferiore e 'internalmargin' per lo spazio vuoto assegnato al margine sinistro per le pagine destre e al margine destro per le pagine sinistre.

L'elemento 'maincontents' genera l'indice generale del documento; la composizione finale dei riferimenti incrociati non viene lasciata al compilatore TeX, limitata nelle capacità, ma gestita dal programma frontale 'alml'.

Terminata l'organizzazione della copertina del documento si passa all'organizzazione del contenuto del documento. Le sezioni o blocchi compresi in questa parte sono tre: 'intro', 'body' e 'appendix'.

Il blocco racchiuso nell'elemento 'intro' include la prefazione o il sommario del documento. Il blocco racchiuso nell'elemento 'body' divide il documento in tomi o volumi, parti c capitoli.

Al tomo viene assegnato l'elemento 'tomeheading', alla parte l'elemento 'h0' al capitolo l'elemento 'h1' alle sezioni gli elementi 'hx' fino al livello quattro. I paragrafi sono identificati dall'elemento 'p'. Gli elementi di Alml sono suddivisi in due gruppi fondamentali: i blocchi di testo («in blocco») identificati appunto dall'elemento 'p' e gli elementi che possono essere inseriti all'interno di una riga («in riga»).

L'elemento 'strong', per l'enfasi rafforzata, viene inserito «in riga»; l'elemento 'frame' per marcare zone speciali di un documento ha bisogno che il testo sia racchiuso tra l'elemento 'p'. Ulteriori tipi «in riga» sono 'em' per l'enfasi normale, 'small' per il testo in piccolo ed altri già ereditati dall'Html.

Per gli elenchi numerati esiste l'elemento 'ol' per quelli non numerati o puntati l'elemento 'ul'. Il contenuto dell'elenco viene inserito con l'elemento 'li' con il contenuto «in blocco».

Per il testo letterale si utilizzano gli elementi 'verbatimpre' o 'pre'. Il primo non è sensibile all'entità standard, quindi gli elementi di Alml vengono trattati come testo ASCII; il secondo è sensibile alle entità standard.

Per gestire la numerazione nelle basi più comuni esistono gli elementi 'num' per i numeri decimali, 'exa' per i numeri in esadecimale, 'dec' per i numeri i base dieci, 'oct' per i numeri ottali ' 'bin' per i numeri binari.

La gestione delle immagini, tabelle o figure viene garantita dagli elementi 'figure' per le immagini in formato PNG, Postscript o Xfig e 'table' per le tabelle. Gli elementi 'fcaption' e 'tcaption' assegnano, rispettivamente, la didascalia alla figura o alla tabella. I riferimenti incrociati sono possibili con gli elementi 'figureref' e 'tableref'. In listato 2 un esempio. L'immagine può essere manipolata con gli attributi 'width' e 'height' in 'imgfile'. Per i listati utilizzato in modo analogo esistono gli elementi 'listing' e 'listingref'.

La composizione delle tabelle differisce da quella utilizzata in Html ed è limitata dalle caratteristiche del linguaggio TeX; tuttavia è possibile includere tabelle più complesse direttamente con gli elementi Html. L'operazione finale che si ottiene è un'immagine Postscript incorporata nel file TeX.

<!-- Listato 2 -->
<figure id=”fig-1”>
<fcaption>

        Figura <figureref>. Immagine 1.

</fcaption>
<image imgfile=”img_1”>

<p>L'immagine <figureref id=”fig-1”>... Bla Bla...</p>



«Appunti di informatica libera» è ricco di esempi di utilizzo di comandi e di demoni di sistema. L'elemento 'command' e 'syntax' servono per rappresentare i comandi (intesi comandi da shell) e la sintassi di un comando (quella restituita dal comando 'man'). In listato 3 un esempio con l'elemento 'command'.

<!-- Listato 3 -->
<command>
        <prompt># </prompt>
        <type>ls -l </type>
        <kbd>Invio</kbd>
</command>

Non mancano gli elementi per inserire note a piè di pagina o l'indice analitico.

Conclusioni

Sfogliare l'opera «Appunti di informatica libera» sia in formato Html, Postscript o PDF rende consapevoli della potenza di questo documento.

La semplicità e la flessibilità di un sistema di composizione simile allo Html unita alla complessità dello SGML e del linguaggio TeX lo hanno reso un sistema ideale per scrivere libri, appunti, tesi di laurea e qualsiasi genere di documentazione.

Il programma frontale 'alml' è in grado di generare del testo «puro» per essere utilizzato con analizzatori grammaticali o di sintassi come Aspell o Textcheck; quest'ultimo sviluppato sempre da Daniele Giacomini. Il controllo, infatti, non è possibile dal programma frontale.



La composizione del file PDF non si limita ad una conversione dal file DVI, ma vengono generati sia i fotogrammi per ogni pagina sia i riferimenti di navigazione tipici dei documenti PDF.

Utilizzo Alml da mesi con soddisfazione da quando, per necessità di lavoro, mi è stato chiesto di produrre documentazione sia in formato Html sia in formato PDF, con soddisfazione da parte di tutti i colleghi.