Matrimonio di Lisp e LaTeX - è stato fatto?


9

Mi piace LaTeX, ma trovo che il suo sistema macro e la sua logica siano sia complessi che deboli. linguaggi come Schem / Lisp / Clojure sono molto bravi nelle macro. Immagino l'intero documento scritto in un linguaggio familiare lisp, che, una volta eseguito, emetterebbe codice LaTeX e produrrebbe un documento. È già stato fatto prima? Qualche link?


2
Sì, una rapida ricerca su Google rivela TeX potenziato con Lisp. Probabilmente ce ne sono dozzine. Il sistema macro LaTeX è in realtà abbastanza potente, anche se non per i deboli di cuore. Puoi crearne uno tuo, copiando il design dei pacchetti XML-in-Lisp.
Macneil,

2
Nota che c'è anche uno stackexchange tex: tex.stackexchange.com
Robert Anton Reese,

A proposito, LaTeX rende omaggio a Lisp chiamando versioni alternative di operatori che fanno qualcosa di leggermente diverso con un *suffisso. Lisp ha lete let*così via, LaTeX ha \sectione \section*.
Kaz,

Risposte:


13

Racket fa esattamente questo in Scribble , il suo sistema di documentazione. Ora ci sono migliaia di pagine di documentazione scritte in questo sistema, ed è molto vivo. Nota in particolare la sintassi utilizzata, che rende molto comodi molti di questi comandi ibridi tramite sputing-out-text .

Si noti, tuttavia, che mentre le macro sono utilizzate come al solito in qualsiasi codice Lisp / Scheme, non sono un punto centrale di questo. Le funzioni vanno bene per la maggior parte delle cose: capita semplicemente di consumare testo e produrre testo. LaTeX (o più in generale TeX) sembra aver scelto una sorta di strategia di valutazione basata su macro di basso livello che si adatta ad alcuni casi.


Quindi ... il tuo commento sulle macro - stai dicendo che Python è bravo quanto Lisps nell'emettere Latex?
Giobbe

Bene, i Lisps IMO sono migliori di Python a causa delle macro (tra le altre cose) - quindi diciamo solo che per l'emissione di lattice, Python non soffre di nuovi problemi rispetto ai lisps ...
Eli Barzilay

@Eli Cosa intendi con "nuovi problemi"?
Segna C

1
Mark C: in entrambi i casi (un Lisp o Python) un sistema come questo sta scrivendo codice che genera (la) codice tex. Non vi è alcun motivo particolare per cui uno sarebbe migliore dell'altro rispetto alla solita affermazione che i Lisper avranno che la loro lingua è migliore e viceversa. In tal senso, non ci sono nuovi problemi da nessuna parte.
Eli Barzilay,

Oh, grazie per aver risposto. Ho letto male che "rispetto a" significa che i Lisps hanno problemi a fare questo lavoro. A proposito, è necessario un "@" per inviare una notifica. (Ne otterrai uno perché questa è la tua risposta.)
Segna C
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.