Emacs 24/Org 7.8 を使用していますが、org-babel に問題があります。#+call でコードのブロックを呼び出したい:
#+name: square(x)
#+begin_src python
return x*x
#+end_src
#+call: square(x=6)
#+call を Cc Cc で評価すると、次のメッセージが表示されます。
ブロック「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))