Achim Gratz writes: > Eric Schulte writes: >> Does anyone on this list know the noweb system well enough to specify >> its behavior in this regard, and to describe what functional changes >> would be required to bring Babel into line with noweb behavior? > > Far from knowing it well, but the basics are, well basic: > > Documentation text is started via '@', code chunks are defined via > '<>=' and a given chunk can be extended by '<>=' > with the same name again, which allows to intermingle documentation and > definition in a linear fashion. Code chunk references are just > '<>' without the equal sign and can be used non-linearly. > For comparison with Babel the noweb Hackers Guide is probably a good > source since it describes the pipeline representation which is used by > the tools (and should maybe be emulated by the Babel backend). > > http://www.cs.tufts.edu/~nr/noweb/guide.html > Hi Achim, Thanks for sending along this reference. That combined with the related "Literate Programming Simplified" [1] serve as a very interesting introduction to Noweb. I have not studied noweb previously and I am impressed by the simplicity of the pipelined filter-based design. Noweb and Babel are certainly very different beasts. Noweb achieves sparse simplicity allowing use with a variety of tools while Babel lives inside the very rich environment of Org-mode documents. Noweb enables literate programming LP while babel is a reproducible research tool which also provides support for LP. It seems that lifting a solution whole-piece from noweb will not make sense, as noweb does not have a need for unique code block names in the same way as babel. How about the following solution, which is based on a new :noweb-ref header argument. When expanding ``noweb'' style references the bodies of all code block with /either/ a block name matching the reference name /or/ a :noweb-ref header argument matching the reference name will be concatenated together to form the replacement text. By setting this header argument at the sub-tree or file level, simple code block concatenation may be achieved. For example, when tangling the following Org-mode file, the bodies of code blocks will be concatenated into the resulting pure code file.