Cycoe@Home

Org mode 中的代码块

Org mode 是 Emacs 中的一个大杀器,也是我从 Vim 转向 Emacs 的最重要的原因。与 Markdown 相比, Org mode 有一个非常强大的功能叫作 Babel ,不仅能直接在 Org 文件 中直接运行各种代码块,还能打通各个代码块之间的数据交换,甚至借用绘图库直接对数据 进行可视化,比 Python Jupyter Book 还好用得多。

orgmode.png
Figure 1: Org mode

1 插入代码块

在 Org mode 中插入代码块非常简单,只需要用如下的环境将代码包裹起来

#+begin_src python
   print("Hello, world!")
#+end_src

#+begin_src 后面指定代码块中的语言

2 设置 Headers 参数

Org mode 中有三个级别的 Headers 参数,分别为全局、文件级、代码块级,三个级别的作 用范围越来越小但优先级越来越高

2.1 全局 Headers

在配置文件中设置参数

(add-to-list 'org-babel-default-header-args:gnuplot
      '((:results . "file")
        (:exports . "both")
        (:cache . "yes"))
      'org-babel-default-header-args:C++
      '((:results . "output")
        (:exports . "both")
        (:cache . "yes")))

2.2 文件级 Headers

在文件的任意位置加入

#+PROPERTY: header-args :exports both

需注意: 若将该参数加到文件最开始的位置,则对全头生效;若加到某个标题下,则只对 该标题以及其子标题生效。

2.3 代码块级 Headers

直接修改单个代码块的 Headers 参数

#+begin_src python :exports both
   print("Hello, world!")
#+end_src
Author: Cycoe (cycoejoo@163.com)
Date: <2020-05-28 Thu 10:45>
Generator: Emacs 28.0.50 (Org mode 9.3)
Built: <2020-05-28 Thu 11:22>