Я слышал, что LaTeX завершен. Есть ли программы, написанные на LaTeX? - PullRequest
70 голосов
/ 03 июня 2010

Можно делать интересные вещи с тем, что обычно считается языками набора текста. Например, вы можете построить набор Мандельброта , используя postscript .

В предполагается, что в этом вопросе MathOverflow , что LaTeX может быть полным по Тьюрингу . Это подразумевает способность писать произвольные программы (хотя это может быть нелегко!). Кто-нибудь знает какой-либо конкретный пример такой программы на LaTeX, которая делает что-то необычное с языком?

Ответы [ 6 ]

81 голосов
/ 03 июня 2010

В выпуске 13 из The Monad Reader Стивен Хикс пишет о реализации решения конкурса ICFP (с использованием навигации на марсоходе) в TeX с обильным использованием макросов. Забавно, но вывод решения, когда набор текста, представляет собой постскрипт карту пути ровера.

24 голосов
/ 16 июля 2010

В качестве альтернативы Эндрю Грин написал интерпретатор ОСНОВНОГО в TeX ( подробнее ). Это может считаться слегка извращенным.

8 голосов
/ 03 июня 2010

Библиотека pgfmath все еще поражает меня. Но на более заметке, связанной с Тьюрингом: можно написать реальную машину Тьюринга в TeX, согласно http://en.literateprograms.org/Turing_machine_simulator_(LaTeX). Это просто изящный способ использования расширений в TeX.

PostScript также завершен по Тьюрингу, если вы прочитаете руководство , вы будете поражены общими возможностями его программирования (по крайней мере, так и было).

7 голосов
/ 10 июня 2014

\ def \ K # 1 # 2 {# 2}

\ def \ S # 1 # 2 # 3 {# 1 # 3 {# 2 # 3}}

5 голосов
/ 04 июня 2010

Я не уверен, что это квалифицируется как программирование как таковое, но я недавно начал делать что-то вроде объектно-ориентированных вещей в LaTeX. (Вам не нужно знать математику, чтобы следовать следующему.) В последних статьях я писал о категориях , которые имеют объектов и морфизмов . Так как их было довольно много, я хотел иметь последовательный стиль, чтобы, скажем, & # x1d49e; была категория с типичным объектом C и типичным морфизмом c . Тогда у меня также будет & # x1d49f; с D и d . Поэтому я определяю «класс», говорю «категория» (вам нужно быть математиком, чтобы понять шутку) и объявлять, что C является экземпляром этого класса, а затем иметь доступ к \ ccat, \ cobj, \ cmor и так далее. Причина, по которой не выполняются \ cat {c}, \ obj {c} и \ mor {c} и т. Д., Заключается в том, что иногда эти категории имеют специальные имена, поэтому после объявления экземпляра я могу очень легко изменить его имя (просто переопределите \ ccat - ну, на самом деле \ mathccat, так как \ ccat - это оболочка, которая выбирает \ mathccat в математическом режиме и \ textccat в текстовом режиме). (Конечно, это немного сложнее, чем предполагает вышеизложенное, и материал ОО действительно полезен, когда я хочу определить новую категорию как вариант старой (она может даже иметь дело со случаем, когда старая не ' пока не существует.).)

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

1 голос
/ 03 июня 2010

Я знаю кого-то, кто написал ответ на задачу конкурса ACM в LaTeX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...