РЕДАКТИРОВАТЬ Код ниже работает для версий org-mode
до 7.8.Чтобы заставить это работать с 7.8 и выше, вы должны использовать #+name
вместо #+srcname
.
Две вещи, которые вы перечисляете, не обязательно связаны.
Для бита Python выследует использовать srcname
вместо name
.Вам также нужно сообщить блоку, что существует входная переменная, указав аргумент заголовка :var
.Вы должны также определить переменную по умолчанию здесь, иначе python будет жаловаться.Это на самом деле вводит в заблуждение в текущей онлайн-документации.Вы хотите что-то вроде:
#+srcname: square
#+begin_src python :var x=1
return x*x
#+end_src
После оценки #+call: square(x=6)
с помощью C-c C-c
вы получите:
#+results: square(x=6)
: 36
Вторая проблема, похоже, связана с вашей переменной org-babel-load-languages
.По умолчанию язык emacs-lisp
должен быть загружен.Возможно, вы меняете это в своем файле .emacs ?Ваш вышеприведенный код lisp отлично работает для меня, и у меня есть следующее в моем .emacs :
; org-babel stuff
(org-babel-do-load-languages
'org-babel-load-languages
'((org . t)
(emacs-lisp . t)
(gnuplot . t)
(python . t)
(octave . t)
(latex . t)
(perl . t)
(sh . t)
(ditaa . t)))
(setq org-confirm-babel-evaluate nil)
(require 'org-exp-blocks)
, но строка (emacs-lisp . t)
не обязательна.