How to achieve a row index column in Emacs Org Mod

2019-03-18 13:22发布

问题:

I would like to have a column in an org mode table that is a simple monotonically increasing value, i.e. the row number such that wnen I insert and remove random rows the index value adjusts automagically. I suspect that this should be simple but it would appear I am making it way too difficult. Mind you, I am a novice at using Emacs and org mode to build spreadsheets. So a simple example spreadsheet where there are two columns, one the row index value and the other some fixed value, would be a perfect answer.

回答1:

This example uses @# to get the row number. Similarly, $# returns the column number.

| row | data |
|-----+------|
| 2   | 0303 |
| 3   | 5123 |
| 4   | 41   |
| 5   | 4234 |
#+TBLFM: $1=@#


回答2:

It's often necessary, for example with descriptive rows, to start counting rows only from certain horizontal lines with 1, below for the first horizontal line: #+TBLFM: $1=vlen(@I..0). This means calculate the length of the row range from the first hline @I (the second would be @II, ...) to the current (0) row.

|bla|blabla|
|---+------|
|1  | bla  |
|2  | bla  |
#+TBLFM: $1=vlen(@I..0)

or, for above example, also simply #+TBLFM: $1=@#-1 :-)