Pregunta

Es posible hacer cosas interesantes con lo que normalmente se consideraría como idiomas tipográficos. Por ejemplo, puede construir el conjunto de MandelBrot Usando PostScript.

Se sugiere en Esta pregunta de Mathoverflow Ese látex puede ser Turing-COMPLETO. Esto implica la capacidad de escribir programas arbitrarios (¡aunque puede no ser fácil!). ¿Alguien sabe de algún ejemplo concreto de dicho programa en látex, que hace algo muy inusual con el lenguaje?

¿Fue útil?

Solución

En el número 13 de El lector de monadas, Stephen Hicks escribe sobre la implementación de la solución a un concurso ICFP (que involucra a Mars Rover Navigation) en Tex, con abundante uso de macros. Divertidamente, la salida de la solución cuando TypeSet es un mapa PostScript de la ruta del rover.

Otros consejos

Alternativamente, Andrew Greene escribió un intérprete básico en Tex (más detalles). Esto puede contar como ligeramente perverso.

los pgfmath La biblioteca todavía me sorprende. Pero en una nota más relacionada con el turbo: es posible escribir una máquina de turbio real en Tex, según http://en.literateprograms.org/turing_machine_simulator_(latex). Es solo una forma ingeniosa de usar expansiones en Tex.

PostScript también está completo, si lees el manual Te sorprenderá las capacidades de programación general de la misma (al menos, lo era).

def k#1#2 {#2}

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

No estoy seguro de si esto califica como programación per se, pero recientemente comencé a hacer algo un poco como cosas orientadas a objetos en látex. (No necesita saber ninguna matemática para seguir lo siguiente). En los documentos recientes, he estado escribiendo sobre categorías, cual tiene objetos y morfismos. Como ha habido bastantes de esos, quería un estilo consistente para que, por ejemplo, fuera una categoría con un objeto típico C y morfismo típico C. Entonces también tendría 𝒟 con D y d. Así que defino una "clase", digo "categoría" (debes ser un matemático para entender la broma allí), y declaro que C es una instancia de esta clase, y luego tienes acceso a ccat, Cobj, cmor Etcétera. La razón para no hacer cat {c}, obj {c} y mor {c}, y así sucesivamente, es que a veces estas categorías tienen nombres especiales y, por lo tanto, después de declarar la instancia, puedo modificar su nombre muy fácilmente (Simplemente redefinir ccat: bueno, en realidad mathccat ya que ccat es un contenedor que selecciona mathccat en modo matemático y textccat en modo de texto). (Por supuesto, es un poco más complicado de lo que sugiere lo anterior y las cosas de OO realmente son útiles cuando quiero definir una nueva categoría como una variante de una antigua (incluso puede lidiar con el caso donde el viejo no lo hace ' t existen todavía.).).

Aunque puede no calificar como programación real, la estoy usando en documentos y lo encuentro útil: las otras respuestas (hasta ahora) tienen más sensación de mostrar las capacidades del látex que de una solución sensata a un problema práctico.

Sé de alguien que escribió la respuesta a Un problema de concurso de ACM en látex.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top