Et pourquoi pas ... Weasyprint?

LaTeX c'est bien, ... Mais.

a marqué ce sujet comme résolu.

Tantôt, j’ai esssayé de me remettre à notre template LaTeX pour esssayer de voir ce que je pouvais faire pour les derniers problèmes en dates. Et j’en suis arrivé à une trise conclusion: c’est beaucoup trop compliqué pour ce que c’est. J’utilise LaTeX\LaTeX au quotidien, il permet facilement d’obtenir des documents de qualités, mais globalement, il nécessite de construire son document petit à petit, d’utiliser des hacks pas piqués des hannetons, et globalement, il vieillis.

Pour moi, les principaux avantages de LaTeX pour nous sont les suivants:

  • Il est multiplate-forme et génère (bien) des PDFs. Il se trouve que c’est pas une qualité si répendue que ça, puisqu’il la partage avec les éditeurs de textes et les navigateurs.
  • La typographie est nickel. En même temps, il a été conçu pour ça.
  • Les maths sont supportées par défaut, et composent une part non négligeable de nos contenus.

Les défauts sont les suivants:

  • C’est une dépendance qui pèse son poids, malgré des efforts pour n’installer que les packages nécessaires.
  • Le support d’UTF-8 est toujours partiel, malgré l’utilisation de LuaLaTeX.
  • Le support des tableaux est pour le moins compliqué. C’est typiquement un truc qui même quand on rédige à la main demande de l’ajustement manuel.
  • LaTeX gère assez mal les machins imbriqués dans les trucs eux-mêmes intégrés dans des bidules. En ce qui nous concerne, mettre un bloc de code dans un tableau est globalement hasardeux, et la gestion des blocs secrets imbriqué est capricieuse. De manière générale, malgré l’apparente simplicité du Markdown, il est quand même relativement facile de prendre LaTeX en défaut, et le rendu n’est pas très satisfaisant.
  • Et quand bien même, tel le bon compilateur qu’il est, il n’est pas très tolérant aux erreurs, ce qui fait qu’un certain nombre de contenus n’ont tout simplement pas de PDFs.

Quels sont les solutions à notre disposition ? Une killer-feature serait d’avoir un export en format OpenDocument, mais ça demanderai énormément de travail (quoique ce n’est jamais "que" du XML zippé). Une autre serait de tout miser sur l’EPUB, mais je ne sais pas si c’est utilisé que ça.

Une alternative, qui m’avait parue encore limitée à l’époque1, serait d’employer weasyprint. Avant de présenter les avantages, je me permettrais de rappeler que le but n’est pas simplement de faire un CTRL+P d’un fichier HTML (avec CSS custom, évidement). En particulier, ce que je recherche dans ce genre d’export, c’est que les saut de pages ne soient pas (trop) fait n’importe comment, qu’on aie des liens internes et une table des matières, et, par exemple, que les notes de bas de page soient effectivement en bas de page et non à la fin du document.

Or, il se trouve que Weasyprint semble permettre tout ça, grâce à du CSS spécifique qui n’est même pas spécifique à Weasyprint, puisqu’il s’agit de commandes issues du W3C pour gérer des média différents de ceux des pages webs.2

Quant aux autres avantages de cet outil, ils sont les suivants:

  • C’est du Python derrière, donc ça s’interface bien avec notre code le cas échéant.
  • Le but serait de générer du HTML un peu tuné, ce qui demande un moindre effort, vu que zMarkdown le fait déjà par ailleurs.
  • HTML/CSS, c’est le bon combo pour avoir plus d’aide qu’avec LaTeX que peu de personnes ici connaissent :pirate:

Les points d’attention étant les suivants:

  • Weasyprint tente réellement d’interpréter le HTML et le CSS, donc possède son propre support du CSS, qui n’est pas parfait. Normalement, on utilise pas des choses trop poussées, mais c’est à savoir.
  • Pour ce qui est des maths, gros point d’interrogation. Le support du MathML est pas très poussé (en même temps, le support MathML des navigateur ne l’est pas spécialement non plus) et les gens trichent généralement en transformant les maths en SVG grâce à MathJaX … Sauf qu’on est passé à KaTeX! Donc ça demande des tests.

Sinon, il y a d’autres alternatives listées ici, avec une liste de ce qui est supporté ou pas. Weasyprint n’est donc pas la seule alternative :)

Bref, dites moi ce que vous en pensez! :pirate:


  1. Il y a 5 ans, donc c’est plus très clair dans ma tête ^^^
  2. J’ai l’impression que ce genre de chose n’était pas disponible il y a 5 ans, mais je peux me tromper.

Alors le la fonction @page en CSS ça existe depuis longtemps je crois (fonction print ?), mais malheureusement méconnu.

Cette méthode est de plus en plus utilisée. Pour anecdote, c’est utilisé pour les mémoires de l’école d’art de ma ville.

+0 -0

Jean profite pour râler

Le support des tableaux est pour le moins compliqué. C’est typiquement un truc qui même quand on rédige à la main demande de l’ajustement manuel.

C’est également un truc sur lequel on je me prends tout le temps la tête en markdown On a besoin de faire des invocations vaudou pour arriver à ses fins sans pourtant de mander la lune.

En ce qui nous concerne, mettre un bloc de code dans un tableau est globalement hasardeux,

Ça marche vraiment en markdown ça ? J’ai du jeter toutes mes tentatives après des jours de bataille, même avec zmd qui permet d’aller loin.

malgré l’apparente simplicité du Markdown

Voilà, c’est une apparence …qui tombe vite quand on gratte un peu… Et comme le balisage est défini de manière peu fiable dès le début (CommonMark tente de mettre du sparadrap mais c’est quand mi´me trop fragile…) Ça ne passe que si on traduit dans un truc trop relax (comme HTML tiens, et on doit se brider si on veut générer du XHTML valide), ce qui n’est pas le cas de LaTeX (d’où les soucis…) :

tel le bon compilateur qu’il est, il n’est pas très tolérant aux erreurs, ce qui fait qu’un certain nombre de contenus n’ont tout simplement pas de PDFs.


Fin de grogne. Revenons à la proposition

Avant de présenter les avantages, je me permettrais de rappeler que le but n’est pas simplement de faire un CTRL+P d’un fichier HTML (avec CSS custom, évidement). En particulier, ce que je recherche dans ce genre d’export, c’est que les saut de pages ne soient pas (trop) fait n’importe comment, qu’on aie des liens internes et une table des matières, et, par exemple, que les notes de bas de page soient effectivement en bas de page et non à la fin du document.

Déjà la CSS d’impression est quelque chose qui fait défaut (j’ai essayé sur certains tutos et billets héhé) ; et sans une certaine base saine on va juste demander à weasyprint de faire de la magie (pourquoi pas, mais je n’aime pas m’en remettre hasard.) De ce que j’ai vu, la table des matières ne se fait pas seule, les liens internes marchent parfois (mais ici tout est en dur et non en relatif donc j’ai peu d’espoir), les sauts de pages sont risibles (si on n’a pas pensé à faire une base pour limiter la casse), les notes de bas de page sont difficile dans un contexte qui ne connait pas bien la notion de page (mais faut voir si weasyprint s’en sort mieux que l’export des navigateurs)

Pour ce qui est des maths, gros point d’interrogation. Le support du MathML est pas très poussé (en même temps, le support MathML des navigateur ne l’est pas spécialement non plus) et les gens trichent généralement en transformant les maths en SVG grâce à MathJaX … Sauf qu’on est passé à KaTeX! Donc ça demande des tests.

De ce que j’ai vu sur ZdS, les formules sont globalement rendues avec des éléments absents sans changer l’apparence. Je ne dirai pas MathJaX soit meilleur : approche différentes avec des problèmes différents (en particulier l’image qui n’est pas proportionnel au texte et ne scale pas bien aux zooms, mais bon j’ai plus vu des transformation en PNG ou GIF que SVG.)

Bref, dites moi ce que vous en pensez! :pirate:

Bien d’accord qu’il faut tester et explorer des pistes (même si mon message parait négatif)


post-scriptum

Une autre serait de tout miser sur l’EPUB, mais je ne sais pas si c’est utilisé que ça.

Je l’utilise quand je lis sur un support qui rentre en poche… Mais quand je travaille sur l’ordi j’utilise le PDF hors-ligne et le site quand je suis en ligne.

+0 -0

Je ne suis pas contre essayer (mais comme toujours, il faut trouver des gens qui ont du temps et l’envie d’y passer un peu de temps).

Je me demande si dans un premier temps, on ne pourrait pas proposer une version des contenus (en particulier les tutoriaux) avec toute la hiérarchie à plat sur une page (i.e. toutes les parties, tous les chapitres, toutes les sections sur une même page). Ça n’aurait pas forcément tout le contenu qu’on retrouve sur toutes les pages de ZdS (pas de menu, pas de pied de page, pas menu latéral), juste le contenu. On pourrait ensuite donner cette page à manger à Weasyprint pour avoir déjà une première idée de ce qu’il est capable de faire.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte