[successivo] [precedente] [inizio] [fine] [indice generale] [docinfo] [Indice analitico]
Il DTD di Alml è organizzato per gestire documenti molto grandi, che possono essere suddivisi in volumi, parti e capitoli. Tuttavia, la suddivisione in volumi o in parti resta facoltativa, mentre la divisione in capitoli è obbligatoria.
Alml non ha ancora raggiunto una sistemazione «definitiva» ed è destinato a evolversi 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ò 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 10.1.
Tabella 10.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 (big point). |
pc | Pica corrispondenti a 1/6 di pollice. |
in | Pollici. |
cm | Centimetri. |
mm | Millimetri. |
Secondo il DTD di Alml, il documento ha una struttura generale ben definita:
|
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 volumi; 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.
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, ma se le informazioni su un certo linguaggio non sono disponibili, si applicano comunque le convenzioni inglesi.
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:
|
Tabella 10.2. Elementi SGML dalla copertina all'indice generale.
La tabella 10.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:
|
Inoltre, si possono aggiungere anche altri elementi META di HTML, attraverso l'elemento HTMLMETA, come si vede nell'esempio seguente:
|
Gli elementi chapterdefinition, partdefinition e tomedefinition vengono descritti più avanti in questo capitolo (sezione 10.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.
Successivamente è possibile inserire uno o più elementi author, uno per il nominativo di ogni coautore.
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 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. All'interno dell'elemento si inserisce il titolo da dare all'indice.
È 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:
|
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 10.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.
Figura 10.1. Valori dell'attributo type dell'elemento printedpagesize.
|
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.
È 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:
|
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 10.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 volumi 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. |
example | Testo degli esempi. |
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(1) 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.
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.
Il corpo vero e proprio del documento è contenuto nell'elemento body, il quale si può articolare in volumi, parti o capitoli. Sta all'autore scegliere quale livello di suddivisione superiore adottare. È evidente che se si usa una suddivisione in volumi, 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 volume può contenere solo capitoli, senza parti, quando per qualche ragione ciò è necessario. |
Volumi, parti, capitoli e sezioni inferiori sono delimitate materialmente attraverso la dichiarazione del titolo relativo, come avviene in HTML. Le tabelle successive elencano gli elementi relativi, assieme agli attributi eventuali.
Tabella 10.5. Dichiarazione dei titoli dei volumi, con la possibilità di aggiungere un indice del contenuto.
Tabella 10.6. Dichiarazione dei titoli delle parti, con la possibilità di aggiungere un indice del contenuto.
Tabella 10.7. Dichiarazione dei titoli dei capitoli, con la possibilità di aggiungere un indice del contenuto.
Tabella 10.8. Dichiarazione dei titoli delle sezioni, intese come suddivisioni dei capitoli.
Tabella 10.9. Dichiarazione dei titoli delle sottosezioni.
Tabella 10.10. Dichiarazione dei titoli delle sotto-sottosezioni.
Tabella 10.11. Dichiarazione di altri elementi accessori, riferiti in qualche modo con la scomposizione del testo.
Elemento o attributo | Contenuto | Descrizione |
extramaincontents | Vuoto | Indice generale dell'opera, piazzabile ovunque. |
levels | Attributo | Livello di dettaglio dell'indice. |
nopages | Attributo | true, false. |
endofchapter | componenti lineari | Riga finale del capitolo. |
Nella parte iniziale delle classificazioni principali (volumi, 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 e in seguito potrebbe essere eliminato.
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.
Dopo il corpo è possibile inserire l'elemento appendix, il cui scopo è quello di delimitare uno o più capitoli speciali, da intendere come appendici.
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. Viene descritto meglio in seguito l'uso di questo elemento, perché Alml è in grado di gestire più indici analitici differenti.
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 10.12. Dichiarazione dei titoli di capitoli e sezioni speciali.
Elemento o attributo | Contenuto | Descrizione |
slideh1 | componenti lineari | Titolo della diapositiva o del lucido. |
id | Attributo | Ancora di riferimento. |
lang | Attributo | Linguaggio della diapositiva o del lucido. |
sheeth1 | componenti lineari | Titolo della scheda sintetica riassuntiva. |
id | Attributo | Ancora di riferimento. |
lang | Attributo | Linguaggio della scheda sintetica. |
faqh2 | componenti lineari | Titolo del gruppo di domande e risposte. |
id | Attributo | Ancora di riferimento. |
faqh3 | componenti lineari | Domanda a cui segue una risposta. |
id | Attributo | Ancora di riferimento. |
Osservando la tabella 10.12, 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. 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.
Oltre a indicare il linguaggio nell'elemento alml, attraverso l'attributo lang, lo stesso attributo è disponibile all'inizio dei volumi, 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 volume, alla parte o al capitolo relativo. Un volume, 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 volumi, 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. 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:
|
La definizione del volume, 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. |
Quando si inserisce un testo di un linguaggio che non appartiene all'Europa occidentale, può essere necessario selezionare il linguaggio per ottenere una composizione corretta. Pertanto, oltre alla selezione del linguaggio all'inizio dei volumi, delle parti e dei capitoli, è possibile modificare il linguaggio di un blocco di testo o di una porzione lineare, rispettivamente con gli elementi div e span. Gli esempi seguenti mostrano l'uso di entrambi per ottenere la composizione per la stampa di alcune lettere in cirillico:
|
а А б Б в В г Г д Д е Е ё Ё ж Ж з З...
|
Bla bla bla: а А б Б в В г Г д Д е Е ё Ё ж Ж з З... bla bla bla.
Può succedere che il cambiamento di linguaggio crei «confusione» a LaTeX, che viene usato per ottenere la composizione da stampare. Si possono osservare degli errori inspiegabili nel file .log
generato durante il procedimento di composizione, in corrispondenza di vocali accentate:
|
Se questo avviene successivamente a un testo scritto con un linguaggio particolare (proprio come si verifica in questa spiegazione), si può tentare di dichiarare nuovamente il linguaggio con un elemento DIV, oppure SPAN:
|
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 (componenti lineari), corrispondenti 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 10.13 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 10.13. Elementi inseriti all'interno delle righe.
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 10.14.
Tabella 10.14. Elementi inseriti all'interno delle righe per la rappresentazione uniforme di valori numerici.
Elemento o attributo | 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,(2) 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.
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 10.15. Elenchi.
Elemento o attributo | Contenuto | Descrizione |
dl | Elenco descrittivo. | |
dt | componenti lineari | Termine descrittivo. |
dd | blocchi | Descrizione relativa. |
ol | Elenco numerato. | |
li | blocchi | Elemento dell'elenco. |
ul | Elenco puntato. | |
li | blocchi | Elemento dell'elenco. |
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 tutti i casi vengono rispettate le interruzioni di riga.
|
|
I due esempi portano allo stesso risultato:
uno & due |
In generale si sceglie 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.
Gli elementi verbatimpre e pre possono anche essere bordati e numerati. L'esempio seguente mostra l'uso dell'elemento verbatimpre, dove le righe del suo contenuto devono essere numerate a partire dal numero uno:
|
Ecco cosa si ottiene:
1 drwxr-xr-x 2 root root 4096 2003-01-17 15:47 bin 2 drwxr-xr-x 3 root root 4096 2003-01-28 16:18 boot 3 drwxr-xr-x 1 root root 0 1970-01-01 01:00 dev 4 drwxr-xr-x 139 root root 8192 2003-01-30 16:47 etc 5 drwxrwsr-x 17 root staff 4096 2003-01-19 22:01 home 6 drwxr-xr-x 6 root root 4096 2003-01-11 15:26 lib 7 drwxr-xr-x 2 root root 16384 2000-12-15 14:49 lost+found 8 drwxr-xr-x 311 root root 8192 2003-01-22 16:36 mnt 9 dr-xr-xr-x 89 root root 0 2003-01-30 14:30 proc 10 drwxr-xr-x 15 root root 4096 2003-01-30 16:32 root 11 drwxr-xr-x 2 root root 4096 2003-01-10 16:04 sbin 12 drwxrwxrwt 5 root root 176128 2003-01-30 17:45 tmp 13 drwxr-xr-x 15 root root 4096 2003-01-04 11:06 usr 14 drwxr-xr-x 16 root root 4096 2002-10-27 18:25 var
L'esempio seguente mostra l'uso dell'elemento pre, bordato:
|
Ecco il risultato:
uno & due |
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.
|
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; synellipsis (elemento vuoto) rappresenta dei puntini di sospensione particolari, diversi da quelli che si otterrebbero in modo normale. 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 10.16. Elementi SGML che riguardano la rappresentazione di testo preformattato.
Elemento o attributo | Contenuto | Descrizione |
pre | componenti lineari | Testo preformattato. |
width | Attributo | Ampiezza massima in caratteri del testo; zero richiede espressamente le stesse dimensioni del contesto. |
border | Attributo | Si può attribuire solo il valore zero o il valore uno. Con il valore uno si ottiene l'aggiunta di un bordo. |
numbering | Attributo | Si può attribuire la stringa nulla o un numero intero, con o senza segno: se si attribuisce un valore numerico si ottiene la numerazione delle righe contenute a partire da quel valore. |
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. |
border | Attributo | Si può attribuire solo il valore zero o il valore uno. Con il valore uno si ottiene l'aggiunta di un bordo. |
numbering | Attributo | Si può attribuire la stringa nulla o un numero intero, con o senza segno: se si attribuisce un valore numerico si ottiene la numerazione delle righe contenute a partire da quel valore. |
asciiart | testo letterale | Testo letterale preformattato. |
width | Attributo | Ampiezza massima in caratteri del testo; zero richiede espressamente le stesse dimensioni del contesto. |
syntax | componenti lineari | Modello sintattico preformattato. |
width | Attributo | Ampiezza massima in caratteri del testo; zero richiede espressamente le stesse dimensioni del contesto. |
sep | Attributo | none, border. |
synsqb | componenti lineari | Parentesi quadre di un modello sintattico. |
syncub | componenti lineari | Parentesi graffe di un modello sintattico. |
synverbar | Vuoto | Barra verticale di un modello sintattico. |
var | componenti lineari | 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, synellipsis 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:
|
Ecco cosa si ottiene:
|
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.
|
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. |
I comandi che si impartiscono attraverso una riga di comando, possono essere rappresentati con l'elemento command. Si osservi l'esempio seguente:
|
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, contenuto in un listato (l'elemento listing).
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 10.17. Elementi SGML che servono a rappresentare un comando.
Sono disponibili diversi elementi di importanza minore. Si tratta di br, hr, newpage, bottompage, heightrequired 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 volumi:
|
L'elemento heightrequired serve nella composizione per la stampa, a garantire che sia disponibile una certa quantità di spazio (un'altezza minima prima della fine della pagina), in mancanza del quale viene inserito un salto pagina.
Tabella 10.18. Inserzioni varie.
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:
|
Si tratta dell'inserimento dell'indice analitico, con l'aggiunta di un riferimento ipertestuale fisso nelle pagine della composizione HTML.
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 mettere un contatore di accesso, o altri tipi di inserzioni ritenute 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 riferito a codice HTML:
|
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 10.19:
|
Tabella 10.19. 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 10.20. Inserimento letterale di codice TeX e HTML; inserimento condizionato in base al tipo di composizione.
Alcune porzioni del documento che si scrive con Alml, possono essere copiate in posizioni successive. Ciò si ottiene con gli elementi copy e paste.
Tabella 10.21. Copia di porzione del documento.
Elemento o attributo | Contenuto | Descrizione |
copy | blocchi | Porzione del documento da copiare. |
copy | Attributo | Nome della porzione di memoria in cui viene copiato il contenuto dell'elemento copy. |
paste | Vuoto | Incolla una copia di quanto accumulato in precedenza. |
paste | Attributo | Nome della porzione di memoria da cui ottenere una copia da incollare. |
L'esempio seguente serve ad accumulare alcuni paragrafi in un'area di memoria denominata commenti:
|
Nell'esempio successivo, si recupera quanto accumulato in precedenza nell'area di memoria commenti:
|
Si osservi che l'elemento copy accumula dei blocchi di testo in memoria, ma questi rimangono normalmente nella composizione finale; inoltre, si osservi che l'elemento vuoto paste recupera quanto accumulato fino a quel punto; se in seguito, nel corso del documento si usa ancora l'elemento copy per accumulare nella stessa area di memoria, questa viene espansa ulteriormente e con un successivo elemento paste si ottiene tutto, anche quanto già incollato in precedenza.
La copia avviene utilizzando il codice del sistema di composizione finale e ciò ha, come effetto collaterale, il pregio di mantenere inalterata la numerazione di tabelle, figure e listati, dove i riferimenti automatici, puntano correttamente alle tabelle, figure o ai listati originali.
Il difetto di questo sistema di copia sta nell'impossibilità di incollare prima ciò che nel documento appare dopo.
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 volumi. Queste suddivisioni prevedono una denominazione attribuita automaticamente, corrispondente a «capitolo», «parte» e «volume»; eventualmente, se questa struttura va definita invece attraverso termini differenti, si possono sostituire queste parole 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:
|
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 volumi, delle parti e dei capitoli è indipendente, per cui non ci si può aspettare che al cambio di un volume o di una parte, i capitoli riprendano la numerazione a partire da uno. |
Editoria elettronica con Alml 2004.10.10 --- Copyright © 2000-2004 Daniele Giacomini -- <daniele (ad) swlibero·org>
1) Qui si intendono sezioni a qualsiasi livello, compresi i capitoli, le parti e i volumi.
2) Il segno meno, va indicato con il trattino normale.
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome il_documento_secondo_alml.html
[successivo] [precedente] [inizio] [fine] [indice generale] [docinfo] [Indice analitico]