Re: [O] accessing source block header arguments from exporters

2015-04-11 Thread John Kitchin
I agree with Not exactly. In this post
http://kitchingroup.cheme.cmu.edu/blog/2014/09/22/Showing-what-data-went-into-a-code-block-on-export/
I did  something where I wanted to get information about the variables
passed into a block and show that on export. You might get some
inspiration from that. The result is at
http://kitchingroup.cheme.cmu.edu/media/2014-09-22-Showing-what-data-went-into-a-code-block-on-export/custom-src-table-export-3.html



Charles Berry writes:

 Robert Klein roklein at roklein.de writes:


 Hi,

 is there a way, to read header arguments to source blocks in the
 exporters org-exporter-src-block funktions?

 Not directly. org-babel-exp-code has no provision for headers.
 They get dropped.


 E.g. is there a way to access :firstline in the example below?


 Not exactly, but ...

 If you precede the code block with

 #+attr_firstline: 23

 then with point in the src block

 (org-element-property :attr_firstline (org-element-context))

 will return (23). And org-*-src-block functions can use it.

 If you really want to use the :firstline idiom, you can add a hook in
 `org-export-before-processing-hook' to find :firstline headers and
 insert #+attr_firstline lines in the buffer copy that the exporter is using.

 #+begin_src c++ -n :firstline 23
static struct
   {
   char*entity;
   unsigned char   equiv;
   } entities[] =
 {
   { lt,   '' } ,
   { gt,   '' } ,
   { amp,  '' } ,
   { quot, '' } ,
   { trade,153 } , /* trade mark */
 #+end_src

 I didn't find it in the `element' structure.

 However, if I use

 #+begin_src c++ firstline=23
   // random C++
 #+end_src

 I could access :parameters from `element' and parse the string.
 However I'm not sure if I'd break some babel stuff or not.


 C-c C-v C-i on that src block shows that 'firstline=23' is treated as
 a switch by babel. So if there is any language that tries to use that
 as a switch (or has a regexp that matches it), there could be trouble.

 But in C it looks innocuous.

 If I'm trying to implement a firstline feature -- source blocks with
 new line numbering (-n) beginning at a given line number -- I'd prefer
 to use :firstline, but I didn't find anything to suggest `:XXX ZZ'
 header arguments to source blocks are available to the exporters.


 HTH,

 Chuck

--
Professor John Kitchin
Doherty Hall A207F
Department of Chemical Engineering
Carnegie Mellon University
Pittsburgh, PA 15213
412-268-7803
@johnkitchin
http://kitchingroup.cheme.cmu.edu



[O] accessing source block header arguments from exporters

2015-04-10 Thread Robert Klein
Hi,

is there a way, to read header arguments to source blocks in the
exporters org-exporter-src-block funktions?

E.g. is there a way to access :firstline in the example below?

#+begin_src c++ -n :firstline 23
   static struct
  {
  char*entity;
  unsigned char   equiv;
  } entities[] =
{
  { lt,   '' } ,
  { gt,   '' } ,
  { amp,  '' } ,
  { quot, '' } ,
  { trade,153 } , /* trade mark */
#+end_src

I didn't find it in the `element' structure.

However, if I use

#+begin_src c++ firstline=23
  // random C++
#+end_src

I could access :parameters from `element' and parse the string.
However I'm not sure if I'd break some babel stuff or not.

If I'm trying to implement a firstline feature -- source blocks with
new line numbering (-n) beginning at a given line number -- I'd prefer
to use :firstline, but I didn't find anything to suggest `:XXX ZZ'
header arguments to source blocks are available to the exporters.

Any advice?

Thank you very much
Robert



Re: [O] accessing source block header arguments from exporters

2015-04-10 Thread Charles Berry
Robert Klein roklein at roklein.de writes:

 
 Hi,
 
 is there a way, to read header arguments to source blocks in the
 exporters org-exporter-src-block funktions?

Not directly. org-babel-exp-code has no provision for headers. 
They get dropped.


 E.g. is there a way to access :firstline in the example below?
 

Not exactly, but ...

If you precede the code block with

#+attr_firstline: 23 

then with point in the src block

(org-element-property :attr_firstline (org-element-context))

will return (23). And org-*-src-block functions can use it.

If you really want to use the :firstline idiom, you can add a hook in 
`org-export-before-processing-hook' to find :firstline headers and 
insert #+attr_firstline lines in the buffer copy that the exporter is using.

 #+begin_src c++ -n :firstline 23
static struct
   {
   char*entity;
   unsigned char   equiv;
   } entities[] =
 {
   { lt,   '' } ,
   { gt,   '' } ,
   { amp,  '' } ,
   { quot, '' } ,
   { trade,153 } , /* trade mark */
 #+end_src
 
 I didn't find it in the `element' structure.
 
 However, if I use
 
 #+begin_src c++ firstline=23
   // random C++
 #+end_src
 
 I could access :parameters from `element' and parse the string.
 However I'm not sure if I'd break some babel stuff or not.


C-c C-v C-i on that src block shows that 'firstline=23' is treated as 
a switch by babel. So if there is any language that tries to use that 
as a switch (or has a regexp that matches it), there could be trouble.  
 
But in C it looks innocuous.

 If I'm trying to implement a firstline feature -- source blocks with
 new line numbering (-n) beginning at a given line number -- I'd prefer
 to use :firstline, but I didn't find anything to suggest `:XXX ZZ'
 header arguments to source blocks are available to the exporters.
 

HTH,

Chuck