emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* macro expansion in source code
@ 2013-08-29 11:52 Johannes Rainer
  2013-08-29 15:15 ` Charles Berry
  0 siblings, 1 reply; 3+ messages in thread
From: Johannes Rainer @ 2013-08-29 11:52 UTC (permalink / raw)
  To: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 727 bytes --]

hi,

I was just wondering if there is a way to use macro expansion also in
source code blocks or headers. I tried this, but the macro was never
expanded, but rather the {{{image_width}}} was exported. could the
expansion be done by calling the macro expansion before export (e.g. using
a hook)?

something like this:

#+MACRO: image_width 16

#+BEGIN_SRC R :results silent :exports code
  IMAGE <- "test.png"
  WIDTH <- {{{image_width}}}
  HEIGHT <- 6
  png( file=IMAGE, width=WIDTH, height=HEIGHT, units="cm", res=600,
pointsize=6 )
  library( RColorBrewer )
  display.brewer.all()
  dev.off()
#+END_SRC


or

#+BEGIN_SRC R :results file :exports results :width {{{image_width}}}
  display.brewer.all()
#+END_SRC


cheers, jo

[-- Attachment #2: Type: text/html, Size: 962 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: macro expansion in source code
  2013-08-29 11:52 macro expansion in source code Johannes Rainer
@ 2013-08-29 15:15 ` Charles Berry
  2013-08-29 19:22   ` Johannes Rainer
  0 siblings, 1 reply; 3+ messages in thread
From: Charles Berry @ 2013-08-29 15:15 UTC (permalink / raw)
  To: emacs-orgmode

Johannes Rainer <johannes.rainer <at> gmail.com> writes:

> 
> 
> hi,
> I was just wondering if there is a way to use macro expansion also in 
> source code blocks or headers. I tried this, but the macro was never 
> expanded, but rather the {{{image_width}}} was exported. could the 
> expansion be done by calling the macro expansion before export 
> (e.g. using a hook)?
> 
> something like this:

[snip]

I think the answer is no. But you can accomplish much the same thing with
properties and/or noweb references. Like this

* header
  :PROPERTIES:
  :image_width: 16
  :END:

#+NAME: imwide
#+HEADER: :var iw=(org-entry-get (point) "image_width")
#+BEGIN_SRC R :results value
iw
#+END_SRC

#+RESULTS: imwide
: 16


#+BEGIN_SRC R :noweb yes :results output
image.width <- 
  <<imwide()>>
image.width
#+END_SRC

#+RESULTS:
: [1] 16

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: macro expansion in source code
  2013-08-29 15:15 ` Charles Berry
@ 2013-08-29 19:22   ` Johannes Rainer
  0 siblings, 0 replies; 3+ messages in thread
From: Johannes Rainer @ 2013-08-29 19:22 UTC (permalink / raw)
  To: Charles Berry; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 1425 bytes --]

thanks for that solution! I will give it a try!


On Thu, Aug 29, 2013 at 5:15 PM, Charles Berry <ccberry@ucsd.edu> wrote:

> Johannes Rainer <johannes.rainer <at> gmail.com> writes:
>
> >
> >
> > hi,
> > I was just wondering if there is a way to use macro expansion also in
> > source code blocks or headers. I tried this, but the macro was never
> > expanded, but rather the {{{image_width}}} was exported. could the
> > expansion be done by calling the macro expansion before export
> > (e.g. using a hook)?
> >
> > something like this:
>
> [snip]
>
> I think the answer is no. But you can accomplish much the same thing with
> properties and/or noweb references. Like this
>
> * header
>   :PROPERTIES:
>   :image_width: 16
>   :END:
>
> #+NAME: imwide
> #+HEADER: :var iw=(org-entry-get (point) "image_width")
> #+BEGIN_SRC R :results value
> iw
> #+END_SRC
>
> #+RESULTS: imwide
> : 16
>
>
> #+BEGIN_SRC R :noweb yes :results output
> image.width <-
>   <<imwide()>>
> image.width
> #+END_SRC
>
> #+RESULTS:
> : [1] 16
>
>
>
>
>


-- 
Johannes Rainer, PhD
Applied Bioinformatics Group,
Division Molecular Pathophysiology,
Biocenter, Medical University Innsbruck,
Innrain 80/82 II, 6020 Innsbruck, Austria
and
Tyrolean Cancer Research Institute
Innrain 66, 6020 Innsbruck, Austria

Tel.:     +43 (0)512 9003 70961
Email:  johannes.rainer@i-med.ac.at
            johannes.rainer@tcri.at
URL:   http://bioinfo.i-med.ac.at

[-- Attachment #2: Type: text/html, Size: 2266 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2013-08-29 19:23 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-08-29 11:52 macro expansion in source code Johannes Rainer
2013-08-29 15:15 ` Charles Berry
2013-08-29 19:22   ` Johannes Rainer

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).