I've clarified with Mike the problem, and that email. For reference, that email had a macro that had some complication in that it implemented a raw `include' with scribble syntax -- but putting the code inside a scribble file makes that unnecessary.
So there are two problems: the first is that he wants to use identifiers in the documentation-generating macro that depend on the lexical context where the macro is used. In other words, he wants to use a macro that breaks hygiene... which means that something like this should work for that purpose: (define-macro (foo x . body) `@splice{ Blah blah blah, @racket[x], blah blah. @,@body}) ; <-- "@" is for scribble, ",@" is as usual Or even better, just avoid the `define-macro' guessing of context at all: (define-syntax (foo stx) (syntax-case stx () [(_ x body ...) (with-syntax ([x (syntax->datum #'x)] [(body ...) (syntax->datum #'(body ...))]) #'@splice{ Blah blah blah, @racket[x], blah blah. @|body ...|})])) ; <-- have `body' followed by `...' (Funny that it's a similar kind of breakage that the literate programming thing is doing.) The other problem is that he wants the macro to generate a section too, with references, which means that each use needs to generate different tags. Instead of fighting with some gensym, what I suggested earlier is to have some part of the tag be an input to the macro, so it ends up like (define-syntax (foo stx) (syntax-case stx () [(_ tagpart x body ...) (with-syntax ([x (syntax->datum #'x)] [(body ...) (syntax->datum #'(body ...))] [tag (format "foo-~a" (syntax->datum #'tagpart))]) #'@splice{ Blah blah blah, @racket[x], blah blah. @subsection[#:tag tag]{Some Title} More blah blah blah. @|body ...|})])) (Warning: I'm too tired to actually try the above... so it's untested.) -- ((lambda (x) (x x)) (lambda (x) (x x))) Eli Barzilay: http://barzilay.org/ Maze is Life! _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev