Modelli di calligrafia – Carola Bruno – Padova – Gennaio 2012
Nessuna regola scritta vincola chi scrive il codice di un eBooks a farlo in bella forma e ordinando i file secondo chissà quale ordinamento gerarchico. Però aiuta.
Sollecitato a scrivere qualcosa su questo tema, e spinto ulteriormente dopo aver notato come sempre più spesso alcune regole fondamentali di ordine e pulizia vengono disattese anche negli eBook di blasonati editori 😦 scrivo due righe sull’argomento.
Non dico nulla di nuovo o di particolare e i più ‘addentro’ possono tranquillamente leggere altro.
Come sappiamo un ePub non è altro che un guscio compresso che contiene tre componenti fondamentali:
– il file mime-type
– la cartella META-INF
– la cartella OEBPS.
Mentre le prime due fungono sostanzialmente da ‘marcatori’ (il primo per dire all’hardware ‘io sono un ePub’ e il secondo per fare sapere dove poterne trovare le varie parti), la cartella OEBPS di fatto contiene il libro vero e proprio (capitoli, contributi, apparati, stili, scripts …).
Più un libro è articolato e complesso, e più aumenta il numero di file in gioco. Va da se che alcune regole di ordine, gerarchia e pulizia aiutano la programmazione e gli eventuali successivi interventi di modifica.
Il file più importante di un eBook dal punto di vista strutturale è il file content.opf.
Contiene innanzitutto i metadata che riguardano il libro, espressi secondo le specifiche dettate da DCMI ( Dublin Core Metadata Iniziative )
ma è sulla parte che segue che voglio concentrare l’attenzione: l’elemento <manifest>
Il suo scopo è quello di elencare e descrivere tutti i file che concorrono alla pubblicazione.
La sintassi esprime ogni elemento mediante tre ‘indicatori’:
- un id che ‘denomina’ in modo univoco l’elemento in questione;
- l’indirizzamento href che ne ‘esprime’ la posizione all’interno del file epub;
- la componente media-type che ne ‘caratterizza’ la funzionalità.
Quest’ultima componente si esprime seconde le specifiche dettate da IANA (Internet Assigned Numbers Authority) nella sezione MIME (Multipurpose Internet Mail Extensions)
Banalizzando e giusto per fare un esempio, faccio la parafrasi di una espressione tipo reperibile all’interno di un file content:
<item id=”img_001_01″ href=”immagini/riomaggiore.jpg” media-type=”image/jpeg” />
In un libro ci sono moltissime di queste espressioni e mi è capitato spesso di prendere in mano content.opf creati senza nessun criterio; un guazzabuglio di definizioni ed elementi senza alcun ordine. E di impazzire per metterci le mani.
E gli stessi file (se un programmatore è disordinato nel content,opf probabilmente lo è anche nel creare la gerarchia dei file) liberi e mescolati tra di loro all’interno della cartella OEPBS.
Meglio un buon ordine che aiuta la stesura e soprattutto le fasi di revisione: ogni file di una certa tipologia va posto in una cartella assieme agli altri file suoi omologhi, e le relative ‘chiamate’ nel file content raggruppate in modo analogo.
La simbologia <!– xxxxx –> esprime un commento di programmazione all’interno del codice e può essere usata per marcare le varie parti:
<!– immagini –>
<item id=”img_001_01″ href=”immagini/riomaggiore.jpg” media-type=”image/jpeg” />
<item id=”img_002_01″ href=”immagini/manarola.jpg” media-type=”image/jpeg” />
<item id=”img_003_01″ href=”immagini/corniglia.jpg” media-type=”image/jpeg” />
<item id=”img_004_01″ href=”immagini/vernazza.jpg” media-type=”image/jpeg” />
<item id=”img_005_01″ href=”immagini/monterosso.jpg” media-type=”image/jpeg” />
<item id=”img_006_01″ href=”immagini/cinqueterre.png” media-type=”image/png” />
<!– audio –>
<item id=”snd_001″ href=”audio/mareggiata.m4a” media-type=”audio/mpeg” />
<item id=”snd_002″ href=”audio/risacca.m4a” media-type=”audio/mpeg” />
<!– css –>
<item id=”css_base” href=”css/base.css” media-type=”text/css” />
<item id=”css_riom” href=”css/riomaggiore.css” media-type=”text/css” />
<item id=”css_mana” href=”css/manarola.css” media-type=”text/css” />
<item id=”css_corn” href=”css/corniglia.css” media-type=”text/css” />
<item id=”css_vern” href=”css/vernazza.css” media-type=”text/css” />
<item id=”css_mont” href=”css/monterosso.css” media-type=”text/css” />
Secondo le espressioni appena viste, a livello gerarchico esisteranno:
una cartella immagini contenente 5 jpeg e un png:
riomaggiore.jpg
manarola.jpg
corniglia.jpg
vernazza.jpg
monterosso.jpg
cinqueterre.png
una cartella audio contenente due basi sonore:
mareggiata.m4a
risacca.m4a
e una cartella css contenente i fogli stile:
base.css
riomaggiore.css
manarola.css
corniglia.css
vernazza.css
monterosso.css
È importante che anche l’attribuzione degli id segua una certa logica. Nell’esempio appena visto ho utilizzato un criterio di progressione:
riomaggiore.jpg è l’immagine 1 del capitolo 1 e ho scelto di indicarla con id 001_01, mentre manarola.jpg, immagine 2 del capitolo 1, sarà indicata con id 002_01.
Inutile sottolineare che gli ‘zero’ all’interno del nome, consentono ordinamenti più precisi: sia dei file nelle gerarchie sia dei nomi all’interno del file content.
Gli utenti che generano ePub da Indesign, conoscono sicuramente il problema della denominazione dei links immagine. Nomi variegati e variopinti che possono andare bene in un impaginato per stampa, tanto ci pensa Indesign a tenerli fortemente ‘al guinzaglio’ ma non aiutano la successiva revisione del codice nel passaggio ad ePUB.
In questo caso ci vengono in aiuto due scripts. Il primo di Marijan Tompa in arte Tomaxxi. Permette di rinominare tutti i contributi immagine a nostro piacimento. La ri-denominazione avviene link per link uno alla volta. Attenzione che i file vengono rinominati definitivamente, quindi nel caso di future eventuali integrazioni da parte di chi aveva fornito i documenti i nomi non saranno più uguali. Meglio lavorare su una copia. Questo il link al sito di Tomaxxi (consiglio una visita approfondita perché è una miniera per chi usa Indesign) e questo il link diretto per il download dello script
Il secondo è quello che preferisco perché rigenera i nomi in batch. Si tratta di uno script di Kasyan Servetsky (altro sito da ispezionare con cura perché ricchissimo di tools e scripts di cui non è possibile fare a meno). Ci chiede una ‘radice’ comune che applicherà a tutti i nomi aggiungendo poi una numerazione sequenziale legata al numero di pagina. Anche in questo caso l’operazione è ‘distruttiva’ quindi lavoriamo sempre su una copia, ma lo script ci restituisce anche un utile report con indicate tutte le sostituzioni effettuate, da conservare se prevediamo future integrazioni dall’esterno. Questo il link diretto allo script
Tornando al tema principale chiudo citando un aspetto molto importante: l’accortezza nell’utilizzo dei caratteri nel nome dei file. Il matching tra nome dichiarato nel file content e il nome effettivo del file deve essere perfetto. Meglio abituarsi ad utilizzare esclusivamente caratteri minuscoli, evitando spazi e caratteri speciali ad esclusione dell’underscore ‘ _ ‘ che è sicuro e affidabile per qualsiasi codifica. Cerchiamo di generare nomi brevi (nei limiti del possibile) e che siano possibilmente esplicativi dell’immagine o meglio ancora, come visto prima, del suo posizionamento all’interno del file ePub.
E tu? Utilizzi strumenti che possono aiutare la stesura o il controllo in fase di scrittura? Hai altre accortezze da suggerire?
17 giugno 2012 at 16:38
Sempre aggiornatissimo! Ci sarai a Milano per EDITECH 2012?
17 giugno 2012 at 16:58
Ciao Enrica. Purtroppo quest’anno casca in una settimana in cui non posso esserci. Dobbiamo rimandare il caffè assieme ad altra occasione :-).
17 giugno 2012 at 22:14
Due precisazioni:
1) la specifica non richiede la presenza della cartella OEBPS. E’ solo una (buona) abitudine — adottata da Sigil, tra l’altro — per ordinare le varie risorse (pagine XHTML, fogli CSS, font, immagini) che compongono l’EPUB;
2) gli attributi id devono essere nomi XML validi. Pertanto non possono inziare con una cifra o contenere spazi. (E’ uno dei pochi errori “sofisticati” che EpubCheck rileva; naturalmente lo segnala anche FlightCrew.)
Personalmente uso identificatori formati da un prefisso “p” (pagina), “img” (immagine), “f” (font), “c” (css), ecc. e dal nome del file. Ad esempio, se ho un file Capitolo01.xhtml, il suo id sara’ pCapitolo01. Per mia abitudine, tendo a usare esclusivamente caratteri alfanumerici, quindi niente underscore o trattini.
Lavorando direttamente sul codice (e assemblando con script), cerco anche di fare padding nei nomi, ad esempio: pCapitolo01, pCapitolo02, …, pCapitolo09, pCapitolo10, …, pCapitolo15 — che consente una visione maggiormente “pulita” (specie se si hanno 100+ file) quando si visualizza il file content OPF o la TOC in un editor di testo, rigorosamente con un carattere monospaced.
18 giugno 2012 at 00:13
Preziose precisazioni Alberto, che tra l’altro mi hanno permesso di correggere alcune sviste clamorose nel testo dell’articolo.
Rispetto al padding nei nomi direi che di tratta di un’ottima abitudine che aiuta non solo la visualizzazione/edizione in un editor di testo ma anche la velocizzazione di certe operazioni ripetitive.
16 settembre 2013 at 00:40
[…] dei nomi avevo già scritto qualcosina in questo post ne consiglio una veloce […]