Org 提供两种源代码组织方式:代码块与行内代码,具体规范如下。
代码块遵循以下结构:
#+NAME: <name> #+BEGIN_SRC <language> <switches> <header arguments> <body> #+END_SRC
无需担心难以记忆代码块语法,Org 模式提供命令可将现有文本包裹为代码块(参见 Structure Templates)。Org 还可配合 Emacs 中的其他补全系统使用,部分补全系统出现早于 Org,支持专用领域语言定义模板。常规使用模板可减少错误、提升准确性并保持格式统一。
行内代码遵循以下结构:
src_<language>{<body>}
或
src_<language>[<header arguments>]{<body>}
可选。为代码块命名,使其可像函数一样被其他代码块或行内代码调用执行并捕获结果。其他代码块、外部文件及表格公式(参见 The Spreadsheet)均可通过名称引用该代码块,作用与命名 Org 表格一致。Org 模式要求名称唯一,重名时行为未定义,行内代码块不支持命名。
必选。标记代码块的起止边界, ‘#+BEGIN_SRC’ 行可携带后续所述的附加参数。
可选。代码块所用编程语言的标识符,支持的语言标识符参见 Languages。
若省略 ‘<language>’ 标识符,则代码块不可包含 ‘<switches>’ 与 ‘<header arguments>’ ,否则首个开关/参数会被识别为语言。
当 org-src-fontify-natively 设置为非 nil 时,语言标识符还用于在 Org 缓冲区中对代码块进行语法高亮,参见 Editing Source Code。
可选。用于精细控制代码的执行、导出与格式(参见 Literal Examples 中关于开关的说明)。
可选。用于控制代码块执行、导出与代码提取的多项行为(参见 Using Header Arguments)。借助 Org 属性功能,可将头部参数选择性应用于整个缓冲区或文档特定子树。
对应指定编程语言的源代码内容。