Journal Plouf, plouf, plouf, c’est toi qui fera mieux de l’epub

20
20
sept.
2022

Salut les gens et les autres,

suite à ce commentaire dans la dépêche sur la sortie de LibreOffice 7.4, je me suis livrée à des tests (et à la rédaction d’un tutoriel) avec les trois logiciels dont je dispose pour générer des fichiers epub.

On a, à ma gauche, Writer de LibreOffice, avantage, c’est dedans (le logiciel je veux dire, rien à rajouter, mais, enfin voilà quoi), au milieu Writer2xhtml, une extension de LibreOffice (ici version beta 1.7, la version sur le dépôt des extensions de LibreOffice ne fonctionne pas avec la 7.4), à ma droite Calibre. Le visualiseur est Fbreader.

Trois versions d’EPUB

Oui, celui qui rend le mieux la structure du document, c’est Writer2xhtml.

Un peu de code

Si vous voulez voir un bout de code (enfin trois).

EPUB généré par LibreOffice

<body class="body0">
<p class="para1"><span class="span1">Sucré</span></p>
<p class="para2"><span class="span2">Tarte aux pommes</span></p>
<p class="para3"><span class="span3">Pommes bien coupées</span></p>
<p class="para3"><span class="span3">Sur pâte brisée jetées</span></p>
<p class="para3"><span class="span3">Au four sont cuites</span></p>
<p class="para2"><span class="span2">Compote de fruits</span></p>
<p class="para3"><span class="span3">Laver, éplucher</span></p>
<p class="para3"><span class="span3">Couper, dans casserole</span></p>
<p class="para3"><span class="span3">Ajouter eau et cuire</span></p>
</body>

C’est cracra. Et en plus (c’est pas sur le bout de code), mais il n’a même pas pris le titre du document.

EPUB généré par Writer2xhtml

 <body dir="ltr">
    <p class="Heading">Recettes en haïku générées par Writer2html</p>
    <h1 id="toc0">Salé</h1>
    <h2 id="toc1">Chicons braisés</h2>
    <p class="texteintro">Braiser les chicons</p>
    <p class="texteintro">Huile, sel, poêle, lardons</p>
    <p class="texteintro">C’est tout et c’est bon</p>
    <h2 id="toc2">Riz pilaf</h2>
    <p class="texteintro">Du riz bien rincé</p>
    <p class="texteintro">Doré, huile et oignon</p>
    <p class="texteintro">Eau deux et demi</p>
    <h2 id="toc3">Soupe de légumes</h2>
    <p class="texteintro">Légume, deux tiers</p>
    <p class="texteintro">Patates un tiers, eau, sel</p>
    <p class="texteintro">Cuire, crème, mixer</p>
    <h2 id="toc4">Frites</h2>

Il reprend très fidèlement les styles du fichier.

Et enfin version Calibre :

  <body class="calibre1">
<h1 class="p-p1" id="calibre_pb_0">Salé<a id="anchor001" class="calibre"></a></h1>
<h2 class="calibre3">Chicons braisés<a id="anchor002" class="calibre"></a></h2>
<p class="p-texte_20_intro">Braiser les chicons</p>
<p class="p-texte_20_intro">Huile, sel, poêle, lardons</p>
<p class="p-texte_20_intro">C’est tout et c’est bon</p>
</body>

Soit c’est moi (possible), soit c’est Calibre, mais j’ai autant de pages que de titre 2 (h2).

Le fichier martyre et autres considérations

Vous trouverez le fichier test en téléchargement ainsi que la version pdf. J’ai également copié-collé les recettes dans le journal qui m’a donné l’idée (pas du tutoriel mais celle de faire des recettes en haïkus), il est basé sur ce modèle de CV aussi pour montrer qu’on peut utiliser ces modèles pour autre chose, et parce que j’avais la flemme de faire une mise en forme particulière.

En me livrant à ce petit jeu, j’ai travaillé sur d’autres documents pour voir ce qui se passait. En effet, ces recettes en haïku, c’est un petit fichier de deux pages sans illustration, ni notes. J’ai essayé de passer mon guide SPIP 4 : vu du côté de la rédaction. Calibre, à chaque fois n’a pas pu faire le boulot. J’ai un autre document similaire, même résultat. Similaire, vraiment. Ce sont deux documents longs, que j’ai commencé il y a quelques années, sous Windows, avec pas mal d’illustrations in et hors texte, et ça coince quoi. Je pense que le xml derrière doit être bien sale.

Une autre chose que j’ai constaté, c’est qu’il y a vraiment un problème avec les puces. Writer2xhtml ne fait pas mieux que les autres. J’ai systématiquement la puce sur une ligne, le texte associé à la puce sur la ligne du dessous. Peut-être (à vérifier) faudrait-il que les puces ne soient pas suivies de tabulations.

Un genre d’appel à l’aide

Si vous avez sous la main des CSS pour EPUB qui fonctionnent au petit poil, je suis ultrapreneuse, merci d’avance. Si vous n’en avez pas j’essaierai de ne pas trop vous en vouloir (je devrais y arriver, je pense, avec beaucoup de persévérance).

Si vous m’avez lue jusque-là, bravo.

  • # C'est un chanteur qui rentre dans l'EPUB

    Posté par  (site web personnel) . Évalué à 10.

    🎼 Écoute un peu ton core, ♪
    🎼 Il t'apprends le CSS ! ♪
    🎼 Que désire ton WAN ? ♪
    🎼 Surtout pas de JS ! ♪

    🎼 Dieu a voulu coder, ♪
    🎼 C'est pour ça qu'il t'a fait, ♪
    🎼 Avec des tags pratiques, ♪
    🎼 Ça c'est du sémantique ! ♪

    🎼 Suis moi là! ♪
    🎼 Tout n'est qu'ordre et beauté, ♪
    🎼 Luxe, calme et W3C, ♪
    🎼 Redonne un sens à ta vie, ♪
    🎼 En y mettant de la po-é-sie ! ♪

    Le post ci-dessus est une grosse connerie, ne le lisez pas sérieusement.

  • # Pandoc

    Posté par  . Évalué à 5.

    Un peu hors-sujet, mais par curiosité, j'ai regardé ce que ça donne avec pandoc, et il met des blockquote de partout. Il y ajoute aussi des section:

    <h1 data-number="3">Pâtes</h1>
    <section id="pâte-brisée" class="level2" data-number="3.1">
    <h2 data-number="3.1">Pâte brisée</h2>
    <blockquote>
    <p>Farine, beurre</p>
    </blockquote>
    <blockquote>
    <p>Mélanger et bien pétrir</p>
    </blockquote>
    <blockquote>
    <p>Eau si nécessaire</p>
    </blockquote>
    </section>
    

    La commande qui va bien:
    pandoc recettes_en_haiku.odt -t epub -s -o recettes.epub

    • [^] # Re: Pandoc

      Posté par  . Évalué à 4.

      Bonjour,

      j'utilise Sigil pour rédiger mes epubs. Alors, pas wysiwyg comme Writer mais super efficace.

      C'est dans les dépots Debian.

      Ma chaîne de rédaction est la suivante : écriture du document avec Docbook (là, j'utilise le logiciel propiétaire dument payé oXygen). Je génère le pdf "quivabien".

      Ensuite, j'utilise xslRNG (la nouvelle version des processeurs xslt, dispo sur github) pour générer l'html.

      J'importe le html dans Sigil pour faire mes epubs.

      Pour certains documents, j'utilise pandoc (génération de markdown par exemple)

      Bonne journée.

      Eric

      exemple de document pdf génére (cours de chinois anglais/chinois (pinyin et hanzi) : FSI Chinese; c'est un “work in progress” (il y a plus de 1400 pages à numériser … et je fais le travail seul)

      • [^] # Re: Pandoc

        Posté par  . Évalué à 5.

        il n'est pas évident de publier sous divers formats, web, pdf, etc… Le web et epub sont assez proches, mais le fait de vouloir avec une présentation "adaptée" pour l'impression, en passant par le PDF, rend la chose compliquée, encore que cela dépend du type de document final. Pour des documents assez formatés / linéaires, comme tes cours, ça peut aller, mais pour un document avec le besoin d'avoir des illustrations ponctuelles, des tableaux, de diverses tailles, ça complexifie.

        J'utilise un langage de balisage léger, que ça soit pandoc, docbook ou txt2tags le problème restera le même : comment prendre en compte les cas particuliers ? Pour ma part je m'en accomode, préférant utiliser un langage que je trouve pratique et rapide plutôt qu'un outil graphique comme libreoffice.

        Pour en revenir à la question initiale, en exportant avec writer2xhml le fichier de recettes en haïku, les titres sont en gris clairs sur blanc, ce n'est pas l'idéal, mais j'imagine qu'on peut adapter cela dans les options. Effectivement les puces ont une tabulation après leur inclusion, ce qui perturbe l'affichage…

        Pour ma part, si j'avais un tel document à produire, je convertirais donc l'odt en txt2tags, avec pandoc-t2t : https://github.com/farvardin/pandoc

        ensuite je transformerais tous les titres niveau 2 en niveau 3 (pas d'outil dédié pour ça, mais ça devrait pouvoir se coder facilement, là j'ai fait ça à la main), pour éviter les sauts de page.

        Mon css pour l'epub est ici, mais il n'y a rien d'extraordinaire…

        https://github.com/farvardin/textallion/blob/master/includes/epub.css

        le rendu donne ça en epub :

        <br/>
https://i.imgur.com/6idGIFj.png

        et ça en pdf :

        Titre de l'image

        là aussi, rien de spécial, on peut adapter les styles facilement

        « Le pouvoir des Tripodes dépendait de la résignation des hommes à l'esclavage. » -- John Christopher

        • [^] # Re: Pandoc

          Posté par  (site web personnel, Mastodon) . Évalué à 3.

          Pour en revenir à la question initiale, en exportant avec writer2xhml le fichier de recettes en haïku, les titres sont en gris clairs sur blanc, ce n'est pas l'idéal

          En fait ça dépend du visualiseur. C’est impeccable dans FBReader, voir l’illustration du journal et dans ma liseuse, c’est le plus important. Mais, effectivement, selon les visualiseurs, l’apparence peut changer. Il me semble que FBReader est le visualiseur qui a le meilleur rendu des EPUB.

          Idéalement j’aurais dû, en effet, revoir la mise en forme du document pour en faire une version pour l’EPUB.

          Concernant les titres, alors non le niveau 1 c’est le titre de chapitre, 2 le sous-chapitre, etc. Ce n’est pas une page d’un site web.

          Merci pour les css. Pour le pdf, je fais ce que je veux puisque ça n’est « qu’une » photocopie numérique (c’est-à-dire bien plus qu’une photocopie papier). Autant pour la version EPUB, il faut rester dans la simplicité parce que tu ne maîtrises absolument pas le rendu à l’autre bout (police, taille de police, styles, etc.), et c’est très bien comme ça, autant pour la version PDF tu peux te laisser à toutes les fantaisies que tu veux.

          « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

      • [^] # Re: Pandoc

        Posté par  (site web personnel, Mastodon) . Évalué à 4.

        On a tous et toutes nos outils d'écritures favoris. L'un des énormes intérêts d'un outil comme un traitement de texte, outre que j'aime bien ne voir que ce que j'écris et pas le code qui l'emballe, est qu'il est beaucoup plus facile d'arranger et ré-arranger le document en déplaçant un chapitre, changeant un titre de niveau, etc. Ce que j'ai d'ailleurs fait dans le fichier de test. Et, c'est un outil super efficace pour les gens qui ne sont pas familiers avec le code.

        Et je ne suis pas très convaincue (voire, pas du tout) que passer par le pdf soit une bonne chose. Le pdf est tout de même un drôle de format. En tout cas, pour mes documents.

        « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

      • [^] # Re: Pandoc

        Posté par  . Évalué à 1. Dernière modification le 21 septembre 2022 à 10:49.

        re-

        je voulais ajouter que je fais aussi des epubs “audio”. J'en même fait avec de la vidéo, mais les fichiers deviennent un peu gros.

        Voilà un exemple:

        Rudgers Chinese Mandarin
        copie d'écran sur lecteur koodo

        Eric

    • [^] # Re: Pandoc

      Posté par  (site web personnel, Mastodon) . Évalué à 3.

      Si j'avais eu Pandoc j'aurais aussi fait le test avec. Mais il n'est pas dans ma distribution et il a l'air compliqué à installer (plein de dépendances si j'ai bien compris).

      Merci d'avoir fait le test. En définitive, c'est, très clairement, Writer2xhtml qui s'en sort le mieux sur ce document.

      « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

      • [^] # Re: Pandoc

        Posté par  (Mastodon) . Évalué à 3.

        Je suis étonné d'apprendre que tu n'aies pas pandoc dans les repos de ta distro. Quelle distro exotique utilises-tu?

        Sinon tu peux utiliser podman, docker ou distrobox pour l'utiliser facilement depuis n'importe quelle distro. C'est un peu le chroot des temps modernes.

        https://hub.docker.com/r/pandoc/core

        • [^] # Re: Pandoc

          Posté par  (site web personnel, Mastodon) . Évalué à 2.

          Mouais, je trouve pas ça convainquant de devoir sortir l'artillerie lourde pour un usage normal et non technique de son poste de travail. Non, rien n'égale la disponibilité dans les dépôt, et au pire que le paquet pour sa distro soit dispo https://pkgs.org/download/pandoc-common
          De mémoire, sa distribution est la Mageia.

          “It is seldom that liberty of any kind is lost all at once.” ― David Hume

          • [^] # Re: Pandoc

            Posté par  (Mastodon) . Évalué à 4. Dernière modification le 21 septembre 2022 à 14:00.

            Je suis d'accord que rien n'égal la dispo dans les repos de la distros mais apparemment ce n'est pas le cas. C'est pas forcément de l'artillerie lourde. Au final ça se résume à un alias et une image pas forcément plus grosse qu'un flatpak type qui se télécharge automatiquement.

            Dans ton .bashrc:
            alias pandoc='podman run --rm -v{mathjax} pwd:/data -u (id -u):$(id -g) pandoc/core'
            (EDIT: Quelqu'un peut m'expliquer pourquoi le sigle dollar est interprété de façon hasardeuse et écris ce cryptique {mathjax}?)

            Et après t'utilises la commande plus ou moins de la même manière. Il faut juste se rappeler de n'utiliser que des chemins relatifs ascendants.

            Et ça va moins foutre le bronx qu'un potentiel rpm pas fait pour ta propre distrib.

            • [^] # Re: Pandoc

              Posté par  (Mastodon) . Évalué à 3. Dernière modification le 21 septembre 2022 à 14:03.

              Lien vers l'alias correct à mettre dans son .bashrc à cause d'un bug de linuxfr:
              alias pour podman

            • [^] # Re: Pandoc

              Posté par  (site web personnel, Mastodon) . Évalué à 3.

              Pour le $, c'est euh, normalement anormal. C'est un bogue connu. Je me demande si en faisant précéder ce signe de ` dans le bout de code ne serait pas une solution que j'ai peut-être vue quelque part.

              J'essaie :

              alias pandoc='podman run --rm -v`$ pwd:/data -u (id -u):$(id -g) pandoc/core'

              Bon essai pas concluant, mais, on est prévenu qu'il faut virer le truc devant ça devrait être bon. J'ai essayé d'autres graphies. En fait avec n'importe quoi devant le $ ça fonctionne, donc y compris un espace. Mais il faut virer ce n'importe quoi.

              Sinon merci pour pandoc. Mais, je crois que je vais laisser tomber surtout que, si j'ai bien compris, ça marche en ligne de commande. Si ça ne génère pas forcément de l'epub de qualité, ça ne m'intéresse pas tant que ça.

              « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

              • [^] # Re: Pandoc

                Posté par  (Mastodon) . Évalué à 3.

                Oui pandoc est un outil en ligne de conversion de format en ligne de commande.

                J'ai vérifié aussi l'image docker, c'est tout de même un peu plus gros qu'un flatpak: 380MB. Pas vraiment green computing donc mais pour tester rapidement c'est pratique. Il existe apparemment aussi une image "minimale" qui est sans doute un peu plus petite et peut-être suffisante juste pour faire de l'epub.

            • [^] # Re: Pandoc

              Posté par  (site web personnel, Mastodon) . Évalué à 4. Dernière modification le 21 septembre 2022 à 19:23.

              Autant pour nous autres (sys/dev/geek/nerd/etc.) dont c'est le métier ça fait sens, mais si pour un usage standard tu commences à exiger « podman, docker » je trouve que c'est sortir l'artillerie lourde. C'était cela que je pointais.

              “It is seldom that liberty of any kind is lost all at once.” ― David Hume

      • [^] # Re: Pandoc

        Posté par  . Évalué à 1.

        Il est possible de télécharger une version binaire de pandoc (liée statiquement) directement sur le site officiel :
        https://pandoc.org/installing.html#linux

    • [^] # Re: Pandoc

      Posté par  . Évalué à 2.

      J'ai découvert Panwriter, éditeur markdown qui utilise Pandoc pour exporter un fichier markdown en epub.
      Paquet Arch Aur

  • # Plus de précisions au sujet de Writer2xhtml

    Posté par  . Évalué à 4.

    Merci d'avoir fait le test que j'avais prévu de faire (dans l'autre journal que tu as cité). Je n'ai pas eu beaucoup de temps libre, cette semaine.

    Soit c’est moi (possible), soit c’est Calibre, mais j’ai autant de pages que de titre 2 (h2).

    Tu trouveras l'explication (et le remède) dans le manuel de calibre

    il y a vraiment un problème avec les puces. Writer2xhtml ne fait pas mieux que les autres.

    Je ne comprends pas ton problème, chez moi les listes (à puces ou numérotées) sont rendues correctement avec writer2html : screenshot. As-tu mis quelque chose de spécial dans les options de liste de writer2html ? (Master styles / Style family : List). Chez moi, c'est vide.

    Avec un peu de configuration, writer2html donne un epub vraiment très propre, qui respecte la structure des styles de l'odt, et en garde les noms (c'est le seul convertisseur à ma connaissance qui le fasse). C'est très pratique pour avoir une CSS lisible et compréhensible.

    On peut, dans une feuille de style "custom", mettre les classes (de paragraphes ou de caractères) qu'on utilise souvent, writer2html l'intègrera dans l'epub, et les styles dont les noms sont ainsi définis dans LO seront alors automatiquement formatés (par CSS) de la manière que l'on veut, et non de celle dont writer2html les convertira. Très pratique et puissant.

    Un clic sur le bouton de nettoyage de la CSS dans calibre ou Sigil virera toutes les classes personnelles non utilisées et nettoiera efficacement la CSS.

    Un autre plus, c'est que le style par défaut (par exemple Text Body, chez moi) peut être rendu par <p>, et non par <p class="textbody">, ce qui rend le code beaucoup plus concis et agréable à lire :
    Master styles / Style family : Paragraph / Style name : Text Body / HTML element : p

    Même chose pour les formats bold et italic de LO, ils peuvent être rendus par <b> et <i> :
    Other styles / Formatting attribute : Bold / [x] Apply custom style / HTML element : b

    Du coup, il faut mettre dans la section Formatting : Ignore hard formatting pour Formatting et Frame formatting

    Si on utilise des notes, on peut définir entête et pied de page de la page de notes dans la section Content.

    Le seul défaut de writer2xhtml est que ses mises à jour sont, disons…, chaotiques. Le logiciel peut rester immobile pendant des années avant que sont développeur y remette un coup de neuf. Mais c'est à mon point de vue le meilleur convertisseur, et de loin (il en existe d'autres en plus des 3 cités dans ton journal, par exemple "writer2epub", une autre extension LO, ou le logiciel pour windows "Amanuensis").

    • [^] # Re: Plus de précisions au sujet de Writer2xhtml

      Posté par  (site web personnel, Mastodon) . Évalué à 4.

      J’avais pondu, en 2013, un article sur les outils de fabrication EPUB :

      • l’extension Writer2Epub de Luke Calcinai ne fonctionne plus sous les versions récentes de LibreOffice et n’est plus maintenue,
      • Amanuensis, déjà à cette époque, n’avait pas fait l’objet d’évolution,
      • le traitement de texte pour Windows, Atlantis qui disait ou dont quelque part sur internet il était dit qu’il était capable d’exporter en epub (je n’ai jamais trouvé comment), et je n’ai pas l’impression qu’il ait beaucoup bougé (en même temps, un site sans aucune date…).

      Ces trois-là sont donc à écarter, concernant Amanuensis, je serais étonnée que le logiciel fonctionne sous Windows 11.

      Il reste donc :

      • l’export LibreOffice,
      • LibreOffice + Writer2xhtml,
      • Calibre,
      • Pandoc.

      La deuxième solution s’avérant le plus efficace des quatre. Ce qui signifie que, finalement, LibreOffice faisant ce que je veux (je peux écrire en Markdown, ce que je fais d’ailleurs, avec LibreOffice et copier-coller le résultat où il faut), je n’ai nul besoin de m’enquiquiner avec Pandoc.

      Merci pour les astuces sur Writer2Xhtml. Je n’ai touché à rien, c’est avec la version « brute » que j’ai fait mes tests. Je pense que le comportement bizarre avec les listes à puce est dû aux tabulations qui les suivent.

      « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

      • [^] # Re: Plus de précisions au sujet de Writer2xhtml

        Posté par  . Évalué à 3. Dernière modification le 24 septembre 2022 à 18:46.

        La deuxième solution s’avérant le plus efficace des quatre.

        Je me suis d'ailleurs toujours demandé pourquoi les devs de LO ont créé de zéro un outil d'exportation au lieu d'utiliser la base de Writer2Xhtml (soit en demandant à son dev d'intégrer l'équipe, soit en forkant le code). Ok, c'est du java, mais comme les bases sont saines, il y aurait sûrement eu moyen de transcrire sa logique de base dans le langage utilisé par LO (je ne sais même pas lequel c'est :-))

        Résultat, ils ont créé un truc pas beau du tout, alors que la meilleure solution sur le marché faisait déjà partie de leurs extensions. Va-t-en donc en comprendre la logique.

        Je n’ai touché à rien, c’est avec la version « brute » que j’ai fait mes tests.

        Oui, on gagne beaucoup à le personnaliser. D'ailleurs, la config des "Text Body", italique et gras en <p>, <i> et <b> faisait partie de la config d'origine dans l'ancienne version, il est maintenant nécessaire de la définir soi-même.

        L'inclusion automatique de sa feuille de style perso dans l'epub est un outil magique et très puissant. Ça permet également de rajouter directement dans le texte de l'epub (avec calibre ou sigil) des classes que l'on sait déjà définies dans notre CSS perso. Ou de transformer des classes prédéfinies en classes perso (par ex. les appels de note).

        Il y a d'ailleurs sûrement d'autres secrets à explorer.

        Je pense que le comportement bizarre avec les listes à puce est dû aux tabulations qui les suivent.

        Non, j'ai essayé avec des tab en fin de ligne, et ça continue à être rendu correctement. Je parierais plutôt sur la définition du style de ta liste dans LO.

        • [^] # Re: Plus de précisions au sujet de Writer2xhtml

          Posté par  (site web personnel, Mastodon) . Évalué à 2. Dernière modification le 26 septembre 2022 à 11:09.

          Ce n’est pas « ma » définition du style c’est celle de LibreOffice 7.4. À l’export en epub, au lieu d’avoir des balises <li> j’ai ceci :

          <ul class="listlevel1List1">
                <li>
                  <p class="List1"> texte du paragraphe;</p>
                </li>
          </ul>

          Donc chaque élément de la liste est considéré comme un paragraphe. Quand je fais un export epub LibreOffice, c’est plus flagrant, j’obtiens ceci:

          <p class="para0"><span class="span0">texte du paragraphe</span></p>

          La liste a disparu !

          Je ne vois absolument pas comment corriger ça dans LibreOffice. La seule solution serait de corriger dans Sigil !

          Si c’est, encore, un bug de LibreOffice, j’avoue que je fatigue là. J’ai moyennement apprécié le traitement des derniers rapports que j’ai soumis.

          « Tak ne veut pas quʼon pense à lui, il veut quʼon pense », Terry Pratchett, Déraillé.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.