From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Eric Schulte" Subject: Re: Re: Literate Programming with Org mode Date: Tue, 11 Aug 2009 12:55:52 -0600 Message-ID: References: <87my6ordhh.fsf@mundaneum.com> <87r5vtffv4.fsf@mundaneum.com> <873a7yy9dc.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 1MawWm-000120-8T for emacs-orgmode@gnu.org; Tue, 11 Aug 2009 14:56:56 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1MawWh-00010p-Ll for emacs-orgmode@gnu.org; Tue, 11 Aug 2009 14:56:55 -0400 Received: from [199.232.76.173] (port=59265 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1MawWh-00010k-Gf for emacs-orgmode@gnu.org; Tue, 11 Aug 2009 14:56:51 -0400 Received: from mail-yw0-f202.google.com ([209.85.211.202]:61764) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1MawWh-0003sR-4E for emacs-orgmode@gnu.org; Tue, 11 Aug 2009 14:56:51 -0400 Received: by ywh40 with SMTP id 40so5708723ywh.14 for ; Tue, 11 Aug 2009 11:56:50 -0700 (PDT) In-Reply-To: <873a7yy9dc.fsf@mundaneum.com> (=?utf-8?Q?=22S=C3=A9bastien?= Vauban"'s message of "Tue, 11 Aug 2009 11:42:39 +0200") 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, S=C3=A9bastien Vauban writes: > Hi Eric, > > "Eric Schulte" wrote: >> S=C3=A9bastien Vauban writes: >>> "Eric Schulte" wrote: >>>> "Eric Schulte" writes: [...] > Now (I've done some changes, explained below), I can... > > Stored: Header > Stored: Condition to be satisfied > Stored: File Enterprise > Stored: File Lessons > Stored: File Payment > Added to /home/sva/Downloads/emacs/site-lisp/noweb-example/w-babel/Enterp= rise.sql > Added to /home/sva/Downloads/emacs/site-lisp/noweb-example/w-babel/Lesson= s.sql > Added to /home/sva/Downloads/emacs/site-lisp/noweb-example/w-babel/Paymen= t.sql > tangled 3 source-code blocks > > Great! > Wonderful, so if we're creating source-code files then we're most of the way there. > > Though, this is not entirely what I expected. Let's take the Enterprise.s= ql > file: > > -- generated by org-babel-tangle > > -- [[file:~/Downloads/emacs/site-lisp/noweb-example/w-babel/org-babel-lit= -prog.org::*File%20Enterprise][block-3]] > -- <> > SELECT abcID, etpID, etpAssurATPolNum > FROM enterprise JOIN record > ON (etpAbcID_fk =3D abcID) > WHERE etpAbcID_fk > -- <> > -- block-3 ends here > > I'm expecting the sql-init and sql-cond blocks to be replaced by their de= fined > equivalent. So, in this case, I should have the following file: > > -- generated by org-babel-tangle > > -- [[file:~/Downloads/emacs/site-lisp/noweb-example/w-babel/org-babel-lit= -prog.org::*File%20Enterprise][block-3]] > -- Hey, Emacs! This is a -*- coding: utf-8 -*- file! > > -- no longer display the count message > SET NOCOUNT ON > > DECLARE @dateFmtStyleIn int; SET @dateFmtStyleIn =3D 120 -- ODBC canonical > DECLARE @dateFmtStyleOut int; SET @dateFmtStyleOut =3D 103 -- French dd/m= m/yyyy > > DECLARE @firstDayOfThisMonth smalldatetime > SET @firstDayOfThisMonth =3D CONVERT(smalldatetime, > CAST(YEAR(GETDATE()) AS char(4)) + '-' > + CAST(MONTH(GETDATE()) AS char(2)) + = '-' > + '01' + ' 00:00:00', > @dateFmtStyleIn) > > SELECT abcID, etpID, etpAssurATPolNum > FROM enterprise JOIN record > ON (etpAbcID_fk =3D abcID) > WHERE etpAbcID_fk > > IN (SELECT actAbcID_fk > FROM status > WHERE (staID =3D 338 AND staEtat =3D 3)) > AND abcSignDate < @firstDayOfThisMonth > ORDER BY abcID > -- block-3 ends here > > Do we agree on this? > Agreed. This is the contents of my Enterprise.sql (as generated by org-babel tangle). I believe this is the contents that you wanted. I'm not sure what could be different between our setups... --8<---------------cut here---------------start------------->8--- -- generated by org-babel-tangle -- [[file:~/src/noweb-example/w-babel/org-babel-lit-prog.org::*File%20Enter= prise][block-3]] -- <> -- Hey, Emacs! This is a -*- coding: utf-8 -*- file! -- no longer display the count message SET NOCOUNT ON DECLARE @dateFmtStyleIn int; SET @dateFmtStyleIn =3D 120 -- ODBC canonical DECLARE @dateFmtStyleOut int; SET @dateFmtStyleOut =3D 103 -- French dd/mm/= yyyy DECLARE @firstDayOfThisMonth smalldatetime SET @firstDayOfThisMonth =3D CONVERT(smalldatetime, CAST(YEAR(GETDATE()) AS char(4)) + '-' + CAST(MONTH(GETDATE()) AS char(2)) + '-' + '01' + ' 00:00:00', @dateFmtStyleIn) SELECT abcID, etpID, etpAssurATPolNum FROM enterprise JOIN record ON (etpAbcID_fk =3D abcID) WHERE etpAbcID_fk -- <> IN (SELECT actAbcID_fk FROM status WHERE (staID =3D 338 AND staEtat =3D 3)) AND abcSignDate < @firstDayOfThisMonth ORDER BY abcID -- block-3 ends here --8<---------------cut here---------------end--------------->8--- Some changes which I would still like to make to the above are 1) use relative paths when linking back to the org-mode file 2) somehow activate an org-mode minor mode in the source-code file which will then "turn on" the org-mode style links in the source code file > > >>> Is it normal that you don't include the extension in the tangle propert= y? >>> Does it add the language extension automatically? >> >> Yes, org-babel adds the language specific extension automatically. This >> could be changed/overridden if it proves to limiting. It grew out of >> the fact that originally source-code files were named based upon the >> basename of the org-mode file and the language extension. > > I find that this is OK right now. Though, people could want to give an > explicit extension, moreover for `.htm' or `.html' files where standard > conventions are not that clear. > Maybe I can add a simple rule. *If* there is already an extension *then* don't add the default extension. I'll add this to the Org-babel tasks. > > >>>> The document can also be exported into html and latex using org-mode's >>>> standard export functionality. >>> >>> I have problems as well... >> >> Again maybe this is the result of conflicting values of org-odd-levels-o= nly? >> Please try this with the newer org-mode file [1]. I was able to export t= his >> to latex resulting in the following tex file [5] and pdf file [6]. I was >> also able to export this file to html which includes code highlighting [= 7]. >> >>> Thanks for all! This is seriously a hot topic you've almost solved... >> >> Sorry I can't be more specific with answers to your problems tangling and >> exporting. Please do give the new org-mode file [1] a try with the latest >> version org-babel and let me know if the problems persist. > > I still had the same problem in the beginning: around the `verbatim' > environments, I had wrong `\LaTeX{}' environments created... > > Though, I found the problem: it's somehow a conflict with the > `org-special-blocks' package. Un-commenting the following should show you= the > problems: > > ;; FIXME This is responsible of problems when used with Org-babel > ;; (`\LaTeX{}' environments are created around verbatim environments) > ;; ;; turn Org blocks into LaTeX environments and HTML divs > ;; (try-require 'org-special-blocks) > > ;; literate programming > (try-require 'org-babel-init) > > With the above configuration, I could finally export the Org file in LaTe= X. > Yeeesss. > > I have some comments on the resulting file: > > o sections (and sub-, and subsub-) should not be starred by default, > IMHO, and then unnumbered. > This should be addressed in the Org-mode core rather than in Org-babel. > > o indentation of code blocks should be preserved. > This should also be addressed in Org-mode proper. > > o name of code blocks should be visible in the produced document > because, now, I see that the file Enterprise.sql will include the > sql-init block, but I don't know where it is described (which pag= e, > and which block). > Excellent that you are now seeing sql-init block in Enterprise.sql, I agree that it would be nice to see the source code block's name in the exported file. I will add this to the Org-babel tasks. > > Except these, the result is already very promising! > Thanks for you continued help refining this functionality! -- Eric > > >>> BTW, what do you think of my proposal to include the Tangle process as a >>> built-in step of the export to LaTeX (and HTML)? >>> >>> That way, we only would export and get both flies caught with one stone. >> >> I like that idea, once this is working as two separate processes it shou= ld >> be relatively trivial to optionally hook org-babel-tangle onto the other >> export commands. > > Fantastic. > > Thanks for all your work. > > Best regards, > Seb