Heirat von Lisp und LaTeX - wurde es getan?

9

Ich mag LaTeX, aber ich finde das Makrosystem und die Logik sowohl komplex als auch schwach. Sprachen wie Schem / Lisp / Clojure sind sehr gut in Makros. Ich stelle mir das gesamte Dokument in einer Lisp-Familiensprache vor, die beim Ausführen LaTeX-Code ausgibt und ein Dokument erstellt. Wurde das schon mal gemacht? Irgendwelche Links?

Job
quelle
2
Ja, eine schnelle Google-Suche zeigt Lisp-Augmented TeX. Es gibt wahrscheinlich Dutzende von anderen. Das LaTeX-Makrosystem ist eigentlich ziemlich leistungsfähig, wenn auch nichts für schwache Nerven. Sie können Ihre eigenen erstellen und das Design von XML-in-Lisp-Paketen kopieren.
Macneil
2
Beachten Sie, dass es auch einen Tex Stackexchange gibt: tex.stackexchange.com
Robert Anton Reese
LaTeX ist übrigens eine Hommage an Lisp, indem es alternative Versionen von Operatoren aufruft, die mit einem *Suffix etwas anderes machen . Lisp hat letund let*so weiter, LaTeX hat \sectionund \section*.
Kaz

Antworten:

13

Racket macht genau das in Scribble , seinem Dokumentationssystem. In diesem System sind mittlerweile Tausende von Dokumentationsseiten geschrieben, und es ist sehr lebendig. Beachten Sie insbesondere die verwendete Syntax , die viele solcher Hybridbefehle über das Ausspucken von Text sehr bequem macht .

Beachten Sie jedoch, dass Makros zwar wie gewohnt in jedem Lisp / Scheme-Code verwendet werden, jedoch kein zentraler Punkt sind. Funktionen sind für die meisten Dinge in Ordnung - sie verbrauchen einfach Text und produzieren Text. LaTeX (oder allgemeiner TeX) hat zufällig eine Art makrobasierte Bewertungsstrategie auf niedriger Ebene gewählt, die für einige Fälle geeignet ist.

Eli Barzilay
quelle
Also ... Ihr Kommentar zu Makros - sagen Sie, dass Python genauso gut wie Lisps Latex emittiert?
Job
Nun, IMO-Lisps sind unter anderem aufgrund von Makros besser als Python - sagen wir einfach, dass Python für die Emission von Latex keine neuen Probleme im Vergleich zu Lisps hat ...
Eli Barzilay
@Eli Was meinst du mit "neuen Problemen"?
Mark C
1
Mark C: In beiden Fällen (Lisp oder Python) schreibt ein solches System Code, der (la) tex-Code generiert. Es gibt keinen besonderen Grund, warum einer besser wäre als der andere als die übliche Behauptung, dass Lispers haben wird, dass ihre Sprache besser ist und umgekehrt. In diesem Sinne gibt es auf beiden Seiten keine neuen Probleme.
Eli Barzilay
Oh, danke für die Antwort. Ich habe falsch verstanden, dass "im Vergleich zu" bedeutet, dass Lisps Probleme haben, diesen Job zu erledigen. Übrigens benötigen Sie ein "@", um eine Benachrichtigung zu senden. (Sie erhalten eine, weil dies Ihre Antwort ist.)
Mark C