From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Eric Schulte" Subject: Re: Literate Programming with Org mode Date: Wed, 29 Jul 2009 18:42:01 -0600 Message-ID: References: <87my6ordhh.fsf@mundaneum.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1MWvFX-0004JG-F9 for emacs-orgmode@gnu.org; Fri, 31 Jul 2009 12:46:31 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MWvFS-0004Gj-FG for emacs-orgmode@gnu.org; Fri, 31 Jul 2009 12:46:30 -0400 Received: from [199.232.76.173] (port=51830 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MWvFS-0004Gc-8K for emacs-orgmode@gnu.org; Fri, 31 Jul 2009 12:46:26 -0400 Received: from ey-out-1920.google.com ([74.125.78.144]:19375) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MWvFR-0006gs-IQ for emacs-orgmode@gnu.org; Fri, 31 Jul 2009 12:46:25 -0400 Received: by ey-out-1920.google.com with SMTP id 5so558000eyb.24 for ; Fri, 31 Jul 2009 09:46:24 -0700 (PDT) List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: =?utf-8?Q?S=C3=A9bastien?= Vauban Cc: emacs-orgmode@gnu.org Hi S=C3=A9bastien, 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. Cheers -- Eric S=C3=A9bastien 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 bloc= ks, > 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: > > <>=3D > <> > SELECT abcID, etpID, etpAssurATPolNum > FROM enterprise JOIN record > ON (etpAbcID_fk =3D abcID) > WHERE etpAbcID_fk > <> > @ %def=20 > > 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: > > <>=3D > <> > 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 =3D abcID) > WHERE lesAbcID_fk > <> > @ %def=20 > > 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 documentatio= n 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 t= he > end of the LaTeX document. That way, it gets outputted by noweb as a sour= ce > 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 documen= t! > 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 programmin= g. > Just an amateur being seduced by some of its features. > > Best regards, > Seb