当前位置: 首页 > 工具软件 > org-mode > 使用案例 >

org-mode(文档编辑)

齐永昌
2023-12-01

org-mode简单介绍

按照官方的说法,Org is a mode for keeping notes, maintaining TODO lists, and doing project planning with a fast and effective plain-text system,就是说,它可以用来做笔记,管理待办事项,以及做项目计划。当然,作为outline-mode的派生模式,而outline-mode又作为text-mode的派生模式,Org-mode首先是一种基于文档编辑的模式,而本文将介绍它强大的文档编辑能力。

大纲

作为outline-mode的派生模式,Org-mode天然支持大纲视图,以大纲的模式去管理文件内容。

层次

在多少层就用多少颗*,需要注意的是*要顶格,而且与标题内容之间用空格分开。如:

* 第一层1
** 第二层11
*** 第三层111
* 第一层2

操作

为了能尽快地使用org,这里只介绍最基本的操作,包括后面的功能也都是介绍最基本的(当然也是因为我本人就是个初学者)。

  1. 使用M-Ret来插入一个同层次的标题
  2. 折叠/显示,最少你应该知道可以用Tab来切换当前大纲的状态,或者你还可以知道用S-Tab来切换整个文档的大纲状态。
  3. 所有移动都有一个前缀操作C-c,emacs默认操作中的字符间移动对应同层标题移动,行间移动对应标题移动,同时你还应该知道用C-u来返回上一层标题。

列表

作为补充,在同一个子标题下,你可以用"1."来将内容划分的更加详细,将光标移动到"1."上,用Shift加方向左右键可以切换标识符号。

链接

对一些符合链接规则的内容,org为自动将其视为链接,包括文件、网页、邮箱等多种链接,为了方便,本文将注脚也看成是一种链接。

注脚

从小就喜闻乐见的一种方式是这样:

[1]

还可以这样:

[fn:name]

定义了注脚之后可以用C-c C-c在正文位置和注脚位置之间切换,而当注脚还没有定义时,还可以用它来定义。

内部

可以用下面方式来定义一个内部链接:

[[link][description]]

内部链接的跳转方式类似C-s。

外部

外部链接通常不用固定格式来定义,直接按相应链接的形式即可。比如:

http://www.google.com.hk
file:/path/to/filename

最后,无论是内部还是外部的链接,都可以用”C-c C-o“或者单击鼠标左键来到达链接位置。

表格

貌似很多emacs操作视频里都有操作表格的部分,应该说这个功能确实是蛮炫的。

创建

  1. 你可以通过C-c |的命令来新建一个表格,需要注意的是,当它提示你建立多大的表格时,中间的字符是字母x而不是数学的乘号。
  2. 以|开头(行首),各列项间用|隔开,第一行输完后一个Tab,你就什么都明白了。这种方法创建的表格没有水平分割线,你可以同过C-c -命令来添加。

移动和调整

  1. 使用Tab移动一个区域或用Ret来移动一整行,在表尾执行该操作会新建一行。
  2. 如果某项内容较多,你可以在空白项内输入<数字>来限制其所在列的长度,超出长度的内容会被隐藏,你可以把鼠标移到该项来查看被隐藏内容。
  3. 在表格任意位置使用C-c C-c来对齐表格

speedsheet

表格往往会和一些计算联系在一起,比如一个班级的成绩单往往要在某列输入总分平均分之类的,就像下面这个表,要在第3列输入前两列的平均数。

|  a |  b | avg |
|----+----+-----|
| 83 | 73 |     |
| 66 | 77 |     |
| 77 | 99 |     |

那么在第二行的第三列输入=($1+$2)/2,然后按下C-u C-c C-c。

|  a |  b |  avg |
|----+----+------|
| 83 | 73 |   78 |
| 66 | 77 | 71.5 |
| 77 | 99 |   88 |
#+TBLFM: $3=($1+$2)/2

如果只要对某一行求平均数,在=前加:即可。

标签

当内容较为复杂时,用大纲(即树状分类)的模式来进行管理往往会比较麻烦,这个时候就往往要用到标签。标签的使用不用大纲那么严肃而呆板,应该说它是一种比较自由而活泼的管理信息的方式。比如说唐僧,以大纲的的方式来管理归类的话,可以定义以下几层标题:

* 中国
** 和尚
*** 唐僧

以下就以唐僧为例来说明标签的使用。

定义

  1. 如果说大纲里的标题是一个名字(并不一定是人)的话,那么标签就是这个东西某一方面一个显著的特点,就像一个东西有好多特点一样,一个标题可以拥有多个标签。比如说,我们可以给中国加上两个标签(以:开头和结束,标签之间以:隔开,M-Tab用来对齐)。
    * 中国                 :帅气:勤劳:
    **  和尚
    ***  唐僧
  2. 除了手动输入外,也可以在标题上用C-c C-c来定义。
  3. 在Org-mode里,子标题自动继承父标题的标签。比如这样:
    * 中国                :帅气:勤劳:
    ** 和尚                :光头:
    *** 唐僧                   :废话多:

    那么唐僧就拥有帅气,勤劳,光头,废话多4个标签。

预定义

  1. 在文件头部定义,就像这样:
    #+TAGS: { 命令行(c) 图形(g) } 编辑(e)

    其中#+顶格,括号内字母代表快捷键,花括号为标签组,只能选一个。

  2. 在配置文件中定义,就像这样:
    (setq org-tag-alist 
      '((:group1 . nil)
        ("命令行" . ?c) ("图形" . ?g) 
      ("编辑" . ?e)))

使用

建立了标签当然不是为了好玩,而是为了更方便地管理文档内容,可以用C-c \来查找具有某个标签的所有标题。或许有人认为直接找标题会更方便,比如说直接找唐僧,但事实上很多时候你只知道你要找一个帅气,勤劳,光头,废话多的东西,可以是并不知道唐僧是这样的,这种情况下标签的作用就很明显了。

元数据

其实之前已经看到过了,还记得表格的speedsheet么,输入计算表达式后在表格后面会出现#+TBLFM: $3=($1+$2)/2,这个就是元数据。

文档元数据

一般放在文档开头部分,比如本文使用的:

#+title: org-mode(文档编辑)
#+author: hookbrother
#+email: hookbrother@gmail.com
#+date: <2013-08-27>

内容元数据

主要用于一些特殊格式的内容。

  1. 代码(如果没有高亮显示,请安装htmlize插件)
    #+begin_src c :eval no-export  ;;导出时不执行
    #include <stdio.h>
    void main(){
      printf("hello!");
      return;
    }
    #+end_src
  2. 例子(单行的以:开头)
    #+begin_example
        多行的
        例子
        #+end_example

导出

当文档编辑完之后,你可以根据需要使用C-c C-e命令导成其他格式。需要注意的是,如果遇到can't find libary org提示,试试:

sudo apt-get install emacs24-el

发布

因为目前为止还没有在github上发表博客的打算,所以这里我用的是open source的插件,可以到这里下载

转载于:https://www.cnblogs.com/hookbrother/p/3398277.html

 类似资料: