Org tutorial
This commit is contained in:
@@ -38,6 +38,8 @@
|
||||
|
||||
- [VIM](editors/vim.txt)
|
||||
- [Nano](editors/nano.txt)
|
||||
- [Emacs](editors/emacs.txt)
|
||||
- [Org Mode](editors/org.org)
|
||||
|
||||
## :pray:感谢贡献
|
||||
|
||||
|
||||
381
editors/org.org
Normal file
381
editors/org.org
Normal file
@@ -0,0 +1,381 @@
|
||||
#+title: 快速入门 Org Mode
|
||||
#+author: 谢骐 <https://github.com/shynur>
|
||||
|
||||
(由于 GitHub 对 Org 的支持不完整, 你可以在 Emacs 或 VS Code 中阅读本文件, \\
|
||||
更好的做法是[[https://shynur.github.io/CheatSheets/Org.html][阅读导出的 HTML 版本]].)
|
||||
|
||||
* 关于文档自身
|
||||
|
||||
允许在文件的 *最开头* 添加附属信息:
|
||||
|
||||
#+BEGIN_SRC org
|
||||
,#+title: 标题 (比一级标题还要高一级)
|
||||
,#+author: 作者
|
||||
,#+date: 年年年年-月-日
|
||||
|
||||
正文 ... ...
|
||||
#+END_SRC
|
||||
|
||||
** 键位
|
||||
|
||||
| 导出 | =C-c C-e= |
|
||||
| 折叠标题 | =<tab>= |
|
||||
|
||||
* 结构化文本
|
||||
** 标题层次
|
||||
|
||||
顶格写 ‘=*=’ , 并续上至少 *1 个空格*, 表示一级标题.
|
||||
星号 (=*=) 的数量代表标题的级数.
|
||||
二级标题从属一级标题, 以此类推.
|
||||
|
||||
** 列表
|
||||
*** 列表序号
|
||||
|
||||
有序列表用 =+=/=-=, 无序列表用 =1.=/=A.=, 可以嵌套:
|
||||
|
||||
#+BEGIN_SRC org
|
||||
A. 植物
|
||||
+ 水果
|
||||
1. 桃子
|
||||
+ 谷物
|
||||
- 大米
|
||||
B. 动物
|
||||
#+END_SRC
|
||||
|
||||
*** 给列表打标
|
||||
|
||||
可以给列表的表项添加 /勾选框/ (=[ ]=), 也可以加 /tag/:
|
||||
|
||||
#+BEGIN_SRC org
|
||||
- [ ] 买橘子
|
||||
- 作业 :: 写数学作业
|
||||
- [ ] 锻炼 :: 跑步
|
||||
#+END_SRC
|
||||
|
||||
这样的列表提供了 *交互式* 操作, 见 [[任务清单]].
|
||||
|
||||
* 排版
|
||||
** 标记法
|
||||
|
||||
#+BEGIN_SRC org
|
||||
/斜体/ *粗体* +删除线+ _下划线_ 强制换行 \\
|
||||
~代码~ =不是代码但需要等宽=
|
||||
/*+_~组合~_+*/
|
||||
|
||||
S_{c} = \pi{}r_c^2
|
||||
#+END_SRC
|
||||
|
||||
效果如下[fn:: 当我说 ‘/效果如下/’ 时, 指的是 *导出后* 的效果, 比如, 用 =C-c C-e h o= 导出成 ~HTML~.]:
|
||||
|
||||
/斜体/ *粗体* +删除线+ _下划线_ 强制换行 \\
|
||||
~代码~ =不是代码但需要等宽=
|
||||
/*+_~组合~_+*/
|
||||
|
||||
S_{c} = \pi{}r_c^2
|
||||
|
||||
*** 注意事项
|
||||
|
||||
内联标记时, 大部分情况下标记的两端必须保留 /空白字符/.
|
||||
|
||||
例如, =‘~code~’= 中的 =code= 就不能正常渲染.
|
||||
常见的做法是在 =‘这里~code~这里’= 添加零宽字符.
|
||||
|
||||
比如, 在你的 Org 文件的 *最尾端* 写下:
|
||||
|
||||
#+BEGIN_SRC org
|
||||
正文 ... ...
|
||||
|
||||
# Local Variables:
|
||||
# eval: (keymap-local-set "<f9>"
|
||||
# "\N{ZERO WIDTH SPACE}")
|
||||
# End:
|
||||
#+END_SRC
|
||||
|
||||
当你的 Emacs 打开该文件时, 按下 =<f9>= 即输入 ‘零宽字符’.
|
||||
|
||||
** 链接
|
||||
|
||||
: [[类型:定位][描述]]
|
||||
|
||||
其中, =[描述]= 是可选的.
|
||||
|
||||
*** 内部链接 :linked:内部链接:
|
||||
|
||||
省略掉 =类型:=, =定位= 填入同一个文件的某个标题.
|
||||
例如, =[[内部链接]]= 指向 [[内部链接]] (也就是本小节).
|
||||
|
||||
*** 外部链接
|
||||
|
||||
+ =http=/=https= \\
|
||||
: [[https://github.com/shynur][本文的作者]]
|
||||
[[https://github.com/shynur][本文的作者]]
|
||||
+ =file= 本地文件 \\
|
||||
: [[file:./][当前目录]]
|
||||
[[file:./][当前目录]]
|
||||
|
||||
**** 图片链接
|
||||
|
||||
Org 会根据后缀自动识别图片.
|
||||
|
||||
若 图片 就位于你的 *本地机器* 上, 则在 Emacs 中键入 =C-c C-x C-v= 即时渲染.
|
||||
|
||||
** 块文本
|
||||
|
||||
使用 =#+BEGIN_XXX= 和 =#+END_XXX= (无所谓大小写, 但大写显然更直观) 包裹文本, 赋予其特殊含义.
|
||||
如果块中文本在行首出现了 =*= 或 =#+=, 则 /额外/ 添加一个 =,=.
|
||||
|
||||
下面是 [[https://github.com/shynur/.emacs.d/tree/main/etc/yas-snippets/org-mode/BEGIN-END-block.yasnippet][我写的补全模板]]:
|
||||
|
||||
#+ATTR_HTML: :alt 如果看到了这句话, 说明图片失效了 (那么请到 <https://github.com/shynur/.emacs.d/issues/1> 查看), 或者你的网络环境有问题.
|
||||
#+ATTR_HTML: :width 400px
|
||||
[[https://user-images.githubusercontent.com/98227472/260117711-02936942-76fe-4ee5-a5c9-e60ced038e73.gif]]
|
||||
|
||||
*** 等宽块
|
||||
|
||||
#+BEGIN_SRC org
|
||||
,#+BEGIN_EXAMPLE
|
||||
ABCdef<>/;"
|
||||
,#+END_EXAMPLE
|
||||
#+END_SRC
|
||||
|
||||
效果如下:
|
||||
|
||||
#+BEGIN_EXAMPLE
|
||||
ABCdef<>/;"
|
||||
#+END_EXAMPLE
|
||||
|
||||
*** 代码块
|
||||
|
||||
等宽块仅仅是为了等宽, 而 /代码块/ 允许你 *在 Org 文件中运行代码* (见 [[文字编程]]).
|
||||
这一节仅展示语法.
|
||||
|
||||
#+BEGIN_SRC org
|
||||
,#+BEGIN_SRC bash
|
||||
ls
|
||||
,#+END_SRC
|
||||
#+END_SRC
|
||||
|
||||
通过指定编程语言 (此例中是 ~Bash~), Org 会调用不同的程序 (编译并) 执行这段代码, 并且 (如果你有相关插件的话, 还会在导出时) 对其选择不同的高亮方案.
|
||||
|
||||
**** 单行代码
|
||||
|
||||
#+BEGIN_SRC org
|
||||
# 任意数量的额外的缩进
|
||||
: assume cs:code, ss:stack
|
||||
#+END_SRC
|
||||
|
||||
效果如下 (没有高亮):
|
||||
: assume cs:code, ss:stack
|
||||
|
||||
**** 代码块行号
|
||||
|
||||
: #+BEGIN_SRC Language -n 第一行的行号 (缺省为 1)
|
||||
: #+BEGIN_SRC Language +n 第一行的行号比上一个代码块最后一行的行号多的数值 (缺省为 1)
|
||||
|
||||
*** 诗句块
|
||||
|
||||
保留 *缩进* 与 *换行*.
|
||||
|
||||
#+BEGIN_SRC org
|
||||
,#+BEGIN_VERSE
|
||||
我的前面有五个空格
|
||||
这边只有两个
|
||||
---佚名
|
||||
,#+END_VERSE
|
||||
#+END_SRC
|
||||
|
||||
效果如下:
|
||||
|
||||
#+BEGIN_VERSE
|
||||
我的前面有五个空格
|
||||
这边只有两个
|
||||
---佚名
|
||||
#+END_VERSE
|
||||
|
||||
*** 引用块
|
||||
|
||||
使用 ~#+BEGIN_QUOTE~.
|
||||
|
||||
*** 居中块
|
||||
|
||||
#+BEGIN_SRC org
|
||||
,#+BEGIN_CENTER
|
||||
Thank you, \\
|
||||
shynur
|
||||
<one.last.kiss@outlook.com>. \\
|
||||
August 12, 2023
|
||||
,#+END_CENTER
|
||||
#+END_SRC
|
||||
|
||||
效果如下:
|
||||
|
||||
#+BEGIN_CENTER
|
||||
Thank you, \\
|
||||
shynur <one.last.kiss@outlook.com>. \\
|
||||
August 12, 2023
|
||||
#+END_CENTER
|
||||
|
||||
** 表格
|
||||
*** 不带字段的表格
|
||||
|
||||
#+BEGIN_SRC org
|
||||
| 我是 | 一个 | 只由 |
|
||||
| 两行 | 组成的 | 表格 |
|
||||
#+END_SRC
|
||||
|
||||
效果如下:
|
||||
|
||||
| 我是 | 一个 | 只由 |
|
||||
| 两行 | 组成的 | 表格 |
|
||||
|
||||
*** 带字段的表格
|
||||
|
||||
#+BEGIN_SRC org
|
||||
| 年龄 | 职业 | ID |
|
||||
|------+------+--------+
|
||||
| 24 | 学生 | 114514 |
|
||||
#+END_SRC
|
||||
|
||||
效果如下:
|
||||
|
||||
| 年龄 | 职业 | ID |
|
||||
|------+------+--------+
|
||||
| 24 | 学生 | 114514 |
|
||||
|
||||
* LaTeX
|
||||
* 交互
|
||||
** 任务清单 :linked:给列表打标:
|
||||
|
||||
在 *标题* 前加上 =TODO= 关键字,
|
||||
可选地加上优先级 =[#字母]=, 可选地在末尾加上 =[%]=:
|
||||
|
||||
#+BEGIN_SRC org
|
||||
,*** TODO [#B] 示例 [%]
|
||||
|
||||
- [ ] TAG1 :: 未完成
|
||||
- [-] 正在进行中
|
||||
- [ ] TAG1 :: 等会完成
|
||||
#+END_SRC
|
||||
|
||||
在 Emacs 中, 将光标置于第三个任务中, 键入 =C-c C-c= 将会勾选 =[X]= 并更新任务进度,
|
||||
见 [[任务清单示例]].
|
||||
|
||||
*** TODO [#B] 任务清单示例 [33%] :linked:任务清单:
|
||||
|
||||
- [ ] TAG1 :: 未完成
|
||||
- [-] 正在进行中
|
||||
- [X] TAG1 :: 等会完成
|
||||
|
||||
全部完成后, =TODO= 关键字会变成 =DONE=.
|
||||
|
||||
** 文字编程 :linked:代码块:
|
||||
* 注解
|
||||
** 脚注
|
||||
*** 具名脚注
|
||||
|
||||
: 那个人发明了 C++[fn:OOP: 这是一种面向对象的编程语言.].
|
||||
|
||||
效果如下:
|
||||
|
||||
那个人发明了 C++[fn:OOP: 这是一种面向对象的编程语言.].
|
||||
|
||||
*** 引用脚注
|
||||
|
||||
: 那个人发明了 Python[fn:OOP].
|
||||
|
||||
效果如下:
|
||||
|
||||
那个人发明了 Python[fn:OOP].
|
||||
|
||||
*** 匿名脚注
|
||||
|
||||
: 我[fn:: 菜鸡]不喜欢 Bash.
|
||||
|
||||
效果如下:
|
||||
|
||||
我[fn:: 菜鸡]不喜欢 Bash.
|
||||
|
||||
** 注释
|
||||
*** 单行注释
|
||||
|
||||
顶格写 =#一个空格=:
|
||||
: # 这是注释.
|
||||
# 这真的是注释.
|
||||
|
||||
*** 内联注释
|
||||
|
||||
: 你@@comment:这是注释@@好!
|
||||
@@comment:这是注释@@
|
||||
|
||||
*** 块注释
|
||||
|
||||
#+BEGIN_SRC org
|
||||
,#+BEGIN_COMMENT
|
||||
这里是注释.
|
||||
|
||||
这里也是!
|
||||
,#+END_COMMENT
|
||||
#+END_SRC
|
||||
|
||||
#+BEGIN_COMMENT
|
||||
这里是真的注释.
|
||||
|
||||
这里也是!
|
||||
#+END_COMMENT
|
||||
|
||||
*** 结构化注释
|
||||
|
||||
#+BEGIN_SRC org
|
||||
,* 大标题
|
||||
,** COMMENT 大批注
|
||||
,*** 小批注
|
||||
批注...
|
||||
,** 小标题
|
||||
#+END_SRC
|
||||
|
||||
**** 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
|
||||
|
||||
** 更多资料
|
||||
|
||||
+ [[https://orgmode.org/guide/][Org Mode Compact Guide]]
|
||||
+ [[https://orgmode.org/quickstart.html][Getting started with Org-mode]]
|
||||
+ [[https://orgmode.org/manual/Markup-for-Rich-Contents.html][Markup for Rich Contents]]
|
||||
|
||||
-----
|
||||
|
||||
# Local Variables:
|
||||
# coding: utf-8-unix
|
||||
# End:
|
||||
Reference in New Issue
Block a user