Alcuni degli ebook che abbiamo prodotto:

Servizio di conversione e creazione ebook per editori ed autori.
Conversione da Word, inDesign, XPress, pdf, odt... in ePub e mobi

Per informazioni scrivere a: info@guidaebook.com


Home » toc.ncx

toc.ncx

Per consentire una navigazione più semplice nell’eBook ed un migliore accesso a singole parti o capitoli dell’eBook, è necessario preparare il file “toc.ncx”. L’estensione “.ncx” sta per “Navigation Center eXtended” e segue le specifiche “Open Packaging Format” che sono anche alla base del file “content.opf”.
Non tutti i software ed i reader utilizzano questo file. Quando vi si può accedere, tramite menu o pulsante, oppure un pannello a fianco o sotto le pagine dell’eBook, consente al lettore di visualizzare il contenuto dell’eBook nella sua struttura e di passare da una parte all’altra del testo.
Ecco un esempio di file “toc.ncx”:

toc.ncx

toc.ncx

Ed ecco come lo stesso file appare, sotto forma di sommario cliccabile, nel software di lettura Adobe “Digital Editions”:

toc.ncx in Adobe Digital Editions

toc.ncx in Adobe Digital Editions

Come si vede, “toc.ncx” può avere una struttura nidificata, mostrando non solo le parti o capitoli di un eBook, ma anche le diverse parti di ciascun capitolo oppure determinati componenti del testo, come le illustrazioni, tabelle, note, insomma tutti quegli elementi ai quali si vuole rendere possibile un rapido accesso da parte del lettore.
In questo si differenzia dalla struttura indicata nella parte “spine” di “content.opf”: nello “spine” vengono indicati solo i file che compongono l’eBook, la sua struttura fisica, mentre in “toc.ncx” vengono elencate la suddivisioni logiche dell’eBook e quanto si ritiene possa essere di interesse del lettore o gli possa essere utile trovare e raggiungere direttamente.

La sintassi utilizzata è quella “XML”. Gli elementi previsti sono pochi e sono in relazione con quanto presente nel file “content.opf”.
Guardiamo quali sono gli elementi e le loro relazioni con “content.opf”.

La dichiarazione XML/NCX

<?xml version="1.0" encoding="UTF-8"?>
   <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/" version="2005-1">

<head>

<head>
   <meta name="dtb:uid" content="libro20100215"/>
   <meta name="dtb:depth" content="2"/>
   <meta name="dtb:totalPageCount" content="0"/>
   <meta name="dtb:maxPageNumber" content="0"/>
</head>

Il meta “dtb:uid” deve essere identico a quello “dc:identifier” contenuto nel file “content.opf”.
Il meta “dtb:depth” rappresenta il livello di nidificazione presente in questo file. Se elenchiamo solo i capitoli il valore è 1, mentre se elenchiamo anche un livello sottostante, ad esempio dei sottocapitoli, il livello è 2; se poi, all’interno dei sottocapitoli elenchiamo anche un terzo livello al loro interno, il valore è 3.
I meta “dtb:totalPageCount” e “dtb:maxPageNumber” sono obbligatori ma non hanno utilizzo, per cui possono essere inseriti con valore “0″.

La dichiarazione XML/NCX

<docTitle>
   <text>Titolo del libro</text>
</docTitle>

Questo elemento indica il titolo del libro.

<navMap>

Dentro “navMap” abbiamo la struttura che verrà mostrata ai lettori. Gli elementi che la compongono hanno una definizione ed una struttura precisa, che va rispettata. Non è possibile cambiare nome agli elementi o posizionarli in un modo diverso da quanto previsto dalle specifiche.
Gli elementi sono:

  • navPoint indica la singola voce dell’elenco, dell’indice del libro
  • playOrder come attributo di “navPoint” indica l’ordine della voce all’interno dell’indice
  • navLabel all’interno di “navPoint”, è il testo visualizzato come voce dell’indice
  • content all’interno di “navPoint”, è il nome del file relativo alla voce

<navPoint>

Con una serie di “navPoint” noi elenchiamo tutte le voci che devono apparire nell’indice e diamo tutti gli elementi perché il software od il reader possano visualizzarne il testo. La struttura del singolo “navPoint” deve essere questa:

<navPoint id="frontespizio" playOrder="1">
   <navLabel>
     <text>Frontespizio</text>
   </navLabel>
   <content src="frontespizio.xhtml"/>
</navPoint>

Ciascun “navPoint” deve fare riferimento ad un file, o ad una locazione interna di un file, dichiarato nella parte “manifest” del file “content.opf”. Per comodità, riportiamo qui la riga del file “content.opf” a cui si fa qui riferimento:

<manifest>
   ....
   <item id="frontespizio" href="frontespizio.xhtml" media-type="application/xhtml+xml"/>
   ....
</manifest>

L’attributo “id” di “navPoint” deve essere identico all’attributo “id” usato per l’elemento “item”. Le “id” devono essere uniche, cioè non devono esserci due “navPoint” con lo stesso “id”.
L’attributo “playOrder” indica la posizione nell’indice di questa voce. Con “1″, in questo caso, indichiamo che è la prima. Dopo questo “navPoint” ne scriveremo un altro ed avremo un valore “2″, e così via. La numerazione dei “navPoint” deve essere fatta in modo accurato e preciso, non devono esserci valori duplicati di “playOrder” né valori mancanti.
Dentro “navLabel”, contrassegnato dal tag “text”, scriviamo il testo che deve apparire come voce dell’indice, testo che sarà cliccabile da  parte del lettore.
L’elemento “content”, nel suo attributo “src”, indica il file associato a questa voce dell’indice. Il file deve essere quello indicato nel file “confent.opf” dall’attributo “href” che appare nello stesso elemento “item” di cui abbiamo riportato la “id”. In questo “navPoint” abbiamo indicato “frontespizio” come “id”. Nel file “content,opf” questa “id” si riferiva alla “href” del file “frontespizio.xhtml”, quindi dovremo indicare questo file nell’attributo “src” dell’elemento “content”.

Relazione fra "navPoint" e "item"

Relazione fra "navPoint" e "item"

Con questo “navPoint” otteniamo una voce di indice “Frontespizio” che, quando cliccata, farà apparire nel software o nel reader il testo contenuto dal file “frontespizio.xhtml”.

<navPoint> nidificati

La struttura dell’indice può avere più livelli, quindi possiamo inserire un “navPoint” dentro un altro “navPoint” per rappresentare una sottovoce dell’indice. Ad esempio, se dentro al “Capitolo 1″ abbiamo una parte contrassegnata in questo modo:

<div id="poesia">
   <p>Testo testo testo...

possiamo inserire nell’indice una sottovoce al “Capitolo 1″ che faccia riferimento a questa posizione all’interno del libro:

<navPoint id="cap1" playOrder="3">
   <navLabel>
     <text>Capitolo 1</text>
   </navLabel>
   <content src="chap01.xhtml"/>
   <navPoint id="poesia" playOrder="4">
      <navLabel>
         <text>Poesia</text>
      </navLabel>
      <content src="chap01.xhtml#poesia"/>
   </navPoint>
</navPoint>

Prima definiamo il “navPoint”, con “id”, “playOrder”, “navLabel” e “content” del Capitolo 1, che si riferisce al file “chap01.xhtml”. Quindi, prima di chiudere questo “navPoint”, ne apriamo un altro per la sottovoce.
L’attributo “id” della sottovoce dovrà essere comunque unica e non dovranno esservi “navPoint” con la stessa “id”. L’attributo “playOrder” dovrà essere in seguenza con il precedente (cioè con il “navPoint” che lo contiene, in questo esempio).
Nello scrivere lo “src” indicheremo la posizione interna al testo tramite il riferimento al “div” contenuto nel file, cioè “chap01.xhtml#poesia”. Il testo dopo “#” deve corrispondere ad un “id” all’interno del file, inserito come abbiamo visto sopra.

Corrispondenza fra “content.opf” e “toc.ncx”

Tutti i file citati, sia direttamente sia in una locazione interna, nel “toc.ncx” devono essere stati dichiarati nella parte “manifest” di “content.opf”. Non è consentito fare riferimento ad un file che non sia stato dichiarato. E’ possibile citare un file che non sia compreso nella parte “spine”, ma comunque il file deve essere stato dichiarato nel “manifest”.
Non siamo obbligati a citare nell’indice tutti i file contenuti nello “spine”, e viceversa. Nel caso in cui noi inseriamo in “toc.ncx” un file che non sia stato inserito nello “spine”, questo file non sarà visualizzato tramite lo scorrimento del libro con i pulsanti “pagina successiva” e “pagina precedente” del software o del reader, ma vi si potrà accedere solamente dall’indice. Nel caso in cui inseriamo un file nello “spine” ma non lo citiamo nell’indice, quel file sarà visualizzabile solo con i pulsanti di scorrimento, ma non sarà raggiungibile dall’indice.

Chiusura

   </navMap>
</ncx>

Come indica XML, tutte le tag devono essere chiuse e quindi alla fine del file vengono chiuse la tag “navMap” e “ncx”.

Avvertenze

Anche in questo file è importantissimo fare attenzione alle lettere accentate. Queste non vanno mai usate negli “id”, “docTitle” o “navLabel” e vanno sostituite da un apposito codice.
Lettere accentate o caratteri speciali devono essere indicati nella forma Unicode decimale, ad esempio “&#0224;”, o esadecimale, ad esempio “&#xe0;”, per la “à”, oppure in una particolare forma che vede la “&” ulteriormente codificata. Ad esempio, se abbiamo una “à” rappresentata dal codice “&agrave;”, questo deve diventare “&amp;agrave”. Se nel titolo dell’eBook è presente la parola “felicità”, questa dovrà diventare “felicit&amp;agrave;” nel “docTitle”.
Non è possibile usare i codici delle lettere accentate e simboli speciali usati nell’HTML, di questi con XML è possibile usare solamente:  & “&amp;”, < ” &lt;”, > “&gt;”, ” “&quot;” e ‘ “&apos;”. Tutte le altre lettere accentate o caratteri speciali presenti nella forma esplicita “à” o codificata “&agrave;” producono un errore.

Nel preparare il file “toc.ncx” con la sua serie di “navPoint”, è molto probabile che facciamo copia e incolla di un singolo o di più “navPoint” e che poi ne cambiamo il contenuto, per aggiungerne di nuovi. In questo caso è necessario che, alla fine del lavoro, esaminiate i “navPoint” per accertarsi che l’ordine dei “playOrder” sia corretto e che non vi siano “id” uguali.


Leggi:



Vuoi pubblicare un libro in eBook e venderlo online?
Sei un autore od un editore che vuole pubblicare uno o più eBook e vendere su Amazon o su qualche altra libreria online? Vuoi farli leggere sul Kindle o sugli altri reader? Non sai come fare tecnicamente?
Se sei un editore abbiamo un servizio di pubblicazione di eBook in outsourcing per te.
Se sei un autore ti proponiamo una offerta speciale: per soli €50.00 (più iva) trasformiamo il tuo libro in un eBook nel formato di tua scelta (Kindle, ePub) in modo professionale e pronto per essere utilizzato.
Leggi la nostra proposta per gli editori e per gli autori o .


2 commenti »

  • Giancarlo ha scritto:

    Molto utile per me questo articolo.
    Grazie.

  • Paola ha scritto:

    Grazie all’autore di questa guida, molto chiara e ben scritta!

Scrivi il tuo commento

Add your comment below, or trackback from your own site. You can also subscribe to these comments via RSS.

Be nice. Keep it clean. Stay on topic. No spam.

|