Я слышал, что LaTeX завершен. Есть ли программы, написанные в LaTeX?

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

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

Ответ 1

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

Ответ 3

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

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

Ответ 4

\ Защита\К # 1 # 2 # {2}

\ Защита \S # 1 # 2 # 3 {# 1 # 3 {# 2 # 3}}

Ответ 5

I'm not sure if this qualifies as programming per se, but I've recently starting doing something a bit like Object Oriented stuff in LaTeX. (You don't need to know any maths to follow the following.) In recent papers, I've been writing about categories, which have objects and morphisms. Since there've been quite a few of those, я wanted a consistent style so that, say, 𝒞 was a category with typical object C and typical morphism c. Then I'd also have 𝒟 with D and d. So я define a "class", say "category" (you need to be a mathematician to understand the joke there), and declare that C is an instance of this class, and then have access to \ccat, \cobj, \cmor and so forth. The reason for not doing \cat{c}, \obj{c}, and \mor{c}, and so forth, is that sometimes these categories have special names and so after declaring the instance, я can modify it name very easily (simply redefine \ccat - well, actually \mathccat since \ccat is a wrapper which selects \mathccat in math mode and \textccat in text mode). (Of course, it a little more complicated than the above suggests and the OO stuff really comes in useful when я want to define a new category as a variant of an old one (it can even deal with the case where the old one doesn't exist yet.).)

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