Emacs org-mode 2 文档结构

Emacs org-mode 2 文档结构

1 文档结构

 

1.1 章节/标题

 

1.1.1 编写规则

org-mode用一个字符 * 标识章节,一个 * 代表一级标题,两个 * 代表两级标题,以此类推。最多6颗星,也就是最多6级。

书写格式如下:

* 一级标题
** 二级标题
* 另一个一级标题
** 另一个二级标题
*** 三级标题

注意, * 后有空格。不同的级别显示的颜色不一样。

1.1.2 标题的展开与折叠

标题与正文在当前buffer中显示样式,分为四个级别:overview,content,showall,showeverything。

overview
只显示一级标题
content
展开所有层级标题,但是不显示正文内容。
showall
展开所有子标题及正文内容。
showeverything
显示所有内容
  1. 手动展开与折叠

    在官方的表述中, 标题的展开与折叠称为 visible circling. 看名字可以理解为循环,如下:

    通过tab(org-cycle) 键实现如下循环: ,-> FOLDED -> CHILDREN -> SUBTREE –. '------------------------------–—'

    或者通过S-tab(org-global-cycle) 实现如下循环: ,-> OVERVIEW -> CONTENTS -> SHOW ALL –. '---------------------------------–—'

    通过类似的一些快捷键,我们可以控制当前buffer 页面显示哪些内容,比如只显示一级标题,显示二级标题。 下面是常用快捷键:

    Table 1: 标题展开、折叠快捷键
    Key函数说明
    TAB (org-cycle) 作用于当前标题,当前标题–> 下一级子标题 –> 当前标题所有内容
    S-TAB (org-global-cycle) 作用于全局标题,三级循环: 一级标题 -> 所有级别标题 -> 显示所有内容
    c-u TAB   同上
    c-uu TAB (org-set-startup-visibility 返回文档打开时的展示级别(初始展示级别)
    c-uuu TAB (outline-show-all 展开所有内容
    c-cr (org-reveal) 显示当前条目、下面的标题和上面的层次结构, 主要用于Sparse Trees 和Agenda
    c-ck (outline-show-branches) 显示当前标题的所有子标题
    c-c TAB (outline-show-children) 显示当前标题的所有下一级标题
    c-cx b (org-tree-to-indirect-buffer) 将当前标题的内容在另外一个buffer 中打开
    c-cx v (org-copy-visible) 将当前标题及内容复制N份,N 在minibuffer中输入
  2. 初始化标题显示

    默认情况下,打开一个org文件,各级标题的展示级别为overview. 我们可以在每个org文档头部分通过"#+STARTUP" 来设置显示哪些内容。如:

    #+STARTUP: overview
    #+STARTUP: content
    #+STARTUP: showall
    #+STARTUP: showeverything
    

1.2 基本操作

有一些快捷键可以帮我们快速的操作章节,比如展开、折叠、跳转章节、生成同级标题、调整标题级别等

Table 2: org-mode 光标操作
KEY函数说明
光标移动    
C-c C-n (org-next-visible-heading) 光标移动到下一个标题
C-c C-p (org-previous-visible-heading) 光标移动到上一个标题
C-c C-f (org-forward-heading-same-level) 光标移动到下一个同级标题
C-c C-b (org-backward-heading-same-level) 光标移动到上一个同级标题
C-c C-u (outline-up-heading) 光标移动到父级标题
C-c C-j (org-goto) 进入一下子功能,有如下操作:
Table 3: org-mode 标题操作
KEY函数说明
标题结构调整
M-RET (org-meta-return) 生成同级标题,或者排充标号
C-RET (org-insert-heading-respect-content) 在当前标题及内容正文生成同级标题
M-S-RET (org-insert-todo-heading) 功能同M-RET,标题前自动添加TODO字样
C-S-RET (org-insert-todo-heading-respect-content) 功能同C-RET,标题前自动添加TODO字样
M-LEFT (org-do-promote) 标题降级,比如2级标题(**)变为3极标题(***)
M-RIGHT (org-do-demote) 标题升级,比如2级标题(**)升级为1级标题(*)
M-S-LEFT (org-promote-subtree) 当前标题及其子标题,同步降级
M-S-RIGHT (org-demote-subtree) 当前标题及其子标题,同步升级
M-UP (org-move-subtree-up) 当前标题及其内容,与上一个同级标题互换位置
M-DOWN (org-move-subtree-down) 当前标题及其内容,与下一个同级标题互换位置
C-c @ (org-mark-subtree) 标记当前标题及其子内容
C-c C-x C-w (org-cut-subtree) 剪切当前标题及内容
C-c C-x M-w (org-copy-subtree) 复制当前标题及内容
C-c C-x C-y (org-paste-subtree) 粘贴剪切或者复制的标题及内容
C-y (org-yank) 粘贴
C-c C-x c (org-clone-subtree-with-time-shift) 紧邻当前章节下方复制N次当前章节。N在mini-buffer中提供
C-c C-w (org-refile) 移动当前标题及内容至其他一级标题下。
C-c ^ (org-sort) 标题排序,会提供几种排序方法,比如按照时间、字母、数字等
C-x n s (org-narrow-to-subtree) 当前buffer 中只显示此标题内容,隐藏其他标题内容。
C-x n b (org-narrow-toblock) 当前buffer 只显示当前block 内容,不显示其他内容。
    block 指的是#+begin_example .. #+end_example 之类
C-x n w (widen) 取消 C-x n s 与 C-x n b 的特性。
C-c * (org-toggle-heading) 当前行在标题与非标题之间切换。但是切换为标题时, 不能保证
    原标题级别

1.3 列表

列表是文本中一个比较常用的元素,可以列出各种待完成的事项等。 列表分为有序和无序两种,有序列表以1.或 1)开头,无序列表以+或-开头 后面,同样,后面要跟一个空格。 我们输入一个无序列表:

- 根1
   - 支1
   - 支2
- 根2
   - 支1
   - 支2

org-mode提供了一种很独特的功能,可以加入checkboxes (实际就是加入一对中间有空格的方括号[ ])标记任务的完成状况,当输入C-c时,会将该任务状态在完成与未完成之间进行切换 ,[X] 代表完成,[ ] 代表未完成 [-] 代表完成一部分,而且如果一个总任务有多个子任务, 还可以根据子任务的完成情况计算总进度(只需要在总任务后面添加一对方括号,里面加上%或/ 如[%],[/])。 下面是一个有序列表与checkboxes结合的示例

1) [-] 任务1 [33%]
   1) [ ] 子任务1
   2) [X] 子任务2
   3) [ ] 子任务3
2) [ ] 任务2

1.4 注释

Emacs 中的注释有两种:

KEYS函数说明
C-c C-x d (org-insert-drawer) 插入一个block,里面可以写任意内容,除了标题。不可嵌套
    这种block,被称为Drawer. 首先会要求在minibuffer中输入
    Drawer name,然后回车,会在光标所在位置生成内容,
    格式如下:
    :Drawer name:
    :END:
C-c C-z   紧邻标题下方插入一个带时间戳的 NOTE。

 

1.5

org 中把#+beingxxxx … #+endxxx 的结构称为块。块可以用于各种目的,比如引用,举例,包含代码等。

在块的首行,也就是#+begin_xxxx ,按TAB键,可以展开或者合并成一行。可以通过变量org-hide-block-startup在配置文件中设置block的默认状态,也可以在每个文件的头部通过#+STARTUP:来控制打开文件时block是否展开。

#+STARTUP: hideblocks      --> 合并
#+STARTUP: nohideblocks    --> 展开

 

常用的块有以下几种:

举例:

  #+BEGIN_EXAMPLE

  #+END_EXAMPLE

引用:

  #+BEGIN_QUOTE

  #+END_QUOTE

代码块:

  #+BEGIN_SRC <代码类型,比如python, sql,shell,C/C++ 等>

  #+END_SRC

 

1.6 Footnotes

org-mode 支持编写脚注。其格式如下

[fn:name:definition]

其中 name 和 :definition ,允许有一个为空,形式以下两种写法:

[fn:name]
[fn::definition]

这两种是有区别的,前者是引用而不是定义,引用的是名为"name"的脚注。后者是定义脚注,名称由org-mode自行定义。 来看下示例:

[fn:test1] --> 如果没有名为test1的脚注,在public的时候会报错:Definition not found for footnote test
[fn::test]
[fn:test2:test]

test22

test33

 

Footnotes:

1 

安装org package时,不能打开org结尾的文件,否则已自动加载的Org 功能会让安装过程变得不可预测.

2 
test
3 
test

 

 

Author: halberd.lee

Created: 2020-03-31 Tue 10:45

Validate

posted @ 2020-03-31 10:46  halberd.lee  阅读(1054)  评论(0编辑  收藏  举报