DONE asymptote

added support for asymptote (another graphing language)

  for information on asymptote see http://asymptote.sourceforge.net/
This commit is contained in:
Eric Schulte 2009-07-24 20:17:49 -06:00
parent df4d41719d
commit e842d3c36b
3 changed files with 98 additions and 4 deletions

View File

@ -0,0 +1,71 @@
;;; org-babel-asymptote.el --- org-babel functions for asymptote evaluation
;; Copyright (C) 2009 Eric Schulte
;; Author: Eric Schulte
;; Keywords: literate programming, reproducible research
;; Homepage: http://orgmode.org
;; Version: 0.01
;;; License:
;; This program is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation; either version 3, or (at your option)
;; any later version.
;;
;; This program is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;;
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
;; Boston, MA 02110-1301, USA.
;;; Commentary:
;; Org-Babel support for evaluating asymptote source code.
;;
;; This differs from most standard languages in that
;;
;; 1) there is no such thing as a "session" in asymptote
;;
;; 2) we are generally only going to return results of type "file"
;;
;; 3) we are adding the "file" and "cmdline" header arguments
;;
;; 4) there are no variables (at least for now)
;;; Code:
(require 'org-babel)
(org-babel-add-interpreter "asymptote")
(add-to-list 'org-babel-tangle-langs '("asymptote" "asymptote"))
(defvar org-babel-default-header-args:asymptote '((:results . "file") (:exports . "results"))
"Default arguments to use when evaluating a asymptote source block.")
(defun org-babel-execute:asymptote (body params)
"Execute a block of Asymptote code with org-babel. This function is
called by `org-babel-execute-src-block'."
(message "executing Asymptote source code block")
(let* ((result-params (split-string (or (cdr (assoc :results params)) "")))
(out-file (cdr (assoc :file params)))
(format (or (and (string-match ".+\\.\\(.+\\)" out-file)
(match-string 1 out-file))
"pdf"))
(cmdline (cdr (assoc :cmdline params)))
(in-file (make-temp-file "org-babel-asymptote")))
(with-temp-file in-file (insert body))
(message (concat "asy -globalwrite -f " format " -o " out-file " " cmdline " " in-file))
(shell-command (concat "asy -globalwrite -f " format " -o " out-file " " cmdline " " in-file))
out-file))
(defun org-babel-prep-session:asymptote (session params)
(error "Asymptote does not support sessions"))
(provide 'org-babel-asymptote)
;;; org-babel-asymptote.el ends here

View File

@ -60,6 +60,8 @@
(require 'org-babel-R) (require 'org-babel-R)
(require 'org-babel-ditaa) (require 'org-babel-ditaa)
(require 'org-babel-gnuplot) (require 'org-babel-gnuplot)
(require 'org-babel-dot)
(require 'org-babel-asymptote)
(provide 'org-babel-init) (provide 'org-babel-init)
;;; org-babel-init.el ends here ;;; org-babel-init.el ends here

View File

@ -2141,7 +2141,7 @@ This is currently working only with emacs lisp as in the following
example in the [[* emacs lisp source reference][emacs lisp source reference]]. example in the [[* emacs lisp source reference][emacs lisp source reference]].
** TODO Add languages [3/6] ** TODO Add languages [4/6]
I'm sure there are many more that aren't listed here. Please add I'm sure there are many more that aren't listed here. Please add
them, and bubble any that you particularly care about up to the top. them, and bubble any that you particularly care about up to the top.
@ -2151,9 +2151,7 @@ Follow the pattern set by [[file:lisp/org-babel-script.el][org-babel-script.el]]
*** TODO perl *** TODO perl
This could probably be added to [[file:lisp/org-babel-script.el][org-babel-script.el]] This could probably be added to [[file:lisp/org-babel-script.el][org-babel-script.el]]
*** TODO java *** TODO java
*** DONE ditaa *** DONE ditaa
(see [[* file result types][file result types]]) (see [[* file result types][file result types]])
@ -2292,9 +2290,32 @@ digraph data_relationships {
#+resname: #+resname:
[[file:test-dot.png][test-dot.png]] [[file:test-dot.png][test-dot.png]]
*** TODO asymptote *** DONE asymptote
(see [[* file result types][file result types]]) (see [[* file result types][file result types]])
for information on asymptote see http://asymptote.sourceforge.net
#+begin_src asymptote :file asymptote-test.png
import graph;
size(0,4cm);
real f(real t) {return 1+cos(t);}
path g=polargraph(f,0,2pi,operator ..)--cycle;
filldraw(g,pink);
xaxis("$x$",above=true);
yaxis("$y$",above=true);
dot("$(a,0)$",(1,0),N);
dot("$(2a,0)$",(2,0),N+E);
#+end_src
#+resname:
[[file:asymptote-test.png][asymptote-test.png]]
* Bugs [27/38] * Bugs [27/38]
** TODO creeping blank lines ** TODO creeping blank lines