快速开始 | Org 主模式

开始使用 Org

简单来说,Org 与任何其它的标记语言一样:你可以在任何文本编辑器里使用Org 语法编辑文档。

然而,为了体验 Org 全部的潜力,你需要一个能够把 Org 语法转换为一个可互动文档的编辑器。

文档引言

在文件的最开始(第一个章节标题之前),你常常需要设置标题、作者以及其它导出选项

#+title: Org 的荣光
#+author: Org 用户

章节标题

由星号 * 开始的行被称作章节标题(heading)

一个星号 * 代表一级章节标题,两个星号 ** 代表二级章节标题,等等。

* 欢迎来到 Org
** 子章节标题
每个额外的 ~*~ 为章节的深度增加一级。

简单来说,章节标题代表了一个章节的开始。然而,任何章节也可以成为一个待办事项

待办事项是 Org 用来跟踪、整理各类的任务的基本模块。

若要把一个现有的章节标题转换为一个待办事项,仅需在其开头加上一个待办关键词,例如 TODO 或者 HOLD​。

* TODO 向世界介绍 Org
** TODO 创建一个快速开始指南

标记

若要在 Org 里标记文字,仅需要在其两侧使用标记字符。​加粗​、​斜体​、​下划线​都很简单;你甚至能够轻松地使用​删除线​。你可以任意组合这些基本的标记,但需要记住一点,若使用了​代码​或​逐字​这两个标记之一,它们需要在这个组合的​最里侧​,因为它们包含的内容是​按字面​解析的。

若要在 Org 里标记文字,仅需要在其两侧使用标记字符。​*加粗*​、​/斜体/​、​_下划线_​都很简单;你甚至能够轻松地使用​+删除线+​。你可以任意组合这些基本的标记,但需要记住一点,若使用了​~代码~​或​=逐字=​这两个标记之一,它们需要在这个组合的​*_~最里侧~_*​,因为它们包含的内容是​=按字面=​解析的。

可在标记符号(英语)里查看更多信息。

中文用户

中文用户_​:由于 Org 的限制,标记字符的内侧必须不是空格,而外侧必须是空格(包含换行等)。因此,中文用户需要在使用标记时,可以在有需要时使用零宽空格(16进制代码​#x200b​,名称为​ZERO WIDTH SPACE​)。

列表

无序列表由​+​、​-​、​*​开头​1。有序列表由​1.​、​1)​、​A.​、​A)​开头。有序与无序符号可以以任意顺序嵌套。

采购单:
1. 牛奶
2. 鸡蛋
   - 有机
3. 调料
   + 糖
   + 盐

列表可包含勾选项​[ ]​、​[-]​、​[X]​。

- [ ] 未开始
- [-] 进行中
- [X] 已完成

列表也可同时包含标签。

- [ ] 水果 :: 买苹果
- [X] 蔬菜 :: 买胡萝卜

图像

Org 会在导出时自动识别且显示图片链接。你只需要链接一个图片,且不提供描述既可。
[[https://orgmode.org/resources/img/quickstart.svg]]

quickstart.svg

在你电脑里的图片也可以按 C-c C-x C-v 在 Emacs 缓存区里显示。

区块

Org 主模式里可以包含区块 #+BEGIN …… #+END​,不同的区块对应不同的用途。基本的区块包括:引用(quote),举例(example),以及源码(src)。

若你只需要等宽文字,你可以使用举例区块。

#+begin_example
monospace 等宽
#+end_example

然而,你不能在举例区块里使用 Org Babel —— 你需要使用源码区块。源码区块提供了语法高亮、代码运行、文学编程等等。

#+begin_src emacs-lisp
(message "Hello world")
#+end_src

更多信息

一个”你好世界“的例子根本不足以向你展示 Org 与源代码的所有功能

表格

Org 主模式内置了一个表格编辑器,并且支持各种与元素引用以及公式的功能。

最简单的表格仅仅是由 | 分隔开的文本。

| 我 | 是 | 一个 | 表格 |
| 我 | 有 | 两行 | !   |

这是在一篇论文(Schulte et al. 2012)里的一个表格,对比了现有的文学编程与可重复研究工具。

| Tool         | Literate programming? | Reproducible Research? | Languages |
|--------------+-----------------------+------------------------+-----------|
| Javadoc      | partial               | no                     | Java      |
| Haskell .lhs | partial               | no                     | Haskell   |
| noweb        | yes                   | no                     | any       |
| Sweave       | partial               | yes                    | R         |
| Org-mode     | yes                   | yes                    | any       |

担心无法在文本表格中对齐?你只需按一个键—— tab​。

注释

在 Org 里有很多种方法添加注释:

  • 行注释:用​#​开头。
  • 行内注释:把注释包起来(​@@comment:就像这样@@​)。
  • 区块注释:用​#+BEGIN_COMMENT​和​#+END_COMMENT​把注释包起来。
  • 章节注释:在章节标题前加上 COMMENT 可以把这整个章节变成注释2
# 一个行注释

这是一个​@@comment:行内@@​注释。

行内注释可同时被用作行末注释。​@@comment:~#~没有用@@
这是因为​~#~​只在作为一行第一个非空格字符时才是行注释。

#+begin_comment
这是一个区块注释。
它可以跨越多行,或者其它标记与区块定义。
#+begin_src emacs-lisp
(+ 1 2)
#+end_src
#+end_comment

* 一个顶层章节标题
** COMMENT 这个章节与其子章节是注释
*** 这个章节继承了关键词​=COMMENT=
这段文字是注释
** 这个章节不是注释
这段文字会被导出,且代码区块会被运行。

中文用户

中文用户​:​@@comment:行内注释@@​两侧需要使用零宽空格,详见标记章节。

Org 的语法拥有更多高级功能,这里有一个简单的例子。

#+macro: attn _*/$1/*_
{{{attn(注意!这个文本有所有标记!)}}}

#+html_head: <style>.red{color:red;}</style>
#+latex_header: \usepackage{xcolor}
#+macro: red @@html:<span class="red">$1</span>@@@@latex:\textcolor{red}{$1}@@
普通文本。{{{red(红色文本。)}}}更多普通文本。

下一步

在寻找某一个话题?试着读读手册PDF)吧。

在寻找这个快速开始与手册之间的内容?试试指南PDF)吧。

脚注:

1

*​不能被用作一行的最开头,因为这样它会被解析成一个章节标题。

2

还有一些对章节的更精细的操作,包括使用特殊章节标签​:ARCHIVE:​以及​:noexport:​。

TEC Org 独角兽 logo 完成。

根据 GNU FDL 1.3 授权 — 本网页源代码见