<org manual>翻译--3.5.9 高级特性

本文深入探讨了表格中域和列的名字、参数及自动重计算的高级特性,通过具体实例展示了如何利用这些特性高效地管理和更新数据。文章详细介绍了表格中特殊标志字符的作用,以及如何通过全局重计算命令实现对特定行和域的自动更新,同时解释了不同标志字符的意义和应用场景。此外,还提供了一个计算级数展开的表格实例,展示了表格的强大计算能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

3.5.9 高级特性 :域和列的名字,参数和自动重计算

#Advanced features 如果你想自动重计算域的值,或者你向为域和列分配名字33,你需要保留表格的第一列作存放特殊的标志字符.

C-# (org-table-rotate-recalc-marks)

使第一列的标志字符在' ','#','*','!','$'这几个状态之间切换. 如果存在一个激活的块,则会改变该块中所有的标志.

下面的例子是一个记录学生考试成绩的表格,里面用到了这些特性:

|---+---------+--------+--------+--------+-------+------|
|   | 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 |        |        |        |  29.7 |      |
| ^ |         |        |        |        |    at |      |
| $ | max=50  |        |        |        |       |      |
|---+---------+--------+--------+--------+-------+------|
#+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@-II..@-I);%.1f 

注意事项:请注意,对于这些特殊的表格来说,使用'C-u C-c *' 来重计算表格,只对标记了'#'或'*'的行,和那些分配了公式的域生效. 列公式对当第一个域为空的行无效.

这些标志字符的意义如下所示:

'!'

该行的域中的值为列的名称,因此你可以使用引用'$Tot'来代替'$6'

' '

这一行定义了上一行相应域的名称. 有着这种定义,任何表格中的公式可以使用'$m1'来引用值'10'. 而且如果你为这个命名了的域分配公式,该公式会被存储为'$name=…'的形式

'-'

类似于'',但是是为下一行的相应域定义名字的.

'\('

这一行的域可以为公式定义参数. 举个例子,如果'\)'行中的某个域包含了'max=50',则表格中的公式可以使用'$max'来引用50这个值. 参数就好像是常量一样,所不同的是它们(参数)能够根据每个表格来定义.

'#'

当在行中按下了<TAB>或<RET>或S-,TAB>,所有该标示的行中的域会自动重新计算. 另外当使用全局重计算命令(C-u C-c * )时这些行也会进行重计算,而无标示的行则对该全局重计算命令无效.

'*'

当使用全局重计算命令(C-u C-c * )时,该标志行也会进行重计算,但是该标志行并不会自动进行重计算. 当自动重计算功能会明显降低编辑效率时,该标志很有用.

''

无标志字符的行在使用C-u C-c * 进行重计算时并不会进行重计算. 只有标示了'#'或'*'的行才会重新计算.

'/'

不导出带有该标志的行. 对那些包含了narrowing '<N>'标记(缩小的'<N>'标记)或列的分组标志很有用.

最后,你可能会对使用梦幻般的'calc.el'包能实现那些功能很感兴趣, 下面是一个表格,它计算了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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值