"Eric Schulte" writes: > Hi Sébastien, > > Thanks for the description. This is very interesting and I think > warrants a re-working of the tangle functionality in org-babel. > > Given your description below I think I may try to add the Nuweb > link/reference syntax "<>" to org-babel. As > source-code blocks are already named in the current org-babel setup this > wouldn't be a very significant change. Once this is added it shouldn't > be difficult to expand these links/references on export. > > Under this new setup the example file you described would be analogous > to the this org-mode file. > > Does this sound like it would accomplish most of what you are after? > > I will reply to this message if/when I get this implemented. > Alright, I've changed the tangling functionality of org-babel so that it now follows some of the noweb conventions. With the newest version of org-babel [1], try opening the attached org-mode file [2] which is an org-mode translation of Sébastien's noweb file from his previous email. Calling `org-babel-tangle' from within this file will create the Payment.sql, Lessons.sql, and Enterprise.sql source-code files. The document can also be exported into html and latex using org-mode's standard export functionality. Cheers -- Eric > > Cheers -- Eric > > Sébastien Vauban writes: > >> Hi Eric and all, >> >> Here some promised description of how I'm using Literate Programming with >> LaTeX (up to now -- soon directly from Org mode?). >> >> I write an "enhanced LaTeX" file ([1], having the `.nw' -- for Nuweb -- >> extension). It is enhanced as I can put blocks of code in there (SQL blocks, >> for example), and give them a name for further referencing. >> >> Then, at some point in the file, I say how I want the code files to look like, >> by assembling the blocks in a certain order, with some glue. >> >> For example: >> >> <>= >> <> >> SELECT abcID, etpID, etpAssurATPolNum >> FROM enterprise JOIN record >> ON (etpAbcID_fk = abcID) >> WHERE etpAbcID_fk >> <> >> @ %def >> >> The above file is made up of two defined blocks (`sql-init' and `sql-cond') >> plus some glue in between. >> >> The good thing is I can reuse the same blocks in other context, completely >> avoiding copy/paste of code: >> >> <>= >> <> >> SELECT abcID, lesAlternNbrSem, lesNbrSem, >> CONVERT(varchar(10), lesDateDeb, @dateFmtStyleOut) AS lesDateDeb, >> CONVERT(varchar(10), lesDateFin, @dateFmtStyleOut) AS lesDateFin >> FROM lessons JOIN record >> ON (lesAbcID_fk = abcID) >> WHERE lesAbcID_fk >> <> >> @ %def >> >> OK. So, my `org-lit-prog.nw' file is ready, and committed under Subversion >> (this is the only one I'm committing as it contains both the documentation of >> the code, and the source code itself). >> >> Then, I just type (in a terminal): >> >> noweb org-lit-prog.nw >> >> to extract both: >> >> o the LaTeX file [2] to be compiled into a PDF [3], >> o the different source code files (Enterprise.sql [4], Lessons.sql [5], >> [6] and [7]) >> >> Just that easy to keep code and doc in sync, and get a very nice-to-read >> documentation of the code. >> >> Sometimes, I play an extra trick is made in the noweb file: I put blocks of >> static code (for which I don't especially need any noweb feature) after the >> end of the LaTeX document. That way, it gets outputted by noweb as a source >> file during the Tangle process, and included in my LaTeX document via the >> listings package. >> >> Why that trick? I could directly put the code in the body of the document! >> Yes, but I want the code to be highlighted via listings. Otherwise, it's just >> black and white display of the code... >> >> For easy access, I've put all the above files on a my Web space: >> >> [1] http://www.mygooglest.com/sva/org-lit-prog.nw >> [2] http://www.mygooglest.com/sva/org-lit-prog.tex >> [3] http://www.mygooglest.com/sva/org-lit-prog.pdf >> [4] http://www.mygooglest.com/sva/Enterprise.sql >> [5] http://www.mygooglest.com/sva/Lessons.sql >> [6] http://www.mygooglest.com/sva/Payment.sql >> [7] http://www.mygooglest.com/sva/prsNumNat.awk >> >> From what I understand, what we both wanna reach is writing all of the `.nw' >> file as an Org file directly, and let Org-babel extracts the source code files >> and the documentation out of it. >> >> What should be good in the future, when it will be ready for prime time, is >> that this becomes complete part of the export process: no tangle operation >> needed. >> >> Is the above description worth for you? Do you understand how I work when >> documenting code? Pay attention: I'm *the* expert in literate programming. >> Just an amateur being seduced by some of its features. >> >> Best regards, >> Seb Footnotes: [1] http://github.com/eschulte/org-babel/tree/master [2]