You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

7.7 KiB

快速入门 Org Mode

(由于 GitHub 对 Org 的支持不完整, 你可以在 Emacs 或 VS Code 中阅读本文件,
更好的做法是阅读导出的 HTML 版本.)

关于文档自身

允许在文件的 最开头 添加附属信息:

#+title: 标题 (比一级标题还要高一级)
#+author: 作者
#+date: 年年年年-月-日

正文 ... ...

键位

导出 C-c C-e
折叠标题 <tab>

结构化文本

标题层次

顶格写 =*= , 并续上至少 1 个空格, 表示一级标题. 星号 (*) 的数量代表标题的级数. 二级标题从属一级标题, 以此类推.

列表

列表序号

有序列表用 +=/-=, 无序列表用 =1.=/=A.=, 可以嵌套:

A. 植物 + 水果
     1. 桃子
   + 谷物
     - 大米
B. 动物

给列表打标

可以给列表的表项添加 勾选框 ([ ]), 也可以加 tag:

- [ ] 买橘子
- 作业 :: 写数学作业
- [ ] 锻炼 :: 跑步

这样的列表提供了 交互式 操作, 见 /yetao/awesome-cheatsheets/src/commit/a62507f15583bfceceff4e31988b77a55e69d6a5/editors/%E4%BB%BB%E5%8A%A1%E6%B8%85%E5%8D%95.

排版

标记法

/斜体/  *粗体* +删除线+ _下划线_  强制换行 \\
~代码~ =不是代码但需要等宽=
/*+_~组合~_+*/

S_{c} = \pi{}r_c^2

效果如下1:

斜体 粗体 删除线 下划线 强制换行
代码 不是代码但需要等宽 组合

Sc = πr_c^2

注意事项

内联标记时, 大部分情况下标记的两端必须保留 空白字符.

例如, ~code~ 中的 code 就不能正常渲染. 常见的做法是在 ‘这里~code~这里’ 添加零宽字符.

比如, 在你的 Org 文件的 最尾端 写下:

正文 ... ...

# Local Variables:
# eval: (keymap-local-set "<f9>"
#                         "\N{ZERO WIDTH SPACE}")
# End:

当你的 Emacs 打开该文件时, 按下 <f9> 即输入 ‘零宽字符’.

链接

[[类型:定位][描述]]

其中, [描述] 是可选的.

内部链接 :linked:内部链接:

省略掉 类型:, 定位 填入同一个文件的某个标题. 例如, [[内部链接]] 指向 /yetao/awesome-cheatsheets/src/commit/a62507f15583bfceceff4e31988b77a55e69d6a5/editors/%E5%86%85%E9%83%A8%E9%93%BE%E6%8E%A5 (也就是本小节).

外部链接

  • http=/=https \\

    [[https://github.com/shynur][本文的作者]]
    

    本文的作者

  • file 本地文件 \\

    [[file:./][当前目录]]
    

    当前目录

图片链接

Org 会根据后缀自动识别图片.

若 图片 就位于你的 本地机器 上, 则在 Emacs 中键入 C-c C-x C-v 即时渲染.

块文本

使用 #+BEGIN_XXX#+END_XXX (无所谓大小写, 但大写显然更直观) 包裹文本, 赋予其特殊含义. 如果块中文本在行首出现了 *#+, 则 额外 添加一个 ,.

下面是 我写的补全模板:

如果看到了这句话, 说明图片失效了 (那么请到 <https://github.com/shynur/.emacs.d/issues/1> 查看), 或者你的网络环境有问题.

等宽块

#+BEGIN_EXAMPLE
ABCdef<>/;"
#+END_EXAMPLE

效果如下:

ABCdef<>/;"

代码块

等宽块仅仅是为了等宽, 而 代码块 允许你 在 Org 文件中运行代码 (见 /yetao/awesome-cheatsheets/src/commit/a62507f15583bfceceff4e31988b77a55e69d6a5/editors/%E6%96%87%E5%AD%97%E7%BC%96%E7%A8%8B). 这一节仅展示语法.

#+BEGIN_SRC bash
ls
#+END_SRC

通过指定编程语言 (此例中是 Bash), Org 会调用不同的程序 (编译并) 执行这段代码, 并且 (如果你有相关插件的话, 还会在导出时) 对其选择不同的高亮方案.

单行代码
# 任意数量的额外的缩进
 : assume cs:code, ss:stack

效果如下 (没有高亮):

assume cs:code, ss:stack
代码块行号
#+BEGIN_SRC Language -n 第一行的行号 (缺省为 1)
#+BEGIN_SRC Language +n 第一行的行号比上一个代码块最后一行的行号多的数值 (缺省为 1)

诗句块

保留 缩进换行.

#+BEGIN_VERSE
     我的前面有五个空格
  这边只有两个
               ---佚名
#+END_VERSE

效果如下:

我的前面有五个空格 这边只有两个 —佚名

引用块

使用 #+BEGIN_QUOTE.

居中块

#+BEGIN_CENTER
Thank you, \\
shynur
<one.last.kiss@outlook.com>.  \\
August 12, 2023
#+END_CENTER

效果如下:

Thank you,
shynur <one.last.kiss@outlook.com>.
August 12, 2023

表格

不带字段的表格

| 我是 | 一个   | 只由 |
| 两行 | 组成的 | 表格 |

效果如下:

我是 一个 只由
两行 组成的 表格

带字段的表格

| 年龄 | 职业 | ID     |
|------+------+--------+
| 24   | 学生 | 114514 |

效果如下:

年龄 职业 ID
24 学生 114514

LaTeX

交互

任务清单 :linked:给列表打标:

标题 前加上 TODO 关键字, 可选地加上优先级 [#字母], 可选地在末尾加上 [%]:

*** TODO [#B] 示例 [%]

- [ ] TAG1 :: 未完成
- [-] 正在进行中
- [ ] TAG1 :: 等会完成

在 Emacs 中, 将光标置于第三个任务中, 键入 C-c C-c 将会勾选 [X] 并更新任务进度, 见 /yetao/awesome-cheatsheets/src/commit/a62507f15583bfceceff4e31988b77a55e69d6a5/editors/%E4%BB%BB%E5%8A%A1%E6%B8%85%E5%8D%95%E7%A4%BA%E4%BE%8B.

TODO [B] 任务清单示例 [33%] :linked:任务清单:

TAG1
未完成
?
正在进行中
TAG1
等会完成

全部完成后, TODO 关键字会变成 DONE.

文字编程 :linked:代码块:

注解

脚注

具名脚注

那个人发明了 C++[fn:OOP: 这是一种面向对象的编程语言.].

效果如下:

那个人发明了 C++2.

引用脚注

那个人发明了 Python[fn:OOP].

效果如下:

那个人发明了 Python2.

匿名脚注

我[fn:: 菜鸡]不喜欢 Bash.

效果如下:

3不喜欢 Bash.

注释

单行注释

顶格写 #一个空格:

# 这是注释.

内联注释

你@@comment:这是注释@@好!

块注释

#+BEGIN_COMMENT
这里是注释.

这里也是!
#+END_COMMENT

这里是真的注释.

这里也是!

结构化注释

* 大标题
** COMMENT 大批注
*** 小批注
批注...
** 小标题
COMMENT 批注
子批注

批注 … …

下一步

支持 Org Mode 的软件

编写 Org 文件

  • Vim

    • org.vim
    • vim-orgmode
    • orgmode.nvim
  • Visual Studio Code

    • vscode-org-mode
  • Atom

    • org-mode

格式转换

导入导出
  • Pandoc
  • Drupal converter
  • ox-hugo
  • ox-*
  • VimWiki
  • Exchange calendars
发布博客
  • Hugo
  • Org-Jekyll
  • o-blog
  • Org2Blog

1

当我说 /效果如下/ 时, 指的是 导出后 的效果, 比如, 用 C-c C-e h o 导出成 HTML.

2

这是一种面向对象的编程语言.

3

菜鸡