如何从 Org 表调用 Org Babel 函数

问题描述 投票:0回答:1

所以,我在组织模式文件中定义了这个函数:

#+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))

emacs org-mode org-babel
1个回答
0
投票

这是对我有用的版本(组织模式版本 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))
© www.soinside.com 2019 - 2024. All rights reserved.