emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Orgmode] Re: [BABEL] Output with octave


From: Dan Davison
Subject: [Orgmode] Re: [BABEL] Output with octave
Date: Sun, 01 Aug 2010 14:18:40 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/23.2 (gnu/linux)

Eric S Fraga <address@hidden> writes:

> On Fri, 23 Jul 2010 16:59:43 +0000 (UTC), d.tchin <address@hidden> wrote:
>> 
>> Hi
>> 
>> I use babel to use with octave language. I use it and
>> define a session so as to have interaction with
>> octave process. 
>> 
>> It is great to have interaction with octave and
>> check the action of the code easily.
>> 
>> I have problem to get output back in org mode file. 
>> I try the following code :
>> 
>> 
>> --8<---------------cut here---------------start------------->8---
>> #+tblname: test
>> | 1 | 2 | 3 |
>> 
>> #+source: outtest
>> #+begin_src octave  :session *out*   :var vec=test :results output
>> vecb=vec;
>> vecb
>> #+end_src
>> 
>> --8<---------------cut here---------------end--------------->8---
>> 
>> You will get following output
>> 
>> #+results: outtest
>> : vec =
>> : 
>> :    1   2   3
>> : octave.exe> vecb =
>> : 
>> :    1   2   3
>> 
>> As you see I get two outputs : vec variable and vecb (with octave prompt).
>> It is what I expected, excepted vec output.

The inclusion of the prompt is undesirable, and that is now on a to-fix
list.

But the ":results value" problems are more serious:

>> 
>> With :results value 
>> 
>> --8<---------------cut here---------------start------------->8---
>> #+tblname: test
>> | 1 | 2 | 3 |
>> 
>> 
>> 
>> #+source: outtest
>> #+begin_src octave  :session *out*   :var vec=test :results value
>> vecb=vec;
>> vecb
>> #+end_src
>> 
>> --8<---------------cut here---------------end--------------->8---
>> 
>> I get the following output 
>> 
>> 
>> #+results: outtest
>> : org_babel_eoe

OK, perhaps you or other octave users could advise us on how to proceed
here, as neither Eric Schulte nor I know octave. Note that this works:

#+begin_src octave :session *out* :var vec=test
vecb=vec;
vecb+0
#+end_src

#+results:
: 1.00000000e+00 2.00000000e+00 3.00000000e+00

octave evaluation in org works as follows:
- The user code is evaluated
- The value of the variable 'ans' is written to disk and imported into
  org

And the octave manual tells us that 'ans' is:

,----
| The most recently computed result that was not explicitly assigned to a 
variable
`----

The trouble seems to be that the final expression 'vecb' doesn't count
as a computation, and so doesn't change the value of ans.

So the current workaround is to say "when using octave, you must end
your block with a computation, rather than a simple statement of a
variable name."

Can someone suggest a better solution?

Dan

p.s. Or you could do this

#+begin_src octave :session *out* :var vec=test
vecb=vec;
ans=vecb
#+end_src

#+begin_src octave :session *out* :var vec=test
vecb=vec;
ans=vecb
ans
#+end_src


>> 
>> In the octave process, I check that it the last intruction. But 
>> what I would expect is to get last instruction vecb.
>> 
>> I certainly miss something. Could someone help me on this ?
>
> I don't think you are missing anything obvious as for the ":results
> value" case, I get the same thing.  In fact, for ":results output", I
> don't actually get any output!  I'm not sure why.  I wonder if there
> is a dependence on the version of Octave?  I'm using a fairly old
> version (3.0.x instead of 3.2.x).
>
> : Org-mode version 7.01trans (release_7.01g.24.g6b5cf)
> : GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0)
> :  of 2010-05-16 on raven, modified by Debian



reply via email to

[Prev in Thread] Current Thread [Next in Thread]