Marriage of Lisp i LaTeX - czy zostało to zrobione?

9

Lubię LaTeX, ale uważam, że jego system makr i logika są złożone i słabe. języki takie jak Schem / Lisp / Clojure są bardzo dobre w makrach. Wyobrażam sobie cały dokument napisany w rodzinnym języku lisp, który po uruchomieniu emitowałby kod LaTeX i tworzył dokument. Czy zrobiono to wcześniej? Jakieś linki?

Praca
źródło
2
Tak, szybkie wyszukiwanie w Google ujawnia TeX w wersji Lisp. Istnieje prawdopodobnie kilkadziesiąt innych. System makr LaTeX jest w rzeczywistości dość potężny, choć nie dla osób o słabym sercu. Możesz zbudować własny, kopiując projekt pakietów XML-in-Lisp.
Macneil,
2
Uwaga: istnieje także wymiana stosów
Robert Anton Reese
Nawiasem mówiąc, LaTeX składa hołd Lisp, dzwoniąc do alternatywnych wersji operatorów, którzy robią coś nieco inaczej z *przyrostkiem. Lisp ma leti let*tak dalej, LaTeX ma \sectioni \section*.
Kaz

Odpowiedzi:

13

Rakieta robi dokładnie to w Scribble , swoim systemie dokumentacji. W tym systemie są teraz tysiące stron dokumentacji, które są bardzo żywe. Zwróć szczególną uwagę na zastosowaną składnię , która sprawia, że ​​wiele takich poleceń hybrydowych poprzez wyplucie tekstu jest bardzo wygodne .

Zauważ jednak, że chociaż makra są używane jak zwykle w dowolnym kodzie Lisp / Scheme, nie są one centralnym punktem tego. Funkcje są odpowiednie dla większości rzeczy - zdarza się, że zużywają tekst i tworzą tekst. Zdarza się, że LaTeX (lub bardziej ogólnie TeX) wybrał rodzaj niskopoziomowej strategii oceny opartej na makrach, która pasuje do niektórych przypadków.

Eli Barzilay
źródło
Więc ... twój komentarz do makr - czy mówisz, że Python jest tak samo dobry jak Lisps w emisji lateksu?
Job
Cóż, IMO Lisps są lepsze od Pythona ze względu na makra (między innymi) - powiedzmy więc, że w przypadku emisji lateksu Python nie ma żadnych nowych problemów w porównaniu do seplenienia ...
Eli Barzilay
@Eli Co rozumiesz przez „nowe problemy”?
Mark C
1
Znak C: w obu przypadkach (Lisp lub Python) takim systemem jest pisanie kodu, który generuje kod (la) tex. Nie ma szczególnego powodu, aby jeden był lepszy od drugiego, inny niż zwykłe twierdzenie, że Lispers będzie miał lepszy język i na odwrót. W tym sensie nie ma żadnych nowych problemów po obu stronach.
Eli Barzilay,
Dzięki za odpowiedź. Źle odczytałem, że „w porównaniu do” oznacza, że ​​Lisps ma problemy z wykonaniem tej pracy. Nawiasem mówiąc, potrzebujesz „@”, aby wysłać powiadomienie. (Dostaniesz jeden, bo taka jest twoja odpowiedź).
Mark C