Preparazione e visione generale

Alml è costituito principalmente da un programma Perl (alml) che controlla l'analizzatore SGML e altri programmi necessari per arrivare alla composizione finale del documento. Tuttavia, per poter comprendere tale meccanismo, sarebbe opportuno prima conoscere quanto descritto a proposito dell'SGML, di TeX e dei sistemi comuni di composizione basati su SGML.

Alml si avvale di altri programmi per l'analisi SGML e per la generazione di alcuni formati finali. In particolare, è necessario disporre di nsgmls che fa parte generalmente del pacchetto SP (anche se la propria distribuzione GNU potrebbe nominarlo in modo differente); inoltre è fondamentale la presenza di LaTeX per generare i formati da stampare. La tabella u92.1 riepiloga gli applicativi principali da cui dipende il buon funzionamento di Alml.

Tabella u92.1. Applicativi principali da cui dipende Alml.

Applicativo Compito
Perl Alml è scritto in Perl.
Perl-gettext Modulo Perl per l'utilizzo di Gettext.
SP Verifica la validità SGML e genera una prima conversione.
distribuzione TeX Sistema di composizione che comprende TeX, LaTeX e altri lavori derivati.
PSUtils Riorganizza, ingrandisce e riduce un file PostScript.
Dvipdfm Consente una conversione in PDF a partire dal file DVI.
Uuencode Estrae le immagini incorporate da file esterni.
GraphicsMagick o ImageMagick Converte i file delle immagini nei formati appropriati, adattando le dimensioni.
Ghostscript Serve a ImageMagick per la conversione di file PostScript in altri formati.
HTML2ps Consente l'incorporazione di codice HTML nella composizione per la stampa.
W3M Converte un file HTML in testo puro.
LilyPond Consente l'incorporazione di codice LilyPond.
XFig Consente l'incorporazione di codice XFig.
Gnuplot Consente l'incorporazione di codice Gnuplot.
Eukleides Consente l'incorporazione di codice Eukleides.
Groff, PS2EPS Consentono l'incorporazione di codice *roff.
PlotUtils Consente l'incorporazione di codice da vari programmi del pacchetto PlotUtils.

Installazione di Alml

Alml viene fornito attraverso archivi tradizionali di tipo tar+gzip, oppure in archivi Debian, in file con nomi del tipo:

alml-versione.tar.gz
alml_versione-n_all.deb

Estraendo il contenuto dell'archivio, si dovrebbero ottenere in particolare i file e le sottodirectory elencati nella tabella u92.2, che rappresentano l'essenziale.

Tabella u92.2. Contenuto essenziale dell'archivio di distribuzione di Alml.

File o directory Descrizione
bin/* File eseguibili.
doc/* Esempi e documentazione eventuale.
etc/* File di configurazione da inserire a partire dalla directory /etc/.
man/* Pagine di manuale relative agli eseguibili.
share/sgml/* File e directory da collocare in /usr/share/sgml/alml/.

Gli eseguibili che nel pacchetto di distribuzione si trovano nella directory bin/, devono essere raggiungibili attraverso il percorso di ricerca del sistema, rappresentato dalla variabile di ambiente PATH. Pertanto vanno collocati opportunamente, oppure vanno predisposti dei collegamenti adeguati.

Quanto contenuto nella directory share/sgml/, va collocato nella directory /usr/share/sgml/alml/, oppure vanno realizzati dei collegamenti equivalenti.

In generale, se la propria distribuzione GNU/Linux non è predisposta per la gestione delle entità standard ISO 8879, conviene modificare il collegamento simbolico alml.cat, che nella sua collocazione finale deve trovarsi nella directory /usr/share/sgml/alml/. Normalmente questo punta al file alml.cat.debian, ma in caso di problemi conviene modificarlo in modo che punti a alml.cat.normal.

Gettext

I messaggi di Alml possono essere tradotti. Se si dispone del file PO relativo alla lingua preferita, è necessario compilarlo come nell'esempio seguente:

msgfmt -vvvv -o alml.mo it.po[Invio]

In questo esempio, il file it.po viene compilato generando il file alml.mo. Trattandosi evidentemente della traduzione italiana, questo file può essere collocato in /usr/share/locale/it/LC_MESSAGES/, o in un'altra posizione analoga in base agli standard del proprio sistema operativo.

Se non è disponibile il modulo Perl-gettext,(1) che serve a Alml per accedere alle traduzioni, è possibile eliminare il suo utilizzo e simulare la funzione di Gettext. In pratica si commentano le istruzioni seguenti all'inizio dei programmi alml e alml-extra:

# We *don't* want to use gettext.
#use POSIX;
#use Locale::gettext;
#setlocale (LC_MESSAGES, "");
#textdomain ("alml");

Inoltre, si tolgono i commenti dalla dichiarazione della funzione fittizia gettext(), come si vede qui:

sub gettext
{
    return $_[0];
}

Esempio iniziale

Un esempio iniziale può servire per comprendere il funzionamento generale di Alml (il file in questione dovrebbe essere disponibile presso allegati/a2/alml-esempio-iniziale.sgml). Il testo umoristico contenuto è di dominio pubblico.

<!DOCTYPE ALML PUBLIC "-//D.G.//DTD Alml//EN">
<alml lang="it" spacing="uniform">
<head>
    <admin>
        <description>Strafalcioni e sciocchezze varie</description>
        <keywords>strafalcione, svarione, detto, scherzo</keywords>
        <printedfontsize type="normal">7mm</printedfontsize>
    </admin>
    <title>Branchi di nebbia</title>
    <subtitle>I detti di oggi</subtitle>
    <author>Anonimo &lt;anonimo@brot.dg&gt;</author>
    <date>1111.11.11</date>
    <legal>
        <p>Il testo contenuto in questo documento è di dominio pubblico,
        pertanto ci si può fare quello che si vuole.</p>
    </legal>
    <maincontents levels="2">Indice generale</maincontents>
</head>
<intro>
<h1>
Introduzione al documento
</h1>

<p>Questo documento è scritto per dimostrare il funzionamento di Alml,
utilizzando frasi che, storpiando vecchi detti comuni, potrebbero
diventare i detti di domani.</p>

</intro>
<body>
<h1 id="capitolo-primo">
Attenzione ai branchi di nebbia... nella testa
<indexentry>nebbia</indexentry>
</h1>

<p>Sono scremato dalla fatica: il lavoro mobilita l'uomo, ma qui si
batte la fiaccola. Non fatemi uscire dai gamberi e stendiamo un velo
peloso: non bisogna foschilizzarsi così.</p>

<p>Durante le notti di pediluvio, arrivano certe zampate di caldo... C'è
il divieto di balenazione e all'improvviso arriva un'onda anonima:
bisogna fare attenzione ai branchi di nebbia.</p>

<h2>
Tappeti rullanti
<indexentry>metropolitana</indexentry>
<indexentry>treno</indexentry>
<indexentry>automobile</indexentry>
</h2>

<p>In metropolitana ci sono i tappeti rullanti, ma la domenica certi
treni vengono oppressi.</p>

<p>Una volta ho urtato la macchina sul paraguail, poi sono finito sulle
banchine spargitraffico e così ho perso la marmitta paralitica... Meno
male che l'auto aveva l'<em>iceberg</em> incorporato. Purtroppo, però,
mi hanno fatto la multa per guida in stato di brezza.</p>

<h1 id="capitolo-secondo">
Abete alto
<indexentry>dolce</indexentry>
<indexentry>sapone</indexentry>
</h1>

<p>Mi dispiace, non posso mangiare dolci, perché ho l'abete alto e
non posso permettermi neanche una zolla di zucchero nel caffé.</p>

<p>Sono pieno di malattie: ho le piastrelle basse; ho lo zagarolo
nell'occhio; ho una spalla lustrata; ho le vene vorticose... Ormai credo
di essere spizzotremito; mi hanno prescritto di fare i raggi
ultraviolenti.</p>

<p>Allora sono andato in farmacia per comprare il sapone clinicamente
intestato, ma poi ho preso del bicarbonato di soia e della tintura di
odio per combattere gli isterismi della cellulite.</p>

</body>
<appendix>
<h1>
Gondole voraci
</h1>

<p>Al ristorante ho ordinato un piatto di pasta con le gondole voraci,
una frittura di crampi, funghi traforati, un dolce con l'uva passera
ricoperto da zucchero al vento (cotto nel forno a microbombe), pesche
sciroccate, una birra doppio smalto e del latte pazzamente stremato.
Alla fine, mi sono fatto mettere gli avanzi nella carta spagnola.</p>

<p>Non mi voglio divulgare, ma di fronte a queste cose rimango
putrefatto... Così ho deciso che quando muoio mi faccio cromare.</p>

</appendix>
<index>
<h1>
Indice analitico
</h1>

<printindex index="main">

</index>
</alml>

Se tutto viene copiato correttamente nel file ipotetico alml-esempio-iniziale.sgml, con il comando seguente si ottiene la composizione in PostScript, attraverso LaTeX e Dvips:

alml --ps alml-esempio-iniziale.sgml[Invio]

Con il comando seguente, si ottiene la composizione in PDF, attraverso LaTeX e Dvipdfm:

alml --pdf alml-esempio-iniziale.sgml[Invio]

Con il comando seguente, si ottiene la composizione in HTML, su più file distinti:

alml --html alml-esempio-iniziale.sgml[Invio]

Il risultato che si dovrebbe ottenere, in formato PDF, può essere prelevato presso allegati/a2/alml-esempio-iniziale.pdf (viene distribuito assieme all'edizione HTML dell'opera).

Figura u92.6. Prima pagina (copertina) del risultato della composizione.

abete alto

Figura u92.7. Seconda e terza pagina del risultato della composizione.

abete alto abete alto

Figura u92.8. Quarta e quinta pagina del risultato della composizione.

abete alto abete alto

Figura u92.9. Sesta e settima pagina del risultato della composizione.

abete alto abete alto

Figura u92.10. Ottava e nona pagina del risultato della composizione.

abete alto abete alto

Cosa si genera con la composizione

L'utilizzo di Alml può generare file differenti a seconda del tipo di operazione che viene richiesta. La tabella u92.11 riepiloga i file principali.

Tabella u92.11. Alcuni file generati dall'utilizzo di Alml. Il file nome.sgml deve essere già presente.

File Descrizione
nome.sgml Il sorgente SGML principale da cui hanno origine gli altri file.
nome.aux File ausiliario e temporaneo della composizione attraverso LaTeX.
nome.diag File diagnostico generato da alml.
nome.pageref File temporaneo con i riferimenti alle pagine nella composizione con LaTeX.
nome.pageloc File contenente i riferimenti alle pagine per individuare i volumi e le parti, quando questi vanno estratti separatamente.
nome.log File diagnostico generato da LaTeX.
nome.sp File intermedio, ottenuto dall'elaborazione SGML di SP.
nome.sp2 File intermedio, ottenuto rielaborando il file nome.sp, per sostituire le entità di tipo «SDATA» in codice appropriato per il tipo di composizione prescelto.
nome.dvi Composizione in DVI, finale o transitoria.
nome.pdf Composizione in PDF.
nome.ps Composizione in PostScript.
nome.tex Composizione transitoria in formato LaTeX.
nome.html
nome.htm
Primo file della composizione in HTML.
nomen.html
nomen.htm
n-esimo file della composizione in HTML.
nome_capitolo.html
nome_capitolo.htm
Collegamento simbolico al file HTML il cui titolo corrisponde sostanzialmente al nome del collegamento stesso.
n.jpg n-esimo file delle immagini relativo alla composizione in HTML.
nome_figura.jpg Collegamento simbolico al file JPG il cui titolo corrisponde sostanzialmente al nome del collegamento stesso.
n.midi
n.mid
n-esimo file MIDI, relativo alla composizione in HTML, generato da codice LilyPond incorporato.
nome_brano.midi
nome_brano.mid
Collegamento simbolico al file MIDI il cui titolo corrisponde sostanzialmente al nome del collegamento stesso.
n.ogv n-esimo file video Ogg relativo alla composizione in HTML.
nome_video.ogv Collegamento simbolico al file OGV il cui titolo corrisponde sostanzialmente al nome del collegamento stesso.
n.ps n-esimo file delle immagini relativo alla composizione in PostScript o PDF.
n.pdf n-esimo file delle immagini relativo alla composizione in PostScript o PDF.
*~ File temporaneo non meglio precisato.

È bene sottolineare che il file indicato come nome.sgml deve essere già presente perché si possa usare Alml; inoltre, il sorgente SGML principale potrebbe a sua volta incorporare altri file SGML.

Se il sorgente SGML fa riferimento a immagini collocate in file esterni, è necessario che queste siano in uno dei formati previsti (in generale, i formati più comuni sono accettati) e che si trovino in un'altra directory rispetto a quella in cui sta il file sorgente principale.

A seconda del tipo di composizione finale, Alml converte le immagini nel formato appropriato, il più delle volte avvalendosi per questo di ImageMagick, creando una serie di file nella directory corrente. Per la composizione in PostScript e in PDF servono immagini EPS; per la composizione HTML vengono generati file in formato JPG.

I file esterni delle immagini da includere nella composizione, devono trovarsi in una directory differente da quella in cui si trova il sorgente principale, per non ritrovarli mescolati assieme a quelli che vengono generati da Alml, nella directory corrente, con nomi del tipo n.jpg, n.ps o n.pdf.

Alle volte si possono incontrare problemi inspiegabili nell'inserimento di immagini, che si possono manifestare in modo particolare nella composizione in PDF. Spesso si superano questi problemi in modo sbrigativo usando ImageMagick e facendo un passaggio intermedio nel formato JPG, allo scopo di perdere delle informazioni. Per esempio, disponendo del file pippo.png che risulta corretto e perfettamente visibile con gli strumenti normali, ma che si comporta in modo strano nella composizione PDF, può convenire il passaggio seguente:

convert pippo.png pippo.jpg[Invio]

convert pippo.jpg pippo.png[Invio]

Al termine, il file pippo.jpg può essere eliminato.

Sintassi nell'uso del programma frontale

Il programma frontale attraverso cui si gestisce il sistema di composizione Alml è alml:

alml opzioni sorgente_sgml
alml --help
alml --version

Come si vede dal modello sintattico, a parte i casi delle opzioni --help e --version, è sempre richiesta l'indicazione di un file sorgente SGML, a cui applicare un qualche tipo di elaborazione.

Si osservi che per la composizione destinata alla stampa, è possibile lavorare solo con i formati A4 e lettera (8,5 in × 11 in), che possono essere orientati verticalmente oppure orizzontalmente. Eccezionalmente, per la sola composizione PostScript, è possibile selezionare il formato A5x4 verticale. Per questo, si vedano in particolare le opzioni --paper e --paper-orientation.

Tabella u92.12. Opzioni principali.

Opzione Descrizione
--help
Mostra la guida rapida interna e conclude il funzionamento.
--version
Mostra le informazioni sulla versione e conclude il funzionamento.
--clean
Rimuove alcuni file temporanei abbinati al file sorgente indicato. Si tratta per la precisione di nome.pageref, nome.diag, nome.aux, nome.log, nome.sp e nome.sp2.
--verbose
Segnala il procedere dell'elaborazione con informazioni dettagliate. In generale tali informazioni sono ottenibili dal file nome.diag; tuttavia, in presenza di file sorgenti di grandi dimensioni, può servire per sapere a che punto è l'elaborazione.
--input-encoding={latin1|utf8}
Dichiara il formato dei file sorgenti SGML utilizzati per la composizione; in mancanza di questa opzione, il formato viene determinato in base allo stato della configurazione locale.
--paper={a4|letter|a5x4}
Permette di specificare le dimensioni della carta in base a un nome standard. Il formato predefinito è A4, che corrispondente alla parola chiave a4; il formato a5x4 funziona solo in abbinamento a --ps.
--paper-orientation=\
  \{portrait|landscape}
Permette di specificare l'orientamento della carta.
--static
--dynamic
Le due opzioni sono contrapposte. Nel primo caso si ha una composizione normale; nel secondo, se viene generato un formato PostScript o PDF, si abilitano le funzioni dinamiche per le presentazioni (in pratica, si abilita l'uso dell'elemento PAUSE).
--embedded-script-enable
Abilita l'esecuzione di script incorporati nel sorgente. Trattandosi di una funzionalità che può essere pericolosa, deve essere abilitata con questa opzione, in modo esplicito.
--draft
Quando il contesto lo permette, serve per ottenere una composizione particolare, con più informazioni utili alla correzione o alla revisione del testo. A differenza di quanto si potrebbe essere portati a pensare, in questo modo l'elaborazione è più complessa del normale, proprio per portare in risalto tali informazioni.
--sgml-include=entità_parametrica
Attraverso questa opzione, che può essere usata anche più volte, è possibile «includere» delle entità parametriche. Per la precisione, è come se nel sorgente venisse dichiarata un'entità parametrica corrispondente, assegnandole la parola chiave INCLUDE. Ciò viene usato per controllare l'inclusione di porzioni di sorgente, secondo le convenzioni dell'SGML.
--page-numbering=\
  \{plain|default|tome}
Questa opzione permette di definire in che modo gestire la numerazione delle pagine nei formati di composizione cartacei. In condizioni normali, la numerazione è realizzata attraverso sequenze differenti: una per la parte iniziale fino alla fine dell'introduzione, una per il corpo (comprese le appendici) e una finale per gli indici analitici. Assegnando la parola chiave plain si fa in modo che la numerazione sia unica, cosa che potrebbe essere conveniente per il formato PDF. Nel caso particolare della parola chiave tome, si ottiene una numerazione separata dei volumi, con la conseguenza che alcuni indici, a seconda del contesto, oltre a indicare la pagina aggiungono un prefisso corrispondente al numero del volume in cui si trova.
--sgml-syntax
--sgml-check
Una qualunque di queste due opzioni permette di ottenere la verifica formale del sorgente, in base al DTD.
--sp
Con questa opzione si vuole raggiungere solo un formato intermedio per il controllo diagnostico del funzionamento di Alml.
--tex
--latex
Con questa opzione si vuole raggiungere solo un formato intermedio in LaTeX per il controllo diagnostico del funzionamento di Alml.
--dvi
Genera un risultato in formato DVI. L'elaborazione crea una serie di file EPS e PDF per le immagini, secondo i modelli n.ps e n.pdf.
--ps
--postscript
Genera un risultato in formato PostScript. L'elaborazione crea una serie di file EPS e PDF per le immagini, secondo i modelli n.ps e n.pdf; una volta ottenuto il file PostScript finale, questi file non servono più.
--pdf
Genera un risultato in formato PDF. L'elaborazione crea una serie di file EPS e PDF per le immagini, secondo i modelli n.ps e n.pdf; una volta ottenuto il file PDF finale, questi file non servono più.
--html
Genera un risultato in formato HTML, articolato in più file, dove il primo è nome.html e gli altri sono nomen.html. Inoltre, viene fatta una copia dei file delle immagini, secondo il modello n.jpg (le due numerazioni sono indipendenti).
--htm
Genera un risultato in formato HTML, simile a quello che si ottiene con --html, dove però le estensioni dei file hanno solo tre caratteri (.htm, .mid, ecc.).
--html-text
Genera un risultato in formato HTML speciale, in un file unico, senza riferimenti a immagini esterne. Il file ottenuto può essere consultato con Links e con questo può essere convertito in un testo puro e semplice, attraverso il comando:
links -dump nome.html > nome.txt
Oppure:
w3m -dump nome.html > nome.txt

Tabella u92.13. Opzioni accessorie.

Opzione Descrizione
--html-check
--html401-check
Se sono stati installati i file necessari, consente la verifica formale di un file HTML secondo le specifiche della versione 4.01.
--html320-check
Se sono stati installati i file necessari, consente la verifica formale di un file HTML secondo le specifiche della versione 3.2.
--xml-check
Se sono stati installati i file necessari, consente la verifica formale di un file XML secondo le specifiche del DTD relativo (attualmente solo XHTML).

Codifica del sorgente

Il sorgente SGML usato da Alml può essere scritto secondo la codifica ISO 8859-1 (Latin-1), oppure la codifica UTF-8. In pratica, nel secondo caso si può usare la codifica universale, dove però solo una piccola porzione di punti di codifica ha una corrispondenza effettiva nella composizione.

Allo stato attuale è possibile scrivere usando lingue che si avvalgono dell'alfabeto latino, il greco e il russo, come si può vedere meglio nel capitolo u107.

Esiste comunque la necessità che tutti i file che compongono il sorgente SGML siano scritti nella stessa codifica: tutti ISO 8859-1, oppure tutti UTF-8. In generale, non si presenta la necessità di usare la codifica UTF-8, nemmeno quando si volesse selezionare un carattere a cui non risulta associata alcuna entità standard. Infatti, in questi casi, si può usare un riferimento numerico nella forma:

&#xhhhh;

In pratica, volendo fare riferimento al punto di codifica U+266E in forma numerica (♮), si potrebbe scrivere &#x266E;.

Dal momento che non c'è un modo pratico per distinguere automaticamente se un file sia scritto usando l'una o l'altra codifica, è possibile usare l'opzione --input-encoding per specificarlo espressamente. Tuttavia, se questa opzione non viene usata, Alml fa delle congetture basandosi sullo stato attuale della variabile di ambiente LANG e delle variabili LC_*; in pratica, tenta di determinarlo dalla configurazione locale.

Organizzare un file-make o uno script

Un file-make personalizzato può facilitare l'uso di Alml. Viene proposto un esempio elementare, riferito al file example.sgml, in cui si può vedere anche l'utilizzo proposto di alml.

# file name prefix.
DOC_PREFIX=example

# Notice that "text" generates an HTML file with the same name
# for the first HTML page. This is why it is before the standard
# HTML typesetting.
#
all:    \
clean   \
text    \
html    \
ps      \
pdf

clean:
        @echo "Cleaning..."                             ; \
        find . -name core    -exec rm -f \{\} \;        ; \
        rm -f $(DOC_PREFIX)*.tex                        ; \
        rm -f $(DOC_PREFIX)*.dvi                        ; \
        rm -f $(DOC_PREFIX)*.sp                         ; \
        rm -f $(DOC_PREFIX)*.sp2                        ; \
        rm -f $(DOC_PREFIX)*.ps                         ; \
        rm -f $(DOC_PREFIX)*.pdf                        ; \
        rm -f $(DOC_PREFIX)*.txt                        ; \
        rm -f $(DOC_PREFIX)*.log                        ; \
        rm -f $(DOC_PREFIX)*.aux                        ; \
        rm -f $(DOC_PREFIX)*.tmp                        ; \
        rm -f $(DOC_PREFIX)*.diag                       ; \
        rm -f $(DOC_PREFIX)*.pageref                    ; \
        rm -f $(DOC_PREFIX)*.pageloc                    ; \
        rm -f *.html *.htm                              ; \
        rm -f *.bak                                     ; \
        rm -f *.jpg                                     ; \
        rm -f *.ps                                      ; \
        rm -f *.midi *.mid                              ; \
        rm -f *\~

check:
        @alml --sgml-check              \
              --verbose                 \
              $(DOC_PREFIX).sgml

dvi:
        @alml --dvi                     \
              --verbose                 \
              $(DOC_PREFIX).sgml

ps:
        @alml --ps                      \
              --verbose                 \
              $(DOC_PREFIX).sgml

pdf:
        @alml --pdf                     \
              --verbose                 \
              --page-numbering=plain    \
              $(DOC_PREFIX).sgml

html:
        @alml --html                    \
              --verbose                 \
              $(DOC_PREFIX).sgml

htm:
        @alml --htm                     \
              --verbose                 \
              $(DOC_PREFIX).sgml

text:
        @alml --html-text               \
              --verbose                 \
              $(DOC_PREFIX).sgml        ; \
        w3m -dump                      \
             $(DOC_PREFIX).html         \
              > $(DOC_PREFIX).txt

Si può osservare in particolare l'obiettivo clean che elimina tutti i file non indispensabili e in particolare tutti i file il cui nome termina per .html e per .ps.

Se per esempio si utilizza il comando make ps, si ottiene la composizione in PostScript, generando in particolare il file example.ps.

Uno script da usare sostanzialmente come il file-make proposto, potrebbe essere realizzato così:

#!/bin/sh
#
ACTION=$1
#
DOC_PREFIX=example
#
if   [ "$ACTION" = "" ]
then
    echo "Please, specify an action:"
    echo "$0 ACTION"
    exit
elif [ "$ACTION" = "clean" ]
then
    echo "Cleaning..."
    find . -name core    -exec rm -f \{\} \;
    rm -f $DOC_PREFIX*.tex
    rm -f $DOC_PREFIX*.dvi
    rm -f $DOC_PREFIX*.sp
    rm -f $DOC_PREFIX*.sp2
    rm -f $DOC_PREFIX*.ps
    rm -f $DOC_PREFIX*.pdf
    rm -f $DOC_PREFIX*.txt
    rm -f $DOC_PREFIX*.log
    rm -f $DOC_PREFIX*.aux
    rm -f $DOC_PREFIX*.tmp
    rm -f $DOC_PREFIX*.diag
    rm -f $DOC_PREFIX*.pageref
    rm -f $DOC_PREFIX*.pageloc
    rm -f *.html *.htm
    rm -f *.bak
    rm -f *.jpg
    rm -f *.ps
    rm -f *.midi *.mid
    rm -f *\~
    #
elif [ "$ACTION" = "check" ]
then
    alml --sgml-check              \
         --verbose                 \
         $DOC_PREFIX.sgml
    #
elif [ "$ACTION" = "dvi" ]
then
    alml --dvi                     \
         --verbose                 \
         $DOC_PREFIX.sgml
    #
elif [ "$ACTION" = "ps" ]
then
    alml --ps                      \
         --verbose                 \
         $DOC_PREFIX.sgml
    #
elif [ "$ACTION" = "pdf" ]
then
    alml --pdf                     \
         --verbose                 \
         --page-numbering=plain    \
         $DOC_PREFIX.sgml
    #
elif [ "$ACTION" = "html" ]
then
    alml --html                    \
         --verbose                 \
         $DOC_PREFIX.sgml
    #
elif [ "$ACTION" = "htm" ]
then
    alml --htm                     \
         --verbose                 \
         $DOC_PREFIX.sgml
    #
elif [ "$ACTION" = "text" ]
then
    alml --html-text               \
         --verbose                 \
         $DOC_PREFIX.sgml
    w3m -dump                      \
        $DOC_PREFIX.html           \
        > $DOC_PREFIX.txt

Formati particolari

L'opzione --paper di alml consente di definire il formato della pagina per la composizione destinata alla stampa. Generalmente si possono usare solo i formati A4 e lettera, rispettivamente con le opzioni --paper=a4 e --paper=letter. Eccezionalmente, quando si intende generare un formato PostScript, è possibile produrre un formato A5x4 verticale, ovvero 21 cm × 59,4 cm (--paper=a5x4).

Il formato A5x4 può essere utile, rielaborando il file PostScript in modo da ridurlo e da accoppiarlo su un foglio A4 singolo. Per ottenere questo risultato ci si può avvalere di alml-extra, usandolo come nel comando seguente:

alml-extra --a5x4-to-a7x4-2-a4 nome.ps[Invio]

In tal caso, il file nome.ps è il file PostScript in formato A5x4 e si ottiene il file nome.a7x4-2-a4.ps, in formato A4, che in pratica contiene due colonne formato A7x4 (10,5 cm × 29,7 cm).

Figura u92.16. Esempio di come può apparire una pagina che contiene due colonne in formato A7x4.

a7x4-2-a4

Progetti di documentazione che utilizzano il formato di Alml

L'elenco successivo riporta alcuni progetti di documentazioni che utilizzano Alml:


1) Nelle distribuzioni Debian si tratta del pacchetto liblocale-gettext-perl.

«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net