Eric, thanks for the answer. another "#+begin_src org" question. it appears that only *string* values are allowed for any :var that are defined (i.e., ':var bar="foo"', and *not* ':var bar=3'). since i'm not 100% sure of the semantics, maybe this is desired.
if one *should* be allowed to pass in, e.g., tables, numbers, etc., then maybe org-babel-expand-body:org in ob-org.el wants to change from the current ---- (defun org-babel-expand-body:org (body params) (dolist (var (mapcar #'cdr (org-babel-get-header params :var))) (setq body (replace-regexp-in-string (regexp-quote (format "$%s" (car var))) (cdr var) body nil 'literal))) body) ---- to something like this ---- (defun org-babel-expand-body:org (body params) (dolist (var (mapcar #'cdr (org-babel-get-header params :var))) (setq body (replace-regexp-in-string (regexp-quote (format "$%s" (car var))) (if (stringp (cdr var)) (cdr var) (format "%s" (prin1 (cdr var)))) body nil 'literal))) body) ---- (as otherwise replace-regexp-in-string notices that (cdr var) is *not* a string, and attempts to execute it.) maybe^2 it would make even more sense to use the "#+begin_src emacs-lisp" equivalent routine from ob-emacs-lisp.el as a template? ---- (defun org-babel-expand-body:emacs-lisp (body params) "Expand BODY according to PARAMS, return the expanded body." (let* ((vars (mapcar #'cdr (org-babel-get-header params :var))) (result-params (cdr (assoc :result-params params))) (print-level nil) (print-length nil) (body (if (> (length vars) 0) (concat "(let (" (mapconcat (lambda (var) (format "%S" (print `(,(car var) ',(cdr var))))) vars "\n ") ")\n" body "\n)") (concat body "\n")))) (if (or (member "code" result-params) (member "pp" result-params)) (concat "(pp " body ")") body))) ---- (my elisp isn't strong enough to evaluate this.) cheers, Greg