17

我有一个这种形式的表格,在 emacs 中org-mode。请问,有没有办法格式化第 3 列和第 4 列中的数字以垂直排列小数点?

注意,顺便说一句:我使用 bashsort命令对生成的文件进行了排序,发现|每行开头的额外内容被计为第 1 列,因此,例如,OUTPUT在这种情况下,标题为第 4 列。

| CALL  | CHAN   |   OUTPUT |    INPUT | QTHR   | LOCATION       | NGR        | REGION   | CTCSS | KEEPER | Internet |
| GB3AH | RB11   |  433.275 |  434.875 | JO02KP | East Dereham   | TF94300990 | EAST ENG |  94.8 | G8PON  |          |
| GB3AS | RV48   |    145.6 |      145 | IO84LS | Wigton,Cumbria | NY33724123 | N.ENG    |    77 | G4KFN  |          |
| GB3AG | RV58   |  145.725 |  145.125 | IO86ON | Forfar         | NO48904170 | SCOT     |  94.8 | GM1CMF | Echolink |
| GB3AY | RV52   |   145.65 |   145.05 | IO75OR | Dalry          | NS26605190 | SCOT     | 103.5 | GM3YKE |          |
| GB3BA | RB01   |  433.025 |  434.625 | IO87SC | Banchory       | NJ72150255 | SCOT     |    67 | GM1XEA |          |
| GB3BD | RB06   |   433.15 |   434.75 | IO92RA | Ampthill       | TL01303860 | SE ENG   |    77 | G8MGP  |          |
| GB3AA | 23cm   |     1297 |     1291 | IO81RO | Alveston,Avon  | ST62608820 | SW ENG   | 118.8 | G4CJZ  |          |
| GB3AI | RV55   | 145.6875 | 145.0875 | IO91QQ | Amersham       | SU97089767 | SW ENG   |    77 | G0RDI  | Echolink |
| GB3AL | RV59   | 145.7375 | 145.1375 | IO91QP | Amersham       | SU95709550 | SW ENG   |    77 | G0RDI  |          |
| GB3AM | R50-13 |    50.84 |    51.34 | IO91QP | Amersham       | SU95709550 | SW ENG   |    77 | G0RDI  |          |
4

1 回答 1

26

以下是步骤:

  1. 这是一个可选的,使事情更加直观。 C-c }打开行号和列号的覆盖。相同的组合关闭。请注意,这些不是缓冲区中的更改,它们只是工具提示。您可能想C-c -在第一行查看列号。
  2. 将光标移动到OUTPUT列并使用 插入新列C-S-right
  3. 您的光标现在应该位于新列中。输入$4=$3;%0.3f,即将第三列复制到第四列,并将其格式化为精度为 3 的浮点数。按回车键,只填入一个单元格。按C-u C-c *重新计算所有单元格。这也可以通过C-c C-c, 光标#+TBLFM:在线来完成。
  4. 如果需要,您可以删除旧列C-M-left,并删除下面的表格公式。

更新:

感谢@phils 的输入,这是另一种方法:

  1. 将光标移动到第 3 列中的任意数字,例如433.275
  2. C-c =,光标移动到小缓冲区。
  3. 输入$0;%0.3f并按回车键。这里$0指的是当前列,$3如果它是第 3 列也可以。
  4. C-u C-c *文档中的任意位置,或将光标移至#+TBLFM:行并按C-c C-c
  5. 对第 4 列重复相同的过程。
于 2013-09-23T19:13:09.683 回答