我正在使用 Emacs 24/Org 7.8 并且在使用 org-babel 时遇到了一些问题。我想用#+call 调用一段代码:
#+name: square(x)
#+begin_src python
return x*x
#+end_src
#+call: square(x=6)
使用 Cc Cc 评估 #+call 会给出消息:
必须为块“square”中的变量“x”分配默认值
关于如何调试的任何建议?我的 init.el 中有以下与 org-babel 相关的代码:
(org-babel-do-load-languages
'org-babel-load-languages
'((R . t)
(python . t)
(js . t)
(scheme . t)
(C . t)
(lilypond . t)
(maxima . t)
(octave . t)))
像这样添加:var x=1
到begin_src
行中:
#+name: square(x)
#+begin_src python :var x=1
return x*x
#+end_src
#+call: square(x=6)
不要阻止我收到错误。
使用 emacs 调试器进行调查,我发现它ref
不是持有"x=6"
,而是持有"x"
。
(org-babel-merge-params
(mapcar
(lambda (ref) (cons :var ref))
(mapcar
(lambda (var) ;; check that each variable is initialized
(if (string-match ".+=.+" var)
var
(error
"variable \"%s\"%s must be assigned a default value"
var (if name (format " in block \"%s\"" name) ""))))
(org-babel-ref-split-args (match-string 5))))
(nth 2 info))