Major A <[email protected]> wrote: > > Hi, > > I'd like to use asymptote to plot the values in an Org table. The table > has cells with numbers but also cells with strings in them. This table > gets converted to an array of strings in the resulting asymptote file, > with the strings escaped with double-quotes but not the numbers. In > asymptote, this is an error, so that no plot is produced. > > Here's the code: > > #+data: values > | 0 | 0 | a | > | 1 | 1 | b | > | 2 | 3 | c | > =20 > #+begin_src asymptote :file asy.png :var v=3Dvalues > size(100); > draw((0,0)--(1,1)); > #+end_src > > The temporary asymptote file created during evaluation or export looks > like this: > > string[][] v=3D{ > {0,0,"a"}, > {1,1,"b"}, > {2,3,"c"} > }; > > "asy" complains about this file like this: > > asymptote-12652XAo: 2.2: cannot cast 'int' to 'string' > asymptote-12652XAo: 2.4: cannot cast 'int' to 'string' > asymptote-12652XAo: 3.2: cannot cast 'int' to 'string' > asymptote-12652XAo: 3.4: cannot cast 'int' to 'string' > asymptote-12652XAo: 4.2: cannot cast 'int' to 'string' > asymptote-12652XAo: 4.4: cannot cast 'int' to 'string' > > Am I doing something wrong here? >
I don't know anything about asymptote and I am not sure whether this
will help: it does produce a temp file with everything quoted and
running asy on the temp file produces an .eps file that contains the
diagonal line, but it produces a png file which seems somewhat peculiar
to me but maybe it'll work for you.
You have to do
(setq org-babel-min-lines-for-block-output 0)
in order to get the example block result.
I just added a python block to produce another table with everything
quoted. The second table is then give to asymptote:
--8<---------------cut here---------------start------------->8---
#+data: values
| 0 | 0 | a |
| 1 | 1 | b |
| 2 | 3 | c |
#+begin_src python :results output :var table=values
print "#+data: qvalues"
for row in table:
print "|%s|" % ("|".join(map(lambda x: "\"%s\"" % (x), row)))
#+end_src
#+results:
#+begin_example
#+data: qvalues
|"0"|"0"|"a"|
|"1"|"1"|"b"|
|"2"|"3"|"c"|
#+end_example
#+begin_src asymptote :file asy.png :var v=qvalues
size(100);
draw((0,0)--(1,1));
#+end_src
#+results:
[[file:asy.png]]
--8<---------------cut here---------------end--------------->8---
The temp file looks like this:
--8<---------------cut here---------------start------------->8---
string[][] v={
{"0","0","a"},
{"1","1","b"},
{"2","3","c"}
};
size(100);
draw((0,0)--(1,1));
--8<---------------cut here---------------end--------------->8---
I attach the asy.png file I get.
Nick
<<attachment: asy.png>>
