URL: https://linuxfr.org/users/anaseto/journaux/pikchr-un-langage-pour-decrire-des-diagrammes-svg Title: Pikchr : un langage pour décrire des diagrammes SVG Authors: anaseto Date: 2021年05月22日T16:31:06+02:00 License: CC By-SA Tags: svg, modélisation, génie_logiciel, diagramme, langage et pikchr Score: 43 Bonjour Nal, J'ai découvert il y a peu [Pikchr](https://pikchr.org/home/doc/trunk/homepage.md), un petit langage sympa pour décrire des diagrammes. Le langage est inspiré du vénérable [PIC](https://en.wikipedia.org/wiki/Pic_language), sauf qu'avec quelques additions sympas et, surtout, le logiciel produit du SVG et pas une image. Parmi les intérêts du langage, on a sa syntaxe simple à lire, des mots-clés variés qui permettent d'éviter d'avoir à écrire des coordonnées à la main, ainsi que le côté léger de l'outil, facile à intégrer ici ou là avec des langages de balisage légers comme markdown. Le logiciel a été créé par l'auteur de SQLite et du gestionnaire de version Fossil, donc c'est plutôt du solide et ça m'a l'air bien testé. Le logiciel est néanmoins né il y a moins d'un an : les premiers commits datent d'août de l'an dernier ! Il couvre des besoins similaires à ceux couverts par des logiciels graphiques comme [Dia](https://fr.wikipedia.org/wiki/Dia_(logiciel)), sans spécialisation pour un type de diagramme particulier (UML ou autre). Contrairement à [graphviz et son langage dot](https://fr.wikipedia.org/wiki/DOT_(langage)), l'idée n'est pas de visualiser sous forme de graphe des données, mais de faire un diagramme pédagogique pour illustrer une documentation. C'est donc moins automatique, mais plus flexible pour placer les choses où on veut. L'idée n'est pas non plus de produire, après lecture de centaines de pages de documentation et beaucoup de minutie, des diagrammes très vendeurs comme avec [Tikz](https://en.wikipedia.org/wiki/PGF/TikZ) pour LaTeX. Pikchr se situe un peu entre ces deux extrêmes. Un cas parlant d'utilisation : tous les diagrammes de la documentation SQLite [utilisent Pikchr maintenant](https://pikchr.org/home/doc/trunk/doc/sqlitesyntax.md). Les vieux diagrammes étaient générés par un script fait maison qui produisait des images et non du SVG, ce qui avait quelques inconvénients. À quoi ça ressemble en pratique ? Par exemple, on écrit des lignes du genre : ``` line dashed right from 0.3cm below start of previous line ``` ou des choses plus compliquées comme: ``` box; move; circle; move; cylinder arrow from first box.s \ down 1cm \ then right until even with first cylinder \ then to first cylinder.s ``` Le langage est simple à prendre en main et n'a pas beaucoup de fonctionnalités de programmation. On n'y trouvera par exemple pas de boucles, mais juste ce qu'il faut pour simplifier un peu la maintenance : macros avec des arguments et des variables. Au besoin, il est facile de générer du code pour Pikchr avec un langage de programmation. Un des avantages est que le langage peut s'intégrer facilement à d'autres outils ou langages de balisage et, en particulier, il est conçu pour qu'il soit possible, de façon sûre, de l'utiliser sur un serveur pour produire des diagrammes écrits par les utilisateurs d'un site. Par exemple, il est possible de tester le logiciel [sur le site lui-même](https://pikchr.org/home/pikchrshow) ! Ça permet de jouer un peu avec les exemples. Je ne sais pas si la version en outil en ligne de commande est déjà dispo sur certaines distributions. Autrement, c'est très facile à compiler. À partir du code décrivant la grammaire (décrite dans un langage similaire à [Yacc](https://fr.wikipedia.org/wiki/Yacc_(logiciel)), mais conçu à l'origine pour SQLite) et le comportement du programme, un seul fichier C contenant l'ensemble du programme [pikchrc.c](https://pikchr.org/home/file/pikchr.c?ci=trunk) est mis à disposition pré-généré. On peut donc facilement compiler (avec gcc ou clang) en un exécutable avec la commande : ``` cc -DPIKCHR_SHELL -o pikchr -lm pikchr.c ``` Et hop, le tour est joué !

AltStyle によって変換されたページ (->オリジナル) /