[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]


150. ALdoc

ALdoc è un DTD 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.

ALdoc non ha ancora raggiunto una sistemazione «definitiva» e si evolverà ancora assieme a Appunti Linux. In questo capitolo non sono descritti tutti i dettagli sull'impostazione attuale di ALdoc; eventualmente si può sempre studiare il DTD stesso. Tuttavia, il DTD non rappresenta in modo perfetto i vincoli che si pongono poi nella composizione, per cui conviene limitarsi a ciò che viene descritto qui.

150.1 Organizzazione

Nel capitolo dedicato a ALtools è già stato mostrato in che modo dichiarare il DTD e come organizzare il preambolo. Dopo quella fase si dichiara l'inizio del documento (con il marcatore di apertura `<ALdoc>'), e si comincia con l'indicazione di ciò che va nella copertina e nelle pagine successive fino all'indice generale.

<ALdoc>

<copertina>
<opera><![%ANNOTAZIONI[bozza]]> &OPERA;</opera>
<autore>&AUTORI; -- &OPERAEMAIL;</autore>
<operasottotitolo>Bla bla bla bla...</operasottotitolo>
<data>&EDIZIONE;</data>
<foto FILE="copertina" ALTEZZA="6cm">
</copertina>

&PRESENTAZIONEAUTORE;

&COPYING;

<saltopagina>

&DEDICA;

<saltopagina>

&MIRROR;

<indicegenerale>

<introduzione>
<bloccotitolo>
	<titolo>Introduzione all'opera &OPERA;</titolo>
</bloccotitolo>

<p>Questo documento viene scritto per...</p>

</introduzione>

<tomo>
<bloccotitolo>
	<titolo>PRIMO APPROCCIO</titolo>
</bloccotitolo>
&COPYTOMO;

<parte>
<bloccotitolo>
	<titolo>Prima parte</titolo>
</bloccotitolo>
&COPYPARTE;

<capitolo>
<bloccotitolo>
	<titolo>Esempi: ecco un capitolo di esempio</titolo>
	<etichetta ID="capitolo-esempio">
	<nidx>esempio</nidx>
</bloccotitolo>

<p>Questo capitolo è solo un esempio...</p>

&COPY;
</capitolo>

<appendice>

<capitolo>
<bloccotitolo>
	<titolo>Codifica ASCII</titolo>
	<etichetta ID="appendice-ascii">
	<nidx>ASCII</nidx>
</bloccotitolo>

<p>...</p>

</capitolo>

150.1.1 Dalla copertina all'indice generale

In precedenza è stato descritto come usare alcune macro utili per definire in modo univoco le informazioni essenziali che riguardano il documento che si scrive, pertanto si considera che il lettore sappia cosa dovrebbero contenere.

La copertina, intesa come la prima pagina del documento realizzato in forma stampata, è delimitata dall'elemento `copertina', all'interno del quale è obbligatorio inserire l'elemento `opera', che contiene il titolo, seguito eventualmente dall'elemento `operasottotitolo', che serve a indicare un sottotitolo; inoltre è obbligatorio aggiungere l'elemento `autore', all'interno del quale si inserisce l'elenco degli autori. Si possono inserire altri due elementi: `data' per indicare la data di edizione; `foto' per includere un'immagine. L'elemento `foto' va usato come si vede nell'esempio, non per delimitare del testo, ma per fare riferimento a un'immagine esterna, da collocare sulla copertina. *1*

Dopo la copertina è possibile inserire del testo libero (delimitato all'interno di paragrafi), nel quale si può scrivere tutto quello che si vuole fare apparire prima dell'indice generale. Di solito si tratta del copyright, della licenza con cui è rilasciato il documento e di poche altre informazioni. Nell'esempio si vedono una serie di macro SGML (già descritte in precedenza) che fanno riferimento a file esterni, in modo da controllare facilmente questi contenuti senza dovere intervenire nel sorgente principale. Si osservi a questo proposito la presenza di un marcatore speciale, `<saltopagina>', il cui scopo è quello di ottenere un salto pagina nel caso di composizione destinata alla stampa.

L'indice generale viene inserito attraverso l'indicazione del marcatore `<indicegenerale>', che può apparire esclusivamente prima dell'introduzione. Eventualmente, si può fare a meno di questo indice, ma non lo si può collocare altrove.

Elemento Apertura Chiusura Vuoto Descrizione
copertina Copertina del libro stampato.
   opera Titolo del documento.
   operasottotitolo Sottotitolo facoltativo.
   autore Elenco degli autori.
   data Data di edizione.
   foto Immagine in copertina.
p Paragrafo normale.
saltopagina Salto pagina.
indicegenerale Inserzione dell'indice generale.

Tabella 150.1: Elementi SGML dalla copertina all'indice generale.

150.1.2 Dall'introduzione in poi

In un documento ALdoc è obbligatoria un'introduzione ed eventualmente ne può essere inserita anche più di una; inoltre, l'introduzione può articolarsi anche in sezioni e sottosezioni.

Dopo la serie di introduzioni iniziano i tomi, oppure solo le parti, o anche solo i capitoli; nella parte finale si può delimitare l'inizio delle appendici e a partire da quel punto si possono collocare solo capitoli, che in pratica rappresentano le appendici. I capitoli, a loro volta, sono suddivisibili in sezioni, sottosezioni e sotto-sottosezioni.

Ognuna di queste suddivisioni, dal tomo alla sezione di livello più basso, comprendendo anche le introduzioni, si compone di un blocco iniziale che ne delimita il titolo e altre informazioni eventuali: l'elemento `bloccotitolo'. Dopo tale blocco, in generale, si può inserire il testo che lo riguarda.

Nel caso particolare dei capitoli e delle introduzioni, dopo il blocco del titolo può essere inserito l'elemento `elencorevisioni', il cui scopo è quello di annotare l'autore originale e le revisioni apportate (al capitolo o all'introduzione). Questo è utile ovviamente quando c'è bisogno di tenere traccia dell'autore originale e delle revisioni che si fanno su quel pezzo. Queste informazioni, poi, vengono riepilogate in una sorta di appendice finale che viene aggiunta automaticamente.

In generale, tra la dichiarazione di un tomo e l'inizio di una parte, così come tra la dichiarazione di una parte e l'inizio di un capitolo, non è opportuno scrivere. Eventualmente si possono inserire delle informazioni standard. A questo proposito, viene proposto l'uso delle macro `&COPYTOMO;' e `&COPYPARTE;', in maniera da controllare dall'esterno, attraverso i file a cui queste fanno riferimento, il contenuto di queste premesse. Attraverso questa convenzione, si arriva poi a controllare l'inserimento di testo differente, a seconda del tipo di composizione finale, dal momento che in certi casi la ripetizione di alcune informazioni è superflua.

Anche il capitolo ha una sua macro specifica: `&COPY;'. Questa viene collocata alla fine in modo da ricordare il copyright. In un libro normale questa indicazione potrebbe essere superflua, ma quando il documento viene pubblicato anche attraverso Internet in forma HTML, c'è da considerare la possibilità che il lettore occasionale salvi una pagina qualunque e che magari la diffonda in qualche modo, perdendo poi la memoria di chi l'ha scritta. Eventualmente si può fare a meno di usare questa macro, oppure la si può inserire anche se non serve, azzerando il contenuto del file relativo (riservandosi così di utilizzare questa possibilità in futuro, senza dovere rivedere il documento).

È importante osservare che gli elementi che delimitano i tomi e le parti non richiedono l'indicazione esplicita della loro conclusione. In generale, questo va contro la filosofia di ALdoc, in cui si devono chiudere tutti gli elementi che contengono qualcosa; tuttavia, in questo modo si consente di delimitare le derivazioni in modo più semplice.

La tabella 150.2 elenca brevemente gli elementi descritti in questa sezione; tuttavia è opportuno mostrare come si utilizza l'elemento `elencorevisioni', attraverso un esempio molto semplice:

<capitolo>
<bloccotitolo>
	<titolo>Esempio di contributo</titolo>
        <etichetta ID="contributo-PP-esempio">
</bloccotitolo>

<elencorevisioni>

	<autoreoriginale>testo originale di Pinco Pallino
	pinco.pallino@pallone.dg</autoreoriginale>

	<ultimorevisore>ultima revisione di Mario Rossi
	mario.rossi@rossore.dg</ultimorevisore>

	<revisione RIFERIMENTO="contributo-PP-esempio" DATA="1/06/2001"
	AUTORE="Mario Rossi" EMAIL="mario.rossi@rossore.dg"
	DESCRIZIONE="Aggiornamento di alcuni riferimenti ipertestuali
	che non erano più validi.">

	<revisione RIFERIMENTO="contributo-PP-esempio" DATA="15/03/2001"
	AUTORE="Mario Rossi" EMAIL="mario.rossi@rossore.dg"
	DESCRIZIONE="Corretta la punteggiatura.">

	<revisione RIFERIMENTO="contributo-PP-esempio" DATA="31/12/2000"
	AUTORE="Pinco Pallino" EMAIL="pinco.pallino@pallone.dg"
	DESCRIZIONE="Autore del testo originale.">

</elencorevisioni>

<p>Questo capitolo è solo un esempio di un contributo...</p>

</capitolo>

Si può osservare che anche la prima stesura del pezzo viene indicata come una revisione; inoltre gli interventi potrebbero essere scritti in modo tale che il primo elemento `revisione' corrisponda all'ultimo intervento effettuato.

Elemento Apertura Chiusura Vuoto Descrizione
introduzione Introduzione o prefazione.
   introsezione1 Suddivisione in sezioni.
   introsezione2 Suddivisione in sottosezioni.
tomo Suddivisione in tomi.
parte Suddivisione in parti.
capitolo Suddivisione in capitoli.
sezione1 Suddivisione in sezioni.
sezione2 Suddivisione in sottosezioni.
sezione3 Suddivisione in sotto-sottosezioni.
bloccotitolo Informazioni sul titolo.
   titolo Titolo della suddivisione.
   etichetta Etichetta per riferimenti incrociati.
   nidx Voce indice analitico.
   ncdx Voce indice analitico.
elencorevisioni Informazioni sulle revisioni.
   autoreoriginale Autore originale del pezzo.
   ultimorevisore Ultimo revisore del pezzo.
   revisione Annotazione di una revisione.
      RIFERIMENTO -- -- -- Etichetta a cui si riferisce l'annotazione.
      DATA -- -- -- Data della revisione.
      AUTORE -- -- -- Autore della revisione.
      EMAIL -- -- -- Indirizzo di posta elettronica.
      DESCRIZIONE -- -- -- Descrizione delle revisione fatta.
p Paragrafo normale.

Tabella 150.2: Elementi SGML dalla scomposizione del documento.

150.2 Corpo

Il testo normale viene inserito all'interno dell'elemento `p', ovvero all'interno di paragrafi. ALdoc è molto rigido al riguardo: è obbligatoria l'indicazione dell'inizio e della fine di questi; i salti e le spaziature aggiuntive nel sorgente vengono ignorati semplicemente.

Nell'ambito dei paragrafi, il testo può essere delimitato allo scopo di ottenere un qualche tipo di enfatizzazione, oppure per qualche altro scopo amministrativo. La tabella 150.3 riepiloga gli elementi di questo tipo.

Elemento Apertura Chiusura Vuoto Descrizione
p Paragrafo normale.
   dat Nome o stringa con valore letterale.
   file File o percorso.
      pn Componente letterale del percorso.
      pn1 Componente letterale del percorso.
   enf Enfatizzazione normale.
   evid Evidenziamento più consistente.
   con Concetto nuovo.
   dacr Descrizione di un acronimo.
   defstra Definizione straniera.
   nome Nome di qualcosa.
   ttsc Termine tecnico di origine straniera.
   ttid Termine tecnico italiano non comune.
   glosti Voce del glossario stilistico.
   keyb Tasto o combinazione di tasti.
   casc Sigla di un codice ASCII.
   puls Pulsante grafico.

Tabella 150.3: Elementi SGML che appartengono all'ambito dei paragrafi.

Tra tutte queste forme di delimitazione, merita un po' di attenzione il caso dell'elemento `file'. Il suo scopo è evidente: serve a delimitare un percorso o il nome di un file. Quando si tratta di percorsi, si pone il problema di consentire la suddivisione di questi su più righe, per evitare problemi nella composizione quando sono molto lunghi. Dal momento che in LaTeX il comando che consente di ottenere questo risultato accetta soltanto una stringa letterale, l'elemento `file' si scompone in uno o più elementi `pn', letterali, e altro testo normale, che può servire per indicare parti variabili nel percorso stesso. Per fare un esempio concreto, si pensi al percorso `edizioni/n/inizio/', in cui c'è una lettera «n» enfatizzata che lascia intendere la presenza di una directory il cui nome corrisponde a un numero. Questa cosa si rappresenta così:

<file><pn>edizioni/</pn><enf>n</enf><pn>/inizio/</pn></file>

Tuttavia, a volte LaTeX crea dei problemi, precisamente quando si annotano queste cose in una didascalia di una figura o di una tabella. Per risolvere il problema, si può usare l'elemento alternativo: `pn1'.

150.2.1 Elenchi e simili

Gli elenchi di ALdoc sono molto semplici. Si tratta prevalentemente di elenchi puntati e di elenchi numerati. Si osservino gli esempi:

<elencopuntato>
<elemento>

	<p>...;</p>

</elemento>
<elemento>

	<p>...;</p>

</elemento>
</elencopuntato>

<elenconumerato>
<elemento>

	<p>...;</p>

</elemento>
<elemento>

	<p>...;</p>

</elemento>
</elenconumerato>

Il significato dei vari elementi dovrebbe essere intuitivo: L'elemento `elencopuntato', oppure `elenconumerato', delimita l'elenco; l'elemento `elemento' delimita ogni punto. All'interno di ogni punto si inserisce del testo normale: paragrafi (anche più di uno) e altri componenti del corpo del documento. ALdoc dispone anche di elenchi descrittivi. Si osservi l'esempio:

<elencodescrittivo>
<voce>primo</voce>

	<p>...;</p>

<voce>secondo</voce>

	<p>...;</p>

</elencodescrittivo>

In pratica, l'elemento `elencodescrittivo' delimita la parte di testo interessata, all'interno della quale possono apparire delle voci descrittive, a cui segue del testo normale (paragrafi e altri componenti simili). Esiste anche una sorta di elenco descrittivo che ha un significato diverso: va inteso come una forma di suddivisione del testo, al di fuori della classificazione in sezioni.

<segmento>
<titolosegmento>Alcune opzioni</titolosegmento>

	<p>...</p>

	<p>...</p>

<titolosegmento>Esempi</titolosegmento>

	<p>...</p>

	<p>...</p>

</segmento>

Come si comprende dall'esempio, l'elemento `segmento' delimita la parte di testo interessata da questa suddivisione, all'interno della quale possono apparire dei titoli, a cui segue del testo normale (paragrafi e altri componenti simili). Lo scopo di questo è di ottenere un titolo a cui segue del testo un po' rientrato, che si distacchi dal flusso normale del documento. In generale, questa forma di classificazione del testo può essere opportuna solo alla fine di una sezione, di qualunque livello sia.

Elemento Apertura Chiusura Vuoto Descrizione
elencopuntato Elenco puntato.
elenconumerato Elenco numerato.
   elemento Voce di un elenco.
elencodescrittivo Elenco descrittivo.
   voce Voce di un elenco descrittivo.
segmento Segmento di testo rientrato.
   titolosegmento Titolo all'interno di un segmento.

Tabella 150.4: Elementi SGML che riguardano gli elenchi e i segmenti di testo.

150.2.2 Testo letterale o quasi

L'inclusione di testo letterale in un sorgente SGML è sempre un problema. ALdoc prevede due ambienti diversi: `testopreformattato' e `macrotestopreformattato'. Nel primo caso si può scrivere senza alcuna preoccupazione, tranne per il fatto che non può essere inclusa una stringa equivalente a `</testopreformattato>', `<!-- INIZIO DERIVAZIONE ...-->' o `<!-- FINE DERIVAZIONE ...-->'; nel secondo caso invece, è necessario comportarsi come nel testo normale, utilizzando le entità standard quando servono. In entrambi i casi vengono rispettate le interruzioni di riga.

<testopreformattato>
uno
   &
    due
</testopreformattato>

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

I due esempi portano allo stesso risultato:

uno
   &
    due

In generale si sceglierà il primo modo, mentre il secondo lo si riserva ai casi in cui si devono inserire le cose che il primo non può contenere. *2*

Entrambi questi elementi non sono gestiti così solo dall'analizzatore SGML. Prima di arrivare all'analisi SGML, si converte il testo in modo opportuno; in particolare, nel secondo caso, ogni riga viene racchiusa all'interno di un altro elemento speciale.

150.2.3 Modelli sintattici

In un documento a carattere tecnico-informatico, è essenziale la possibilità di indicare dei modelli sintattici. ALdoc distingue due situazioni: il modello che occupa una riga soltanto e quello che riguarda una struttura articolata su più righe. Per comprendere la differenza, si pensi alla descrizione della sintassi di un comando che si inserisce su una riga e alla descrizione di una struttura condizionale del linguaggio C. Nel primo caso si usa l'elemento `sintassi', nel secondo si utilizza l'elemento `sintassitestopreformattato'.

<sintassi>man <sinquadra><meta>n-sezione</meta></sinquadra>
<meta>nome</meta></sintassi>

<sintassitestopreformattato>
if (<meta>condizione</meta>) {
    <meta>istruzione</meta>
    <ellissi>
}
</sintassitestopreformattato>

Si tenga presente che l'elemento `sintassitestopreformattato' viene pre-elaborato prima dell'analisi SGML, esattamente come accade con `macrotestopreformattato'.

All'interno di questi due elementi 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 `meta' per delimitare la denominazione di un qualcosa di variabile (un'opzione o qualcosa del genere).

Altri elementi speciali servono a guidare la lettura della sintassi: `sinquadra' 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; `singraffa' delimita una parte della sintassi che va intesa come un corpo unico e si traduce generalmente con delle parentesi graffe speciali; `sinverbar' (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.

Elemento Apertura Chiusura Vuoto Descrizione
sintassi Modello sintattico su una sola riga.
sintassitestopreformattato Modello sintattico su più righe.
meta Metavariabile.
sinquadra Parentesi quadre sintattiche.
singraffa Parentesi graffe sintattiche.
sinverbar Barra verticale sintattica.
ellissi Puntini di sospensione.

Tabella 150.5: Elementi SGML che riguardano la rappresentazione di modelli sintattici.

150.2.4 Comandi

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

<comando><prompt>$ </prompt><digita>ls</digita><keyb>Invio</keyb></comando>

Nell'ambito dell'elemento `comando' è quasi tutto facoltativo; tuttavia, l'invito, rappresentato dall'elemento `prompt', va messo per primo. Dopo l'elemento `digita', 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 viene rappresentato normalmente con l'elemento `testopreformattato'.

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 `continuacomando', che si inserisce all'interno di `digita'.

Elemento Apertura Chiusura Vuoto Descrizione
comando Comando da digitare.
   prompt Stringa dell'invito.
   digita Digitazione del comando.
      continuacomando Continua il comando a riga nuova.
   keyb Tasto o combinazione di tasti.

Tabella 150.6: Elementi SGML che servono a rappresentare un comando.

150.2.5 Figure

Esistono due generi di figure che si possono gestire con ALdoc: file di immagini e disegni ASCII. È evidente che nel primo caso, quando si compone in testo puro, non si ottengono più le immagini, mentre nel secondo queste sono mantenute. Convenzionalmente, le figure ASCII non possono eccedere le 80 colonne. Nell'ambito delle figure ASCII, si distingue tra due tipi: quelle inserite in modo letterale, che pertanto richiedono una pre-elaborazione prima dell'analisi SGML, e quelle in cui ci si comporta come nel testo normale, inserendo le solite macro SGML.

<figura>
<immagine FILE="esempio-1" ALTEZZA="4cm">
<didascalia>
	<etichetta ID="f-esempio-1"> Ecco il mio primo
	esempio.
</didascalia>
</figura>

L'esempio mostra il caso di una figura proveniente da un file. Si può osservare che all'attributo `FILE' viene assegnato un nome senza percorso e senza estensione. In effetti, è ALtools che esegue la conversione tra i formati e sa quale sia l'estensione giusta in base al tipo di composizione. In pratica, vista l'organizzazione di ALtools, si fa riferimento al file `figure/esempio-1.png'. L'attributo `ALTEZZA' riguarda esclusivamente LaTeX e non se ne può fare a meno (la larghezza viene determinata in modo relativo).

L'elemento `figura' delimita sia le figure che si riferiscono a un file esterno, sia quelle ASCII, che verranno mostrate. Dopo l'indicazione o la rappresentazione della figura si può inserire una didascalia, contenente un testo semplice che ammette gran parte delle forme di enfatizzazione (ma non tutte).

<figura>
<figuratestopreformattato>
    pinco & pallino
          |
	  `--> e-commerciale
</figuratestopreformattato>
<didascalia>
	<etichetta ID="f-esempio-1"> Ecco il mio primo
	esempio.
</didascalia>
</figura>

L'esempio che si vede mostra il caso di una figura ASCII, realizzata all'interno dell'elemento `figuratestopreformattato'. In questo caso, i simboli speciali che potrebbero dare fastidio all'SGML sono gestiti attraverso una pre-elaborazione. L'esempio seguente mostra la stessa cosa, ma con l'elemento `figuramacrotestopreformattato'. La differenza è enorme, dal momento che si è costretti a proteggere tutti i simboli speciali.

<figura>
<figuramacrotestopreformattato>
    pinco &amp; pallino
          |
	  `--&gt; e-commerciale
</figuramacrotestopreformattato>
<didascalia>
	<etichetta ID="f-esempio-1"> Ecco il mio primo
	esempio.
</didascalia>
</figura>

Elemento Apertura Chiusura Vuoto Descrizione
figura Descrizione di una figura.
   immagine Inserisce un'immagine esterna.
      FILE -- -- -- File dell'immagine senza estensione.
      ALTEZZA -- -- -- Altezza dell'immagine.
   figuratestopreformattato Figura ASCII.
   figuramacrotestopreformattato Figura ASCII con macro SGML.
   didascalia Didascalia della figura.

Tabella 150.7: Elementi SGML per l'inserimento di immagini.

150.2.6 Tabelle

Le tabelle si comportano in modo simile alle figure, nel senso che viene definito un involucro, l'elemento `tabella', contenente la definizione della tabella, che in coda può contenere una didascalia. Il tipo di tabella che si può rappresentare è molto semplice: una griglia di righe e colonne, dove il testo contenuto non può andare a capo all'interno di ogni cella. Si osservi l'esempio:

<tabella>
<tabulare COLONNE="2">
<ttesta>
<triga>	Dispositivo	<sepcol> Descrizione			</triga>
</ttesta>
<tcorpo>
<triga> /dev/fd0	<sepcol> Prima unità a dischetti.	</triga>
<triga> /dev/hda	<sepcol> Primo disco fisso IDE/EIDE.	</triga>
<triga> /dev/hdb	<sepcol> Secondo disco fisso IDE/EIDE.	</triga>
<triga> /dev/sda	<sepcol> Primo disco SCSI.		</triga>
<triga> /dev/lp0	<sepcol> Prima porta parallela.		</triga>
<triga> /dev/ttyS0	<sepcol> Prima porta seriale.		</triga>
</tcorpo>
</tabulare>
<didascalia>
	<etichetta ID="t-dispositivi-vari"> Alcuni nomi di dispositivo.
</didascalia>
</tabella>

Si può vedere che la descrizione della griglia che compone la tabella è racchiusa nell'elemento `tabulare', che ha un attributo obbligatorio, `COLONNE', che deve indicare quante sono le colonne di questa. Le righe della tabella si dividono in due gruppi, rappresentati dagli elementi `ttesta' e `tcorpo', che indicano rispettivamente le righe dell'intestazione e quelle del corpo. In pratica, ciò serve a staccare alcune righe iniziali che rappresentano i titoli descrittivi delle colonne.

Le righe sono delimitate dall'elemento `triga', mentre le celle, invece che essere delimitate a loro volta da un altro elemento, sono semplicemente separate da un elemento vuoto: `sepcol'.

Se si vuole realizzare uno specchietto senza righe di intestazione, basta non mettere l'elemento `ttesta'.

Elemento Apertura Chiusura Vuoto Descrizione
tabella Tabella.
   tabulare Composizione della tabella.
      COLONNE -- -- -- Numero di colonne.
   ttesta Righe di intestazione.
   tcorpo Righe del corpo.
      triga Riga.
      sepcol Separazione tra le colonne.
   didascalia Didascalia della tabella.

Tabella 150.8: Elementi SGML per l'inserimento di tabelle.

150.2.7 Riferimenti incrociati e ipertestuali

I riferimenti incrociati si realizzano attraverso gli elementi `etichetta' e `riferimento'. Si tratta di elementi vuoti, dove il primo serve a posizionare un punto a cui può fare riferimento il secondo.

In generale, le etichette possono essere piazzate in qualsiasi parte del documento, purché questo possa essere riconducibile al livello del capitolo (in pratica, non si può mettere un'etichetta nello spazio che c'è tra la dichiarazione di un tomo e l'inizio del capitolo, perché non appartiene ad alcun capitolo).

Esiste una collocazione particolare per le etichette: lo spazio all'interno delle didascalie. I riferimenti a etichette collocate al di fuori delle didascalie, indicano il capitolo, con il dettaglio eventuale della sezione, mentre quelli che puntano a etichette collocate all'interno di didascalie, indicano il numero della figura o della tabella relativa.

<sezione1>
<bloccotitolo>
	<titolo>Prove varie</titolo>
	<etichetta ID="prove-varie">
</bloccotitolo>

L'esempio mostra l'inserzione tipica di un'etichetta nello spazio delimitato dall'elemento `bloccotitolo', ma questa potrebbe essere indicata anche altrove nel testo.

<p>Nella sezione <riferimento ID="prove-varie">, si parlava di...</p>

In questo caso, si vede come inserire un riferimento a un'etichetta.

Oltre ai riferimenti interni al documento, si possono indicare riferimenti esterni, a risorse di Internet. L'elemento in questione è `uri', anche questo vuoto, che si usa semplicemente come si vede nell'esempio:

<p>Per maggiori informazioni si può consultare <uri URI="http://www.brot.dg">,
che contiene la documentazione citata.</p>

L'indirizzo che si inserisce in questo tipo di elemento viene sempre visualizzato nel risultato finale e ciò è voluto, secondo la filosofia per la quale il documento deve contenere tutte le informazioni, anche quando viene stampato da una forma pensata per la consultazione elettronica.

Tuttavia, esiste un altro tipo di riferimento esterno, quello alle pagine di manuale. Per il momento, lo scopo è solo quello di avere una notazione uniforme. L'esempio seguente dovrebbe chiarire in modo molto semplice il suo utilizzo:

<man>ls<mansez>1</mansez></man>

Elemento Apertura Chiusura Vuoto Descrizione
etichetta Etichetta a cui fare riferimento.
   ID -- -- -- Stringa di identificazione.
riferimento Riferimento incrociato.
   ID -- -- -- Stringa di identificazione.
uri Riferimento esterno.
   URI -- -- -- URI a cui si fa riferimento.
man Pagina di manuale.
   mansez Sezione della pagina di manuale.

Tabella 150.9: Elementi SGML per l'inserimento di riferimenti.

150.2.8 Note e piè pagina

ALdoc prevede l'utilizzo di due soli tipi di annotazioni: avvertimenti che devono risaltare in un riquadro e note a piè pagina. Le note evidenziate sono indicate all'interno di un elemento `nota', mentre quelle a piè pagina sono inserite nell'elemento `piepagina'.

Tra le due c'è una differenza di comportamento importante: la nota evidenziata consente l'inserimento di paragrafi (per ora solo uno); la nota a piè pagina consente solo l'inserimento di testo normale, eventualmente con qualche forma di enfatizzazione. In particolare, nella nota a piè pagina, non è possibile indicare dei riferimenti, né interni, né esterni. Si osservino gli esempi:

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

<piepagina>Questo argomento verrà ripreso meglio in seguito.</piepagina>

Attualmente, le note a piè pagina hanno un'altra limitazione in ALdoc: non possono essere inserite nel testo normale e possono essere indicate solo dopo un paragrafo. Questo lo si può vedere meglio nell'esempio successivo:

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

<piepagina>Queste sono solo chiacchere.</piepagina>

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

150.2.9 Varie

Una delle cose più importanti in un testo a carattere tecnico-informatico, è la rappresentazione corretta dei trattini orizzontali (`-'), in modo che non vengano accorciati o fusi assieme. In pratica, si pensi alle opzioni con uno o due trattini: i sistemi di composizione più comuni fondono assieme una coppia di trattini, a indicare un trattino di dimensione media.

ALdoc utilizza una soluzione insolita per risolvere questo problema: l'elemento vuoto `meno'. La soluzione è insolita in quanto l'atteggiamento normale sarebbe quello di utilizzare una macro (un'entità); tuttavia, in questo modo se ne può controllare l'uso attraverso il DTD. In effetti ci sono situazioni in cui questo tipo di trattino non può essere usato. Comunque, non è il caso di preoccuparsi, dal momento che in tutte le situazioni in cui si può indicare questo elemento, si può mettere al suo posto il simbolo corrispondente al codice 0xf7, ovvero 247 in decimale, che viene rimpiazzato correttamente dal filtro precedente all'elaborazione SGML.

150.3 Amministrazione del testo

Lo scopo di ALdoc non è solo quello di arrivare a un risultato finale uniforme su più formati, ma anche quello di gestire alcune informazioni per aiutare gli autori a mantenere un linguaggio uniforme.

Nella descrizione dell'utilizzo di ALtools è stata mostrata la possibilità di ottenere una composizione per uso interno, la bozza, con la quale si ottiene l'inserimento nel testo di annotazioni aggiuntive e la segnalazione di termini che nel risultato finale non devono essere evidenziati.

ALtools è anche in grado di estrapolare una serie di indici analitici specifici, riferiti precisamente all'utilizzo degli elementi `nome', `ttsc', `ttid' e `glosti'. L'ultimo di questi elementi ha uno scopo particolare: serve nel caso si voglia gestire un capitolo, o un'appendice, contenente il glossario dei termini speciali che si utilizzano. In questo modo, non c'è bisogno che questo glossario sia in ordine alfabetico, dal momento che è possibile abbinargli l'indice analitico specifico di queste voci.

Per ottenere l'inserimento di questi indici analitici specifici, si utilizzano degli elementi appositi, vuoti, che devono essere intesi come l'inserimento di capitoli, o appendici, indipendenti. Purtroppo, allo stato attuale, questo meccanismo porta a risultati solo nella composizione attraverso LaTeX o pdfLaTeX, e non si prevede la replicazione nei formati HTML.

Elemento Apertura Chiusura Vuoto Descrizione
glossariostilistico Indice del glossario stilistico.
glossariottid Indice dell'utilizzo di `ttid'.
glossariottsc Indice dell'utilizzo di `ttsc'.
glossarionomi Indice dei nomi.

Tabella 150.10: Elementi SGML per l'inserimento di indici speciali.

---------------------------

Appunti Linux 2000.04.12 --- Copyright © 1997-2000 Daniele Giacomini --  daniele @ pluto.linux.it


1.) In base all'organizzazione di ALtools, il file in questione è di tipo PNG (con estensione `.png') e si trova nella directory `figure/'.

2.) Gli spazi iniziali delle righe che compongono l'elemento `macrotestopreformattato' vengono convertiti prima dell'elaborazione SGML in spazi non interrompibili. Tuttavia, questo non può essere fatto automaticamente per quelli successivi.


[inizio] [indice generale] [precedente] [successivo] [indice analitico] [contributi]