能否在Org Mode文档中分散定义变量并无需表格完成汇总计算?
在Org Mode中设置变量并汇总计算的实现方法
方法一:属性定义+代码块求值
- 定义变量:在文档任意位置用
#+PROPERTY声明全局变量#+PROPERTY: apples 10 #+PROPERTY: pears 5 - 汇总计算:插入Emacs Lisp代码块调用变量并计算,结果会自动输出
注:#+BEGIN_SRC emacs-lisp :results value replace (+ (string-to-number (org-entry-get nil "apples")) (string-to-number (org-entry-get nil "pears"))) #+END_SRC #+RESULTS: : 15:results value replace参数会让计算结果直接替换代码块区域,也可以换成:results output单独输出结果。
方法二:命名代码块存变量+引用计算
这种写法更贴近你给出的示例逻辑:
- 定义变量:用命名代码块返回固定数值
#+NAME: apples #+BEGIN_SRC emacs-lisp :results value 10 #+END_SRC #+NAME: pears #+BEGIN_SRC emacs-lisp :results value 5 #+END_SRC - 汇总计算:直接调用命名代码块的结果做运算
#+BEGIN_SRC emacs-lisp :results value replace (+ apples pears) #+END_SRC #+RESULTS: : 15
方法三:静态宏替换(适合非实时计算场景)
如果只需要静态替换变量值,不需要动态计算,可以用宏定义:
- 定义变量:
#+MACRO: apples 10 #+MACRO: pears 5 - 引用并生成结果:
执行Total: {{{apples}}} + {{{pears}}} = 15M-x org-expand-macros命令后,文本会自动展开为Total: 10 + 5 = 15
内容的提问来源于stack exchange,提问作者Martin Sarosi
相关产品推荐
相关产品推荐

