Org Mode Note

本文记录spacemacs org mode的相关笔记

插入源代码

org-mode除了可以直接插入源代码之外,可以直接求出运行结果,这也是其强大之处,在使用之前,需要在.emacs配置文件中设置加载的运行语言:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
(org-babel-do-load-languages
 'org-babel-load-languages
 '(
   (sh . t)
   (python . t)
   (R . t)
   (ruby . t)
   (ditaa . t)
   (dot . t)
   (octave . t)
   (sqlite . t)
   (perl . t)
   (C . t)
   ))

设置好之后输入:

1
2
3
4
5
6
7
# +BEGIN_SRC python :results output
a = 1+1
print a
# +END_SRC

# +RESULTS:
: 2

将光标移到代码块内,按C-c C-c,org-mode会自动添加如下一行。

测试一下C语言

1
2
3
4
5
6
7
8
# +begin_src C++ :includes <stdio.h>
  int a=1;
  int b=1;
  printf("%d\n", a+b);
# +end_src

# +RESULTS:
: 2

TODO items

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
*** TODO write letter

* organize party [33%]
** TODO call people [0/2]
*** TODO Peter
*** TODO sarah
** TODO Buy food
** DONE talk to neighbor
   CLOSED: [2019-03-12 二 14:28]
# check box
* TODO organize party [0/4]
- [-] call people[1/2]
  - [ ] Peter
  - [X] sarah
- [ ]
- [ ] order food

设置TODO list 检索的文件
(setq org-agenda-files (list "~/org/work.org"
                             "~/org/school.org"
                             "~/org/home.org"))
设置启动打开org文件

设置TODO item CLOSED NOTE:
(setq org-log-done 'note)


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

快捷键

ctrl-c ctrl-t   改变TODO item 状态
shift-alt enter   插入一个新的TODO item
ctrl-c a t   展示全局的TODO list
C-c ,  设置优先级
S-up/down   升优先级/降优先级
C-c C-c  激活任务计算[%]  [/]
C-c C-s to run org-schedule.
C-c a a   A display of this week's scheduled items are displayed
press "l" (lowercase L) to turn on log display.

  • shortcut for inser block mark
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
`<s 然后按tab键,会自动展开为源代码块标签:`
#+BEGIN_SRC

#+END_SRC

#Others
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

若该快捷键不起作用,加入以下内容至.spacemacs

(defun dotspacemacs/user-config ()
  (require 'org-tempo)
  )
  • 常用快捷键
Shift-TAB   收起/展开所有内容

IMAGE

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
#insert image and link a image in line
see [[fig:1][figure1]]
#+CAPTION: pi layer time cost and output data size
#+NAME:  fig:1
[[./img.png]]

`M + /`:  file  name/ address  auto complete
` C + c C + x C + v`   display the image
`C+c C+l` modify link in minibuffer
 org export to html css set

#+OPTIONS: tex:t
#+STARTUP: latexpreview
#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="http://gongzhitaao.org/orgcss/org.css"/>

控制输出的图片比例

#+ATTR_latex: :width 20

Insert template with export options

1
2
3
4
5
6
7
`C-c C-e #`
#+TITLE: the title to be shown
#+AUTHOR:  the author (default taken from user-full-name)
#+DATE:  a date, fixed, or an Org timestamp
#+EMAIL:  his/her email address (default from user-mail-address)
#+LANGUAGE:  language, e.g. ‘en’ (org-export-default-language)
#+OPTIONS:  H:2 num:t toc:t \n:nil ::t |:t ^:t f:t tex:t ...

不转义 _ 字符

可以在一个 org 文件的开头,用下面的设置来关闭这个功能。

#+OPTIONS: ^:nil

如果你需要更方便的设置,可以把上面这个改为

#+OPTIONS: ^:{}

这样,当你写

a_{b}

时,_ 后被 {} 括起来的内容就会被转义,而写 a_b 时,就按普通的方式来显示。

中文pdf输出支持

1
2
3
4
#先转tex文件,再转pdf
#其中需要在tex文件中添加xeCJK包
/usepackage{xeCJK}
#使用编译引擎xelatex

或者直接在 org 文件顶部添加如下设置:

#+LATEX_COMPILER: xelatex
#+LATEX_HEADER: \usepackage{xeCJK}

写Latex 公式

1
2
3
 $a^2=b$ or \( b=2 \)
 $$ a=+\sqrt{2} $$
 \[ a=-\sqrt{2} \]
  • Latex preview
1
2
3
4
5
6
7
8
`#+STARTUP: latexpreview`

`C+c C+x C+l`  预览latex公式
#设置预览字体大小
` M-x customize-group <RET> org-latex <RET>` in order to customize these variables, or use the menus for it.
set variable preview-scale-function


table

若是表格内容过长,会出现导出的 pdf 丢失内容。解决方法:

#+LATEX_HEADER: \usepackage{tabularx}

#+ATTR_LATEX: :environment tabularx :width \linewidth :align llX
#+caption: PublicAPI
| reas | ray  | description                                                        |
|------|------|--------------------------------------------------------------------|
| init | init | Connect to an existing Ray cluster or start one and connect to it. |

为表格添加边框行线 添加 |----|---|

   #+ATTR_LATEX: :environment tabularx :width \linewidth :align llX
   |----------------|----------------|--------------------------------------------------------------------|
   | reas           | ray            | description                                                        |
   |----------------|----------------|--------------------------------------------------------------------|
   | init           | init           | Connect to an existing Ray cluster or start one and connect to it. |
   |----------------|----------------|--------------------------------------------------------------------|
   | is_initialized | is_initialized | Check if ray.init has been called yet.                             |
   |----------------|----------------|--------------------------------------------------------------------|

复文本

*bold*
/italic/
_underlined_
=code=
~verbatim~
+strike-through+

设置标题和目录:

# +TITLE: This is the title of the document
# +OPTIONS: toc:2 (only to two levels in TOC)
# +OPTIONS: toc:nil (no TOC at all)

特殊字符问题

在文档中出现 num_time org 会解析成下标。解决方法在文档顶部添加如下:

#+OPTIONS: ^:nil _:nil f:nil toc:t num:t

嵌入 graphviz 代码并执行

#+BEGIN_SRC dot :file ./test.png :cmdline -Kdot -Tpng
graph test{
a--b;
b--c;
c--d;
}
#+END_SRC

然后把光标停在上述代码段中,执行快捷键c-c c-c。 最后,效果如下:

#+RESULTS:
[[file:./test.png]]

加入输出图片比例控制

  #+BEGIN_SRC dot :file ./test.png :cmdline -Kdot -Tpng
  graph test{
  a--b;
  b--c;
  c--d;
  }
  #+END_SRC

  #+ATTR_latex: :width 20
  #+RESULTS:
  [[file:./test.png]]

设置

  1. 自动换行 在 .spacemacs 内加入 (add-hook 'org-mode-hook (lambda () (setq truncate-lines nil)))

Journal

`C+c c`  打开日记模板
`C+c C+c` 回到之前的buff,保存日记

reference

  1. org-mode 教程
  2. org mode 入门教程
  3. tool orgm ode
updatedupdated2021-12-302021-12-30