[successivo] [precedente] [inizio] [fine] [indice generale] [docinfo] [Indice analitico]


Capitolo 11.   Figure, tabelle, listati, esempi

Alml consente di inserire nel documento degli oggetti che possono eventualmente essere resi fluttuanti nel testo, a cui si associa una numerazione separata. Nel caso particolare delle figure, queste possono essere inserite anche nel testo lineare.

11.1   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 asciiart o 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 asciiart o 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 una situazione abbastanza 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.

La dimensione di un'immagine può essere espressa anche usando un'ampiezza orizzontale percentuale, che si riferisce alla larghezza della colonna del corpo del documento:

<figure id="f-esempio-1">
<fcaption>
    Figura <figureref>. Ecco il mio primo esempio.
</fcaption>
<image imgfile="esempio-1" width="25%">
</figure>

In questo caso, l'immagine viene adattata in modo da avere una larghezza pari al 25 % dello spazio usato normalmente nel corpo del documento.

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 lineare.

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

Tabella 11.1. Elementi SGML che servono a rappresentare delle figure di qualche tipo.

Elemento o
attributo
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 componenti lineari 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. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
 embimage #PCDATA Immagine incorporata; algoritmo Base64.
  alt Attributo Descrizione alternativa alla visualizzazione.
  height Attributo Altezza dell'immagine.
  width Attributo Larghezza dell'immagine. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
 epsimage #PCDATA Codice EPS letterale.
  alt Attributo Descrizione alternativa alla visualizzazione.
  width Attributo Larghezza. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
  height Attributo Altezza.
 figimage #PCDATA Codice XFig letterale.
  alt Attributo Descrizione alternativa alla visualizzazione.
  width Attributo Larghezza. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
  height Attributo Altezza.
 lyimage #PCDATA Codice LilyPond letterale.
  alt Attributo Descrizione alternativa alla visualizzazione.
  width Attributo Larghezza. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
  height Attributo Altezza.
 teximage #PCDATA Codice TeX letterale.
  alt Attributo Descrizione alternativa alla visualizzazione.
  width Attributo Larghezza. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
  height Attributo Altezza.
 lateximage #PCDATA Codice LaTeX letterale.
  alt Attributo Descrizione alternativa alla visualizzazione.
  width Attributo Larghezza. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
  height Attributo Altezza.
 gnuplotimage #PCDATA Codice Gnuplot letterale.
  alt Attributo Descrizione alternativa alla visualizzazione.
  width Attributo Larghezza. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
  height Attributo Altezza.
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. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
embimg #PCDATA Immagine incorporata; algoritmo Base64.
 alt Attributo Descrizione alternativa alla visualizzazione.
 height Attributo Altezza dell'immagine.
 width Attributo Larghezza dell'immagine. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
epsimg #PCDATA Codice EPS letterale, da inserire nel testo lineare.
 alt Attributo Descrizione alternativa alla visualizzazione.
 width Attributo Larghezza. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
 height Attributo Altezza.
figimg #PCDATA Codice XFig letterale, da inserire nel testo lineare.
 alt Attributo Descrizione alternativa alla visualizzazione.
 width Attributo Larghezza. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
 height Attributo Altezza.
lyimg #PCDATA Codice LilyPond letterale, da inserire nel testo lineare.
 alt Attributo Descrizione alternativa alla visualizzazione.
 width Attributo Larghezza. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
 height Attributo Altezza.
teximg #PCDATA Codice TeX letterale, da inserire nel testo lineare.
 alt Attributo Descrizione alternativa alla visualizzazione.
 width Attributo Larghezza. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
 height Attributo Altezza.
lateximg #PCDATA Codice LaTeX letterale, da inserire nel testo lineare.
 alt Attributo Descrizione alternativa alla visualizzazione.
 width Attributo Larghezza. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
 height Attributo Altezza.
gnuplotimg #PCDATA Codice Gnuplot letterale, da inserire nel testo lineare.
 alt Attributo Descrizione alternativa alla visualizzazione.
 width Attributo Larghezza. Se viene indicato un valore percentuale, si fa riferimento all'ampiezza del corpo del testo.
 height Attributo Altezza.

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

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 proporzionale. Evidentemente, fissando entrambe le dimensioni, si ottiene un adattamento dell'immagine senza rispettare la proporzione originale.

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.(1) 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.

Alcuni valori che rappresentano l'ampiezza orizzontale, possono essere espressi in forma percentuale, che si riferisce allo spazio che in base al contesto può essere attribuito al testo normale. Quando ciò è consentito, nella maggior parte dei casi è preferibile usare una dimensione percentuale, perché così si mantengono le proporzioni anche se si cambia l'impaginazione generale del documento, senza rischiare di vedere un'immagine che occupa uno spazio maggiore di quello del testo.

Gli elementi per l'inserimento di immagini nel testo, come si vede dalla tabella 11.1, 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; codice Lilypond; codice Gnuplot.

11.1.1   Immagini incorporate Base64

Per incorporare un'immagine codificata con l'algoritmo Base64 si può usare il programma Uuencode, oppure Mpack. 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[Invio]

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ò è meglio racchiudere il contenuto di questi elementi in una sezione marcata di tipo CDATA, così come si può vedere.

11.1.2   Immagini incorporate EPS

Si può incorporare codice EPS utilizzando gli elementi epsimg e epsimage. 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>

Per la composizione in formato HTML viene usato un sistema di conversione per rendere l'immagine in formato JPG. Questa conversione ha il difetto di utilizzare solo la porzione di immagine che si trova all'interno di un formato Lettera verticale (8,5 in × 11 in); pertanto, ciò che esce da questi margini può risultare escluso. Di questo limite è necessario essere consapevoli quando si preparano immagini di questo tipo.

11.1.3   Immagini incorporate Xfig

Si può incorporare codice XFig utilizzando gli elementi figimg e figimage. Vengono mostrati due esempi e il risultato del secondo lo si vede nella figura 11.1.

<p>Bla bla bla
<figimg alt="Esempio" height="4mm">
<![CDATA[
#FIG 3.2
Portrait
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" width="75%">
<![CDATA[
#FIG 3.2
Portrait
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 11.1. Esempio con XFig.

Esempio

A proposito degli elementi figimg e figimage è importante tenere in considerazione un difetto del programma di conversione usato da Alml per acquisirli nella composizione finale. Questo difetto richiede che si faccia il disegno nello spazio di una pagina in formato Lettera (8,5 in × 11 in) o in formato A4, che però deve essere verticale (portrait), altrimenti si rischia di perdere una porzione dell'immagine.

11.1.4   Immagini incorporate Lilypond

Sono disponibili gli elementi lyimg e lyimage per incorporare codice LilyPond. Vengono mostrati due esempi e il risultato del secondo appare nella figura 11.2.

<p>Bla bla bla
<lyimg alt="Esempio" height="5mm">
<![CDATA[
\version "1.6.6"
\header {
    tagline = ""
}
\score { 
  \notes {c' d' e' f' g' a' b'}
  \paper {
    linewidth = 50
    pagenumber = "no"
  }  
  \midi {}
}
]]>
</lyimg> bla bla bla.</p>
<figure id="f-esempio-1">
<fcaption>
    Figura <figureref>. Esempio con <special special="name">LilyPond</special>.
</fcaption>
<lyimage alt="Esempio" width="40%">
<![CDATA[
\version "1.6.6"
\header {
    tagline = ""
}
\score { 
  \notes {c' d' e' f' g' a' b'}
  \paper {
    linewidth = 50
    pagenumber = "no"
  }  
  \midi {}
}
]]>
</lyimage>
</figure>

Figura 11.2. Esempio con LilyPond.

Esempio

Si osservi che nella composizione in formato HTML, in corrispondenza dell'immagine che riproduce il codice musicale di LilyPond, se previsto, si raggiunge il file MIDI corrispondente come riferimento ipertestuale.

11.1.5   Immagini incorporate TeX e LaTeX

Sono disponibili gli elementi teximg, teximage, lateximg e lateximage per inserire direttamente il codice TeX e LaTeX 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.

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.

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 11.3. 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 11.4. Ecco un'altra bella formula.

Esempio

11.1.6   Immagini incorporate Gnuplot

È possibile incorporare codice Gnuplot attraverso gli elementi gnuplotimage e gnuplotimg, che si usano come altri elementi simili. In questo caso, viene aggiunta automaticamente l'istruzione set terminal postscript eps color all'inizio.

Segue un esempio di incorporazione nell'ambito di un elemento gnuplotimage; si può osservare che l'immagine contiene dei margini propri:

<figure sep="border">
<fcaption>
    Figura <figureref>. Una figura tridimensionale. 
</fcaption>
<gnuplotimage alt="2*(x**2 + y**2)*exp(-x**2 - y**2)" width="100%">
<![CDATA[
set grid
set hidden3d
splot [-2:2] [-2:2] 2*(x**2 + y**2)*exp(-x**2 - y**2)
]]>
</gnuplotimage>
</figure>

Figura 11.5. Una figura tridimensionale.

2*(x**2 + y**2)*exp(-x**2 - y**2)

11.1.7   Osservazioni sull'incorporazione di codice estraneo

Quando si va a incorporare codice esterno, come si fa per esempio con gli elementi lateximg, lateximage, figimg, figimage, lyimg,... è importante evitare di lasciare il codice ASCII <HT>. In pratica, una volta inserito il codice nel sorgente SGML, conviene «espandere» il sorgente stesso in modo che anche i caratteri di tabulazione siano trasformati in spazi normali. L'esempio seguente dovrebbe essere sufficientemente chiaro così:

expand < prima.sgml > dopo.sgml[Invio]

Un altro aspetto da considerare è la codifica: se questo codice che si inserisce contiene caratteri che corrispondono a punti di codifica oltre U+007F, ovvero oltre la codifica ASCII pura e semplice, si possono creare dei problemi, che consistono nel non ottenere esattamente gli stessi caratteri di partenza.

11.2   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 la mia prima tabella.
</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 11.2. Elementi SGML che servono a rappresentare le tabelle.

Elemento o
attributo
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 componenti lineari 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 10.19. Tuttavia, si deve ricordare che si tratta di codice esterno, per cui non si possono inserire elementi tipici di Alml, ma solo codice HTML, la trasformazione in forma di testo puro di una tabella HTML complessa non avviene sempre nel modo corretto; inoltre, non si possono ottenere delle tabelle che si dispongono automaticamente su più pagine.

L'esempio seguente mostra il caso di una tabella in cui le celle possono contenere più di una riga. Il risultato corrisponde alla tabella 11.3.

<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 11.3. 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 dalla tabella successiva.

<table id="a2-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.

La scelta del rapporto tra le due colonne della tabella, 61,8 % e 38,2 %, rappresenta quello che è noto come «rapporto aureo». Volendo seguire la stessa logica per una tabella di tre colonne, i rapporti sono: 19,1 %, 30,1 % e 50,0 %.

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.

Il corpo del carattere «normale» che si inserisce all'interno delle celle di una tabella ottenuta con l'elemento tabular, può essere controllato nell'intestazione con un elemento printedfontsize, come nell'esempio seguente:

<head>
    <admin>
        ...
        <printedfontsize type="table">3,5mm>/printedfontsize>
        ...
    </admin>
    ...
</head>

Se non si indica questa informazione, il carattere viene ridotto leggermente rispetto a quello del corpo normale del testo.

11.3   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 listato.
</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 11.5. Elementi SGML che servono a rappresentare i listati.

Elemento o
attributo
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; si può dividere automaticamente = 1 (predefinito).
 lcaption componenti lineari Didascalia.

11.4   Esempi

È possibile delimitare in un contesto apposito gli esempi, usando l'elemento example, che è molto simile a listing, ma utilizza un carattere di dimensione differente per il testo normale:

<example id="e-esempio-1">
<ecaption>
    Esempio <exampleref>. Ecco il mio primo esempio.
</ecaption>
...
...
</example>

L'elemento example 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 ecaption, mentre il riferimento all'ultimo listato avviene con l'elemento exampleref.

Tabella 11.6. Elementi SGML che servono a rappresentare degli esempi.

Elemento o
attributo
Contenuto Descrizione
example Involucro di un esempio.
 id Attributo Ancora di riferimento per l'esempio.
 pos Attributo fixed, float.
 sep Attributo none, rule, border.
 split Attributo Non si può dividere = 0; si può dividere automaticamente = 1 (predefinito).
 ecaption componenti lineari Didascalia.

Il corpo del carattere usato per il testo normale che appare all'interno di un elemento example può essere controllato nell'intestazione con un elemento printedfontsize, come nell'esempio seguente:

<head>
    <admin>
        ...
        <printedfontsize type="example">3,5mm</printedfontsize>
        ...
    </admin>
    ...
</head>

Se non si indica questa informazione, il carattere viene ridotto leggermente rispetto a quello del corpo normale.

Editoria elettronica con Alml 2004.10.10 --- Copyright © 2000-2004 Daniele Giacomini -- <daniele (ad) swlibero·org>


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


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

[successivo] [precedente] [inizio] [fine] [indice generale] [docinfo] [Indice analitico]

Valid ISO-HTML!