Skip to content

Commit 2c2ee5f

Browse files
authored
Merge pull request skywind3000#102 from shynur/master
Org tutorial (reopen for pull#101)
2 parents 5dc4de9 + 98f05f2 commit 2c2ee5f

File tree

2 files changed

+383
-0
lines changed

2 files changed

+383
-0
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@
3838

3939
- [VIM](editors/vim.txt)
4040
- [Nano](editors/nano.txt)
41+
- [Emacs](editors/emacs.txt)
42+
- [Org Mode](editors/org.org)
4143

4244
## :pray:感谢贡献
4345

editors/org.org

Lines changed: 381 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,381 @@
1+
#+title: 快速入门 Org Mode
2+
#+author: 谢骐 <https://github.com/shynur>
3+
4+
(由于 GitHub 对 Org 的支持不完整, 你可以在 Emacs 或 VS Code 中阅读本文件, \\
5+
更好的做法是[[https://shynur.github.io/CheatSheets/Org.html][阅读导出的 HTML 版本]].)
6+
7+
* 关于文档自身
8+
9+
允许在文件的 *最开头* 添加附属信息:
10+
11+
#+BEGIN_SRC org
12+
,#+title: 标题 (比一级标题还要高一级)
13+
,#+author: 作者
14+
,#+date: 年年年年-月-日
15+
16+
正文 ... ...
17+
#+END_SRC
18+
19+
** 键位
20+
21+
| 导出 | =C-c C-e= |
22+
| 折叠标题 | =<tab>= |
23+
24+
* 结构化文本
25+
** 标题层次
26+
27+
顶格写 ‘​=*=​’ , 并续上至少 *1 个空格*, 表示一级标题.
28+
星号 (=*=) 的数量代表标题的级数.
29+
二级标题从属一级标题, 以此类推.
30+
31+
** 列表
32+
*** 列表序号
33+
34+
有序列表用 =+=​/​=-=​, 无序列表用 =1.=​/​=A.=​, 可以嵌套:
35+
36+
#+BEGIN_SRC org
37+
A. 植物
38+
+ 水果
39+
1. 桃子
40+
+ 谷物
41+
- 大米
42+
B. 动物
43+
#+END_SRC
44+
45+
*** 给列表打标
46+
47+
可以给列表的表项添加 /勾选框/ (=[ ]=), 也可以加 /tag/:
48+
49+
#+BEGIN_SRC org
50+
- [ ] 买橘子
51+
- 作业 :: 写数学作业
52+
- [ ] 锻炼 :: 跑步
53+
#+END_SRC
54+
55+
这样的列表提供了 *交互式* 操作, 见 [[任务清单]].
56+
57+
* 排版
58+
** 标记法
59+
60+
#+BEGIN_SRC org
61+
/斜体/ *粗体* +删除线+ _下划线_ 强制换行 \\
62+
~代码~ =不是代码但需要等宽=
63+
/*+_~组合~_+*/
64+
65+
S_{c} = \pi{}r_c^2
66+
#+END_SRC
67+
68+
效果如下[fn:: 当我说 ‘​/效果如下/​’ 时, 指的是 *导出后* 的效果, 比如, 用 =C-c C-e h o= 导出成 ~HTML~.]:
69+
70+
/斜体/ *粗体* +删除线+ _下划线_ 强制换行 \\
71+
~代码~ =不是代码但需要等宽=
72+
/*+_~组合~_+*/
73+
74+
S_{c} = \pi{}r_c^2
75+
76+
*** 注意事项
77+
78+
内联标记时, 大部分情况下标记的两端必须保留 /空白字符/.
79+
80+
例如, =‘~code~’= 中的 =code= 就不能正常渲染.
81+
常见的做法是在 =‘这里~code~这里’= 添加零宽字符.
82+
83+
比如, 在你的 Org 文件的 *最尾端* 写下:
84+
85+
#+BEGIN_SRC org
86+
正文 ... ...
87+
88+
# Local Variables:
89+
# eval: (keymap-local-set "<f9>"
90+
# "\N{ZERO WIDTH SPACE}")
91+
# End:
92+
#+END_SRC
93+
94+
当你的 Emacs 打开该文件时, 按下 =<f9>= 即输入 ‘零宽字符’.
95+
96+
** 链接
97+
98+
: [[类型:定位][描述]]
99+
100+
其中, =[描述]= 是可选的.
101+
102+
*** 内部链接 :linked:内部链接:
103+
104+
省略掉 =类型:=, =定位= 填入同一个文件的某个标题.
105+
例如, =[[内部链接]]= 指向 [[内部链接]] (也就是本小节).
106+
107+
*** 外部链接
108+
109+
+ =http=​/​=https= \\
110+
: [[https://github.com/shynur][本文的作者]]
111+
[[https://github.com/shynur][本文的作者]]
112+
+ =file= 本地文件 \\
113+
: [[file:./][当前目录]]
114+
[[file:./][当前目录]]
115+
116+
**** 图片链接
117+
118+
Org 会根据后缀自动识别图片.
119+
120+
若 图片 就位于你的 *本地机器* 上, 则在 Emacs 中键入 =C-c C-x C-v= 即时渲染.
121+
122+
** 块文本
123+
124+
使用 =#+BEGIN_XXX= 和 =#+END_XXX= (无所谓大小写, 但大写显然更直观) 包裹文本, 赋予其特殊含义.
125+
如果块中文本在行首出现了 =*= 或 =#+=, 则 /额外/ 添加一个 =,=.
126+
127+
下面是 [[https://github.com/shynur/.emacs.d/tree/main/etc/yas-snippets/org-mode/BEGIN-END-block.yasnippet][我写的补全模板]]:
128+
129+
#+ATTR_HTML: :alt 如果看到了这句话, 说明图片失效了 (那么请到 <https://github.com/shynur/.emacs.d/issues/1> 查看), 或者你的网络环境有问题.
130+
#+ATTR_HTML: :width 400px
131+
[[https://user-images.githubusercontent.com/98227472/260117711-02936942-76fe-4ee5-a5c9-e60ced038e73.gif]]
132+
133+
*** 等宽块
134+
135+
#+BEGIN_SRC org
136+
,#+BEGIN_EXAMPLE
137+
ABCdef<>/;"
138+
,#+END_EXAMPLE
139+
#+END_SRC
140+
141+
效果如下:
142+
143+
#+BEGIN_EXAMPLE
144+
ABCdef<>/;"
145+
#+END_EXAMPLE
146+
147+
*** 代码块
148+
149+
等宽块仅仅是为了等宽, 而 /代码块/ 允许你 *在 Org 文件中运行代码* (见 [[文字编程]]).
150+
这一节仅展示语法.
151+
152+
#+BEGIN_SRC org
153+
,#+BEGIN_SRC bash
154+
ls
155+
,#+END_SRC
156+
#+END_SRC
157+
158+
通过指定编程语言 (此例中是 ~Bash~), Org 会调用不同的程序 (编译并) 执行这段代码, 并且 (如果你有相关插件的话, 还会在导出时) 对其选择不同的高亮方案.
159+
160+
**** 单行代码
161+
162+
#+BEGIN_SRC org
163+
# 任意数量的额外的缩进
164+
: assume cs:code, ss:stack
165+
#+END_SRC
166+
167+
效果如下 (没有高亮):
168+
: assume cs:code, ss:stack
169+
170+
**** 代码块行号
171+
172+
: #+BEGIN_SRC Language -n 第一行的行号 (缺省为 1)
173+
: #+BEGIN_SRC Language +n 第一行的行号比上一个代码块最后一行的行号多的数值 (缺省为 1)
174+
175+
*** 诗句块
176+
177+
保留 *缩进* 与 *换行*.
178+
179+
#+BEGIN_SRC org
180+
,#+BEGIN_VERSE
181+
我的前面有五个空格
182+
这边只有两个
183+
---佚名
184+
,#+END_VERSE
185+
#+END_SRC
186+
187+
效果如下:
188+
189+
#+BEGIN_VERSE
190+
我的前面有五个空格
191+
这边只有两个
192+
---佚名
193+
#+END_VERSE
194+
195+
*** 引用块
196+
197+
使用 ~#+BEGIN_QUOTE~.
198+
199+
*** 居中块
200+
201+
#+BEGIN_SRC org
202+
,#+BEGIN_CENTER
203+
Thank you, \\
204+
shynur
205+
206+
August 12, 2023
207+
,#+END_CENTER
208+
#+END_SRC
209+
210+
效果如下:
211+
212+
#+BEGIN_CENTER
213+
Thank you, \\
214+
shynur <[email protected]>. \\
215+
August 12, 2023
216+
#+END_CENTER
217+
218+
** 表格
219+
*** 不带字段的表格
220+
221+
#+BEGIN_SRC org
222+
| 我是 | 一个 | 只由 |
223+
| 两行 | 组成的 | 表格 |
224+
#+END_SRC
225+
226+
效果如下:
227+
228+
| 我是 | 一个 | 只由 |
229+
| 两行 | 组成的 | 表格 |
230+
231+
*** 带字段的表格
232+
233+
#+BEGIN_SRC org
234+
| 年龄 | 职业 | ID |
235+
|------+------+--------+
236+
| 24 | 学生 | 114514 |
237+
#+END_SRC
238+
239+
效果如下:
240+
241+
| 年龄 | 职业 | ID |
242+
|------+------+--------+
243+
| 24 | 学生 | 114514 |
244+
245+
* LaTeX
246+
* 交互
247+
** 任务清单 :linked:给列表打标:
248+
249+
在 *标题* 前加上 =TODO= 关键字,
250+
可选地加上优先级 =[#字母]=, 可选地在末尾加上 =[%]=:
251+
252+
#+BEGIN_SRC org
253+
,*** TODO [#B] 示例 [%]
254+
255+
- [ ] TAG1 :: 未完成
256+
- [-] 正在进行中
257+
- [ ] TAG1 :: 等会完成
258+
#+END_SRC
259+
260+
在 Emacs 中, 将光标置于第三个任务中, 键入 =C-c C-c= 将会勾选 =[X]= 并更新任务进度,
261+
见 [[任务清单示例]].
262+
263+
*** TODO [#B] 任务清单示例 [33%] :linked:任务清单:
264+
265+
- [ ] TAG1 :: 未完成
266+
- [-] 正在进行中
267+
- [X] TAG1 :: 等会完成
268+
269+
全部完成后, =TODO= 关键字会变成 =DONE=.
270+
271+
** 文字编程 :linked:代码块:
272+
* 注解
273+
** 脚注
274+
*** 具名脚注
275+
276+
: 那个人发明了 C++[fn:OOP: 这是一种面向对象的编程语言.].
277+
278+
效果如下:
279+
280+
那个人发明了 C++[fn:OOP: 这是一种面向对象的编程语言.].
281+
282+
*** 引用脚注
283+
284+
: 那个人发明了 Python[fn:OOP].
285+
286+
效果如下:
287+
288+
那个人发明了 Python[fn:OOP].
289+
290+
*** 匿名脚注
291+
292+
: 我[fn:: 菜鸡]不喜欢 Bash.
293+
294+
效果如下:
295+
296+
我[fn:: 菜鸡]不喜欢 Bash.
297+
298+
** 注释
299+
*** 单行注释
300+
301+
顶格写 =#一个空格=:
302+
: # 这是注释.
303+
# 这真的是注释.
304+
305+
*** 内联注释
306+
307+
: 你@@comment:这是注释@@好!
308+
@@comment:这是注释@@
309+
310+
*** 块注释
311+
312+
#+BEGIN_SRC org
313+
,#+BEGIN_COMMENT
314+
这里是注释.
315+
316+
这里也是!
317+
,#+END_COMMENT
318+
#+END_SRC
319+
320+
#+BEGIN_COMMENT
321+
这里是真的注释.
322+
323+
这里也是!
324+
#+END_COMMENT
325+
326+
*** 结构化注释
327+
328+
#+BEGIN_SRC org
329+
,* 大标题
330+
,** COMMENT 大批注
331+
,*** 小批注
332+
批注...
333+
,** 小标题
334+
#+END_SRC
335+
336+
**** COMMENT 批注
337+
***** 子批注
338+
339+
批注 ... ...
340+
341+
* 下一步
342+
** 支持 Org Mode 的软件
343+
*** 编写 Org 文件
344+
345+
+ Vim
346+
- =org.vim=
347+
- =vim-orgmode=
348+
- =orgmode.nvim=
349+
+ Visual Studio Code
350+
- =vscode-org-mode=
351+
+ Atom
352+
- =org-mode=
353+
354+
*** 格式转换
355+
**** 导入导出
356+
357+
+ Pandoc
358+
+ Drupal converter
359+
+ ox-hugo
360+
+ ox-​*
361+
+ VimWiki
362+
+ Exchange calendars
363+
364+
**** 发布博客
365+
366+
+ Hugo
367+
+ Org-Jekyll
368+
+ o-blog
369+
+ Org2Blog
370+
371+
** 更多资料
372+
373+
+ [[https://orgmode.org/guide/][Org Mode Compact Guide]]
374+
+ [[https://orgmode.org/quickstart.html][Getting started with Org-mode]]
375+
+ [[https://orgmode.org/manual/Markup-for-Rich-Contents.html][Markup for Rich Contents]]
376+
377+
-----
378+
379+
# Local Variables:
380+
# coding: utf-8-unix
381+
# End:

0 commit comments

Comments
 (0)