En relation avec le post Installation de Calibre serveur sous Linux, il me semble naturel d’évoquer les epubs.
En effet, Calibre permet tout à la fois de gérer sa bibliothèque numérique (dans de multiples format), activer un serveur qui permet une mise à disposition de celle-ci, convertir d’un format vers un autre et aussi créer ou modifier un fichier epub.
C’est sur ce dernier point que je souhaite m’attarder.
Dernièrement, j’ai commencer à lire un livre que j’avais récupéré sur le net. Mais quelle ne fut pas ma surprise de constater que la mise en page était plus que mauvaise, des numéros de pages (xx/yyy) apparaissaient en plein milieu du texte, des mots étaient coupés (césure) en plein milieu du texte, des paragraphes étaient éclatés en plusieurs, les numéros des chapitres étaient perdus au milieu du texte… et la table des matière était inexploitable.
Si je souhaitais que ma femme puisse lire ce livre de façon agréable, il ne me restait plus qu’à « mettre les mains dans le cambouis ».
J’utilisais donc la possibilité d’édition d’un epub offerte par calibre (très complète à ce que j’ai vu).
Ce n’est rien de plus qu’un fichier compressé contenant :
Pour commercer mon travail de remise en forme, j’ai jeter un œil au fichier des règles CSS. J’y ai trouvé plus d’une dizaine de règles telle que :
Mais par contre aucune règle ne contenant :
Bref, si je voulais avoir un epub « propre » un gros boulot m’attendais.
L’une des premières ligne de texte que je vis avait cet aspect :
<p class="classe2"> <i class="classe3">xxxx</i>
<i class="classe3">xxx. </i></p>
<p class="classe2"/>
Un coup d’œil au CSS donnait les règles suivantes pour ces classes :
.classe2 {
display: block;
margin-bottom: 1em;
margin-left: 0;
margin-right: 0;
margin-top: 1em
}
.classe3 {
font-style: italic
}
Sans être un spécialiste en html et CSS, la règle .classe3
m’apparu comme stupide.
Elle est en effet redondante avec l’utilisation de la balise <i></i>
et est donc inutile.
Un « rechercher et remplacer » de class="classe3"
dans tous les fichiers html permis de supprimer cette redondance.
Un parcours rapide des différents fichiers html m’indiqua que tout les paragraphes utilisaient class="classe2"
.
Autant remplacer <p class="classe2">
par <p>
et affecter une mise en forme par défaut à <p>
.
En dehors d’un besoin très ponctuel, le nombre de style dont on peut avoir besoin pour un livre est très limité.
Voici celui que j’ai créé :
body {
font-family: serif;
}
h1, h2 {
font-weight: bold;
font-size: xx-large;
page-break-before: always;
text-align: center;
margin-top: 8ex;
margin-bottom: 3ex;
}
h1.ligne2 {
font-variant-caps: small-caps;
page-break-before: avoid;
margin-top: 3ex;
}
h2 {
font-size: x-large;
margin-top: 5ex;
}
p {
display: block;
font-size: medium;
margin: 0;
page-break-after: avoid;
text-align: justify;
text-indent: 1.25em;
}
p.oblique {
font-style: oblique;
}
Lorsque l’on utilise des feuilles de style CSS, il ne faut pas oublier que les balises héritent des attributs des balises parentes.
Ainsi, attribuer le choix de police à la balise body
assure que toutes les balises en héritent. Et donc que la même police est utilisée dans tout le document, sauf cas spécifique.
En affectant le choix de la police à cette balise on s’assure que tout le fichier utilisera la même police.
Ce qui est plus agréable pour le lecteur.
Certains préféreront utiliser une police de type sans-serif, chacun ses préférences.
Dans le livre sur lequel je travaillais, les parties avaient ce format :
I
titre du chapitre
J’ai donc eu besoin de créer 2 styles distincts.
Elle est utilisée pour les titres des chapitres.
On obtient ainsi :
Partie I
Chapitre 1
Chapitre 2
…
Elle permet de mettre les paragraphes en forme en ayant à la fois une indentation de la première ligne (text-indent: 1.25em
), aucun espacement inter-paragraphes (margin:0
) et une justification (text-align: justify
).
Le nettoyage des fichiers html sources des class="classe2"
au niveau des paragraphes qui rendent difficile la lecture, la recherche des numéros de pages cachés au sein des paragraphes et des coupures (césure) de mots en plein milieu du texte a été la partie la plus longue.
Mais le résultat est un fichier parfaitement lisible et surtout agréable à lire. Ce qui est le plus important dans un epub je pense.
Calibre possède une option qui permet de générer une table des matières à partir des balises de titre que sont h1 … hx
.
Je n’ai donc pas hésité à supprimer l’ancienne table pour en recréer une.
Le résultat est parfaitement fonctionnel.
Cette mésaventure m’a permis de me pencher sur la structure interne des fichiers epub, même s’il me reste quelques petites choses à approfondir.
En quelques heures, j’ai réussi à obtenir un epub propre et lisible.
Je me garde en réserve la feuille de style CSS qui pourra toujours me servir de nouveau pour le même travail.
Au final je suis content du temps passé car cela m’a permis d’enrichir mes connaissances en CSS et de découvrir des fonctionnalités de Calibre qui sont bien utiles pour réparer ou corriger des epub corrompus ou mal finis.
Commentaires