如何从 src 块中的多个表访问数据
How to access data from many tables in src blocks
在我的组织文档中,我有几个名为(#+name:
)t1、t2 等的表。我想将所有表传递给一些 lisp 代码。这是我目前所拥有的:
#+name: process-tables
#+header: :var t1=t1 t2=t2 t3=t3 t4=t4 t5=t5 t6=t6 t7=t7 t8=t8 t9=t9 t10=t10 t11=t11 t12=t12 t13=t13 t14=t14
#+BEGIN_SRC emacs-lisp
(process (append t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14))
#+END_SRC
这看起来很笨拙。有没有更好的办法?我不想合并 org 文档中的表格。
您可以尝试使用 org-table-map-tables
和 org-table-to-lisp
函数来创建缓冲区中所有 table 的列表。这避免了必须单独调用 table 个名称。
(defun org-tables-to-list ()
(let (tbls)
(org-table-map-tables
(lambda ()
(push (org-table-to-lisp) tbls))
t)
(apply #'append (nreverse tbls))))
例如:
#+name: t1
| 0 | 1 |
#+name: t2
| 2 | 3 |
#+name: process-tables
#+BEGIN_SRC emacs-lisp :results value verbatim
(org-tables-to-list)
#+END_SRC
#+RESULTS: process-tables
: (("0" "1") ("2" "3"))
在我的组织文档中,我有几个名为(#+name:
)t1、t2 等的表。我想将所有表传递给一些 lisp 代码。这是我目前所拥有的:
#+name: process-tables
#+header: :var t1=t1 t2=t2 t3=t3 t4=t4 t5=t5 t6=t6 t7=t7 t8=t8 t9=t9 t10=t10 t11=t11 t12=t12 t13=t13 t14=t14
#+BEGIN_SRC emacs-lisp
(process (append t1 t2 t3 t4 t5 t6 t7 t8 t9 t10 t11 t12 t13 t14))
#+END_SRC
这看起来很笨拙。有没有更好的办法?我不想合并 org 文档中的表格。
您可以尝试使用 org-table-map-tables
和 org-table-to-lisp
函数来创建缓冲区中所有 table 的列表。这避免了必须单独调用 table 个名称。
(defun org-tables-to-list ()
(let (tbls)
(org-table-map-tables
(lambda ()
(push (org-table-to-lisp) tbls))
t)
(apply #'append (nreverse tbls))))
例如:
#+name: t1
| 0 | 1 |
#+name: t2
| 2 | 3 |
#+name: process-tables
#+BEGIN_SRC emacs-lisp :results value verbatim
(org-tables-to-list)
#+END_SRC
#+RESULTS: process-tables
: (("0" "1") ("2" "3"))