[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 272.   Il documento secondo Alml

Il DTD di Alml è organizzato per gestire documenti molto grandi, che possono essere suddivisi in tomi (intesi come volumi che raccolgono un gruppo di parti), parti e capitoli. Tuttavia, la suddivisione in tomi o in parti resta facoltativa, mentre la divisione in capitoli è obbligatoria.

Alml non ha ancora raggiunto una sistemazione «definitiva» e si evolverà ancora assieme a Appunti di informatica libera. In questo capitolo non sono descritti tutti i dettagli sull'impostazione attuale del DTD di Alml; eventualmente si può sempre studiare il DTD stesso. Tuttavia, il DTD non rappresenta in modo perfetto i vincoli che si pongono poi nella composizione.

Quando devono essere indicate delle dimensioni che prevedono la specificazione dell'unità di misura, si usano le sigle elencate nella tabella 272.1.

Tabella 272.1. Sigle delle unità di misura utilizzabili con Alml.

Sigla Unità di misura corrispondente
pt Punti tipografici corrispondenti a 1/72,27 di pollice.
bp Punti tipografici corrispondenti a 1/72 di pollice.
pc Pica corrispondenti a 1/6 di pollice.
in Pollici.
cm Centimetri.
mm Millimetri.

272.1   Organizzazione generale

Secondo il DTD di Alml, il documento ha una struttura generale ben definita:

<!DOCTYPE ALML PUBLIC "-//D.G.//DTD Alml//EN">
<alml>
<head>
...
</head>
[<intro>
...
</intro>]
<body>
...
</body>
[<appendix>
...
</appendix>]
[<index>
...
</index>]
</alml>

In questa struttura, gli elementi head e body sono obbligatori, mentre gli altri possono essere omessi, se non sono richiesti.

Si può intuire il senso della cosa: l'elemento head serve a contenere informazioni amministrative, oltre a ciò che deve apparire nelle primissime pagine (il titolo dell'opera, il copyright ecc.); l'elemento intro permette di inserire dei capitoli speciali da trattare come introduzioni o prefazioni, che come tali non risultano numerate; l'elemento body permette di inserire capitoli, oppure parti, o tomi; l'elemento appendix permette di inserire capitoli da trattare come appendici, numerate convenzionalmente in modo letterale; infine, l'elemento index permette di inserire capitoli speciali per l'inclusione degli indici analitici.

272.2   Dalla copertina all'indice generale

L'elemento che delimita il documento nella sua interezza, alml, può contenere due attributi facoltativi: lang e spacing. L'attributo lang permette di definire il linguaggio generale con cui è stato scritto il documento, attraverso una sigla secondo lo standard ISO 639 (sezione 543).(1)

L'attributo spacing permette di definire il modo in cui vengono gestiti gli spazi alla fine dei periodi. Assegnando la parola chiave normal, si ottiene la spaziatura normale della convenzione inglese, in cui lo spazio dopo un punto ha una lunghezza maggiore degli altri; in alternativa, assegnando la parola chiave uniform, oppure french, si ottiene una spaziatura uniforme, come richiede la tradizione tipografica italiana e anche di altri paesi.

In generale, un documento scritto in lingua italiana dovrebbe utilizzare l'elemento alml in questo modo:


<alml lang="it" spacing="uniform">

Tabella 272.2. Elementi SGML dalla copertina all'indice generale.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
alml Contenitore del documento.
 lang -- -- Attributo Sigla ISO 639 del linguaggio.
 spacing -- -- Attributo normal, french e uniform.
head Intestazione del documento.
 admin Informazioni amministrative.
  description Descrizione in breve del documento.
  keywords Elenco di parole chiave.
  htmlmeta Contenuto di un elemento HTML META.
   name -- -- Attributo Equivalente all'HTML.
   lang -- -- Attributo Equivalente all'HTML.
   chapterdefinition Definizione alternativa del capitolo.
   partdefinition Definizione alternativa della parte.
   tomedefinition Definizione alternativa del tomo.
   printedfontsize Corpo del carattere in punti.
    type -- -- Attributo Definisce il contesto a cui si fa riferimento.
   printedpagesize Margini e giustezza.
    type -- -- Attributo Definisce il contesto a cui si fa riferimento.
 title %inline; Titolo del documento.
 subtitle %inline; Sottotitolo.
 author %inline; Autore.
 date #PCDATA Data.
 edition %inline; Edizione, se diversa dalla data.
 version %inline; Versione, se diversa dall'edizione.
 frontcovertop %block; Blocco che precede il titolo.
 abstract %block; Descrizione del contenuto.
 frontcoverbottom %block; Testo aggiuntivo di copertina, dopo il titolo e le altre indicazioni standard.
 backcover %block; Contenuto della copertina finale.
 textbeforelegal %block; Testo prima delle informazioni legali.
 legal %block; Informazioni legali.
 dedications %block; Pagina della dedica.
 textafterdedications %block; Testo successivo alla dedica.
 maincontents Vuoto Inserimento dell'indice generale.
  levels -- -- Attributo Livelli di dettaglio dell'indice.
  nopages -- -- Attributo true, false.

La tabella 272.2 mostra in breve l'elenco degli elementi che riguardano l'intestazione del documento; cosa che contiene tutte le informazioni per realizzare la copertina, fino ad arrivare all'indice generale.

Si può osservare che tutto è contenuto nell'elemento head, all'inizio del quale prende posto un altro «contenitore» denominato admin. Al suo interno sono previsti elementi relativi a informazioni amministrative, in particolare description e keywords, il cui scopo è quello di generare degli elementi META corrispondenti nella composizione HTML:


<HEAD>
    ...
    <META NAME="Description" CONTENT="An example for Alml documentation system">
    <META NAME="Keywords" CONTENT="SGML, XML, HTML, Alml">
    ...
</HEAD>

Inoltre, si possono aggiungere anche altri elementi META di HTML, attraverso l'elemento HTMLMETA, come si vede nell'esempio seguente:


<head>
    <admin>
        <description>GNU/Linux e altro software libero</description>
                
        <keywords>Linux, GNU/Linux, Unix, software, software libero,
        free software</keywords>
    
        <htmlmeta name="Resource-type" lang="en">Document</htmlmeta>
        <htmlmeta name="Revisit-after" lang="en">15 days</htmlmeta>
        <htmlmeta name="Robots">ALL</htmlmeta>
    </admin>
    ...
    ...
</HEAD>

Gli elementi chapterdefinition, partdefinition e tomedefinition vengono descritti più avanti in questo capitolo (272.8).

L'elemento printedfontsize consente di definire l'altezza del carattere indicato attraverso l'attributo type, per la composizione stampata.

L'elemento printedpagesize consente di definire I margini e la giustezza per la composizione stampata, in base al contesto indicato dall'attributo type.

L'elemento title serve a indicare il titolo del documento; gli elementi eventuali subtitle permettono di inserire dei sottotitoli successivi.

L'elemento abstract, facoltativo, permette l'inserimento di una descrizione, più o meno articolata, composta da blocchi di testo (ciò che nella tabella viene rappresentato schematicamente dalla macro %block;).

Successivamente è possibile inserire uno o più elementi author, uno per il nominativo di ogni coautore, eventualmente.

Gli elementi date e edition servono per indicare una data o una sigla differente che rappresenti in qualche modo l'edizione. In generale dovrebbe essere sufficiente l'indicazione di uno solo di questi due elementi.

L'elemento frontcovertop permette l'inserzione di blocchi prima del titolo; così, l'elemento frontcoverbottom consente di fare la stessa cosa dopo il titolo e le altre indicazioni standard. L'elemento backcover permette di definire il contenuto della copertina finale.

Gli elementi successivi riguardano la seconda pagina assoluta e quelle successive.

Nella seconda pagina appaiono di solito le informazioni sul copyright, nella parte bassa, mentre nella parte superiore potrebbero esserci altre informazioni, come una breve descrizione degli autori. L'elemento textbeforelegal permette di inserire blocchi di testo da collocare nella prima parte della seconda pagina, mentre l'elemento legal è fatto per le informazioni legali, a partire dal copyright.

Dopo le informazioni legali è possibile inserire una pagina di dediche, attraverso l'elemento dedications. Eventualmente, se necessario, è possibile aggiungere altre notizie all'interno dell'elemento textafterdedications che segue le dediche.

Infine, è possibile collocare l'elemento vuoto maincontents per ottenere l'inserimento dell'indice generale. L'attributo levels permette di definire il livello di dettaglio desiderato dell'indice: il numero zero rappresenta il minimo e fa in modo di ottenere informazioni fino alle parti, mentre valori superiori aumentano il dettaglio. Assegnando all'attributo nopages il valore true, si richiedere espressamente l'eliminazione dei riferimenti ai numeri di pagina; cosa che può essere utile soltanto nella composizione per la stampa.

272.2.1   Margini e giustezza nella composizione stampata

È possibile definire i margini e la giustezza (la larghezza del testo) della composizione stampata, senza dover intervenire modificando lo stile TeX. Si utilizza per questo l'elemento printedpagesize, all'interno dell'elemento admin, nell'intestazione del documento, specificando il contesto con l'attributo type. Si osservi l'esempio in cui si mostrano tutti i valori disponibili per l'attributo type:


<head>
    <admin>
        ...
        <printedpagesize type="topmargin">2.5cm</printedpagesize>
        <printedpagesize type="bottommargin">2.5cm</printedpagesize>
        <printedpagesize type="internalmargin">3.5cm</printedpagesize>
        <printedpagesize type="bodywidth">15cm</printedpagesize>
        ...
    </admin>
...
</head>

Il tipo topmargin è il margine superiore, fino alla base del testo normale (la riga di intestazione viene collocata automaticamente); il tipo bottommargin è il margine inferiore; il tipo internalmargin è il margine sinistro per le pagine destre e il margine destro per le pagine sinistre; il tipo bodywidth è la giustezza, ovvero la larghezza della colonna in cui scorre effettivamente il testo.

Quando la composizione non richiede un margine sinistro diverso da quello destro, si ignora il valore del margine interno, utilizzando margini uguali.

Tabella 272.3. Valori dell'attributo type dell'elemento printedpagesize.

Valore Contesto a cui si fa riferimento
topmargin Margine superiore.
bottommargin Margine inferiore.
internalmargin Margine interno.
bodywidth Giustezza.

Il margine esterno non viene indicato, perché si preferisce indicare la giustezza, essendo un valore che è meglio non vari automaticamente, dal momento che da questo dipendono anche le dimensioni che si assegnano ad altri componenti contenuti nel testo.

Il formato della carta viene definito al di fuori del sorgente SGML, attraverso le opzioni di Alml. Ciò permette di produrre composizioni differenti a seconda del tipo di carta disponibile. Tuttavia, è evidente che le dimensioni adottate per la carta devono essere compatibili con i margini e la giustezza richiesti nel sorgente SGML.

272.2.2   Corpo del carattere nella composizione stampata

È possibile definire il corpo del carattere, nella composizione stampata, in alcune situazioni importanti, senza dover intervenire modificando lo stile TeX. Si utilizza per questo l'elemento printedfontsize, all'interno dell'elemento admin, nell'intestazione del documento, specificando il contesto con l'attributo type. Si osservi l'esempio:


<head>
    <admin>
        ...
        <printedfontsize type="normal">4mm</printedfontsize>
        <printedfontsize type="table">3.5mm</printedfontsize>
        ...
    </admin>
...
</head>

Il tipo normal è il carattere normale del testo; il tipo table è il carattere utilizzato nelle tabelle di Alml. La distanza tra le righe viene impostata automaticamente al 120 % della dimensione del carattere utilizzato.

La dimensione del carattere deve essere armoniosa rispetto al resto del documento. Bisogna provare per rendersi conto se il risultato che si ottiene è accettabile oppure no.

Tabella 272.4. Valori dell'attributo type dell'elemento printedfontsize.

Valore Carattere a cui si fa riferimento
title Titolo dell'opera che appare in copertina.
tomeheading Titolo dei tomi nella loro pagina iniziale.
h0 Titolo delle parti nella loro pagina iniziale.
h1 Titolo dei capitoli.
h2 Titolo delle sezioni di primo livello.
h3 Titolo delle sottosezioni.
h4 Titolo delle sotto-sottosezioni.
normal Testo normale.
table Testo delle tabelle.

272.3   Contenuto

Il contenuto del documento si articola in tre blocchi fondamentali: intro, body e appendix. In coda, possono apparire degli indici analitici, racchiusi nel blocco dell'elemento index.

Questa classificazione in blocchi va a compensare la mancanza di elementi atti a circoscrivere l'estensione delle sezioni in cui si articola il testo. La mancanza di una strutturazione dettagliata delle sezioni(2) fa sì che in presenza di errori di sintassi SGML, l'analizzatore tenda a segnalare in seguito una quantità di errori inesistenti che non vanno considerati. In tali situazioni, si correggono i primi errori evidenti e si ripete la verifica SGML.

272.3.1   Introduzione

Dopo l'elemento head è prevista la possibilità di inserire l'elemento intro, il cui scopo è quello di delimitare uno o più capitoli speciali, da intendere come prefazioni o introduzioni a vario titolo.

Per la definizione del capitolo, si veda quanto descritto a proposito dell'elemento body.

272.3.2   Corpo

Il corpo vero e proprio del documento è contenuto nell'elemento body, il quale si può articolare in tomi, parti o capitoli. Sta all'autore scegliere quale livello di suddivisione superiore adottare. È evidente che se si usa una suddivisione in tomi, si prevede una sottoclassificazione in parti, che poi si dividono in capitoli; se si usa una suddivisione in parti, è obbligatoria una sottoclassificazione in capitoli.

Eccezionalmente, un tomo può contenere solo capitoli, senza parti, quando per qualche ragione ciò è necessario.

Tomi, parti, capitoli e sezioni inferiori sono delimitate materialmente attraverso la dichiarazione del titolo relativo, come avviene in HTML. La tabella 272.5 elenca gli elementi relativi, assieme agli attributi eventuali.

Tabella 272.5. Dichiarazione dei titoli di tomi, parti, capitoli e sezioni inferiori, oltre ad altri elementi essenziali nella definizione della scomposizione del testo.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
tomeheading %inline; Titolo del tomo.
 id -- -- Attributo Ancora di riferimento.
 lang -- -- Attributo Linguaggio del tomo.
 bookmark -- -- Attributo Testo da usare come segnalibro alternativo per la composizione PDF.
 tomecontents Vuoto Indice generale del tomo.
  levels -- -- Attributo Livello di dettaglio dell'indice.
  nopages -- -- Attributo true, false.
h0 %inline; Titolo della parte.
 id -- -- Attributo Ancora di riferimento.
 lang -- -- Attributo Linguaggio della parte.
 bookmark -- -- Attributo Testo da usare come segnalibro alternativo per la composizione PDF.
 partcontents Vuoto Indice generale della parte.
  levels -- -- Attributo Livello di dettaglio dell'indice.
  nopages -- -- Attributo true, false.
h1 %inline; Titolo del capitolo.
 id -- -- Attributo Ancora di riferimento.
 lang -- -- Attributo Linguaggio del capitolo.
 bookmark -- -- Attributo Testo da usare come segnalibro alternativo per la composizione PDF.
 chaptercontents Vuoto Indice generale del capitolo.
  levels -- -- Attributo Livello di dettaglio dell'indice.
  nopages -- -- Attributo true, false.
h2 %inline; Titolo della sezione.
 id -- -- Attributo Ancora di riferimento.
 bookmark -- -- Attributo Testo da usare come segnalibro alternativo per la composizione PDF.
h3 %inline; Titolo della sottosezione.
 id -- -- Attributo Ancora di riferimento.
 bookmark -- -- Attributo Testo da usare come segnalibro alternativo per la composizione PDF.
h4 %inline; Titolo della sotto-sottosezione.
 id -- -- Attributo Ancora di riferimento.
 bookmark -- -- Attributo Testo da usare come segnalibro alternativo per la composizione PDF.
segment Segmento di testo finale.
 segmenthead %inline; Titolo di un segmento.
extramaincontents Vuoto Indice generale dell'opera, piazzabile ovunque.
 levels -- -- Attributo Livello di dettaglio dell'indice.
 nopages -- -- Attributo true, false.
endofchapter %inline; Riga finale del capitolo.

Nella parte iniziale delle classificazioni principali (tomi, parti e capitoli), è possibile collocare la richiesta di inserimento di un indice generale specifico. Si ottiene questo con gli elementi: tomecontents, partcontents e chaptercontents (è disponibile anche l'elemento extramaincontents che riguarda l'opera intera e può essere collocato ovunque). Ognuno di questi elementi prevede l'attributo levels, con il quale è possibile stabilire il livello di dettaglio di tali indici, tenendo presente che con il numero zero si ottengono voci fino alle parti, con uno si ottengono anche i capitoli, mentre con valori superiori si accede alle sezioni di livello inferiore. Anche in questo caso è possibile inibire la segnalazione delle pagine (nel caso di composizione per la stampa), utilizzando l'attributo nopages.

Alla fine del testo di ognuna di queste classificazioni, prima dell'inizio di una sottoclassificazione eventuale, è possibile collocare un «segmento» di testo, con un titolo che assomiglia a una voce di un elenco descrittivo. Si tratta dell'elemento segment, i cui titoli si indicano nell'elemento segmenthead. Questo gruppo rappresenta un'anomalia nell'organizzazione generale, introdotta solo per mantenere la compatibilità con le convenzioni usate in passato nella redazione di questa opera.

Infine, sempre per mantenere la compatibilità con il passato, esiste l'elemento endofchapter, il cui scopo è quello di consentire l'inserimento di una riga di informazioni alla fine del capitolo.

272.3.3   Appendici

Dopo il corpo è possibile inserire l'elemento appendix, il cui scopo è quello di delimitare uno o più capitoli speciali, da intendere come appendici.

272.3.4   Indici analitici

Alml consente la definizione di diversi tipi di indici analitici. Per questi è previsto uno spazio speciale collocato dopo le appendici, se ci sono, o in caso contrario subito dopo il corpo. Si tratta dell'elemento index, che prevede l'inserimento di capitoli, come nel caso delle appendici.

L'inserimento di un elenco riferito a un indice analitico particolare si ottiene con l'elemento vuoto printindex. Verrà descritto meglio in seguito l'uso di questo elemento, perché Alml è in grado di gestire più indici analitici differenti.

272.3.5   Suddivisioni speciali

Oltre alle suddivisioni standard nella forma hn, sono disponibili altre suddivisioni per scopi particolari. Sono previsti due capitoli speciali per le presentazioni (diapositive o lucidi per lavagna luminosa) e per i prospetti schematici riassuntivi (tavole sintetiche e simili), oltre a due tipi di sezioni per domande e risposte.

Tabella 272.6. Dichiarazione dei titoli di capitoli e sezioni speciali.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
slideh1 %inline; Titolo della diapositiva o del lucido.
 id -- -- Attributo Ancora di riferimento.
 lang -- -- Attributo Linguaggio della diapositiva o del lucido.
sheeth1 %inline; Titolo della scheda sintetica riassuntiva.
 id -- -- Attributo Ancora di riferimento.
 lang -- -- Attributo Linguaggio della scheda sintetica.
faqh2 %inline; Titolo del gruppo di domande e risposte.
 id -- -- Attributo Ancora di riferimento.
faqh3 %inline; Domanda a cui segue una risposta.
 id -- -- Attributo Ancora di riferimento.

Osservando la tabella 272.6, si può intuire che gli elementi slideh1 e sheeth1 si usano al posto di un capitolo normale. La differenze più importante rispetto all'elemento h1, sta nel fatto che non possono contenere altre suddivisioni in sezioni; inoltre, nella composizione per la stampa non appare il numero della pagina. Anche se non c'è modo di controllare la dimensione del contenuto, è bene che ogni diapositiva e ogni scheda occupi una sola pagina nella composizione per la stampa.

L'elemento faqh2 va usato al posto di h2, all'interno di un capitolo normale. Permette di introdurre un gruppo di domande e risposte, precedendole eventualmente da qualche blocco di testo introduttivo.

L'elemento faqh3 serve a contenere il testo di una domanda, anche se potrebbe essere più lungo di un titolo normale. Il testo viene rappresentato in modo evidenziato, ma non tanto quanto un elemento h3 normale. Dopo l'elemento faqh3 ci si aspetta di trovare la risposta alla domanda.

Eventualmente, la struttura composta da faqh2 e faqh3 può essere utilizzata anche per realizzare dei questionari o dei test valutativi.

272.3.6   Titoli delle sezioni e interruzioni di pagina

In generale, nella composizione stampata, non è garantito che il titolo di una sezione si trovi nella stessa pagina in cui inizia il testo della sezione stessa.

Solo quando ciò che segue il titolo di una sezione è un elemento p, syntax o command, si forma un legame inscindibile.

272.4   Documento multilingua

Oltre a indicare il linguaggio nell'elemento alml, attraverso l'attributo lang, lo stesso attributo è disponibile all'inizio dei tomi, delle parti e dei capitoli. In pratica, si può usare l'attributo lang anche negli elementi tomeheading, h0 e h1.

Contrariamente alla logica comune, in questo caso l'attributo lang attribuisce il valore della scelta linguistica a tutto il tomo, alla parte o al capitolo relativo. Un tomo, una parte o un capitolo che non abbiano la definizione esplicita di un linguaggio, ereditano la definizione del livello precedente.

La motivazione più importante per la quale è stato introdotto questo attributo nella dichiarazione dei tomi, delle parti e dei capitoli, sta nel fatto che così la composizione in HTML genera file con intestazioni adeguate, anche per l'indicizzazione delle informazioni.

La sigla della lingua va attribuita secondo lo standard ISO 639 (sezione 543). Se non è stata prevista la traduzione dei termini relativi alla composizione nella lingua richiesta, questi si ottengono in inglese.

L'esempio seguente mostra la dichiarazione esplicita di un capitolo che è da considerare in lingua inglese:


<h1 lang="en">Here I am</h1>

La definizione del tomo, della parte o del capitolo viene adattata alla lingua, solo se questa non è stata modificata attraverso gli elementi tomedefinition, partdefinition e chapterdefinition, descritti più avanti in questo capitolo.

272.5   Blocchi di testo ed elementi inseriti all'interno delle righe

A parte gli elementi strutturali del documento, il DTD di Alml organizza il testo in due gruppi fondamentali: i blocchi di testo, a cui corrisponde l'entità parametrica %block;, e gli elementi collocabili all'interno delle righe, corrispondente all'entità %inline;. Il caso tipico di elemento che costituisce un blocco di testo è il paragrafo, p, mentre il caso tipico di elemento che costituisce un'inserzione nella riga è l'enfatizzazione, em. La tabella 272.7 riepiloga gli elementi comuni che riguardano inserzioni all'interno della riga, mentre quelli che rappresentano un blocco e altri elementi speciali sono descritti separatamente in sezioni apposite.

Tabella 272.7. Elementi inseriti all'interno delle righe.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
em %inline; Enfasi normale.
strong %inline; Enfasi rafforzata.
big %inline; Testo relativamente più grande.
small %inline; Testo relativamente più piccolo.
acronym %inline; Acronimo.
dacronym %inline; Descrizione di un acronimo.
kbd %inline; Tasto.
button %inline; Bottone o tasto grafico.
menuitem %inline; Voce di un menù.
asciicode %inline; Codice ASCII.
code %inline; Codice (come in HTML).
samp %inline; Stringa (come in HTML).
kerneloption %inline; Opzione del kernel.
file var | em | #PCDATA File o directory.
dfn #PCDATA | special Definizione.
strdfn %inline; Definizione in lingua straniera.
special #PCDATA Termine speciale per qualche ragione.
 special -- -- Attributo Nome attribuito al genere del termine.
sup var | em | strong | #PCDATA Apice.
sub var | em | strong | #PCDATA Pedice.
pwr var | em | strong | #PCDATA Potenza (esponente).
navlink #PCDATA Riferimento per la navigazione HTML.

272.5.1   Numeri

La rappresentazione uniforme di valori numerici, specie quando si opera spesso con basi di numerazione insolite, diventa un aspetto delicato. Alml prevede alcuni elementi da utilizzare all'interno delle righe per delimitare valori numerici, eventualmente con basi di numerazioni particolari, come si vede nella tabella 272.8.

Tabella 272.8. Elementi inseriti all'interno delle righe per la rappresentazione uniforme di valori numerici.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
num [+-]?[0-9]+[.,]?[0-9]* Numero decimale comune.
exa var | em | strong | #PCDATA Numero in base 16.
dec var | em | strong | #PCDATA Numero in base 10.
oct var | em | strong | #PCDATA Numero in base 8.
bin var | em | strong | #PCDATA Numero in base 2.

Il caso dell'elemento num è speciale. In particolare, si fa riferimento a un numero in base 10, in cui non si mostra la base di numerazione, ma si usa una modalità di rappresentazione standard. Per questa ragione, il numero in questione deve essere inserito come previsto, utilizzando la virgola o il punto come separatore della parte decimale,(3) aggiungendo il segno all'inizio, se necessario, senza usare altri spazi o altri caratteri. Il numero viene elaborato separando le cifre a terne.

Per quanto riguarda gli altri elementi, a seconda del tipo di composizione si utilizza un modo diverso per mostrare la base di numerazione. Tuttavia, in questi casi il contenuto degli elementi non è strettamente letterale, come si vede dalla tabella.

272.5.2   Elenchi e simili

Gli elenchi di Alml sono molto semplici. Si tratta dei soliti elenchi puntati, numerati e descrittivi. Questi si comportano in modo molto simile all'HTML; la differenza sostanziale sta nel fatto che il contenuto delle voci è composto da uno o più blocchi di testo, mentre in HTML è consentita anche la presenza di righe pure e semplici.

Tabella 272.9. Elenchi.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
dl Elenco descrittivo.
 dt %inline; Termine descrittivo.
 dd %block; Descrizione relativa.
ol Elenco numerato.
 li %block; Elemento dell'elenco.
ul Elenco puntato.
 li %block; Elemento dell'elenco.

272.5.3   Testo letterale o quasi

L'inclusione di testo letterale in un sorgente SGML è sempre un problema. Alml prevede tre ambienti diversi: verbatimpre, asciiart e pre. Nei primo due casi si può scrivere senza alcuna preoccupazione, tranne per il fatto che il testo va inserito in una sezione marcata di tipo CDATA; nel terzo caso invece, è necessario comportarsi come nel testo normale, utilizzando le entità standard quando servono, potendo includere anche gran parte degli elementi che rappresentano un'inserzione all'interno di una riga. In entrambi i casi vengono rispettate le interruzioni di riga.


<verbatimpre>
<![CDATA[
uno
   &
    due
]]>
</verbatimpre>


<pre>
uno
   &amp;
    due
</pre>

I due esempi portano allo stesso risultato:


uno
   &
    due

In generale si sceglierà il primo o il secondo modo (quando appropriato), mentre il terzo lo si riserva ai casi in cui si devono inserire le cose che i primi due non possono contenere.

In un documento a carattere tecnico-informatico, è essenziale la possibilità di indicare dei modelli sintattici. Alml prevede l'uso di un elemento simile a pre, dedicato precisamente a questo scopo: syntax.


<syntax>
man <synsqb><var>n_sezione</var></synsqb> <var>nome</var>
</syntax>

All'interno di questo elemento si possono inserire altri elementi specifici per rappresentare i componenti della sintassi. Infatti, è necessario distinguere tra parole chiave, metavariabili e altre indicazioni. In generale, quello che si scrive normalmente deve essere inteso come un dato fisso, ovvero delle parole chiave o delle stringhe fisse. Per indicare un contenuto variabile si utilizza l'elemento var per delimitare la denominazione di un qualcosa di variabile (un'opzione o simile).

Altri elementi speciali servono a guidare la lettura della sintassi: synsqb delimita una parte della sintassi che va intesa come facoltativa e si traduce generalmente con delle parentesi quadre che, se possibile, si distinguono dal testo normale; syncub delimita una parte della sintassi che va intesa come un corpo unico e si traduce generalmente con delle parentesi graffe speciali; synverbar (elemento vuoto) indica un'alternativa e si rappresenta con una barra verticale. Nell'uso di questi elementi occorre sempre un po' di prudenza, tenendo conto dei tipi di composizione in cui non è possibile mostrare questi simboli in forme diverse dal normale.

Tabella 272.10. Elementi SGML che riguardano la rappresentazione di testo preformattato.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
pre %inline; Testo preformattato.
 width -- -- Attributo Ampiezza massima in caratteri del testo; zero richiede espressamente le stesse dimensioni del contesto.
 pnewline Vuoto Continuazione nella riga successiva.
verbatimpre testo letterale Testo letterale preformattato.
 width -- -- Attributo Ampiezza massima in caratteri del testo; zero richiede espressamente le stesse dimensioni del contesto.
syntax %inline; Modello sintattico preformattato.
 width -- -- Attributo Ampiezza massima in caratteri del testo; zero richiede espressamente le stesse dimensioni del contesto.
 sep -- -- Attributo none, border.
 synsqb %inline; Parentesi quadre di un modello sintattico.
 syncub %inline; Parentesi graffe di un modello sintattico.
 synverbar %inline; Barra verticale di un modello sintattico.
 var %inline; Metavariabile sintattica.
 synellipsis Vuoto Ellissi nei modelli sintattici.
 snewline Vuoto Continuazione nella riga successiva.

Si tenga in considerazione il fatto che gli elementi synsqb, syncub, synverbar e var, possono essere utilizzati anche al di fuori dell'elemento syntax, in qualità di inserzioni normali nelle righe.

La riga di un modello sintattico che si estende troppo in orizzontale, può essere spezzata e ripresa inserendo l'elemento vuoto snewline, in modo da ottenere una segnalazione evidente nella composizione finale, senza lasciare ambiguità. La stessa cosa, eventualmente, si può fare nell'elemento pre, usando l'elemento vuoto pnewline. Si osservi l'esempio seguente che si riferisce a un modello sintattico:


<syntax sep="border">
pippo --primo <synverbar> <snewline>--secondo <synverbar> --terzo
</syntax>

pippo --primo | <-'
`->--secondo | --terzo

Quando si usa un elemento snewline, pnewline o cnewline, vicino a uno spazio orizzontale, è bene che lo spazio venga lasciato prima dell'inserzione dell'elemento stesso, senza eliminarlo, in modo da sottolinearne la presenza.

Gli elementi pre, verbatimpre, asciiart e syntax, sono predisposti inizialmente per poter rappresentare 80 colonne di testo letterale, in una larghezza pari a quella normale del testo. In situazioni particolari può essere necessario ampliare o ridurre la dimensione dei caratteri nella composizione stampata, per consentire la rappresentazione di un testo più ampio orizzontalmente. In questi casi, si può utilizzare l'attributo width, assegnando la quantità di colonne che si desiderano.

Viene lasciata la facoltà di ridefinire la larghezza del testo anche negli elementi syntax e pre, benché sia possibile interrompere e riprendere le righe troppo lunghe, come già descritto, con gli elementi snewline e pnewline.


<pre width="90">
1234567890
          1234567890
                    1234567890
                              1234567890
                                        1234567890
                                                  1234567890
                                                            1234567890
                                                                      1234567890
                                                                                1234567890
</pre>

L'esempio mostra l'utilizzo di un elemento pre per rappresentare un testo che si estende su 90 colonne.

In caso di necessità, se si vuole che la dimensione del carattere sia la stessa dell'ambiente in cui si trova l'elemento in questione, è sufficiente richiedere espressamente una larghezza pari a zero.

272.5.4   Comandi

I comandi che si impartiscono attraverso una riga di comando, possono essere rappresentati con l'elemento command. Si osservi l'esempio seguente:


<command><prompt>$ </prompt><type>ls</type><kbd>Invio</kbd></command>

Nell'ambito dell'elemento command è quasi tutto facoltativo; tuttavia, l'invito, rappresentato dall'elemento prompt, va messo per primo. Dopo l'elemento type, che serve a delimitare il testo che viene inserito sulla riga di comando, è possibile anche specificare il tasto che serve a concludere la digitazione, come in questo caso, oppure se ne può fare a meno, lasciandolo sottinteso.

Il testo che viene restituito da un comando si rappresenta normalmente con l'elemento verbatimpre.

A volte, si ha la necessità di rappresentare dei comandi piuttosto lunghi, che nella composizione stampata potrebbero risultare spezzati in modo imprevedibile e indesiderabile. È possibile indicare esplicitamente dove spezzare il comando, facendo in modo che nella composizione si intenda chiaramente questo fatto. Per questo si usa l'elemento vuoto cnewline, che si inserisce all'interno di type.

Tabella 272.11. Elementi SGML che servono a rappresentare un comando.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
command Comando da digitare.
 prompt %inline; Stringa dell'invito.
 type %inline; Digitazione del comando.
 cnewline Vuoto Continua il comando a riga nuova.
 kbd %inline; Tasto o combinazione di tasti.
 button %inline; Bottone o tasto grafico.

272.5.5   Figure

Alml permette di gestire le figure in diversi modi. In generale può trattarsi di file di immagini, oppure di altre cose, come dei disegni ASCII racchiusi nell'elemento verbatimpre.

L'ambiente normale in cui si inserisce una figura è quello dato dall'elemento figure, che in particolare può essere definito come fluttuante oppure fisso nel punto in cui si trova. All'interno di questo elemento può essere collocata una figura costituita da un'immagine esterna, da un'immagine incorporata, oppure un blocco di testo normale, come un elemento verbatimpre per realizzare un disegno ASCII.


<figure id="f-esempio-1">
<fcaption>
    Figura <figureref>. Ecco il mio primo esempio.
</fcaption>
<image imgfile="esempio-1" height="4cm">
</figure>

L'esempio mostra la situazione più comune. Si tratta dell'incorporazione del file esempio-1.png, dove viene stabilita l'altezza di quattro centimetri, lasciando che la larghezza si adatti di conseguenza, in modo relativo. Si può osservare che l'elemento figure contiene un attributo id, con lo scopo evidente di potervi fare riferimento.

L'elemento fcaption serve a delimitare il testo che si vuole fare apparire come didascalia. Al suo interno si nota la presenza di un elemento vuoto, figureref, che in questo caso rappresenta un riferimento all'ultima figura, cioè a se stessa.

Una figura ASCII potrebbe essere realizzata, per esempio, nel modo seguente, come in tanti altri modi possibili che fanno uso di blocchi di testo:


<figure id="f-esempio-1">
<fcaption>
    Figura <figureref>. Ecco il mio primo esempio.
</fcaption>
<pre>
    pinco &amp; pallino
          |
          `--&gt; e-commerciale
</pre>
</figure>

Oltre all'elemento figure, esiste l'elemento img per le immagini inserite nel testo.


<p>Bla bla bla <img imgfile="f-esempio-1" alt="Esempio" height="4mm"> bla
bla bla.</p>

Tabella 272.12. Elementi SGML che servono a rappresentare delle figure di qualche tipo. Prima parte.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
figure Involucro di una figura normale.
 id -- -- Attributo Ancora di riferimento per la figura.
 pos -- -- Attributo fixed, float.
 sep -- -- Attributo none, rule, border.
 fcaption %inline; Didascalia.
 asciiart testo letterale Codice ASCII letterale preformattato.
  width -- -- Attributo Numero di colonne, in caratteri, del testo.
 image Vuoto Riferimento a un'immagine esterna.
  imgfile -- -- Attributo File contenente l'immagine, senza estensione.
  height -- -- Attributo Altezza dell'immagine.
  width -- -- Attributo Larghezza dell'immagine.
 embimage #PCDATA Immagine incorporata; algoritmo Base64.
  alt -- -- Attributo Descrizione alternativa alla visualizzazione.
  height -- -- Attributo Altezza dell'immagine.
  width -- -- Attributo Larghezza dell'immagine.
 epsimage #PCDATA Codice EPS letterale.
  alt -- -- Attributo Descrizione alternativa alla visualizzazione.
  width -- -- Attributo Larghezza.
  height -- -- Attributo Altezza.
 figimage #PCDATA Codice XFig letterale.
  alt -- -- Attributo Descrizione alternativa alla visualizzazione.
  width -- -- Attributo Larghezza.
  height -- -- Attributo Altezza.
 teximage #PCDATA Codice TeX letterale.
  alt -- -- Attributo Descrizione alternativa alla visualizzazione.
  width -- -- Attributo Larghezza.
  height -- -- Attributo Altezza.
 lateximage #PCDATA Codice LaTeX letterale.
  alt -- -- Attributo Descrizione alternativa alla visualizzazione.
  width -- -- Attributo Larghezza.
  height -- -- Attributo Altezza.

Tabella 272.13. Elementi SGML che servono a rappresentare delle figure di qualche tipo. Seconda parte.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
img Vuoto Immagine inserita in una riga.
 alt -- -- Attributo Descrizione alternativa alla visualizzazione.
 imgfile -- -- Attributo File contenente l'immagine, senza estensione.
 height -- -- Attributo Altezza dell'immagine.
 width -- -- Attributo Larghezza dell'immagine.
embimg #PCDATA Immagine incorporata; algoritmo Base64.
 alt -- -- Attributo Descrizione alternativa alla visualizzazione.
 height -- -- Attributo Altezza dell'immagine.
 width -- -- Attributo Larghezza dell'immagine.
epsimg #PCDATA Codice EPS letterale.
 alt -- -- Attributo Descrizione alternativa alla visualizzazione.
 width -- -- Attributo Larghezza.
 height -- -- Attributo Altezza.
figimg #PCDATA Codice XFig letterale.
 alt -- -- Attributo Descrizione alternativa alla visualizzazione.
 width -- -- Attributo Larghezza.
 height -- -- Attributo Altezza.
teximg #PCDATA Codice TeX letterale.
 alt -- -- Attributo Descrizione alternativa alla visualizzazione.
 width -- -- Attributo Larghezza.
 height -- -- Attributo Altezza.
lateximg #PCDATA Codice LaTeX letterale.
 alt -- -- Attributo Descrizione alternativa alla visualizzazione.
 width -- -- Attributo Larghezza.
 height -- -- Attributo Altezza.

I nomi dei file indicati nell'attributo imgfile devono essere privi di estensione, intendendo implicitamente che questa sia .png.

Quando si inserisce il file di un'immagine, l'elemento relativo consente l'utilizzo degli attributi height e width. Evidentemente il primo permette di specificare l'altezza della figura e il secondo riguarda la larghezza. In linea di principio, i file di immagini hanno delle dimensioni, anche se queste sono espresse in pixel, ovvero in punti grafici. In generale conviene specificare l'altezza, oppure la larghezza, tenendo in considerazione il risultato per la composizione stampata, sapendo che l'informazione mancante viene determinata in modo relativo. Evidentemente, fissando entrambe le dimensioni, si ottiene un adattamento dell'immagine che non è necessariamente relativo.

Le dimensioni, ovvero le stringhe che si assegnano agli attributi citati, hanno una forma prestabilita:

nunità_di_misura

La composizione in HTML implica l'adattamento delle figure, in modo tale che la dimensione in punti grafici corrisponda al 200 % dei punti tipografici.(4) In pratica, nell'ambito di questa conversione, un punto grafico equivale a circa 0,027 8 pollici, ovvero a 0,705 5 mm. Questo tipo di rapporto è quello che ha dimostrato produrre la composizione HTML più vicina al risultato stampato.

Gli elementi per l'inserimento di immagini nel testo, come si vede dalle tabelle 272.12 e 272.13, hanno un attributo denominato alt. Si tratta di un'informazione facoltativa, con la quale si descrive brevemente l'immagine. Questa informazione serve nella composizione HTML, per mostrare una descrizione minima in caso di problemi nella visualizzazione dell'immagine.

Oltre a immagini esterne, è possibile incorporare nel sorgente SGML diversi tipi di immagini: file trasformati secondo l'algoritmo Base64; codice EPS; codice XFig; codice TeX; codice LaTeX.

Per incorporare un'immagine codificata con l'algoritmo Base64 si può usare il programma Uuencode, oppure Mpack, descritti nel capitolo 153. Supponendo di utilizzare Uuencode e di volere inserire l'immagine contenuta nel file prova.jpg, basta procedere come segue:

uuencode -m prova.jpg ciao > prova.uuencode

Quello che si ottiene in questo caso è il file prova.uuencode, che può apparire simile al testo seguente, che è stato ridotto per comodità:


begin-base64 664 ciao
JSFQUy1BZG9iZS0yLjAKJSVDcmVhdG9yOiAiYmFyY29kZSIsIGxpYmJhcmNv
ZGUgc2FtcGxlIGZyb250ZW5kCiUgJSVEb2N1bWVudFBhcGVyU2l6ZXM6IGE0
...
...
b3cKMTA0LjAwIDEwLjAwIG1vdmV0byAoOSkgc2hvdwoKJSBFbmQgYmFyY29k
ZSBmb3IgIjk5MTIzNDU2Nzg5MCIKCiUlRW5kUGFnZQoKc2hvd3BhZ2UKJSVU
cmFpbGVyCiUlRU9GCgo=
====

Da questo file, ottenuto con Uuencode, va tolta la prima e l'ultima riga; il resto si può inserire in un elemento embimg, oppure embimage. Vengono mostrati entrambi i casi.


<p>Bla bla bla
<embimg alt="Esempio" height="4mm">
<![CDATA[
JSFQUy1BZG9iZS0yLjAKJSVDcmVhdG9yOiAiYmFyY29kZSIsIGxpYmJhcmNv
ZGUgc2FtcGxlIGZyb250ZW5kCiUgJSVEb2N1bWVudFBhcGVyU2l6ZXM6IGE0
...
...
b3cKMTA0LjAwIDEwLjAwIG1vdmV0byAoOSkgc2hvdwoKJSBFbmQgYmFyY29k
ZSBmb3IgIjk5MTIzNDU2Nzg5MCIKCiUlRW5kUGFnZQoKc2hvd3BhZ2UKJSVU
cmFpbGVyCiUlRU9GCgo=
]]>
</embimg> bla bla bla.</p>


<figure id="f-esempio-1">
<fcaption>
    Figura <figureref>. Ecco il mio primo esempio.
</fcaption>
<embimage alt="Esempio" height="4cm">
<![CDATA[
JSFQUy1BZG9iZS0yLjAKJSVDcmVhdG9yOiAiYmFyY29kZSIsIGxpYmJhcmNv
ZGUgc2FtcGxlIGZyb250ZW5kCiUgJSVEb2N1bWVudFBhcGVyU2l6ZXM6IGE0
...
...
b3cKMTA0LjAwIDEwLjAwIG1vdmV0byAoOSkgc2hvdwoKJSBFbmQgYmFyY29k
ZSBmb3IgIjk5MTIzNDU2Nzg5MCIKCiUlRW5kUGFnZQoKc2hvd3BhZ2UKJSVU
cmFpbGVyCiUlRU9GCgo=
]]>
</embimage>
</figure>

Dal momento che si vuole evitare qualunque interpretazione SGML, può essere conveniente racchiudere il contenuto di questi elementi in una sezione marcata di tipo CDATA, così come si può vedere.

In modo analogo funzionano gli elementi epsimg e epsimage, per quanto riguarda il codice EPS inserito direttamente nel sorgente. Vengono mostrati due esempi.


<p>Bla bla bla
<epsimg alt="Esempio" height="4mm">
<![CDATA[
%!PS-Adobe-2.0 EPSF-1.2
%%Creator: Pinco Pallino
%%BoundingBox: 0 0 500 500
%%Title: Un bel disegno
%%EndComments
...
...
showpage
%%Trailer
%%EOF
]]>
</epsimg> bla bla bla.</p>


<figure id="f-esempio-1">
<fcaption>
    Figura <figureref>. Ecco il mio primo esempio.
</fcaption>
<epsimage alt="Esempio" height="4cm">
<![CDATA[
%!PS-Adobe-2.0 EPSF-1.2
%%Creator: Pinco Pallino
%%BoundingBox: 0 0 500 500
%%Title: Un bel disegno
%%EndComments
...
...
showpage
%%Trailer
%%EOF
]]>
</epsimage>
</figure>

Nello stesso modo, sono disponibili gli elementi figimg e figimage, per quanto riguarda il codice XFig. Vengono mostrati due esempi e il risultato del secondo nella figura 272.1.


<p>Bla bla bla
<figimg alt="Esempio" height="4mm">
<![CDATA[
#FIG 3.2
Landscape
Center
Metric
A4      
100.00
Single
-2
1200 2
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
         270 225 1755 225 1755 990 270 990 270 225
2 4 0 1 0 17 50 0 -1 0.000 0 0 7 0 0 5
         2745 1395 2745 540 1215 540 1215 1395 2745 1395
4 0 0 50 0 0 12 0.0000 4 180 1350 1845 360 Esempio con XFig\001
]]>
</figimg> bla bla bla.</p>


<figure id="f-esempio-1">
<fcaption>
    Figura <figureref>. Esempio con <special special="name">XFig</special>.
</fcaption>
<figimage alt="Esempio" height="4cm">
<![CDATA[
#FIG 3.2
Landscape
Center
Metric
A4      
100.00
Single
-2
1200 2
2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
         270 225 1755 225 1755 990 270 990 270 225
2 4 0 1 0 17 50 0 -1 0.000 0 0 7 0 0 5
         2745 1395 2745 540 1215 540 1215 1395 2745 1395
4 0 0 50 0 0 12 0.0000 4 180 1350 1845 360 Esempio con XFig\001
]]>
</figimage>
</figure>

Figura 272.1. Esempio con XFig.

Esempio

Infine, funzionano così anche gli elementi teximg, teximage, lateximg e lateximage per quanto riguarda il codice TeX e LaTeX inserito direttamente nel sorgente. Per la precisione, nel caso di teximg e teximage, vengono aggiunte automaticamente all'inizio due istruzioni, \nonstopmode e \nopagenumbers, inoltre, alla fine viene aggiunta l'istruzione \bye; invece, nel caso di lateximg e lateximage viene aggiunta l'istruzione \nonstopmode all'inizio e \end{document} alla fine.(5) Segue un esempio riferito all'inclusione di codice TeX:


<figure id="f-esempio-1">
<fcaption>
    Figura <figureref>. Ecco una bella formula.
</fcaption>
<teximage alt="Esempio">
<![CDATA[
$$ \chi^2 = \sum_{i=1}^N
          \left (y_i - (a + b x_i)
          \over \sigma_i\right)^2 $$
]]>
</teximage>
</figure>

Figura 272.2. Ecco una bella formula.

Esempio

Segue lo stesso esempio, realizzato con l'inclusione di codice LaTeX; si osservi in particolare la necessità di definire il tipo di documento e il tipo di pagina più semplice:


<figure id="f-esempio-2">
<fcaption>
    Figura <figureref>. Ecco un'altra bella formula.
</fcaption>
<lateximage alt="Esempio">
<![CDATA[
\documentclass{article}
\pagestyle{empty}
\begin{document}
$$ \chi^2 = \sum_{i=1}^N
          \left (y_i - (a + b x_i)
          \over \sigma_i\right)^2 $$
\end{document}
]]>
</lateximage>
</figure>

Figura 272.3. Ecco un'altra bella formula.

Esempio

272.5.6   Tabelle

Come nel caso delle figure, le tabelle sono organizzate in modo da poter essere rappresentate da qualunque cosa: una tabella come si è abituati di solito, oppure dei blocchi di testo, anche preformattato, come pre e verbatimpre.

L'involucro di una tabella funziona in modo simile a quello di una figura:


<table id="t-esempio-1">
<tcaption>
    Tabella <tableref>. Ecco il mio primo esempio.
</tcaption>
...
...
</table>

Anche l'elemento table possiede gli attributi id e pos, con lo stesso significato che hanno nell'elemento figure. Nello stesso modo funziona la didascalia, che in questo caso è delimitata dall'elemento tcaption, mentre il riferimento all'ultima tabella avviene con l'elemento tableref.

A parte la possibilità di disegnare la tabella usando blocchi di testo normali, la tabella tipica incorpora l'elemento tabular:


<table id="t-esempio-1">
<tcaption>
    Tabella <tableref>. Ecco il mio primo esempio.
</tcaption>
<tabular col="2">
<thead>
<trow>  Dispositivo     <colsep> Descrizione                    </trow>
</thead>
<tbody>
<trow> /dev/fd0         <colsep> Prima unità a dischetti.       </trow>
<trow> /dev/hda         <colsep> Primo disco fisso ATA.         </trow>
<trow> /dev/hdb         <colsep> Secondo disco fisso ATA.       </trow>
<trow> /dev/sda         <colsep> Primo disco SCSI.              </trow>
<trow> /dev/lp0         <colsep> Prima porta parallela.         </trow>
<trow> /dev/ttyS0       <colsep> Prima porta seriale.           </trow>
</tbody>
</tabular>
</table>

L'esempio mostrato è sufficientemente completo: l'elemento tabular ha un attributo obbligatorio, col, con il quale è necessario dichiarare subito la quantità di colonne che compone la tabella. Le righe della tabella sono raggruppate in due gruppi: l'intestazione, delimitata dall'elemento thead, e il corpo, delimitato dall'elemento tbody. Le righe sono definite dall'elemento trow e la separazione tra una colonna e l'altra avviene con l'elemento vuoto colsep.

Tabella 272.14. Elementi SGML che servono a rappresentare le tabelle.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
table Involucro di una tabella.
 id -- -- Attributo Ancora di riferimento per la tabella.
 pos -- -- Attributo fixed, float.
 split -- -- Attributo Non si può dividere = 0 (predefinito); si può dividere automaticamente = 1.
 tcaption %inline; Didascalia.
 tabular Descrizione del reticolo di righe e colonne.
  col -- -- Attributo Quantità di colonne presenti.
  columnfractions -- -- Attributo Frazioni orizzontali per le colonne.
  printedfontsize -- -- Attributo Dimensione del carattere da usare.
  border -- -- Attributo Normale = 0 (predefinito); caselle bordate = 1.
  thead trow Righe di intestazione.
   trow Riga.
   colsep Separazione tra le colonne.
  tbody trow Righe del corpo.
   trow Riga.
   colsep Separazione tra le colonne.

La gestione delle tabelle di Alml è un po' limitata; in situazioni eccezionali, si può valutare anche la possibilità di realizzare tabelle HTML utilizzando l'elemento html, come si vede nell'esempio di tabella 272.26. Tuttavia, si deve ricordare che si tratta di codice esterno, per cui non si possono inserire elementi tipici di Alml, ma solo codice HTML; inoltre, la trasformazione in forma di testo puro di una tabella HTML complessa non avviene sempre nel modo corretto.

L'esempio seguente mostra il caso di una tabella in cui le celle possono contenere più di una riga. Si vede il risultato in 272.15.


<table id="t-tex-controllo-paragrafo-comune">
<tcaption>

    Tabella <tableref>. Esempio di tabella un po' più complessa.

</tcaption>
<tabular col="3" columnfractions="0.2 0.4 0.4" border="1">
<thead>
  <trow>Parola di controllo
<colsep>Competenza
<colsep>Condizione o valore predefinito
</trow>
</thead>
<tbody>
  <trow>\hoffset
<colsep>Posizione iniziale dei paragrafi nella pagina.
<colsep><num>0</num>
</trow>
  <trow>\hsize
<colsep>Larghezza del paragrafo a partire da <samp>\hoffset</samp>.
<colsep><num>6,5</num> pollici
</trow>
  <trow>\parindent
<colsep>Rientro della prima riga.
<colsep><num>20</num> punti
</trow>
  <trow>\baselineskip
<colsep>Distanza tra la base di una riga e la base della riga successiva.
<colsep><num>12</num> punti
</trow>
  <trow>\parskip
<colsep>Distanza aggiuntiva tra i paragrafi.
<colsep><num>0</num>
</trow>
  <trow>\raggedright
<colsep>Allinea il testo a sinistra.
<colsep>allineato simultaneamente a sinistra e a destra
</trow>
  <trow>\leftskip
<colsep>Rientro sinistro complessivo.
<colsep><num>0</num>
</trow>
  <trow>\rightskip
<colsep>Rientro destro complessivo.
<colsep><num>0</num>
</trow>
</tbody>
</tabular>
</table>

Tabella 272.15. Esempio di tabella un po' più complessa.

Parola di controllo Competenza Condizione o valore predefinito
\hoffset Posizione iniziale dei paragrafi nella pagina. 0
\hsize Larghezza del paragrafo a partire da \hoffset. 6,5 pollici
\parindent Rientro della prima riga. 20 punti
\baselineskip Distanza tra la base di una riga e la base della riga successiva. 12 punti
\parskip Distanza aggiuntiva tra i paragrafi. 0
\raggedright Allinea il testo a sinistra. allineato simultaneamente a sinistra e a destra
\leftskip Rientro sinistro complessivo. 0
\rightskip Rientro destro complessivo. 0

Eccezionalmente (purché si utilizzi l'attributo columnfractions), è possibile inserire nelle celle alcuni elementi che rappresentano blocchi di testo; per esempio: syntax, command, pre e verbatimpre. Ciò dovrebbe consentire l'uso delle tabelle per realizzare degli schemi riassuntivi riferiti a comandi sintassi o simili. Si osservi l'esempio seguente, rappresentato alla fine dalla tabella 272.16.(6)


<table id="alml-esempio-sintassi-in-tabella">
<tabular col="2" columnfractions="0.618 0.382" border="1">
<thead>
  <trow>Comando
<colsep>Descrizione
</trow>
</thead>
<tbody>
  <trow><syntax>mbadblock <var>unità_dos</var></syntax>
<colsep>Scandisce un'unità &DOS; alla ricerca di settori difettosi.
</trow>
  <trow><syntax>mcd <synsqb><var>directory_dos</var></synsqb></syntax>
<colsep>Permette di modificare o conoscere la directory corrente delle unità &DOS;.
</trow>
  <trow><syntax>mdel <var>file_dos</var><synellipsis></syntax>
<colsep>Cancella i file &DOS; indicati come argomento.
</trow>
  <trow><syntax>mdeltree <var>directory_dos</var><synellipsis></syntax>
<colsep>Cancella le directory &DOS; indicate come argomento.
</trow>
  <trow><syntax>mmd <var>directory_dos</var><synellipsis></syntax>
<colsep>Crea le directory &DOS; indicate come argomento.
</trow>
  <trow><syntax>mmove <var>origine_dos</var><synellipsis> <var>destinazione_dos</var></syntax>
<colsep>Sposta o rinomina uno o più file e directory.
</trow>
  <trow><syntax>mrd <var>directory_dos</var><synellipsis></syntax>
<colsep>Elimina le directory indicate come argomento, purché siano vuote.
</trow>
  <trow><syntax>mren <var>origine_dos</var><synellipsis> <var>destinazione_dos</var></syntax>
<colsep>Rinomina o sposta uno o più file e directory.
</trow>
</tbody>
</tabular>
</table>

Comando Descrizione

mbadblock unità_dos

Scandisce un'unità Dos alla ricerca di settori difettosi.

mcd [directory_dos]

Permette di modificare o conoscere la directory corrente delle unità Dos.

mdel file_dos...

Cancella i file Dos indicati come argomento.

mdeltree directory_dos...

Cancella le directory Dos indicate come argomento.

mmd directory_dos...

Crea le directory Dos indicate come argomento.

mmove origine_dos... destinazione_dos

Sposta o rinomina uno o più file e directory.

mrd directory_dos...

Elimina le directory indicate come argomento, purché siano vuote.

mren origine_dos... destinazione_dos

Rinomina o sposta uno o più file e directory.

Le tabella molto lunghe possono essere realizzate in modo da consentire il salto pagina, utilizzando l'attributo split. In ogni caso, perché ci possa essere una tabella suddivisibile tra le pagine, è necessario che questa non sia fluttuante.

272.5.7   Listati

Come le figure e le tabelle, i listati possono essere rappresentati da qualunque cosa; di solito si tratta di blocchi di testo preformattato, come pre e verbatimpre. L'involucro di un listato funziona in modo simile a quello di una figura:


<listing id="l-esempio-1">
<lcaption>
    Listato <listingref>. Ecco il mio primo esempio.
</lcaption>
...
...
</listing>

Anche l'elemento listing possiede gli attributi id, pos e sep, con lo stesso significato che hanno nell'elemento figure. Nello stesso modo funziona la didascalia, che in questo caso è delimitata dall'elemento lcaption, mentre il riferimento all'ultimo listato avviene con l'elemento listingref.

Tabella 272.17. Elementi SGML che servono a rappresentare i listati.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
listing Involucro di un listato.
 id -- -- Attributo Ancora di riferimento per il listato.
 pos -- -- Attributo fixed, float.
 sep -- -- Attributo none, rule, border.
 split -- -- Attributo Non si può dividere = 0 (predefinito); si può dividere automaticamente = 1.
 lcaption %inline; Didascalia.

272.5.8   Riferimenti incrociati e ipertestuali

I riferimenti incrociati si realizzano attraverso l'indicazione di ancore (o etichette se si preferisce il termine) e di puntatori a tali ancore. Esistono diversi modi per definire un'ancora e un riferimento a questa: tutti gli elementi che dispongono di un attributo id, sono ancore oppure sono puntatori alle ancore.

Fino a questo punto sono stati descritti gli elementi che delimitano i titoli dei tomi, delle parti, dei capitoli e delle sezioni; inoltre sono stati visti gli elementi che avvolgono le figure e le tabelle. Tutti questi sono ancore a cui si può puntare. Inoltre, per inserire un'ancora nel testo normale, è possibile usare l'elemento vuoto anchor, anche questo provvisto di attributo id.

Esistono quattro elementi vuoti per fare riferimento alle ancore: sectionref, per ottenere un riferimento alla sezione in cui si trova l'ancora; figureref per fare riferimento a una figura; tableref per fare riferimento a una tabella; listingref per fare riferimento a un listato.

In particolare, gli elementi figureref, tableref e listingref possono essere usati anche senza l'attributo id per fare riferimento all'ultima ancora di una figura, di una tabella o di un listato, come è già stato mostrato nell'uso delle didascalie.

Quando si realizza un documento che può includere o meno una certa porzione a cui puntano alcuni riferimenti, per evitare che vengano mostrati questi collegamenti mancanti, si può usare l'elemento ifref, con il quale si delimita la parte da non comporre se manca il riferimento indicato nell'attributo id.

Tabella 272.18. Gestione dei riferimenti incrociati.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
tomeheading Titolo di un tomo.
 id -- -- Attributo Ancora di riferimento per il titolo del tomo.
h0 Titolo di una parte.
 id -- -- Attributo Ancora di riferimento per il titolo della parte.
h1 Titolo di un capitolo.
 id -- -- Attributo Ancora di riferimento per il titolo di un capitolo.
h2 Titolo di una sezione.
 id -- -- Attributo Ancora di riferimento per il titolo di una sezione.
h3 Titolo di una sottosezione.
 id -- -- Attributo Ancora di riferimento per il titolo di una sottosezione.
h4 Titolo di una sotto-sottosezione.
 id -- -- Attributo Ancora per il titolo di una sotto-sottosezione.
anchor Vuoto Ancora inserita nel testo.
 id -- -- Attributo Stringa di identificazione dell'ancora.
sectionref Vuoto Riferimento a un'ancora del testo.
 id -- -- Attributo Stringa a cui si fa riferimento.
figure Involucro di una figura.
 id -- -- Attributo Ancora di riferimento per la figura.
figureref Vuoto Riferimento a un'ancora di una figura.
 id -- -- Attributo Stringa a cui si fa riferimento.
table Involucro di una tabella.
 id -- -- Attributo Ancora di riferimento per la tabella.
tableref Vuoto Riferimento a un'ancora di una tabella.
 id -- -- Attributo Stringa a cui si fa riferimento.
listing Involucro di un listato.
 id -- -- Attributo Ancora di riferimento per il listato.
listingref Vuoto Riferimento a un'ancora di un listato.
 id -- -- Attributo Stringa a cui si fa riferimento.
ifref %inline; o %block; Delimita un'area da comporre solo se l'ancora esiste veramente.
 id -- -- Attributo Stringa a cui si fa riferimento.

272.5.9   Note e piè pagina

Alml prevede l'utilizzo di tre tipi di annotazioni: avvertimenti che devono risaltare in un riquadro e due tipi di note a piè pagina. Le note evidenziate sono indicate all'interno di un elemento frame, mentre quelle a piè pagina sono inserite nell'elemento footnote, oppure blockfootnote.

Le note a piè pagina normali sono quelle dell'elemento footnote, che si colloca all'interno delle righe; al contrario, blockfootnote rappresenta un blocco di testo, che rimane solo per compatibilità con il passato.


<frame>
    <p>Attenzione! Si tratta di un'operazione rischiosa.</p>
</frame>

L'esempio precedente mostra l'utilizzo di un riquadro, mentre quello successivo mostra l'uso di un piè pagina normale.


<p>Bla bla bla<footnote>Questa parola si ripete.</footnote> bla bla...</p>

Tabella 272.19. Annotazioni a vario titolo.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
frame %block; Riquadro.
blockfootnote %inline; Piè pagina tra i blocchi di testo.
footnote %inline; Piè pagina all'interno di una riga di testo.

272.5.10   Riferimenti esterni e citazioni

Alcuni elementi sono specializzati per fare riferimento a qualcosa di esterno. Il caso più comune riguarda l'elemento uri, con il quale si indica un URI:


<p>Bla bla bla <uri><![CDATA[http://www.brot.dg]]></uri> bla bla...</p>

Per indicare il riferimento a una pagina di manuale, si può usare l'elemento man, in modo da ottenere una rappresentazione uguale a quella tradizionale:


<p>Bla bla bla <man>ls<mansect>1</mansect></man> bla bla...</p>

La tabella 272.20 riepiloga questi e altri elementi affini.

Tabella 272.20. Riferimenti esterni.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
uri CDATA Riferimento a un URI esterno.
uristr #PCDATA Riferimento a un URI che non funziona.
blockquote %block;, quoteinfo Citazione.
 quoteinfo %inline; Informazioni sulla citazione.
bibref %inline; Titolo di un documento.
man #PCDATA, mansect Pagina di manuale.
 mansect #PCDATA Numero della sezione.

L'elemento uristr è una variante di uri, con lo scopo di non generare un riferimento ipertestuale. Ciò può servire per rappresentare un indirizzo di fantasia, oppure un indirizzo reale che non è più valido. Si possono indicare in questo modo anche i nomi di dominio.

L'elemento blockquote è previsto per delimitare una citazione in uno o più blocchi. Alla fine dell'elemento blockquote è prevista la possibilità di usare un solo elemento quoteinfo, con lo scopo di contenere informazioni relative alla citazione:

<blockquote>
    %block;
    ...
    [<quoteinfo>%inline;...</quoteinfo>]
</blockquote>

272.5.11   Altre inserzioni particolari

Sono disponibili altri elementi di importanza minore. Si tratta di br, hr, newpage, bottompage e navlink. I primi due emulano gli elementi corrispondenti dell'HTML, interrompendo una riga e inserendo una linea orizzontale rispettivamente.

L'elemento newpage richiede un salto pagina, se il tipo di composizione lo consente.

L'elemento bottompage serve per definire un gruppo di blocchi di testo da rappresentare nella parte bassa della pagina, nella composizione per la stampa. In pratica, si usa bottompage per delimitare informazioni legali nella seconda pagina relativa dei tomi:


<tomeheading>Bla bla bla</tomeheading>

<bottompage>
    <p>Copyright &copy; Pinco Pallino...</p>
    
    <p>Bla bla bla...</p>
</bottompage>

Tabella 272.21. Inserzioni varie.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
br Vuoto Interruzione della riga.
hr Vuoto Riga orizzontale di separazione.
newpage Vuoto Salto pagina se ammissibile.
bottompage %block; Testo da rappresentare nella parte bassa della pagina.
navlink #PCDATA Riferimento ipertestuale per la navigazione HTML.

L'elemento navlink consente di aggiungere nella composizione HTML un riferimento ipertestuale fisso, in tutte le pagine, allo scopo di raggiungere facilmente la posizione in cui l'elemento stesso viene inserito. Si osservi l'esempio seguente:


<h1>
Indice analitico
</h1>

<navlink>indice analitico</navlink>

<printindex index="main">

</index>

Si tratta dell'inserimento dell'indice analitico, con l'aggiunta di un riferimento ipertestuale fisso nelle pagine della composizione HTML.

272.6   Tracciamento di informazioni particolari

Diversi tipi di elementi nella struttura di Alml sono predisposti per accumulare informazioni da restituire a richiesta. La situazione più semplice è data dalla gestione degli indici analitici, dove con l'elemento indexentry si inserisce una voce nell'indice analitico generale o in un altro individuato da un nome libero:


<h1>
I colori dell'arcobaleno
<indexentry>arcobaleno</indexentry>
<indexentry><code>color</code></indexentry>
</h1>

L'elemento indexentry appartiene al gruppo di quelli che possono essere inseriti all'interno di una riga; nell'esempio si vede la situazione tipica in cui lo si inserisce nel testo di un titolo. In questo caso, sono state indicate due voci dell'indice analitico generale: la parola «arcobaleno» viene inserita in modo normale, mentre la parola «color» viene inserita con un carattere dattilografico.

Ogni indice analitico ha un nome e quello generale, o predefinito, corrisponde a main. L'esempio mostrato sopra sarebbe perfettamente equivalente a quello seguente:


<h1>
I colori dell'arcobaleno
<indexentry index="main">arcobaleno</indexentry>
<indexentry index="main"><code>color</code></indexentry>
</h1>

Per recuperare l'elenco di un indice analitico si utilizza l'elemento printindex, in cui, lo stesso attributo index permette di stabilire quale indice estrapolare.

Tabella 272.22. Gestione degli indici analitici.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
indexentry #PCDATA | code Dichiarazione di una voce per l'indice analitico.
 index -- -- Attributo Nome dell'indice analitico in cui inserire la voce.
special #PCDATA Termine speciale.
 special -- -- Attributo Nome dell'indice analitico in cui inserire la voce.
printindex Vuoto Inserisce l'elenco dell'indice analitico richiesto.
 index -- -- Attributo Nome dell'indice analitico richiesto.
 indexcontext -- -- Attributo Specifica un contesto tra: all, tome, part, chapter. È predefinito il contesto all, che richiede l'indice completo.
 indexref -- -- Attributo Specifica in che modo devono apparire i riferimenti: default, section. In pratica, con la parola chiave section si impone di mostrare numeri di sezione e non le pagine.

Esiste anche un altro elemento che inserisce voci negli indici analitici; si tratta di special, che inserisce una voce nell'indice corrispondente al nome indicato con l'attributo che ha lo stesso nome: special.

272.6.1   Caratteristiche del software e di altri «lavori»

La struttura di Alml dispone di un elemento %inline; speciale, il cui scopo è quello di annotare alcune informazioni sul software e su lavori simili. Si osservi l'esempio seguente:


<p>Stiamo parlando di Mpage,
<workinfo>
<workname>Mpage</workname>
<worklicense>licenza speciale che non ammette le modifiche</worklicense>
<worklicensetext>

    <p>Permission is granted to anyone to make or distribute verbatim
    copies of this document as received, in any medium, provided that
    this copyright notice is preserved, and that the distributor grants
    the recipient permission for further redistribution as permitted by
    this notice.</p>

</worklicensetext>
</workinfo>
un programma che si occupa di...</p>

Solo gli elementi workname e worklicense sono obbligatori, dal momento che il loro contenuto appare in un piè pagina locale. L'elemento worklicensetext è facoltativo e può essere utile per annotare una licenza unica, per la quale non possa essere individuato un riferimento standard; inoltre, un altro elemento, worknotes, permette di annotare qualcosa al riguardo.

Dove lo si ritiene più opportuno, si può collocare l'elemento printworkinfo, per ottenere l'elenco ordinato di queste informazioni accumulate.

Tabella 272.23. Tracciamento di informazioni sul software citato.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
workinfo Dichiarazione del blocco di informazioni.
 workname #PCDATA Nome del software o di altro lavoro.
 worklicense #PCDATA Denominazione o descrizione breve della licenza.
 worklicensetext %block; Testo della licenza specifica.
 worknotes %block; Annotazioni.
printworkinfo Vuoto Inserisce le informazioni accumulate in modo ordinato.
 workinforef -- -- Attributo Specifica in che modo devono apparire i riferimenti: default, section. In pratica, con la parola chiave section si impone di mostrare numeri di sezione e non le pagine.

272.6.2   Informazioni su sezioni specifiche del documento

In situazioni particolari, potrebbe essere necessario, o anche solo utile, tenere traccia dell'origine di una sezione del documento, assieme a delle annotazioni a vario titolo. Per questo si può utilizzare l'elemento docinfo, che questa volta costituisce un blocco.


<docinfo>

    <dl>
    <dt>2002.09.15</dt>
    <dd>

        <p>Il testo viene aggiornato nel contenuto, con l'inserimento
        della sezione «bla bla bla», da parte di Caio Cai
        (caio@brot.dg).</p>

    </dd>
    <dt>2002.09.08</dt>
    <dd>

        <p>Il testo viene modificato per adeguarlo alla nuova veste
        grafica dell'opera, per opera di Caio Cai (caio@brot.dg);
        il contenuto rimane invariato.</p>

    </dd>
    <dt>2002.02.02</dt>
    <dd>

        <p>Il testo originale è di Tizio Tizi e risale al 2002.02.02. Nello
        stesso giorno, il testo ha subito qualche aggiustamento per opera di
        Caio Cai (caio@brot.dg), con il consenso dell'autore.</p>

    </dd>
    </dl>

</docinfo>

L'esempio mostra in particolare l'uso dell'elemento docinfo per annotare lo storico delle modifiche fatte su quella porzione di documento; come si può vedere, vengono indicate prima le azioni più recenti, ma questo dipende solo da una scelta organizzativa.

Per ottenere l'elenco delle informazioni accumulate in questo modo, si utilizza l'elemento vuoto printdocinfo.

Tabella 272.24. Tracciamento di informazioni su sezioni particolari del documento globale.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
docinfo Annotazioni sul documento (tomo, parte, capitolo o sezione inferiore).
printdocinfo Vuoto Inserisce nel testo le informazioni accumulate.

272.6.3   Condizioni particolari per il contenuto di una sezione

È previsto un contenitore speciale per indicare le condizioni particolari che riguardano una certa sezione (anche un tomo intero). Si tratta dell'elemento specialcondition, all'interno del quale può eventualmente apparire l'elemento vuoto nomod:


<specialcondition><nomod>non è consentita la modifica di questa
sezione</specialcondition>

L'esempio dovrebbe rendere l'idea della cosa. Il testo contenuto nell'elemento specialcondition viene mostrato effettivamente, utilizzando un carattere un po' diverso da quello normale, in modo da risaltare.

L'elemento vuoto nomod serve per tenere traccia in particolare di quelle sezioni che non possono essere modificate. Evidentemente, può essere utile solo se il documento, nella sua globalità, è inteso come modificabile, in base alle condizioni della licenza. In generale non dovrebbe essere necessario;(7) tuttavia, in questo modo, è possibile poi ottenere un elenco dettagliato di tutte le sezioni che non possono essere modificate, con l'elemento vuoto printnomod.

Tabella 272.25. Annotazione delle condizioni particolari di una sezione.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
specialcondition #PCDATA | nomod Dichiarazione di condizioni particolari.
 nomod Vuoto Annotazione di sezione non modificabile.
printnomod Vuoto Elenco delle sezioni non modificabili.

272.7   Inserimento letterale di codice TeX e HTML, con eventuale inserimento condizionato

In situazioni eccezionali, può essere conveniente l'inserimento di codice scritto secondo il linguaggio di composizione che si trova al di sotto della struttura SGML di Alml. Lo scopo di Alml non è quello di mantenere un legame sicuro con TeX e HTML, tuttavia viene lasciata aperta questa possibilità.

Si pensi all'eventuale necessità di inserire qualcosa di particolare nella composizione HTML, per esempio per inserire un contatore di accesso, o altri tipi di inserzioni ritenuti utili per qualche ragione.

Per risolvere questo problema si possono usare due elementi speciali: tex e html. Come si può intuire, il primo elemento è fatto per racchiudere codice TeX o LaTeX; il secondo serve per includere codice HTML.

Dal momento che si vuole evitare qualunque interpretazione SGML, conviene racchiudere il contenuto di questi elementi in una sezione marcata di tipo CDATA. Si osservi l'esempio seguente:


<html><![CDATA[
    <hr>
    <p><a href="http://www.digits.com/">Web-Counter: </a><a
    href="http://www.digits.com/"><img
    src="http://counter.digits.com/wc/tizio345"
    alt="counter"></a></p>
]]></html>

In questo caso si tratta di un'inclusione di codice HTML, dove per poter scrivere i marcatori in modo letterale è stato necessario includere tutto all'interno della sezione marcata CDATA.

A fianco di questo problema, sta poi la possibilità di delimitare facilmente dei blocchi di sorgente che debbano essere presi in considerazione solo se la composizione avviene attraverso una trasformazione in TeX o in HTML. In pratica, si utilizzano rispettivamente gli elementi iftex e ifhtml. Questi elementi non sono indispensabili, perché l'SGML offre già un meccanismo di controllo dell'elaborazione del sorgente, attraverso le sezioni marcate; tuttavia, servono per completare e concludere il problema degli elementi contenenti codice speciale TeX o HTML.

Il codice HTML può essere rappresentato in parte anche quando la composizione avviene attraverso TeX, per mezzo di HTML2ps. In pratica, con il codice HTML si ottiene un'immagine che viene poi incorporata nel sorgente TeX. Questa estensione serve specialmente per consentire la realizzazione di tabelle più complesse di quanto consenta Alml con il suo elemento tabular. Si osservi l'esempio seguente, che viene poi rappresentato nella tabella 272.26:


<table id="t-alml-incorporazione-tabella-html">
<tcaption>
    Tabella <tableref>. Incorporazione di codice HTML per rappresentare
    una tabella complessa.
</tcaption>
<html width=15cm>
<![CDATA[
<table border="1">
  <thead>
    <tr>
      <td rowspan="2"><p>Denominazione della porta seriale su i386 nei sistemi
        Dos</p>
      </td>
      <td colspan="2"><p>Risorse</p>
      </td>
      <td rowspan="2"><p>File di dispositivo nei sistemi GNU/Linux</p>
      </td>
      <td rowspan="2"><p>Annotazioni</p>
      </td>
    </tr>
    <tr>
      <td><p>IRQ</p>
      </td>
      <td><p>I/O</p>
      </td>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td><p>COM1:</p>
      </td>
      <td rowspan="2"><p align="center">4</p>
      </td>
      <td><p>3F8<sub>16</sub></p>
      </td>
      <td><p>/dev/ttyS0</p>
      </td>
      <td rowspan="2"><p>La prima e la terza porta seriale condividono lo
        stesso IRQ.</p>
      </td>
    </tr>
    <tr>
      <td><p>COM3:</p>
      </td>
      <td><p>3E8<sub>16</sub></p>
      </td>
      <td><p>/dev/ttyS2</p>
      </td>
    </tr>
    <tr>
      <td><p>COM2:</p>
      </td>
      <td rowspan="2"><p align="center">3</p>
      </td>
      <td><p align="right">2F8<sub>16</sub></p>
      </td>
      <td><p>/dev/ttyS0</p>
      </td>
      <td rowspan="2"><p>La seconda e la quarta porta seriale condividono lo
        stesso IRQ.</p>
      </td>
    </tr>
    <tr>
      <td><p>COM4:</p>
      </td>
      <td><p align="right">2E8<sub>16</sub></p>
      </td>
      <td><p>/dev/ttyS2</p>
      </td>
    </tr>
  </tbody>
</table>
]]>
</html>
</table>

Tabella 272.26. Incorporazione di codice HTML per rappresentare una tabella complessa.

Denominazione della porta seriale su i386 nei sistemi Dos

Risorse

File di dispositivo nei sistemi GNU/Linux

Annotazioni

IRQ

I/O

COM1:

4

3F816

/dev/ttyS0

La prima e la terza porta seriale condividono lo stesso IRQ.

COM3:

3E816

/dev/ttyS2

COM2:

3

2F816

/dev/ttyS0

La seconda e la quarta porta seriale condividono lo stesso IRQ.

COM4:

2E816

/dev/ttyS2

Si osservi nell'esempio l'uso dell'attributo width. Precisamente, l'elemento html consente l'uso degli attributi width e height per stabilire le dimensioni dell'oggetto HTML importato nella composizione stampata. In questo caso, è stata specificata la larghezza, corrispondente allo spazio orizzontale a disposizione, in modo che l'altezza venga adattata automaticamente, mantenendo lo stesso rapporto.

Tabella 272.27. Inserimento letterale di codice TeX e HTML; inserimento condizionato in base al tipo di composizione.

Elemento o
attributo
Apertura Chiusura Contenuto Descrizione
html #PCDATA Codice HTML letterale.
 width -- -- Attributo Larghezza nella composizione stampata.
 height -- -- Attributo Altezza nella composizione stampata.
tex #PCDATA Codice TeX o LaTeX letterale.
ifhtml %block; Blocco condizionato alla composizione in HTML.
iftex %block; Blocco condizionato alla composizione in TeX.

Si rammenti che mentre quanto contenuto nell'elemento html appare sia nella composizione per la stampa, sia nella composizione HTML, l'elemento tex genera un risultato utile solo nella composizione per la stampa.

Per quanto riguarda il caso particolare dell'elemento tex, si tenga in considerazione piuttosto la possibilità di usare gli elementi teximg e teximage, che generano un risultato visibile anche nel formato HTML finale, attraverso la trasformazione automatica in forma di immagine.

272.8   Definizione alternativa della suddivisione del documento

Alml è pensato per la realizzazione di documenti di grandi dimensioni. In questo senso, la sua struttura normale è quella di un libro, articolato in capitoli che si possono raggruppare in parti e tomi. Eventualmente, se questa struttura va definita attraverso termini differenti, si possono sostituire le parole «capitolo», «parte» e «tomo», con altre più appropriate.

Per questo si usano gli elementi chapterdefinition, partdefinition e tomedefinition, all'interno delle informazioni amministrative. L'esempio seguente dovrebbe permettere di comprendere il problema; per la precisione si tratta di una rivista telematica ipotetica:


<head>
    <admin>
        <description>Rivista di informatica libera</description>
        <keywords>informatica libera, software libero</keywords>
        <chapterdefinition>articolo</chapterdefinition>
        <partdefinition>numero</partdefinition>
        <tomedefinition>anno</tomedefinition>
    </admin>
    <title>RIL, rivista di informatica libera</title>
    <author>Pinco Pallino &lt;pinco.pallino@brot.dg&gt;</author>
    <date>2011.11.11</date>
    <legal>
        <p>Copyright &copy; Pinco Pallino, &lt;pinco.pallino@brot.dg&gt;</p>
    </legal>
    <maincontents levels="2">Table of contents</maincontents>
</head>

Si può osservare che le parole «articolo», «numero» e «anno», sono state inserite usando lettere minuscole e in forma singolare. Ciò è necessario, perché l'iniziale maiuscola viene ottenuta automaticamente quando opportuno; inoltre, questi termini vengono usati sempre quando si fa riferimento a un solo oggetto.

La numerazione dei tomi, delle parti e dei capitoli è indipendente, per cui non ci si può aspettare che al cambio di un tomo o di una parte, i capitoli riprendano la numerazione a partire da uno.

272.9   Riferimento alla larghezza del testo

In generale, non esiste la possibilità di attribuire agli attributi width di immagini e simili, un riferimento alla larghezza effettivamente a disposizione. In altri termini, non esiste la possibilità di fare riferimento a ciò che per LaTeX può essere l'istruzione \textwidth. In questo modo, se si decide in un momento successivo di modificare lo spazio orizzontale utilizzabile all'interno delle pagine, si può essere costretti a verificare tutte le dimensioni di questi oggetti particolari. Per risolvere l'inconveniente si può definire un'entità interna all'inizio del documento:


<!DOCTYPE ALML PUBLIC "-//D.G.//DTD Alml//EN"
[
<!ENTITY BODYWIDTH   "15cm">
 ...
]>

Successivamente si può usare questa stessa entità per dichiarare la larghezza del corpo della pagina:


<head>
    <admin>
        ...
        <printedpagesize type="bodywidth">&BODYWIDTH;</printedpagesize>
        ...
    </admin>

Quindi, nello stesso modo per le immagini e altri oggetti che si traducono nell'incorporazione di immagini che devono avere una larghezza uguale alla massima ampiezza disponibile:


<![CDATA[
<p>Bla bla bla
<epsimg alt="bla bla bla" width="15cm">
<![CDATA[
%!PS-Adobe-2.0 EPSF-1.2
%%Creator: Pinco Pallino
%%BoundingBox: 0 0 500 500
%%Title: Un bel disegno
%%EndComments
...
...
showpage
%%Trailer
%%EOF
]]>
</epsimg> bla bla bla.</p>

Appunti di informatica libera 2003.01.01 --- Copyright © 2000-2003 Daniele Giacomini -- daniele @ swlibero.org

1) Quando le informazioni su un certo linguaggio non sono disponibili, si applicano le convenzioni inglesi.

2) Qui si intendono sezioni a qualsiasi livello, compresi i capitoli, le parti e i tomi.

3) Il segno meno, va indicato con il trattino normale.

4) Un punto tipografico, viene inteso qui come corrispondente a 1/72 di pollice, secondo la convenzione del linguaggio PostScript.

5) Il codice LaTeX che viene inserito deve includere tutto il necessario a funzionare correttamente, ma l'aggiunta dell'istruzione \end{document} in modo automatico non può far male se questa è già stata inserita correttamente.

6) La scelta del rapporto tra le due colonne della tabella, 61,8 % e 38,2 %, rappresenta quello che è noto come «rapporto aureo».

7) Se nella sezione che non si può modificare è scritto chiaramente come stanno le cose al riguardo, non serve alcun elenco di tali sezioni.


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome il_documento_secondo_alml.html

[successivo] [precedente] [inizio] [fine] [indice generale] [violazione GPL] [translators] [docinfo] [indice analitico]