Alml consente di inserire immagini provenienti da file esterni, oppure incorporando del codice estraneo, con cui queste devono essere disegnate. Eventualmente si può anche fare riferimento a dei video, ma in tal caso non si ha una «incorporazione» vera e propria nel testo.
Gli elementi con cui si possono incorporare delle immagini o dei video vanno usati in un contesto lineare; pertanto, per poter essere usati in un riquadro (object), come se fossero dei blocchi, vanno inserite dentro l'elemento imgblock.
Inizialmente, il modo più semplice per inserire un'immagine è quello di preparare un file in un formato comune a matrice di punti (come può esserlo un formato PNG) e di collocarlo in una sottodirectory rispetto alla posizione in cui si trova il file sorgente SGML. Per esempio, disponendo del file cielo-azzurro.png
collocato nella directory figure/
; l'immagine si potrebbe incorporare in un testo nel modo seguente:
|
Se invece quello che si vuole è mostrare la figura nel riquadro di un elemento object, occorre aggiungere l'elemento imgblock:
|
Tutti gli elementi che vengono descritti in questo capitolo per l'inserzione delle immagini, vanno usati in un contesto lineare, oppure, vanno inserite in un elemento imgblock per poter apparire come blocchi in un elemento object.
|
Dalla tabella appena mostrata si può osservare che esistono degli attributi comuni; in modo particolare height e width. L'attributo height serve a specificare l'altezza dell'immagine, mentre l'attributo width specifica la larghezza. Se vengono forniti entrambi, l'immagine ottenuta dalla composizione rispetta entrambi i valori, pertanto può risultare deformata; se invece si specifica uno solo dei due valori, l'altro viene determinato in proporzione. Le misure vanno espresse nei modi riconoscibili da Alml; per esempio si può scrivere height="5cm", oppure height="50mm", oppure height="1.969in",... Quando si tratta della larghezza (width), la misura può essere espressa anche in modo percentuale, riferendosi allo spazio disponibile. Per esempio, width="100%" richiede la larghezza massima in base al contesto. Logicamente, in condizioni normali è preferibile usare sempre solo l'attributo width con un valore percentuale.
È possibile evitare l'uso di entrambi gli attributi width e height, quando l'immagine contiene delle misure proprie; in tal caso, le misure originali vengono rispettate.
Quando si genera una composizione in formato HTML, le misure devono essere trasformate in punti grafici (pixel). Considerato che mediamente uno schermo grafico viene usato alla risoluzione di 1 024×768, per ogni punto tipografico PostScript (ovvero punti da 1/72 in) si ottengono due punti grafici. |
Un altro attributo comune a tutti gli elementi che inseriscono un'immagine è alt, che serve a descrivere brevemente l'immagine. Questa informazione serve nella composizione HTML, per mostrare una descrizione minima in caso di problemi nella visualizzazione dell'immagine.
Quando gli elementi incorporano il codice che rappresenta l'immagine, questo deve essere racchiuso in una sezione marcata di tipo CDATA, per non essere alterato in alcun modo; inoltre, per tali elementi è disponibile l'attributo file, con il quale è possibile salvare, in fase di composizione, una copia di quel contenuto nel file indicato. Il file in questione viene salvato soltanto se la directory di destinazione esiste già e se, oltre ad avere i permessi necessari, non esiste già un file con quel nome.
Nella parte iniziale del capitolo sono già apparsi degli esempi di utilizzo dell'elemento img, per l'inserimento di un'immagine proveniente da un file esterno. Come già spiegato, è bene che il file in questione si trovi in una directory differente rispetto a quella in cui si trova il file SGML sorgente.
Il file viene indicato nell'attributo imgfile senza l'estensione, perché vengono tentate automaticamente diverse possibilità, partendo da formati che dovrebbero offrire una qualità maggiore.
Per incorporare un'immagine codificata con l'algoritmo Base64 si può usare il programma Uuencode, oppure Mpack, descritti nella sezione 39.12. 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. Viene mostrato un esempio:
|
Dal momento che si vuole evitare qualunque interpretazione SGML, è necessario racchiudere il contenuto di questi elementi in una sezione marcata di tipo CDATA, così come si può vedere nell'esempio appena apparso.
Si può incorporare codice EPS utilizzando l'elemento epsimg. Viene mostrato un esempio:
|
Nel riquadro successivo si vede il risultato della composizione:
|
Durante la fase di composizione, l'immagine viene trasformata in modo appropriato con degli strumenti, che a volte si limitano a considerare, nel codice originario, l'area di un foglio in formato Lettera verticale (8,5 in × 11 in). In questo caso, ciò che esce dai margini del formato Lettera può risultare escluso. Di tale limite è necessario essere consapevoli quando si preparano immagini del genere.
Si può incorporare codice XFig utilizzando l'elemento figimg. Viene mostrato un esempio:
|
Nel riquadro successivo si vede il risultato della composizione:
|
Si osservi che gli strumenti usati da Alml per l'inclusione di questo formato, leggono dal codice originario soltanto l'area corrispondente a un foglio in formato Lettera verticale (8,5 in × 11 in), ignorando il resto.
L'elemento lyimg consente di incorporare codice LilyPond. Viene mostrato un esempio:
|
Nel riquadro seguente, si vede il risultato della composizione dell'esempio; si osservi che l'esempio utilizzava, a sua volta, un riquadro bordato:
|
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. In pratica, di solito si ottiene di eseguire il brano visualizzato, facendo un clic sull'immagine.
Sono disponibili gli elementi teximg e lateximg per inserire direttamente il codice TeX e LaTeX nel sorgente. Per la precisione, nel caso di teximg vengono aggiunte automaticamente all'inizio due istruzioni, \nonstopmode e \nopagenumbers, inoltre, alla fine viene aggiunta l'istruzione \bye; invece, nel caso di lateximg 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, dove si può osservare che non viene specificata la dimensione dell'immagine:
|
Il riquadro seguente mostra il risultato della composizione:
|
Segue un esempio simile, 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 previsto. Questa volta si vuole attribuire una dimensione orizzontale all'immagine:
|
Il riquadro seguente mostra il risultato della composizione:
|
È possibile incorporare codice Gnuplot attraverso l'elemento gnuplotimg, che si usa come gli altri elementi simili. In questo caso, viene aggiunta automaticamente l'istruzione set terminal postscript eps color all'inizio. Segue un esempio:
|
Nel riquadro successivo, appare il risultato della composizione; si osservi che l'esempio utilizzava, a sua volta, un riquadro bordato:
Quando si va a incorporare codice esterno, come si fa per esempio con gli elementi lateximg, figimg, 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.
«a2» 2013.11.11 --- Copyright © Daniele Giacomini -- appunti2@gmail.com http://informaticalibera.net