emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Marcelo de Moraes Serpa <celoserpa@gmail.com>
To: "Sébastien Vauban" <wxhgmqzgwmuf@spammotel.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: Literate Programming with Org mode
Date: Tue, 28 Jul 2009 11:46:45 -0500	[thread overview]
Message-ID: <1e5bcefd0907280946r7b2eb7b9lac80ddc813fa9809@mail.gmail.com> (raw)
In-Reply-To: <87my6ordhh.fsf@mundaneum.com>

Hmm, this seems interesting and something I'm looking for, but I'm not
entirely sure what you mean by "literate programming" (I haven't
googled yet either, I'm about to do it once I answer this message).
Anyway, I have a project I'm working on right now that requires me to
set up a "publishing environment", in the sense that I might have
source files (maybe in XML or whatever format makes sense) and be able
to convert them to LaTeX (for pdf), html or whatever format I could
think of, using XSLT, something like the "pragmatic programmers"
publishing toolchain. Not sure if literate programming has anything to
do with that :)

2009/7/28 Sébastien Vauban <wxhgmqzgwmuf@spammotel.com>:
> 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:
>
> --8<---------------cut here---------------start------------->8---
> <<Enterprise.sql>>=
> <<sql-init>>
> SELECT abcID, etpID, etpAssurATPolNum
> FROM enterprise JOIN record
>    ON (etpAbcID_fk = abcID)
> WHERE etpAbcID_fk
> <<sql-cond>>
> @ %def
> --8<---------------cut here---------------end--------------->8---
>
> 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:
>
> --8<---------------cut here---------------start------------->8---
> <<Lessons.sql>>=
> <<sql-init>>
> 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
> <<sql-cond>>
> @ %def
> --8<---------------cut here---------------end--------------->8---
>
> 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):
>
> --8<---------------cut here---------------start------------->8---
> noweb org-lit-prog.nw
> --8<---------------cut here---------------end--------------->8---
>
> 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
>
> --
> Sébastien Vauban
>
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Remember: use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
>

  reply	other threads:[~2009-07-28 16:46 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-28 16:14 Literate Programming with Org mode Sébastien Vauban
2009-07-28 16:46 ` Marcelo de Moraes Serpa [this message]
2009-07-28 20:41   ` Sébastien Vauban
2009-07-28 21:53     ` sam kleinman
2009-07-29 22:16       ` Eric H. Neilsen, Jr.
2009-07-31 17:01       ` Eric Schulte
2009-07-31 20:30         ` sam kleinman
2009-07-30  0:42 ` Eric Schulte
2009-08-02  1:46   ` Eric Schulte
2009-08-03  8:42     ` Sébastien Vauban
2009-08-03 15:38       ` Eric Schulte
2009-08-11  9:42         ` Sébastien Vauban
2009-08-11 18:55           ` Eric Schulte

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1e5bcefd0907280946r7b2eb7b9lac80ddc813fa9809@mail.gmail.com \
    --to=celoserpa@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=wxhgmqzgwmuf@spammotel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).