【发布时间】:2014-08-14 10:09:41
【问题描述】:
我有一个带有表格的结构化组织文档,每个月一个。每个表执行相同的计算,因此,#+TBLFM 行在所有表中都是相同的。
有没有办法强制所有表共享相同的#+TBLFM 行?
提前致谢
【问题讨论】:
我有一个带有表格的结构化组织文档,每个月一个。每个表执行相同的计算,因此,#+TBLFM 行在所有表中都是相同的。
有没有办法强制所有表共享相同的#+TBLFM 行?
提前致谢
【问题讨论】:
如果公式是用 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
【讨论】:
#+TBLFM: 行,不是关于在不同的#+TBLFM: 行中重用一个函数。我相信答案仍然是“不”。