* Code :PROPERTIES: :eval: never :END: #+name: table #+BEGIN_SRC emacs-lisp :results silent :eval yes "| a | b | |---+---| | w | 1 | | x | 2 | |---+---| | | | | | | |---+---| | y | 3 | | z | 4 | |---+---| | | |" #+END_SRC #+name: expand-tables #+BEGIN_SRC emacs-lisp (save-excursion (while (re-search-forward org-table-TBLFM-begin-regexp) (org-table-calc-current-TBLFM))) #+END_SRC #+name: generate-tables #+BEGIN_SRC emacs-lisp :var table=table :results wrap (mapconcat (lambda (fm) (mapconcat 'identity (list (concat "**" (substring fm 8)) table fm) "\n")) (list "#+TBLFM: @$=vsum(@address@hidden)" "#+TBLFM: @II=vsum(@address@hidden)" "#+TBLFM: @III=vsum(@address@hidden)" "#+TBLFM: @IIII=vsum(@address@hidden)" "#+TBLFM: @II..$2=vsum(@address@hidden)" "#+TBLFM: @III..$2=vsum(@address@hidden)" "#+TBLFM: @IIII..$2=vsum(@address@hidden)" "#+TBLFM: @address@hidden(@address@hidden)" "#+TBLFM: @address@hidden(@address@hidden)") "\n") #+END_SRC * Eval me! (=\C-c\C-v\C-s=) :PROPERTIES: :ID: EVAL-ME :END: #+name: call-generate #+call: generate-tables[:eval yes](table=table) :results wrap #+call: expand-tables[:eval yes]() :results silent #+RESULTS: call-generate :RESULTS: ** @$=vsum(@address@hidden) | a | b | |-------+---| | w | 1 | | x | 2 | |-------+---| | | | | | | |-------+---| | y | 3 | | z | 4 | |-------+---| | y + z | | #+TBLFM: @$=vsum(@address@hidden) ** @II=vsum(@address@hidden) | a | b | |-------------------------------+---| | w | 1 | | x | 2 | |-------------------------------+---| | w + x | | | w + x | | |-------------------------------+---| | w + x + w + x | 3 | | w + x + w + x | 4 | |-------------------------------+---| | w + x + w + x + w + x + w + x | | #+TBLFM: @II=vsum(@address@hidden) ** @III=vsum(@address@hidden) | a | b | |---+---| | w | 1 | | x | 2 | |---+---| | | | | | | |---+---| | 0 | 3 | | 0 | 4 | |---+---| | 0 | | #+TBLFM: @III=vsum(@address@hidden) ** @IIII=vsum(@address@hidden) | a | b | |-------+---| | w | 1 | | x | 2 | |-------+---| | | | | | | |-------+---| | y | 3 | | z | 4 | |-------+---| | y + z | | #+TBLFM: @IIII=vsum(@address@hidden) ** @II..$2=vsum(@address@hidden) | a | b | |-------------------------------+----| | w | 1 | | x | 2 | |-------------------------------+----| | w + x | 3 | | w + x | 3 | |-------------------------------+----| | w + x + w + x | 6 | | w + x + w + x | 6 | |-------------------------------+----| | w + x + w + x + w + x + w + x | 12 | #+TBLFM: @II..$2=vsum(@address@hidden) ** @III..$2=vsum(@address@hidden) | a | b | |---+---| | w | 1 | | x | 2 | |---+---| | | | | | | |---+---| | 0 | 0 | | 0 | 0 | |---+---| | 0 | 0 | #+TBLFM: @III..$2=vsum(@address@hidden) ** @IIII..$2=vsum(@address@hidden) | a | b | |-------+---| | w | 1 | | x | 2 | |-------+---| | | | | | | |-------+---| | y | 3 | | z | 4 | |-------+---| | y + z | 7 | #+TBLFM: @IIII..$2=vsum(@address@hidden) ** @address@hidden(@address@hidden) | a | b | |-------+---| | w | 1 | | x | 2 | |-------+---| | w + x | 3 | | | | |-------+---| | y | 3 | | z | 4 | |-------+---| | | | #+TBLFM: @address@hidden(@address@hidden) ** @address@hidden(@address@hidden) | a | b | |---+---| | w | 1 | | x | 2 | |---+---| | | 3 | | | | |---+---| | y | 3 | | z | 4 | |---+---| | | | #+TBLFM: @address@hidden(@address@hidden) :END: