Come lavoriamo gli ebook: il formato Ebook Markdown
postato Ottobre 25th, 2016 in Delos Books, Whatever, ebook | 5 commenti »
Delos Digital pubblica decine di ebook al mese, centinaia all’anno. Con questi ritmi, la lavorazione dei testi deve essere ottimizzata senza perdersi in banalità tecniche che facciano perdere tempo. Ecco che allora uno può chiedersi: ma qual è il formato finale sul quale si lavora per gli ultimi ritocchi alla formattazione e all’impaginazione?
Nei primi tempi lavoravamo su un file xhtml. Il file del testo originale, in formato .doc, .docx, .rtf o altri, veniva convertito in xhtml e quindi lavorato. Ma era macchinoso, ogni modifica richiedeva la scrittura più o meno manuale di tag html, sempre col rischio di fare errori.
Il formato che utilizziamo oggi è un’estensione del Markdown. Markdown è un linguaggio di formattazione molto semplice, elastico e intuitivo, fatto per lavorare testi formattati direttamente a mano, con un qualsiasi editor di testo.
Lo si impara rapidamente perché le regole sono semplici. Per esempio, per indicare che una parola è in corsivo la si mette tra trattini bassi: _sono in corsivo_. Per il grassetto la soluzione è simile: **sono in grassetto**.
I titoli, che in html sono indicati con tag come <h1>, <h2>, <h3>, in markdown vengono rappresentati da una riga preceduta da uno o più cancelletti:
# Sono un titolo di capitolo
## Sono un titoletto di secondo livello
### Sono un titoletto di terzo livello
Una lista puntata viene inserita molto semplicemente usando degli asterischi, es.
* uno
* due
* tre
che in html diventa
<ul>
<li>uno</li>
<li>due</li>
<li>tre</li>
</ul>
e sulla pagina
- uno
- due
- tre
Nel markdown standard questo è possibile anche usando il trattino al posto dell’asterisco; ma poiché noi facciamo ebook di narrariva, e di solito tante righe precedute dal trattino non sono una lista ma un dialogo serrato tra personaggi di un racconto, abbiamo rimosso questa opzione.
Altre semplici formulette sono disponibili per fare le tabelle, o addirittura le note.
Quindi, d’accordo per i titoli. Ma in un testo non ci sono solo titoli. Potremmo aver bisogno per esempio di mettere una riga in carattere monospaziato, come quello dei computer, perché l’autore vuole rappresentare proprio il codice di un computer. Allora abbiamo introdotto, adottando una soluzione simile ad altre versioni estese del markdown, la sintassi
.nomeclasse
Per restare col nostro esempio, avremo la riga
Please enter password .code
che verrà convertita nell’html
<p class=”code”>Please enter password</p>
E sulla pagina
Please enter password
Con lo stesso metodo anche ai titoli possono essere assegnate classi. Per esempio, se con “#” indichiamo i normali capitoli, le “parti”, che dovrebbero avere un’evidenza particolare, saranno rese così:
# Parte prima .parte
La classe è indicata con un punto seguito dal nome della classe (la stessa sintassi usata nei file css). Ovviamente deve esistere: ne abbiamo una discreta collezione per ogni genere di necessità che abbiamo incontrato fino a oggi, anche se ogni tanto ne aggiungiamo una nuova.
Cerchiamo, nei limiti del possibile, di usare classi che non definiscano l’aspetto ma la funzione. Quindi per esempio una poesia la rappresentiamo con la classe “.poesia”, non “.corsivo”; un cartello con scritto “vietato l’accesso” lo renderemo con
Vietato l’accesso .cartello
e non
Vietato l’accesso .maiuscolocentrato
In questo modo, a seconda del design della collana, le stesse cose potranno essere rappresentate in modo diverso.
Certo un minimo di attenzione bisogna farla; per esempio, abbiamo uno stile .lettera che di solito rappresenta il testo in caratteri simili a quelli di una macchina per scrivere. Se il racconto è ambientato nel passato, è preferibile usare lo stile .calligrafia, no?
Ma se il testo a cui assegnare una classe è composto di più righe? Se quindi la classe va assegnata a un intero blocco?
Per esempio, la classica citazione all’inizio del racconto:
Ciò che noi chiamiamo con il nome di rosa, anche se lo chiamassimo con un altro nome, serberebbe pur sempre lo stesso dolce profumo
William Shakespeare
In html, che è il formato interno usato dall’ebook, questo brano dovrà diventare qualcosa come:
<div class=”citazione”>
<p>Ciò che noi chiamiamo con il nome di rosa, anche se lo chiamassimo con un altro nome, serberebbe pur sempre lo stesso dolce profumo</p>
<p class=”fonte”>William Shakespeare</p>
</div>
Per ottenere questo tipo di formattazione abbiamo introdotto nella nostra versione di markdown il concetto di “blocchi”, ai quali viene assegnata la classe indicandola nello stesso modo descritto prima, così:
{
Ciò che noi chiamiamo con il nome di rosa, anche se lo chiamassimo con un altro nome, serberebbe pur sempre lo stesso dolce profumo
William Shakespeare .fonte
} .citazione
Il nostro interprete riconosce le righe contenenti { e } come inizio e fine di un blocco. Al quale viene assegnata la classe che viene trovata dopo { o dopo }.
Lavorando quasi sempre con racconti, abbiamo creato anche qualche piccola scorciatoia per facilitarci le cose. Per esempio,
@ Milano, 23 ottobre
è una scorciatoia per scrivere
## Milano, 23 ottobre .dovequando
dove “dovequando” è la classe che usiamo per queste righe che, nei racconti, danno un’indicazione del tempo e/o del luogo dell’azione.
Alla fine dei racconti inseriamo un
###
che sta per
## Fine
mentre un semplice
***
viene convertito in
* * * .stelle
che è uno stile che formatta nel modo più adeguato i tre asterischi separatori.
Lavorare su un testo markdown è facile, chiaro, veloce. Arrivo a dire che probabilmente sarebbe un formato adatto anche per gli scrittori, perché dà una visione della semantica del documento a colpo d’occhio, esplicita e non mediata dai formati grafici; inoltre il testo è puro e questo facilità ricerche e sostituzioni.
Una volta che il testo markdown è a posto, i nostri script provvedono a convertirlo in html, creare tutte le pagine e i file di supporto ricevendo i dati da un database, e a produrre l’ebook pronto per la distribuzione.
Prima o poi metterò il codice che converte il nostro markdown in html su GitHub, con licenza open source. Per il momento ci sono ancora cosette da sistemare e preferisco evitare; se qualcuno è interessato però mi può scrivere. Lo girerò volentieri, con l’avvertenza che si tratta solo di una classe che va montata in un programmino che faccia il resto del lavoro.