Mariage de Lisp et de LaTeX - a-t-il été fait?

9

J'aime LaTeX, mais je trouve son système macro et sa logique à la fois complexes et faibles. des langages tels que Schem / Lisp / Clojure sont très bons pour les macros. J'imagine le document entier écrit dans un langage familial lisp, qui, une fois exécuté, émettrait du code LaTeX et produirait un document. Cela a-t-il déjà été fait? Des liens?

Emploi
la source
2
Oui, une recherche rapide sur Google révèle TeP augmentée par Lisp. Il y en a probablement des dizaines d'autres. Le système macro LaTeX est en fait assez puissant, mais pas pour les faibles de cœur. Vous pouvez créer le vôtre en copiant la conception des packages XML-in-Lisp.
Macneil
2
Notez qu'il existe également un tex stackexchange: tex.stackexchange.com
Robert Anton Reese
Soit dit en passant, LaTeX rend hommage à Lisp en appelant des versions alternatives d'opérateurs qui font quelque chose de légèrement différent avec un *suffixe. Lisp a letet let*ainsi de suite, LaTeX a \sectionet \section*.
Kaz

Réponses:

13

Racket fait exactement cela dans Scribble , son système de documentation. Il y a maintenant des milliers de pages de documentation écrites dans ce système, et il est très vivant. Notez spécifiquement la syntaxe utilisée, ce qui rend beaucoup de telles commandes hybrides via-spitting-out-text très pratiques .

Notez, cependant, que si les macros sont utilisées comme d'habitude dans n'importe quel code Lisp / Scheme, elles n'en sont pas un point central. Les fonctions sont très bien pour la plupart des choses - elles arrivent à consommer du texte et à produire du texte. Il se trouve que LaTeX (ou plus généralement TeX) a choisi une sorte de stratégie d'évaluation basée sur des macros de bas niveau qui convient à certains cas.

Eli Barzilay
la source
Alors ... votre commentaire sur les macros - dites-vous que Python est aussi bon que Lisps pour émettre du latex?
Job
Eh bien, les lisos IMO sont meilleurs que Python à cause des macros (entre autres) - alors disons simplement que pour émettre du latex, Python ne souffre pas de nouveaux problèmes par rapport aux lisps ...
Eli Barzilay
@Eli Qu'entendez-vous par "nouveaux problèmes"?
Mark C
1
Mark C: dans les deux cas (un Lisp ou un Python) un système comme celui-ci écrit du code qui génère du code (la) tex. Il n'y a aucune raison particulière pour que l'un soit meilleur que l'autre autre que l'affirmation habituelle selon laquelle les lispers auront que leur langue est meilleure et vice versa. En ce sens, il n'y a pas de nouveaux problèmes de part et d'autre.
Eli Barzilay
Oh, merci d'avoir répondu. J'ai mal compris que "par rapport à" signifie que Lisps a des problèmes pour faire ce travail. Au fait, vous avez besoin d'un "@" pour envoyer une notification. (Vous en obtiendrez un parce que c'est votre réponse.)
Mark C