EMACS-DOCUMENT

=============>集思广益

Org Mode 使用说明——备忘录

Org mode 常见功能

1 标题

关于 org mode 标题的内容。

标题是由 * (星号) 进行声明。星号的数量决定了标题的尝试。通过 <TAB> 键可以折叠和打开标题。当一行标题下有多行子标题的时候,可以通过多次按 <TAB> 键来打开相应的标题的层数。

1.1 子标题

子标题可以嵌套在其它标题之下,就像这个一样。这样是为了方便组织材料。

2 "TODO" (C-c C-t)

TODO 是通过在开始通过 TODODONE 关键字来创建的。 当然,你也可以能过在标题上按 C-c C-t 快捷键。 这样可以在你的 org 文档中更好的管理你的工作任务。这可以帮助你更好的计 划和安排你的任务。

2.1 TODO 循环

你可以对一个已经有了 TODO 标记的条目切换 TODO 状态。更方便的方法是 通过 C-c C-t t (t 标示 TODO) 进行更改。

无 -> TODO -> DONE -> 无 … (C-C C-t)

3 列表

你可以通过 - (破折号) 创建点式列表(bullets:无序列表),数字列表或者通过 #. (数字[.]) 创建一个清单。在没有具体内容的时候,你可以通过使用制表符来缩 近点式列表,但是制表符往往会让人更加迷惑,但是你可以通过在输入 - 或者 #. 之前利用 <TAB> 来解决这个问题。

3.1 有序列表

  1. 条目 1
  2. 条目 2
    1. 子条目 1
    2. 子条目 2
      1. 子条目的子条目 1

3.2 无序列表

开头用 - , + 或者 *

  • hello
  • item 2
  • item 3
    • subitem 1
    • sub
      • subsub

3.3 描述列表

开头用 - , + 或者 * ,后面用 ::

Matlab is a funnny language.
 - Scope :: Scope doesn't work as expected, and messes everything up\\
 when loops mix variables up in recursive function.
 - Namespaces :: You wish.
 - Header Files :: Nope.

导出如下:

Matlab is a funnny language.

Scope
Scope doesn't work as expected, and messes everything up

when loops mix variables up in recursive function.

Namespaces
You wish.
Header Files
Nope.

4 文本格式化

个别的字可以使用星号来展示成 粗体 ,斜杠来展示成 斜体 ,用下划线来 表示 着重线 。也可以用 波浪号删除线

*粗体* /斜体/ _着重号_ ~波浪号~ +删除线+

5 表格

表格是由 '|' (竖线) 为开头的一行。如果一行是由 '|-' (竖线、横线) 为开始,则是表格的水平分割线;可以使用 <TAB> 键对表格进行扩展。

this is a sample table
move form one col to
the other with <TAB> this column

小贴士:

  • <TAB> 重新排列表格的大小,而且会移动到下一列,如果已经到了一 行的结尾处,则会创建新的一行。
  • C-c C-c 将重排列表的大小,但是不会移动到下一列,也不会创建新 的一行
  • <RET> 移动到下一行。

5.1 表格格式化

在导出的时候,表格是没有边框的,下面的命令可以让紧接着的表格格式化。

Table 1: 这个表格会显示出外框
this is a sample table
move form one col to
the other with <TAB> this column

6 文字示例

文字示例是用来在导出 org 的时候格式化代码和小段文字的。即将内容放在 #+BEGIN_EXAMPLE#+END_EXAMPLE 之间。

6.1 代码

Org-mode 可以非常方便的插入代码片段。方式如下

#+BEGIN_SRC [片段名称] [参数]
#+END_SRC

[片段名称] 可以为 org 文件中的代码提供额外的功能。这也可以非常方便的让 人知道这是什么语言。

例如:

1: int main() {
2: return 0;
3: }

6.1.1 常用的参数和命令

参数:

  • -n : 在代码前显示行号
  • +n : 在代码前显示行号,从上一个代码片段继续往下排,即:上一个为 1 到 5,则这个从 6 开始继续往后排
  • -r : 移除代码的标签

命令:

  • C-c ['] : 允许在本地进行代码段的编辑操作。这会打开一个新的 buffer ,当需要退出时,再执行一次这个命令就可以了。
  • C-c l : 在用 C-c ' 编辑的时候,调用 org-store-link 。可以在正 在编辑的这行创建一个标签。可以利用 C-c C-l 进行跳转。

6.2 模板入门

我们在使用长标签进行输入的时候,会非常的繁琐。我们可以利用一些快捷方式 来创建一个片段的模板。在插入的时候,先输入一个 '<' 然后可以选择一个要 使用的模板缩写,然后按下 <TAB> 键。

模板选择器:

s	#+begin_src ... #+end_src 
e	#+begin_example ... #+end_example
q	#+begin_quote ... #+end_quote 
v	#+begin_verse ... #+end_verse 
c	#+begin_center ... #+end_center 
l	#+begin_latex ... #+end_latex 
L	#+latex: 
h	#+begin_html ... #+end_html 
H	#+html: 
a	#+begin_ascii ... #+end_ascii 
A	#+ascii: 
i	#+index: line 
I	#+include: line 

7 链接

7.1 文件链接

可以使用下面的方式创建一个文件链接

[[file:filename][name-of-link]]

这样可以在导出成 HTML 的链接模式。

7.2 文档内容链接

你可以创建一个链接用来在文档中跳转,通过这种方式跳转到其它的章节。第二 个参数可以创建一个其它的名称。

[[section-title]]
[[section-title][link-title]]

8 导出 (C-c C-e)

你可以导出所有任务支持的格式,利用 C-c C-e [option]

C-c C-e 可以在缓冲区中显示出所有支持导出的选项。一般来说都支持 text, html, 和 Latex。你可以通过 Latex 生成 PDF 文档,但是需要在本地安装 Latex 编译环境。

8.1 导出选项 (C-c C-e t)

在导出 org 文档的时候,可以自动设计一些变量,也可以手工设置。可以用下面 的方式来修改参数:

#+VARIABLE-NAME: value

这个参数可以放在文档的任务位置,但是放在最上面比较好。

将这些模板粘贴在你的文档中,就可以设置他们了,然后用 (org-insert-export-options-template) 或者 C-c C-e t

下面这些可以打印出来1

#+TITLE:       文档的题目(默认是文件的题目)
#+AUTHOR:      作者(默认为 user-full-name)
#+DATE:        日期或者是一个时间戳(利用 org-export-timestamp-format 设置)
#+EMAIL:       邮箱地址(默认为 user-mail-address)
#+DESCRIPTION: 页面描述,类似于 XHTML 的元标签(META tag)
#+KEYWORDS:    页面关键定,类似于 XHTML 的元标签
#+LANGUAGE:    HTML 的语言,例如 en (org-export-default-language)
#+TEXT:        在开头插入一些描述性的文本。(可能已经移除)
#+OPTIONS:     H:2 num:t toc:t \n:nil @:t ::t |:t ^:t f:t TeX:t ...
#+BIND:        如果 org-export-allow-bind-keywords 是 non-nil,Emacs 的变量可以利用 BIND 关键字,改缓冲区的内容
#+HTML_LINK_HOME: 主页链接
#+HTML_LINK_UP: 上行链接
#+SELECT_TAGS:  默认为 :export: ,则会将所有有 :export: 的内容(子内容)进行导出
#+EXCLUDE_TAGS: 默认为 :noexport: ,不导出有 :noexport: 标记的内容,如果入口标记为 :noexport:,有 :export: 标签的内容也不进行导出
#+LINK:        每行指定一个链接的名称或者是简写 
#+LATEX_HEADER: 可以增加一个额外的 Latex 标注,类似于 \usepackage{xyz}

在你的文档中,你可以使用实际的变量代替描述,而且可以随意的改变这些变量。 下面提供这些变量的参考。

对导出 HTML 和 LaTeX 来说, #+OPTIONS 是一个非常有用的参数。

H:         控制导出的标题的级别
num:       控制是否输出段落的编号 
toc:       控制是否输出目录,或者目录的级别(数字)
\n:        控制是否保留换行符
@:         控制是否输出 HTML 标签
::         控制是否固定宽度
|:         控制是否包含表格
^:         控制是否允许 Tex 的句法,如果设置为 ^:{} ,a_{b}会展示为下标,但是 a_b 则显示为 a_b
-:         控制特殊字符转换,t 的时候, \-/--/---/... 会转换成&sky,&ndash,&mdash,&hellip.
f:         控制是否包含脚标
todo:      控制是否包含 TODO 关键字
tasks:     控制包含的任务的类型,todo 移除 DONE 的内容,nil 移除所有相关内容,如果有多个关键字则保留所有关键字的内容
pri:       控制包含的优先级
tags:      控制包含的标签,not-in-toc: 控制是否包含于标题,nil 是不包含 tags
<:         控制是否包含时间戳,例如:截止时间
*:         控制是否启用强调文本(粗体、斜体、下划线)
TeX:       控制在纯文本中是否支持 TeX 宏
LaTeX:     控制是否支持 LaTex 版本,默认为自动
skip:      控制是否路过标题前的文档
author:    控制导出时是否显示作者
email:     控制导出时是否显示邮箱
creator:   控制导出时是否显示创建者
timestamp: 控制导出时是否显示创建时间
d:         控制导出时是否包含抽屉

变量可以设置为 nil 或者 t ,或者是其它的内容。

例如

#+OPTIONS:     H:2 num:t toc:t \n:nil @:t ::t |:t ^:t f:t TeX:t ...

8.1.1 标题

一般使用非注释行作为标题。如果没有的话,ie 会把第一个标题做为文件的名 称。

标题也可以手工设置

#+TITLE: This is the title of the document

8.1.2 目录

一般情况下,会生成在第一个标题后,你也可以在单独的一行中插入 TABLE-OF-CONTENTS 并用方括号括起来。

比较常用的设置如下:

#+OPTIONS: toc:2          (only to two levels in TOC)
#+OPTIONS: toc:nil        (no TOC at all)

8.2 包含其它文件

你可以包含另外的 org 文档,这些文档在导出的时候,才会被显示。 这是使用一行命令完成的

#+INCLUDE: "file-path" [type] [src-language]

可以是 #+BEGIN_QUOTE / #+END_QUOTE 或者 #+BEGIN_EXAMPLE / #+END_EXAMPLE 或者是 #+BEGIN_SRC / #+END_SRC

如果是 _SRC 的话,则语言种类可以是任何主要语言。

8.3 HTML 导出

8.3.1 样式表

你可以用下面的方式引入一个 CSS 样式表

#+STYLE:    <link rel="stylesheet" type="text/css" href="../stylesheet.css" />

你可以使用下面的变量来设置你的 CSS 样式,并在导出的时候使用他们2

p.author            作者信息,包括邮箱
p.date              发矶时间
p.creator           创建时间,包括 org mode 的版本
.title              文档标题
.todo               TODO 关键字,非 DONE 状态
.done               DONE 关键字,所有被认为完成的状态
.WAITING            每个 TODO 状态,且显示成自己的状态名
.timestamp          时间戳
.timestamp-kwd      关联性的时间戳,比如 SCHEDULED
.timestamp-wrapper  关键字时间戳
.tag                各级标题的标签
._HOME              将所有标签类导出,并将 '@' 替换为 '_'
.target             目标链接
.linenr             代码示例中的行号
.code-highlighted   高亮引用的代码行
div.outline-N       给不同 outline 级别标题加 div 标签
div.outline-text-N  给不同 outline 级别提供不同的 div 样式
.section-number-N   标题中的段数,每个级别都不同
div.figure          格式化引用图片
pre.src             格式化源码
pre.example         格式化 example 内容
p.verse             每行段落的样式
div.footnotes       脚注章节的标题
p.footnote          脚注段落的样式,包含脚注的样式
.footref            脚注的参考编号
.footnum            定义脚注的编号

8.3.2 站点导航

8.3.3 超链接

超链接和链接一样,而且会自动转换成 HTML 的超链接形势。见 7

9 发布

发布功能是一个简单的导出渠道。当你有许多文件需要导出的时候,创建一个对 应的发布脚本是一个不错的方法。

9.1 发布脚本

如果需要应用项目发布功能,可以在项目的本地文件夹中创建一个发布脚本,并 附上说明。在我们的例子中,假设文件名为 org_publish.el

#+INCLUDE: org_publish.el src emacs-lisp

Footnotes:

1

这里的内容和 The Org Manual 进行了校对,有些已经无用的或者修改的,则进行了修改。

2

div.outline-N / div.outline-text-N 这两个不太懂,如果有了解 的请帮忙修改。其它的有翻译错误的也请帮忙斧正。