有人能给出在sbe中使用ob-table.el函数的例子吗?我一定是错过了什么,因为我还没能让它和直截了当的精灵一起工作。
#+name: add1(x=1) :results silent
#+begin_src python
return x + 1
#+end_src这样做是可行的:
| 1 | 2 | 3 | 4 |
#+TBLFM: @1$4='(sbe add1 (x $3))但这并不意味着:
#+begin_src emacs-lisp
(sbe add1 (x 2))
#+end_src错误:错误类型参数:序列,2
将2改为清单只会使其进一步恶化:
#+begin_src emacs-lisp
(sbe add1 (x (list 2))
#+end_src错误类型参数:缓冲区或字符串-p,2
发布于 2012-03-07 14:30:38
如果我正确地理解了您的问题,您将尝试使用表外的命名源块来调用结果。
首先,您的:results silent属于#+begin_src行,而不是#+name (只有当您直接评估该块时才与之相关)。我从python切换到emacs,原因很简单,因为这台机器上没有python,所以不能对块进行计算,否则,函数仍然是等效的。
#+name: add1(x=1)
#+begin_src emacs-lisp :results silent
(+ x 1)
#+end_src在Org表中,正确的命令是您使用的命令:#+tblfm: @1$4='(sbe add1 (x $3))
当使用表外的代码块时,必须使用#+CALL: (参见代码块评估)。
例如:
#+CALL: add1(x=2)
#+RESULTS: add1(x=2)
: 3
#+CALL: add1(4)
#+RESULTS: add1(4)
: 5
#+call: add1(add1(2))
#+RESULTS: add1(add1(2)
: 4编辑(从评论中添加答案):
如果您只想清理您的公式,并且能够更好地读取它们以进行更改,那么公式编辑器C-c '将让您更清楚地看到它们,并突出显示单元格引用,以确保您选择正确的区域。
https://stackoverflow.com/questions/9595310
复制相似问题