Я слышал, что латекс заполнен. Есть ли какие -нибудь программы, написанные в LaTex?

StackOverflow https://stackoverflow.com/questions/2968411

  •  24-10-2019
  •  | 
  •  

Вопрос

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

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

Это было полезно?

Решение

В выпуске 13 Монад читатель, Стивен Хикс пишет о реализации решения конкурса ICFP (с участием навигации Mars Rover) в TEX, с обильным использованием макросов. Забавно, что вывод решения, когда набрать является картой PostScript Path The Rover.

Другие советы

В качестве альтернативы Эндрю Грин написал Основной переводчик в TEX (Более подробная информация) Это может считаться слегка извращенным.

А pgfmath Библиотека все еще поражает меня. Но на более связанной с Тьюрингом примечание: можно написать фактическую машину Тьюринга в Техасе, согласно http://en.literaterprograms.org/turing_machine_simulator_(latex). Анкет Это просто изящный способ использования расширений в TEX.

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

def k#1#2 {#2}

def s#1#2#3 {#1#3 {#2#3}}}

Я не уверен, соответствует ли это как программирование как таковая, но недавно я начал делать что -то немного похожее на объектно -ориентированные вещи в латекске. (Вам не нужно знать какую -либо математику, чтобы следовать следующему.) В последних статьях я писал о категории, который имеет объекты а также морфизмы. Анкет Поскольку их было довольно много, я хотел последовательный стиль, чтобы, скажем, 𝒞 была категорией с типичным объектом В и типичный морфизм в. Анкет Тогда я также был бы 𝒟 с Дюймовый а также дюймовый. Анкет Поэтому я определяю «класс», скажем, «категория» (вам нужно быть математиком, чтобы понять шутку) и заявить, что C является экземпляром этого класса, а затем иметь доступ к ccat, cobj, cmor и так далее. Причина не делать cat {c}, obj {c} и mor {c}, и т. Д., заключается в том, что иногда эти категории имеют особые имена, и поэтому после объявления экземпляра я могу очень легко изменить его имя (Просто переопределите ccat - ну, на самом деле mathccat, поскольку ccat - это обертка, которая выбирает mathccat в математическом режиме и textccat в текстовом режиме). (Конечно, это немного сложнее, чем предполагает вышеупомянутое, и материал OO действительно полезны, когда я хочу определить новую категорию как вариант старого (он может даже иметь дело с случаем, когда старый это не делает ' Т еще.).).)

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top