[successivo] [precedente] [inizio] [fine] [indice generale] [docinfo] [Indice analitico]
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.
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.
|
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:
|
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:
|
Oltre all'elemento figure, esiste l'elemento img per le immagini inserite nel testo lineare.
|
Tabella 11.1. Elementi SGML che servono a rappresentare delle figure di qualche tipo.
I nomi dei file indicati nell'attributo imgfile devono essere privi di estensione, intendendo implicitamente che questa sia |
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:
|
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.
|
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.
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à:
|
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.
|
|
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.
Si può incorporare codice EPS utilizzando gli elementi epsimg e epsimage. Vengono mostrati due esempi.
|
|
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.
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.
|
|
Figura 11.1. Esempio con XFig.
|
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.
|
|
Figura 11.2. Esempio con LilyPond. |
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. |
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:
|
Figura 11.3. Ecco una bella formula.
|
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:
|
Figura 11.4. Ecco un'altra bella formula.
|
È 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:
|
Figura 11.5. Una figura tridimensionale.
|
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.
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:
|
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:
|
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.
|
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.
|
Comando | Descrizione |
| Scandisce un'unità Dos alla ricerca di settori difettosi. |
| Permette di modificare o conoscere la directory corrente delle unità Dos. |
| Cancella i file Dos indicati come argomento. |
| Cancella le directory Dos indicate come argomento. |
| Crea le directory Dos indicate come argomento. |
| Sposta o rinomina uno o più file e directory. |
| Elimina le directory indicate come argomento, purché siano vuote. |
| 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:
|
Se non si indica questa informazione, il carattere viene ridotto leggermente rispetto a quello del corpo normale del testo.
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:
|
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. |
È 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:
|
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:
|
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]