You may also try https://www.lri.fr/~filliatr/ocamlweb/ . Cheers "Raphaël Proust" a écrit : >On Mon, Sep 2, 2013 at 5:39 PM, Jonathan Protzenko > wrote: >> I am currently writing a big, mostly textual document in format blah >> (blah being of a course a meta-variable). Are there any tools that >> would allow me to interleave OCaml code with the contents of my >> document? >> >> More on my use-case. Creating this document requires me to perform >> various subtasks, such as: >> - write a code snippet in the document, >> - put the code snippet in a file, >> - call an external program on the file, >> - paste the output into the document. > >Current workflow I use involves: >- mkfile: a rule file for mk (Plan9's take on make, it has simple >escaping and a readable man page) to drive the whole thing, >- bar: a compiler for the language bar that includes a Latex pretty >printing mode >- inc/: a directory where I place all my code samples from language bar >- main.pdc: a pandoc file holding the source. > >Extracts from the mkfile: >~~~~~~~ >TARGET=main.pdf >SOURCE=${TARGET:%.pdf=%.pdc} > >INCLUDES=`{cat $SOURCE | grep '\\input{.*\.tex}' | sed >'s/^.*\\input{([^\$\\}]*\.tex)}.*$/\1/'} > >$TARGET: $SOURCE $INCLUDES > pandoc -o $TARGET $SOURCE > >%.pp.tex: %.bar bar.byte > OCAMLRUNPARAM=$OCAMLRUNOPT ./bar.byte -latex $stem.bar > $target > >%.pp.annot.tex: %.bar bar.byte >OCAMLRUNPARAM=$OCAMLRUNOPT ./bar.byte -latex -annot $stem.bar > $target >~~~~~~~ > >Extracts from bar.mli: >~~~~~~~ >module type PRINTER = sig > val t: annotations:bool -> t -> string >end >module LatexPP : PRINTER >~~~~~~~ > >Extracts from the main.pdc >~~~~~~~ >The annotation process, blahblah. Thus the program >$\input{inc/foo.pp.tex}$ >is annotated in the following way: $\input{inc/foo.pp.annot.tex}$ >~~~~~~~ > > >Known bugs and shortcomings: >- sed works line-wise so the mkfile INCLUDES variable is not set >properly when there are several \input on the same line. >- the passing of argument (using two rules with and two file >extensions) is hackish and would not scale. > > >Less painful than copy-pasting things and easier to keep everything in >sync. It's also nice to be able to do things such as: >\begin{align*} >\input{inc/function-application.pp.tex}\\ >\input{inc/function-declaration.pp.tex}\\ >\input{inc/if-then-else.pp.tex}\\ > >\end{align*} > >-- >______________ >Raphaël Proust > >-- >Caml-list mailing list. Subscription management and archives: >https://sympa.inria.fr/sympa/arc/caml-list >Beginner's list: http://groups.yahoo.com/group/ocaml_beginners >Bug reports: http://caml.inria.fr/bin/caml-bugs -- Envoyé de mon téléphone Android avec K-9 Mail. Excusez la brièveté.