Bonjour à toutes et à tous !
depuis la v27 et ses versions mineures nous avons enfin un système d’export de tuto qui est qualitatif. QU’il permette de créer des ebooks au format pdf ou epub de grande qualité, sans DRM et gratuitement est une chose qui, je pense, est un des grands intérêts d’écrire un tuto ou un article sur zds.
Cependant ce système n’est pas parfait, il a des bugs, et il doit encore évoluer pour être encore et toujours meilleur.
Je vous propose ici de vous décrire les problèmes connus, ce qu’on compte faire contre eux, et ce qui a déjà été fait, évidemment.
Problème 1 : les titres sont parfois mal parsés sur les PDF
Exporter au format PDF signifie deux choses de notre point de vue :
- mettre à plat votre tuto
- le parser et en tirer le PDF
pendant très très très longtemps, c’était la seconde partie qui pêchait. Allant jusqu’à masquer complètement les problèmes de la première partie. Et les titres en sont un.
Il serait vraiment bien que les validateurs et les auteurs lisent ce message car il sera important pour eux.
Le problème n’apparaissant que sur les bigs et moyens tuto, vous comprendrez que je ne parle pas ici du cas particulier des minituto et articles :
ecrire "# Introduction"
ecrire tuto.intro
pour chaque partie du tuto
ecrire "# " + partie.titre
ecrire décaler_les_titres_de1(partie.intro)
pour chaque chapitre
ecrire "## " + chapitre.titre
ecrire décaler_les_titres_de2(chapitre.intro)
pour chaque section
ecrire "### " + section.titre
ecrire décaler_les_titre_de_3(section.texte)
ecrire "---" // c'est une ligne de séparation
ecrire décaler_les_titres_de2(chapitre.conclusion)
ecrire décaler_les_titres_de1(partie.conclusion)
ecrire "---"
ecrire tuto.conclusion // à la demande des auteurs on ne met plus la conclusion sous un titre
Maitenant, imaginez qu’un auteur, pour une raison quelconque ait mis dans une section #### mon titre
. Il en a le droit, l’interface le lui dit.
Eh bien si vous calculs sont justes, vous êtes arrivés à la conclusion que le titre sera mis dans le fichier "à plat" ####### mon titre
.
Et ça, c’est inconnu au bataillon de markdown.
Après quelques pérégrinations, j’ai compris la double cause de tout ça :
- côté UI/UX on autorise les gens à le faire, alors ils le font, il faudrait griser les boutons pour les "niveau 4" à "niveau 6" quand on est dans une section ceci sera intégré obligatoirement en v28.2
- côté historique de zds, on s’était compliqué la vie à une époque et on avait fait un truc "intelligent" qui détectait que si on était dans une section alors un titre de niveau 4 était équivalent à un titre de niveau 1. Avec l’arrivée de zmarkdown, on a arrêté ce genre de choses immaintenables (même si pour cette fonctionnalité en particulier c’était pas prévu à la base car personne ne le savait côté technique) et on a décidé d’avoir un comportement cohérent : quand on demande du html pour les sections, on dit à zmd "considère que tous les titres doivent être rendu comme des titres de rang n+2 et si n+1>6 tu mets 6. Pour le latex, comme on envoie un fichier à plat, aucun décalage n’est fait par zmd.
ALors, comment gérer ça?
- pour les validateurs, pourriez-vous regarder, quand vous validez qu’il n’y a pas de titre de niveau 4 dans les sections des big tuto (de niveau 5 dans les moyens, de niveau 6 dans les minitutos)
- pour les auteurs, pourriez-vous corriger cela?
De notre côté, que pouvons-nous faire pour vous?
- on va éviter de vous donner des boutons qui ne marchent pas, donc on va griser les niveaux inutiles (v28.2)
- dès aujourd’hui, vous pouvez utiliser un script qui vous explique quel titre corriger et qui vous donne le bon niveau à mettre (voir là suite)
- dans l’avenir, nous avons un chantier pour ajouter des conseils contextuels à notre éditeur, ça serait ce genre de conseils qui vous permettrait de dire "ah là, c’est pas bon"
- Télécharge le fichier markdown du tuto
- Prend ce script https://gist.github.com/artragis/7da25205db5ea218ce0738b21a3c708b
- exécute
python3 detector.py chemin/vers/le/fichier.md
pour avoir les titres qui seront mal parsés - exécute
python3 detector.py --warn chemin/vers/le/fichier.md
pour avoir les titres qui génèreront des hiérarchies du style1.0.1.1
Parfois les codes ont des ###
en trop
Je vous disais au dessus que notre ancienne technologie masquait les défauts de l’étape "mise à plat", eh bien vous venez d’en trouver un autre. Heureusement grâce à la réactivité d'@Eskimon sur le tuto arduino, cette erreur est déjà corrigée dans la v28.1 (elle sera déployée quand django 2.1 sera proprement mis et que les retours des auteurs quant aux statistiques auront été implémentés)
Il y a des parties non publiées dans le pdf
Oui, ça sera corrigé quand j’aurai réussi à comprendre pourquoi, je fais le ticket dès que possible.
Il n’y a pas de couverture dans l’epub
Oui, on a besoin d’un graphiste pour nous aider à styler la couverture de l’epub, j’irai poster une demande dans le forum graphiste dès que j’ai un peu de temps.
Parfois j’ai pas de PDF
Il y a deux causes possibles à ça :
- le publicateur a encore planté, et là il faudra attendre que côté technique on change de méthode de fonctionnement ou bien que je me connecte à la prod et que je le relance, après, ça marche du feu de dieu
-
votre tuto possède des cas particuliers mal traité par notre parser markdown -> latex ou bien qui n’ont pas d’équivalent en latex, voici la liste des cas connus à ce jour :
- une image a retourné 404 ET une page html : https://github.com/zestedesavoir/zmarkdown/issues/294
- vous avez mis un bloc de code dans une footnote : https://github.com/zestedesavoir/zmarkdown/issues/299