Re: [O] exporting cross-references to source block results CORRECTION

2013-04-11 Thread Christian Moe

Oops, sorry, I take back my last message, there was an error in my test
example.

Adding a #+NAME above the generated table DOES result in a correct
cross-reference. That seems like reasonable behavior to me.

Vikas, can you try this? Simply add a name to the generated table when
you also add a caption, and use that name to link.

Yours,
Christian



 Vikas Rawal didn't say if he also added a `#+NAME: foo' line above the
 generated table. I expected that to solve it, so I tried. This did give
 the table an `id=foo' attribute on HTML export for a cross-reference
 to target. However, the cross-reference still behaved the same way.

 Thanks Christian for confirming this. 

 The previous discussion is at
 http://thread.gmane.org/gmane.emacs.orgmode/67727/

 I had mentioned that everything works fine if you change the variable
 org-babel-results-keyword to NAME. But Nicolas said that should not be
 done and that the exporter should work correctly with #+RESULTS. But
 at least for me, it does not work correctly.

 Vikas




Re: [O] exporting cross-references to source block results CORRECTION

2013-04-11 Thread Vikas Rawal
 
 Oops, sorry, I take back my last message, there was an error in my test
 example.
 
 Adding a #+NAME above the generated table DOES result in a correct
 cross-reference. That seems like reasonable behavior to me.

The intended behaviour, as documented by Nicolas, is that a named
source block will result in output with #+RESULTS, and that the
cross-reference will pick that up correctly.

If #+RESULT is not to work, it is better to change
org-babel-results-keyword to NAME, and then what you are suggesting
happens automatically. But in the earlier thread on the topic, Nicolas
said that was not the right way.

Vikas




Re: [O] exporting cross-references to source block results CORRECTION

2013-04-11 Thread Christian Moe

Vikas Rawal writes:
 Oops, sorry, I take back my last message, there was an error in my test
 example.
 
 Adding a #+NAME above the generated table DOES result in a correct
 cross-reference. That seems like reasonable behavior to me.

 The intended behaviour, as documented by Nicolas, is that a named
 source block will result in output with #+RESULTS, and that the
 cross-reference will pick that up correctly.

I confirm that I don't get a correct cross-reference to a table that
is identified only by its #+RESULTS name.

 If #+RESULT is not to work, it is better to change
 org-babel-results-keyword to NAME, and then what you are suggesting
 happens automatically. But in the earlier thread on the topic, Nicolas
 said that was not the right way.

I see. Sorry for not following the discussion. In that way, you get both
code block and result identified by the same NAME line, and Babel
appears to be smart enough to handle that without the code block
overwriting itself...

But this solution gives faulty exports if you're exporting both code and
results (`:exports both'). In HTML, you get two different elements with
the same id attribute, the code block and the table. That shouldn't
happen. I find Firefox resolves the conflict by jumping to whichever of
the two elements appears first.

It seems to me that you would have the same problem even if the exporter
did pick up the name from the RESULTS line and make a cross-reference to
it, as you expect it to. The target would still be ambiguous.

I submit that the best way to get a cross-reference to a generated table
in all circumstances is to manually name that table with a #+NAME line
and a *unique* name, i.e. *different* from that of the source block that
generated it. This seems a reasonable requirement.

Yours,
Christian



Re: [O] exporting cross-references to source block results CORRECTION

2013-04-11 Thread Nicolas Goaziou
Hello,

Vikas Rawal vikasli...@agrarianresearch.org writes:

 
 Oops, sorry, I take back my last message, there was an error in my test
 example.
 
 Adding a #+NAME above the generated table DOES result in a correct
 cross-reference. That seems like reasonable behavior to me.

 The intended behaviour, as documented by Nicolas, is that a named
 source block will result in output with #+RESULTS, and that the
 cross-reference will pick that up correctly.

 If #+RESULT is not to work, it is better to change
 org-babel-results-keyword to NAME, and then what you are suggesting
 happens automatically. But in the earlier thread on the topic, Nicolas
 said that was not the right way.

We are misunderstanding each other.

#+results are never used for cross-references. This is a Babel internal
keyword used to refer to the source that generated this element.

Cross-references only react to #+name keyword.


Regards,

-- 
Nicolas Goaziou



Re: [O] exporting cross-references to source block results CORRECTION

2013-04-11 Thread Vikas Rawal

  cross-reference will pick that up correctly.
 
  If #+RESULT is not to work, it is better to change
  org-babel-results-keyword to NAME, and then what you are suggesting
  happens automatically. But in the earlier thread on the topic, Nicolas
  said that was not the right way.
 
 We are misunderstanding each other.
 
 #+results are never used for cross-references. This is a Babel internal
 keyword used to refer to the source that generated this element.
 
 Cross-references only react to #+name keyword.
 


Sorry, this is confusing. Is it then the case that we are naming the
source block to ensure that captions stick to the corresponding
results block? And then, we need to separately name the results block,
and use a different name for it, so that the cross-references pick it
up correctly?

Vikas



Re: [O] exporting cross-references to source block results CORRECTION

2013-04-11 Thread Nicolas Goaziou
Vikas Rawal vikasli...@agrarianresearch.org writes:

  cross-reference will pick that up correctly.
 
  If #+RESULT is not to work, it is better to change
  org-babel-results-keyword to NAME, and then what you are suggesting
  happens automatically. But in the earlier thread on the topic, Nicolas
  said that was not the right way.
 
 We are misunderstanding each other.
 
 #+results are never used for cross-references. This is a Babel internal
 keyword used to refer to the source that generated this element.
 
 Cross-references only react to #+name keyword.
 


 Sorry, this is confusing. Is it then the case that we are naming the
 source block to ensure that captions stick to the corresponding
 results block?

Source block captions apply to the source block, not to the results. You
have to define a separate caption for the results.

Source block name will be used both as a label for cross referencing and
as a Babel internal code for results correspondence.

 And then, we need to separately name the results block, and use
 a different name for it, so that the cross-references pick it up
 correctly?

Yes, the name given to the results block doesn't depend on the results
keyword. You can give it any name, as long as it is unique.

Here is an example:

  #+caption: Src block caption
  #+name: my-src
  #+begin_src emacs-lisp
  (+ 1 2)
  #+end_src

  #+name: anything
  #+caption: Element caption
  #+results: my-src
  : 3

As far as affiliated keywords go, the only one you needn't provide is
#+results:.

HTH,


Regards,

-- 
Nicolas Goaziou



Re: [O] exporting cross-references to source block results CORRECTION

2013-04-11 Thread Vikas Rawal
 
  And then, we need to separately name the results block, and use
  a different name for it, so that the cross-references pick it up
  correctly?
 
 Yes, the name given to the results block doesn't depend on the results
 keyword. You can give it any name, as long as it is unique.
 
 Here is an example:
 
   #+caption: Src block caption
   #+name: my-src
   #+begin_src emacs-lisp
   (+ 1 2)
   #+end_src
 
   #+name: anything
   #+caption: Element caption
   #+results: my-src
   : 3
 
 As far as affiliated keywords go, the only one you needn't provide is
 #+results:.

Abundantly clear. Thank you.

Have already started cleaning my file and it is working the way it
should :)

Vikas