【问题标题】:Multiple org-mode tables sharing one #+TBLFM line多个组织模式表共享一个#+TBLFM 行
【发布时间】:2014-08-14 10:09:41
【问题描述】:

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

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

提前致谢

【问题讨论】:

    标签: emacs org-mode


    【解决方案1】:

    如果公式是用 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: 行中重用一个函数。我相信答案仍然是“不”。
    • 从字面上看,还算公平。不过,这似乎是一个 XY 问题。 en.wikipedia.org/wiki/XY_problem
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-03
    • 2017-07-03
    • 2011-03-08
    • 1970-01-01
    相关资源
    最近更新 更多