Брак Лисп и LaTeX - это было сделано?

9

Мне нравится LaTeX, но я нахожу его макросистему и логику сложными и слабыми. такие языки, как Schem / Lisp / Clojure, очень хороши в макросах. Я представляю весь документ, написанный на языке семейства lisp, который при запуске генерировал бы код LaTeX и создавал документ. Это было сделано раньше? Есть ссылки?

работа
источник
2
Да, быстрый поиск в Google показывает Tex, дополненный Lisp. Есть, вероятно, десятки других. Макросистема LaTeX на самом деле довольно мощная, хотя и не для слабонервных. Вы можете создать свой собственный, копируя дизайн пакетов XML-in-Lisp.
Макнейл
2
Обратите внимание, что здесь также есть обмен тексами: tex.stackexchange.com
Роберт Антон Риз
Кстати, LaTeX отдает дань уважения Lisp, вызывая альтернативные версии операторов, которые делают что-то немного другое с *суффиксом. Лисп есть letи let*так далее, у LaTeX есть \sectionи \section*.
Каз

Ответы:

13

Racket делает именно это в Scribble , своей системе документации. Сейчас в этой системе написаны тысячи страниц документации, и она очень живая. Обратите особое внимание на используемый синтаксис , который делает множество таких гибридных команд очень удобными .

Однако обратите внимание, что хотя макросы используются как обычно в любом коде на Лиспе или Схеме, они не являются центральным моментом этого. Функции подходят для большинства вещей - они просто потребляют текст и производят текст. LaTeX (или, в более общем смысле, TeX) выбрал своего рода низкоуровневую стратегию оценки на основе макросов, которая подходит для некоторых случаев.

Эли Барзилай
источник
Итак ... ваш комментарий к макросам - вы говорите, что Python так же хорош, как Лисп, в испускании латекса?
Работа
Ну, IMO Lisps лучше, чем Python, из-за макросов (среди прочего) - так что давайте просто скажем, что для испускания латекса Python не испытывает никаких новых проблем по сравнению с lisps ...
Eli Barzilay
@Eli Что вы подразумеваете под "новыми проблемами"?
Марк С
1
Знак C: в обоих случаях (Lisp или Python) система, подобная этой, пишет код, который генерирует (la) текстовый код. Нет особой причины, по которой один будет лучше другого, кроме обычного утверждения, что у Лисперса будет лучше, и их язык лучше, и наоборот. В этом смысле нет новых проблем ни с одной стороны.
Эли Барзилай
О, спасибо за ответ. Я неправильно понял, что «по сравнению с» означает, что у Лиспа есть проблемы с выполнением этой работы. Кстати, вам нужно "@", чтобы отправить уведомление. (Вы получите один, потому что это ваш ответ.)
Марк C