giovedì 1 dicembre 2011

Inserire link in un Epub con Sigil

Questo è un argomento che ho già affrontato in alcuni commenti all’articolo sull’uso di Sigil, ma che probabilmente merita una discussione tutta sua, anche per aggirare i limiti imposti da un commento. È piuttosto difficile inserire codice con una formattazione decente, in un commento... A ogni modo, vediamo di procedere con la spiegazione.
Inserire link all’interno di una pagina in HTML è un’azione estremamente semplice. Il tag da usare è il tag <a> e al suo interno va indicato l’indirizzo a cui i link dovrà portare. Racchiudiamo una parola tra il tag di apertura <a> e il tag di chiusura </a> e avremo ottenuto il nostro link.
<a href="indirizzo da raggiungere">parole da cliccare</a>
Prima dell’inizio della malaugurata era dei programmi wysiwyg (what you see is what you get), quando il codice HTML si inseriva a mano e non cliccando un pulsante colorato, chiunque producesse una pagina web conosceva questo e mille altri tag. Adesso non è detto che li si conosca ancora. A ogni modo, in HTML un link si crea così.
Gli Epub, però, non sono realizzati in HTML, ma in XHTML: un linguaggio molto simile, ma non identico. Nel caso di un link a un sito web, il tag <a> funzionerà benissimo e potremo usarlo senza problemi. Se dunque vogliamo inserire nel nostro Epub un link che rimandi per esempio a Wikipedia, o a qualsiasi altra pagina web, basterà utilizzare il formato che abbiamo visto in precedenza.
Apriamo dunque il nostro Epub con Sigil, che al momento è l’unico programma a permetterci di modificare la struttura di un Epub in modo indolore, e cerchiamo il punto in cui dovremo mettere il nostro link. Clicchiamo poi sul pulsante Code View, cioè quello coi simbolo < >. Visualizzeremo il codice XHTML della pagina del nostro Epub. Apparirà qualcosa di questo tipo:

Può essere inquietante, se non siamo abituati al linguaggio, ma non è poi così terribile. Giusto per dare qualche punto di orientamento, due parole rapide sulla struttura di una pagina XHTML. Di base, una pagina è composta così:

<div class="testo">
<h2>Capitolo 1</h2>
   <div class="corpo-capitolo">
     <p>Testo del paragrafo</p>
     <p>Testo del paragrafo</p>
     <p>Testo del paragrafo</p>
     <p>Testo del paragrafo</p>
   </div>
<h2>Capitolo 2</h2>
   <div class="corpo-capitolo">
     <p>Testo del paragrafo</p>
     <p>Testo del paragrafo</p>
     <p>Testo del paragrafo</p>
   </div>
</div>

Eccetera. Il corpo di ogni capitolo è racchiuso tra i tag <div> e </div>, mentre il corpo di ogni paragrafo è racchiuso tra i tag <p> e </p>. Tutto ciò non serve al fine di inserire un semplice link, ma può essere d’aiuto per non perdersi mentre cerchiamo il punto in cui mettere il nostro link. Una volta individuato, basterà usare la struttura che abbiamo già descritto, ossia:
<a href="indirizzo del sito da raggiungere">parole da cliccare</a>
Come indirizzo, usate la forma completa, ossia http:// eccetera.

Se invece vogliamo creare un link interno al nostro Epub, per esempio il link a una nota a fine pagina, dovremo utilizzare un sistema leggermente diverso. Prima di tutto, infatti, dobbiamo fissare il punto di arrivo del nostro link: nel caso di una nota, il punto di arrivo sarà l’inizio della nota. Cerchiamolo all’interno del codice. In quel punto dovremo inserire un riferimento, che servirà poi a dire al nostro link quale parte della pagina dovrà aprire.
Se nel punto di inizio della nota c’è già un tag <div>, allora possiamo modificare quello, altrimenti dovremo inserire un tag <span> nel punto iniziale. Per esempio,
<span id="nota1">1- Inizio della nota</span>.
Lo id è il “nome” della nota, ossia il nome della porzione di testo che sarà raggiunta dal link. Possiamo mettere qualsiasi nome, l’importante è che sia unico: nel caso delle note, una soluzione molto semplice è inserire un nome progressivo, come “nota1”, “nota2” e così via, finché ce ne sono.
Usando invece un tag <div> già esistente, dovremo solo aggiungere lo id, ottenendo quindi un codice di questo tipo:
<div ... id="nota1">
dove i puntini di sospensione indicano eventuali altre specifiche del tag (ad esempio, class).
Dopo aver fissato il punto di arrivo, dovremo fissare il punto di partenza. Spostiamoci dunque nella parte di pagina in cui vogliamo inserire il link e scegliamo la parola che dovrà portare il link, ossia la parola da cliccare per rimandare alla nota. Attorno a quella parola dovremo costruire di nuovo il nostro amico tag <a>, che stavolta assumerà questo aspetto:
<a href="#nota1">parola col link</a>
Come vedete, al posto dell’indirizzo di un sito web, stavolta abbiamo inserito il nome della nota, preceduto dal simbolo #. Se la nota si trova nello stesso file del link, questo funzionerà benissimo; se la nota si trova in un altro file, ma sempre all’interno del nostro Epub, allora dovremo cambiare il testo dello href e inserire href="nomedelfile.xhtml#nota1". Al posto di “nomedelfile”, ovviamente, dovremo mettere il nome del file, mentre l’estensione può essere .xhtml o anche .xhtm. In ogni caso, il nome esatto del file lo potete leggere nell’intestazione della finestra, se la aprite con Sigil.

19 commenti:

  1. Grazie!

    ottima guida,è stata molto utile per inserire le note in un file epub

    RispondiElimina
  2. ma si potrebbero inserire video e mp3? ho notato che le jpeg e gif si , le ho inserite nel mio ipad e funzionavano benissimo.
    vorrei fare un lavoretto molto lungo :/

    RispondiElimina
    Risposte
    1. Con lo standard dello EPUB3 dovrebbero essere supportati meglio, ma bisogna vedere quando sarà adottato: già non si è accorto quasi nessuno dello EPUB2...
      A ogni modo, puoi dare una occhiata a questa pagina:
      http://www.ebooklearn.com/ebooklab/
      Troverai alcuni esempi e un po' di teoria su come realizzare un epub multimediale, coi mezzi attualmente a disposizione.

      Elimina
  3. Vorrei realizzare un ePub partendo da una ventina di files html di cui uno e' l'index.htm (che contiene l'indice con i titoli dei capitoli ed i link http:\\...) e gli altri sono i vari capitoli veri e propri. Il tutto è gia' stato scaricato da internet (usando programmi del tipo HTTrack Website Copier o TeleportPro) e mantiene la sua struttura con collegamenti non interrotti. Come posso fare senza perdere un sacco di tempo? Esistono comandi o scorciatoie di importtazione del sito downlodato? Grazie

    RispondiElimina
    Risposte
    1. Sigil serve prima di tutto per modificare un Epub già esistente; può anche essere utilizzato per creare un Epub da zero, partendo da uno o più file HTML, ma per ottenere un risultato soddisfacente potresti dover trafficare un poco col codice delle varie pagine.
      A ogni modo, se hai già scaricato tutte le pagine HTML, puoi avviare Sigil, aprire la prima pagina HTML e poi aggiungere nella stessa cartella tutte le altre: per farlo, nella barra di sinistra (Naviga tra i libri) clicca col tasto destro sulla cartella "Testo" e scegli "Aggiungi file esistenti", così potrai importare tutte le altre pagine. Se le hai salvate tutte in una cartella, diventa molto più semplice, perché le potrai importare in un colpo solo, selezionandole tutte (tieni premuto SHIFT per una selezione multipla). Non ci sono però funzioni per importare da siti o da altro: puoi aprire con Sigil solo quello che è già sul tuo computer, oppure su dispositivi connessi al computer (chiavette, dischi esterni, eccetera): non ha gestori di download incorporati, insomma.
      Ti resterà poi da sistemare (eventualmente) la formattazione delle pagine, se non ti soddisfa o se non funziona, ma qui puoi procedere per tentativi. Prova subito a generare il TOC, giusto per studiare la struttura delle pagine e vedere se capitoli e sottocapitoli sono formattati in modo corretto, così avrai un punto da cui partire col lavoro. A seconda di come è strutturato l'indice, potresti anche dover modificare i link agli altri capitoli, ma ti conviene prima produrre un Epub (basta salvare il tuo lavoro e Sigil realizzerà automaticamente un Epub, se lavori con files HTML), per poter studiare meglio cosa e come modificarlo. Se sono stati utilizzati correttamente gli headers per segnalare i titoli di capitoli e sottocapitoli, la struttura dovrebbe rimanere invariata; se non lo sono stati, dovrai aggiustarli tu.

      Elimina
  4. Ho provato seguendo le tue direttive ed effettivamente son riuscito ad ottenere un file unico. Permangono pero' alcuni errori e/o inestetismi abbastanza gravi che non riesco a correggere. Gradirei spedirti per mail il file (è molto leggero) così da sottoportelo. Se tu vuoi, puoi mandarmi una mail all'indirizzo bdkwvme@monmail.fr.nf
    Grazie comunque per l'interessamento.

    RispondiElimina
  5. Tutto chiaro... avrei però un'altra domanda:
    dall'interno di libro1.epub posso linkare startlibro2.xhtml contenuto all'interno di libro2.epub?
    supponiampo che libro1.epub e libro2.epub siano nella stessa cartella del reader.....
    potresti fornirmi un esempio???

    grazie tantissime,
    Fulvio

    RispondiElimina
    Risposte
    1. In teoria lo potresti anche fare, ma in pratica quasi nessun lettore interpreterà correttamente il link. Se vuoi mettere un link a un altro EPUB, contenuto nella stessa cartella, puoi usare un link del tipo < a href="../../../Secondo_libro.epub" > (questo non rimanda a una pagina specifica, ma solo al libro intero), ma il lettore, invece di aprire il libro, lo interpreterà come un link per il download e lo scaricherà, portandoti così ad avere un doppione nella stessa cartella. Raggiungere una pagina specifica all'interno del secondo libro, poi, è ancora più complicato e di solito si conclude in modo simile: il lettore cercherà di aprire il link, come se fosse indirizzato alla pagina di un sito Web, invece che alla pagina del libro.
      Non escludo che sia possibile trovare soluzioni calibrate su un determinato modello di lettore, ma al momento non conosco soluzioni che possano funzionare sempre e comunque.

      Elimina
  6. Grazie, ricevuto forte e chiaro.
    Ho provato a fare come hai suggerito sul Sony PRS-T1 ed il link non viene effettuato, nemmeno utilizzando altre varianti per il link relativo (entrando nelle cartelle contenute nell'epub, ad esempio).
    Evidentemente il lettore di epub non funziona esattamente come un browser, seppure nell'epub vi siano dei files html.
    Grazie per la cortese ed esauriente risposta.
    Fulvio

    RispondiElimina
    Risposte
    1. Un file EPUB ha una struttura molto simile a un sito, ma con una differenza: è compresso. Di fatto, lo si può considerare come un sito "zippato". A impedire i link da un libro all'altro, al momento, è proprio la natura compressa dello EPUB: è più o meno come cercare di linkare tra loro due files, che si trovano in due diverse cartelle ZIP, operazione che i lettori di e-book, al momento, non riescono a eseguire.

      Elimina
  7. Ciao!

    Con Sigil ho deciso di modificare l'indirizzo di un sito web all'interno dell'epub. Dopo la conversione in MOBI, continua ad apparirmi il vecchio indirizzo, mentre nel file epub il sito da raggiungere è effettivamente cambiato.
    Forse non basta indicare il nuovo indirizzo? Devo modificare qualcosa nel opf o nel foglio di stile?
    Non capisco perché nel file mobi resta il link vecchio, pur avendo convertito il file epub (con l'indirizzo giusto) con Calibre.

    Grazie mille

    RispondiElimina
    Risposte
    1. Prova a cancellare lo ebook da Calibre, rimuovendo se necessario anche la cartella del libro, che ha creato da qualche parte sul disco (di solito tra i tuoi Documenti, in una cartella del tipo "Calibre/NomeAutore/TitoloLibro"). Dopo averlo cancellato, importalo di nuovo con Calibre e procedi con la conversione: l'impressione è che continui a prenderti la vecchia copia, invece della nuova, ma cancellando e importando di nuovo il libro lo dovresti costringere a usare la nuova versione, che gli piaccia o no.

      Elimina
  8. Ciao a tutti!
    Io ho un problema con i link interni, vorrei cioè rimandare a un'altra pagina dello stesso testo. Parto da un file Indd e non funziona mettere un hiperlink a una pagina. Qualcuno può aiutarmi?

    RispondiElimina
    Risposte
    1. Il link deve collegare due files diversi, ma all'interno dello stesso EPUB, oppure deve collegare due punti dello stesso file?
      Se devi collegare due files diversi, ad esempio Pagina1.xhtml e Pagina2.xhtml, la soluzione è facile: seleziona il testo su cui si dovrà trovare il link (una o più parole, di solito), poi clicca sulla icona a forma di catena, nella barra degli strumenti di Sigil, e scegli la pagina a cui deve portare, nella lista che appare tra gli "Obiettivi nel Libro".
      Se devi collegare due punti nello stesso file, seleziona prima di tutto il punto di arrivo del link, clicca sulla icona a forma di ancora e assegnagli uno ID, ossia un nome. Seleziona poi il punto in cui si troverà il link, clicca sulla icona a forma di catena e, tra gli "Obiettivi nel Libro", scegli il nome che avevi assegnato al punto di arrivo: avrà un # davanti.
      Se tutto questo non funziona, quale è di preciso l'errore che ti segnala? Oppure, in quale modo non funziona (il link non dà segni di vita, rimanda a una pagina diversa, dà un messaggio di errore, eccetera)?

      Elimina
  9. Scusa, non mi sono spiegata. Il link è a una pagina web, e creandolo da Indesign non funziona (è l'unico tra tutti i link).

    RispondiElimina
    Risposte
    1. Quindi un link che dal libro porta a una pagina web esterna. Cliccando quel link, la nuova pagina non si apre, oppure dà qualche tipo di messaggio di errore? Giusto per capire quale sia il problema.
      Aprendo lo EPUB con Sigil, puoi passare alla "Vista codice" e guardare come sia stato reso in HTML quel link non funzionante: è possibile che ci sia un errore anche all'apparenza insignificante, come l'assenza dello "http://" davanti al link, all'interno del suo tag...

      Elimina
    2. Avevi ragione! ci ho perso un sacco di tempo ed era una stupidata:c'erano 3 slash!
      Per capire come funziona ho provato a creare un link a una pagina dello stesso file come mi avevi spiegato, e la pagina di arrivo, le parole a cui ho dato l'Id si colorano come il link. perchè? e come faccio a cambiarle?

      Elimina
    3. Le parole che hanno soltanto un'ancora non dovrebbero apparire colorate, a differenza di quelle che hanno un link cliccabile... a meno che non possiedano anche una classe, utilizzata poi dal foglio di stile per decorare il testo. Se hai scelto ad esempio di decorare tutti i tag < a> in un determinato modo, allora saranno decorate così anche i tag-ancora, non soltanto i link.

      Elimina