2013-05-13 6 views
10

Esiste un modo per eseguire codice in un file .lhs e mettere il risultato subito sotto il codice stesso nel PDF risultante?Metti il ​​risultato del codice sotto il codice nel PDF risultante. Haskell

Ad esempio:

[1,2,3] ++ [4,5,6] 
[1,2,3,4,5,6] 
+0

Intendi valutare automaticamente le espressioni che non sono dichiarazioni e incollare i risultati nel codice sorgente prima di trasformarlo in un pdf, un po 'come fa Mathematica? – AndrewC

+0

Sì, qualcosa del genere. È per mostrare un esempio di come funziona una funzione, e voglio essere eseguita se qualcuno esegue il codice e deve essere mostrato anche se qualcuno guarda il PDF – Jcao02

+0

Sicuramente, avremo bisogno di un po 'più di controllo su ciò che verrà prodotto , o non utilizzerai definizioni non stampabili? Perché non usare per es. ['HaTeX'] (http://hackage.haskell.org/package/HaTeX), forse insieme a [un quasi-quoter adatto] (http://www.haskell.org/pipermail/haskell-cafe/2008- October/049244.html) per evitare la duplicazione del codice. – leftaroundabout

risposta

11

Se si sta utilizzando LaTeX, è possibile utilizzare lhs2TeX. Ecco un semplice esempio di documento:

\documentclass{article} 

%include polycode.fmt 
%options ghci 

\begin{document} 

< [1,2,3] ++ [4,5,6] 

This evaluates to \eval{[1,2,3] ++ [4,5,6]}. 

> x = [1 .. 6] 

And this evaluates to \eval{x}, too. 

\end{document} 

Questo eseguirà GHCi con il file di origine come input in background. È quindi possibile valutare le espressioni utilizzando \eval nel contesto del modulo corrente (letteralmente Haskell), ei loro risultati verranno uniti nelle origini .tex risultanti.

Problemi correlati