emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: "Berry, Charles" <ccberry@ucsd.edu>
To: Diego Zamboni <diego@zzamboni.org>
Cc: Org-mode <emacs-orgmode@gnu.org>
Subject: Re: Exporting noweb-ref's without disabling org-babel processing
Date: Wed, 23 Oct 2019 16:50:40 +0000	[thread overview]
Message-ID: <13AFA234-5B6C-4526-9838-03EB57B82899@ucsd.edu> (raw)
In-Reply-To: <CAGY83EfQuQ3c2VDVMeuUCMTF7NZqNL=5nEP+fojXcE2-PYPwYA@mail.gmail.com>

Diego,

I am not sure I understand. Here is my interpretation:

You wish to have `:exports both' behavior in your org export.

You want noweb references in the exported code to render as angle-bracketed chunk names, such as <<my-code>> rather than being expanded in place.

If that is what you want, you can use the feature of CALL keywords that resets the header arguments for the src block it calls to obtain different behavior with the same code. For example:

#+begin_src org
  ,#+name: template-chunk
  ,#+begin_src emacs-lisp :noweb no
  (concat c b a
  <<super-duper-code>>
  )
  ,#+end_src

  ,#+CALL: template-chunk() :noweb yes :var a="A" b="B" c="C"

  ,#+begin_src emacs_lisp :noweb-ref super-duper-code
  (concat a b c)
  ,#+end_src
#+end_src

exports as 

--8<---------------cut here---------------start------------->8---
,----
| (concat c b a
| <<super-duper-code>>
| )
`----

,----
| CBAABC
`----


,----
| (concat a b c)
`----
--8<---------------cut here---------------end--------------->8---

HTH,

Chuck

> On Oct 22, 2019, at 1:29 PM, Diego Zamboni <diego@zzamboni.org> wrote:
> 
> Hi,
> 
> I'm working on a Leanpub Markua exporter (not quite complete yet but already usable, if you are interested: https://github.com/zzamboni/ox-leanpub/tree/book-and-markua)
> 
> I would like to include the value of :noweb-ref for code blocks in exported output, like noweb originally did, e.g. something like this:
> 
> #begin_src emacs_lisp :noweb-ref super-duper-code
> ...
> #end_src
> 
> to produce something like this in the export:
> 
> <<super-duper-code>>=
>  ...
> 
> After much poking around, I figured that the :noweb and :noweb-ref header args are removed by org-babel *before* the src block makes it to the exporter. I also discovered that by setting org-export-use-babel to nil I could disable this behavior, which means that my exporter can access the :noweb-ref argument by parsing the :parameters property (see https://github.com/zzamboni/ox-leanpub/blob/book-and-markua/ox-leanpub-markua.el#L388).
> 
> This was good for my original purpose, but I just realized that this also disables other useful org-babel features on export, such as the processing of the :exports header argument, which means that both code and results are always included in the export regardless of what :exports says :)
> 
> I have tried using org-babel-exp-code-template, but unfortunately if I try to use "%noweb-ref" as a key in its value, it gets replaced by the value of :noweb followed by "-ref" in every case.
> 
> Is there some other way of accessing org-babel header arguments like :noweb-ref from the exporter, but without having to disable org-babel processing completely? Any other ideas for achieving what I want?
> 
> Thanks for any ideas,
> --Diego
> 

  reply	other threads:[~2019-10-23 16:51 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-10-22 20:29 Exporting noweb-ref's without disabling org-babel processing Diego Zamboni
2019-10-23 16:50 ` Berry, Charles [this message]
2019-10-24 12:02   ` Diego Zamboni

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=13AFA234-5B6C-4526-9838-03EB57B82899@ucsd.edu \
    --to=ccberry@ucsd.edu \
    --cc=diego@zzamboni.org \
    --cc=emacs-orgmode@gnu.org \
    /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).