3.5.5 域公式和区间公式 :给某个域或某个区间分配一个公式

要给一个域分配公式,直接输入公式,并在前面加上':=',例如':vsum(@II..III)'. 当你在 光标还在域中时 按下<TAB>或<RET>或C-c C-c,公式就会被保持在该域中,并且会自动计算并把计算结果展示为域的值.

公式是统一存储在一个特殊行中的,该行是以"#+TBLFM:"开头的,并且直接就在表格的下方紧靠表格. 如果你在第3行的第4个域中输入公式,那么该公式就会类似于'@3$4=$1+$2'这样. 当使用命令插入/删除/交换了行或者列时,公式中的绝对引用(但是不包括相对引用)也会跟着改变,以保证引用还是指向与修改前同一域. 要避免这种情况发生(特别是在公式中使用了区间引用,表格的边界引用(使用<,@>,$<,$>)或hlines引用(使用@I符号)的情况下), 你需要使用一般的编辑命令来改变表格结构.当使用一般的编辑命令来修改表结构的情况下,域引用的这种自动适配功能当然是不会发生的–这样的话,你需要自己修正公式.

除了直接在域中输入公式,你也可以使用下面这些命令

C-u C-c = (org-table-eval-formula)

为当前域分配一个新的公式. 该命令提示你输入公式(默认值为从#+TBLFM:行中获得公式),然后应用该公式到当前域并保持起来.

在公式的左侧也可以是特别的表达式,以这种方法可用为一系列不同的域分配公式. 并没有快捷方式来输入这种区间公式. 要增加这种区间公式,需要使用公式编辑器(参见编辑和调试公式)或者直接编辑$+TBLFM:行

$N= (这里N表示第几列)

列公式,对整个列生效. 这种公式如此常见以至于Org以一种特殊的方式来处理这些公式,参见列公式

@N= (这里N表示第几行)

行公式,对一行的所有域生效. @>=表示最后一行.

@1$2..@4$3=

区间公式,对所指定的矩阵区间内的所有域有效. 这可以用来分配公式给行中的一些域(但不是所有的域)

$name=

命名域,具体参见高级特性