org: Advanced features

 
 3.5.10 Advanced features
 ------------------------
 
 If you want the recalculation of fields to happen automatically, or if
 you want to be able to assign names(1) to fields and columns, you need
 to reserve the first column of the table for special marking characters.
 
 ‘C-#     (org-table-rotate-recalc-marks)’
      Rotate the calculation mark in first column through the states ‘ ’,
      ‘#’, ‘*’, ‘!’, ‘$’.  When there is an active region, change all
      marks in the region.
 
    Here is an example of a table that collects exam results of students
 and makes use of these features:
 
      |---+---------+--------+--------+--------+-------+------|
      |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
      |---+---------+--------+--------+--------+-------+------|
      | ! |         |     P1 |     P2 |     P3 |   Tot |      |
      | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
      | ^ |         |     m1 |     m2 |     m3 |    mt |      |
      |---+---------+--------+--------+--------+-------+------|
      | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
      | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
      |---+---------+--------+--------+--------+-------+------|
      |   | Average |        |        |        |  25.0 |      |
      | ^ |         |        |        |        |    at |      |
      | $ | max=50  |        |        |        |       |      |
      |---+---------+--------+--------+--------+-------+------|
      #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@-II..@-I);%.1f
 
 Important: please note that for these special tables, recalculating the
 table with ‘C-u C-c *’ will only affect rows that are marked ‘#’ or ‘*’,
 and fields that have a formula assigned to the field itself.  The column
 formulas are not applied in rows with empty first field.
 
    The marking characters have the following meaning:
 
 ‘!’
      The fields in this line define names for the columns, so that you
      may refer to a column as ‘$Tot’ instead of ‘$6’.
 ‘^’
      This row defines names for the fields _above_ the row.  With such a
      definition, any formula in the table may use ‘$m1’ to refer to the
      value ‘10’.  Also, if you assign a formula to a names field, it
      will be stored as ‘$name=...’.
 ‘_’
      Similar to ‘^’, but defines names for the fields in the row
      _below_.
 ‘$’
      Fields in this row can define _parameters_ for formulas.  For
      example, if a field in a ‘$’ row contains ‘max=50’, then formulas
      in this table can refer to the value 50 using ‘$max’.  Parameters
      work exactly like constants, only that they can be defined on a
      per-table basis.
 ‘#’
      Fields in this row are automatically recalculated when pressing
      <TAB> or <RET> or ‘S-<TAB>’ in this row.  Also, this row is
      selected for a global recalculation with ‘C-u C-c *’.  Unmarked
      lines will be left alone by this command.
 ‘*’
      Selects this line for global recalculation with ‘C-u C-c *’, but
      not for automatic recalculation.  Use this when automatic
      recalculation slows down editing too much.
 ‘ ’
      Unmarked lines are exempt from recalculation with ‘C-u C-c *’.  All
      lines that should be recalculated should be marked with ‘#’ or ‘*’.
 ‘/’
      Do not export this line.  Useful for lines that contain the
      narrowing ‘<N>’ markers or column group markers.
 
    Finally, just to whet your appetite for what can be done with the
 fantastic ‘calc.el’ package, here is a table that computes the Taylor
 series of degree ‘n’ at location ‘x’ for a couple of functions.
 
      |---+-------------+---+-----+--------------------------------------|
      |   | Func        | n | x   | Result                               |
      |---+-------------+---+-----+--------------------------------------|
      | # | exp(x)      | 1 | x   | 1 + x                                |
      | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
      | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
      | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
      | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
      | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
      |---+-------------+---+-----+--------------------------------------|
      #+TBLFM: $5=taylor($2,$4,$3);n3
 
    ---------- Footnotes ----------
 
    (1) Such names must start by an alphabetic character and use only
 alphanumeric/underscore characters.