多个组织模式表共享一条#+ TBLFM线

时间:2014-08-14 10:09:42

标签: emacs org-mode

我有一个带有表格的结构化组织文档,每个月一个。每个表都进行相同的计算,因此,#+ TBLFM行在所有表中都是相同的。

有没有办法强制所有表共享相同的#+ TBLFM行?

提前致谢

2 个答案:

答案 0 :(得分:0)

我很确定答案是"没有"。

答案 1 :(得分:0)

如果公式是使用emacs lisp定义的,则可以共享。定义一个emacs lisp函数来处理计算,然后在每个表中引用该emacs lisp函数。在#+TBLFM中使用lisp表达式前的引号'来完成此操作。

例如,

#+NAME: table1
| Col1 | Col2          |
|------+---------------|
|      | do stuff here |
|      |               |
|------+---------------|
#+TBLFM: @2$2='(my-shared-function)

#+NAME: table2
| Col1          | Col2 |
|---------------+------|
|               |      |
| do stuff here |      |
|---------------+------|
#+TBLFM: @3$1='(my-shared-function)

#+begin_src emacs-lisp
(defun my-shared-function ()
  "Function to be shared between tables."
  (interactive)
  "do stuff here")
#+end_src

在该示例中,有一个名为my-shared-function的emacs lisp函数,该函数返回字符串"do stuff here"(由于是最后计算的表达式的返回值)。每个表都会调用该函数,从而将字符串放置在所指示的单元格中(请记住,@是行,$是列)。

您可以在手册中阅读有关使用emacs lisp作为公式的更多信息:

https://orgmode.org/worg/org-tutorials/org-spreadsheet-lisp-formulas.html