Il y a quelques années, j'utilisais intensivement un petit outil que je trouvais merveilleux: latex-to-unicode. Pour faire simple, c'était un outil minimaliste, qui lançait une petite fenêtre, on lui tapait un peu de maths en LaTeX (par exemple \forall\alpha, \exists\beta, 2\beta=\alpha
, et on obtenait ∀α, ∃β, 2β=α
dans le presse papier. Bref, un petit outil bien pratique pour mettre un peu d'unicode, sans se rappeller de toutes les tables (il faut être inhumain pour cela).
Sauf qu'il se trouve que cet outil était buggé, il suffisait d'imbriquer un \sqrt
et une \frac
ou ne serait-ce qu'un \mathbb
sur la même ligne qu'un \frac
et ça déconnait. De plus, le parser n'était pas vraiment conforme au LaTeX (par exemple, il fallait faire un \frac{a}{2}
et on ne pouvait pas se contenter d'un \frac a2
comme en LaTeX.
Quand un outil est buggé, il suffit de contribuer me direz-vous. J'ai essayé de rentrer dans le code, mais j'ai échoué. Que faire ? En faire un soi-même.
Après avoir vu plein de trucs marrants au 33C3, (et ayant jeté la première ligne sur une illumination pendant la conf), sur le trajet retour (le train c'est bien, mais long), je me suis attelé à l'écriture d'un convertisseur de maths en LaTeX vers Unicode. flatlatexétait né. En quelques centaines de lignes, j'avais un outil fonctionnel pour convertir des maths simples en LaTeX vers de l'unicode:
\because\ X\sim\mathcal P(\lambda),\; \therefore\ \forall k\in\mathbb N, \mathbb P(X=k) = \lambda^kexp(-\lambda)/(k!)
qui donne ∵ X∼𝓟(λ), ∴ ∀k∈ℕ, ℙ(X=k) = λᵏexp(-λ)/(k!), ce qui n'est pas dégueulasse il faut l’admettre.
Cet outil n'était alors qu'un bout de code python, pas forcément très utilisable, mais ça marchait.
Quelques heures plus tard, un ami bien plus compétent en python que moi, (surtout à l'époque où je travaillais plus dans d'autres langages) m'aida à mettre tout en forme pour en faire un module propre, ayant sa place sur pypi.
Et donc, dans les premiers jours de 2017, un outil de conversion confidentiel (bien que public) de maths en LaTeX vers unicode était né. Seulement utilisable en tant que module python certes, mais je l'utilisais, et j'ai abandonné à cet instant latex-to-unicode.
Quelque temps plus tard (je ne me souviens plus des dates exactes), un autre ami bien plus compétent que moi en packaging (et impliqué dans debian) proposa de faire une CLI (à coup d'argparse) et de packager le module et sa CLI dans debian, ce fût chose faîte.
Et cela en resta là, pour quelques années. J'utilisais mon propre outil en CLI, et sous forme de module, et je ne suis pas certain qu'il ait servi à d'autres que moi, sans faire de bruit. J'ai corrigé quelques bugs de temps en temps, mais c'était du détail.
Il y a un peu moins d'un an, j'ai appris que flatlatex était utilisé dans un outil expérimental de génération de rendu de documentation, j'ai une oreille qui a bougé pendant ¼ de secondes, puis c'est tout.
Puis, il y a environ une semaine, je me suis rappelé tout d'un coup, à quel point latex-to-unicode était pratique, c'est qu'il avait une petite interface, et que utiliser flatlatex en CLI n'était vraiment pas pratique (car bon, il faut avouer que escaper tous les \
, ça devient vite barbant). Je me suis dit que faire une petite GUI sur le même principe, ça ne devait pas être très dur.
Étant très mauvais en GUI (ce n'est que la seconde GUI que je dev en python, et la troisième GUI de ma vie en tout, pour plus d'une centaine de petits outils en CLI), sachant que je n'aime pas ça, je suis tout de même content du résultat. J'ai obtenu flatlatex-gui, que j'ai aussitôt mis sur pypi.
(Et c'est au passage que j'ai découvert que flatlatex avait une rev-dep sur PyDetex, qui est un outil similaire, mais qui ne vise pas que les maths, et qui est moins simple d'usage que la petite GUI.
En tout, j'aurai donc mis 5 ans à faire un outil qui remplaçait l'outil précédent que j'utilisais. J'ai atteint mon but, et en faire un petit journal sur dlfp m'a paru une bonne idée.
Aller, quelques petits trucs en unicode pour la route:
- ℙ( μ∈[X̅±1.96σ] ) = 1-α, car Φ⁻¹(1-ᵅ⁄₂)=1.96
- 𝕆𝕟 𝕡𝕖𝕦𝕥 𝐮𝐭𝐢𝐥𝐢𝐬𝐞𝐫 𝑑𝑒𝑠 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑒𝑠 𝓭𝓮𝓯𝓲𝓷𝓲𝓼 𝓭𝓪𝓷𝓼 𝔩𝔢 𝔰𝔱𝔞𝔫𝔡𝔞𝔯𝔡 𝔘𝔫𝔦𝔠𝔬𝔡𝔢
Commentaires :voir le flux Atomouvrir dans le navigateur