所以,我在组织模式文件中定义了这个函数:
#+name: index
#+begin_src emacs-lisp :var s="" n=1
(let ((str (upcase (s-replace-regexp "[^A-Za-z]" "" s))))
(substring str (1- n) n))
#+end_src
我有一个简单的桌子:
| Word | Number | Letter |
|------+--------+--------|
| Foo | 1 | |
| Bar | 2 | |
| Baz | 1 | |
| Quux | 3 | |
我想将“Letter”列中的每个单元格设置为使用相应的 Word 和 Letter 值调用“index”的结果。 我尝试了以下方法,但没有成功。它只是在第三列中给了我“#ERROR”:
#+TBLFM: $3='(org-sbe index (s $1) (n $2))
这是对我有用的版本(组织模式版本 9.8-pre (release_9.7.9-119-g86abaf)):
#+name: index
#+begin_src emacs-lisp :var s="bar" n="3"
(let ((str (upcase (s-replace-regexp "[^A-Za-z]" "" s)))
(m (string-to-number n)))
(substring str (1- m) m)))
#+end_src
| Word | Number | Letter |
|------+--------+--------|
| Foo | 1 | F |
| Bar | 2 | A |
| Baz | 1 | B |
| Quux | 3 | U |
#+TBLFM: $3='(org-sbe "index" (s $$1) (n $$2))