习惯养成图

虽然给自己制定了每天读书的任务,但是无法保证每天完成,忙的时候,就跳过去了。幸好自己有计时的习惯,再配合org-habit生成一个简单的习惯养成图,可以方便地查看近期任务完成情况。

比如下面每天花半小时读《Love the Work You’re With》的任务:

* Demos
** TODO read Love the Work You're With
   SCHEDULED: <2017-08-10 Thu 20:00-20:30 ++1d>
                                                                    :PROPERTIES:
   :STYLE:    habit
   :LAST_REPEAT: [2017-08-12 Sat 16:56]
                                                                           :END:
                                                                    :LOGBOOK:
   CLOCK: [2017-08-02 Wed 20:14]--[2017-08-02 Wed 20:44] =>  0:30
                                                               	    :END:
   - CLOSING NOTE [2017-08-09 Wed 20:24] \\
     P.60
   - CLOSING NOTE [2017-08-08 Tue 20:24] \\
     P.50
   - CLOSING NOTE [2017-08-07 Mon 20:24] \\
     P.40
   - CLOSING NOTE [2017-08-04 Fri 20:24] \\
     P.30
   - CLOSING NOTE [2017-08-03 Thu 20:24] \\
     P.20
   - CLOSING NOTE [2017-08-02 Wed 20:24] \\
     P.10

在日历视图里显示为:

任务条左边花花绿绿的部分就是习惯养成图,星号表示读了,没有星号就是没读,惊叹号表示今天。

使用方法如下:

  • 设置任务重复频率,上面例子里是++1d,即每天一次,也可以是两周一次(++2w),一个季度一次(++3m)等等。另外也可以使用.+甚至+,具体含义请查看org-mode手册;
  • 设置STYLE属性值为habit;
  • 每次完成任务时留个时间戳;
  • 配置org-habit。

下面是我的配置:

(require 'org-habit)
(setq org-habit-show-done-always-green t) 
;;; 减少显示天数,使其可以放在任务条的左边
(setq org-habit-graph-column 1)
(setq org-habit-preceding-days 10)
(setq org-habit-following-days 2)
;;; 恢复默认日历行为
(setq org-habit-show-habits-only-for-today nil)
(let ((agenda-sorting-strategy
       (assoc 'agenda org-agenda-sorting-strategy)))
  (setcdr agenda-sorting-strategy
          (remove 'habit-down (cdr agenda-sorting-strategy))))

后记:查看了一下之前记录比较详细的几个学习任务,完成情况不理想,看来我还挺忙的。 🙁

org-beamer技巧

1 模板

为了更快地生成一个幻灯片框架,使用了yasnippet,配置如下

(eval-after-load 'yasnippet
  '(yas/define-snippets
   'org-mode
   '(("beamer" "#+startup: beamer
#+LaTeX_CLASS: beamer
#+BEAMER_FRAME_LEVEL: 2
#+OPTIONS: ^:{}
#+TITLE: $1
#+AUTHOR: Wang Liang

#+latex_header: \\usepackage{lmodern}
#+latex_header: \\hypersetup{colorlinks=true,linkcolor=blue,urlcolor=blue}
#+latex_header: \\mode<beamer>{\\usetheme{Boadilla}}
#+latex_header: \\AtBeginSection[]{\\begin{frame}<beamer>\\frametitle{Topic}\\tableofcontents[currentsection]\\end{frame}}

* $0" "beamer presentation")
     ("ditaa" "#+begin_src ditaa :file $1 :cmdline ${2:-S -E -r}
$0\n#+end_src" "ditaa diagram"))))

有一点小小的不爽,在扩展beamer snippet之后,要在第一行 #+startup: beamer 上做 C-c C-c ,才能使 C-c C-b 组合键起作用。

2 内容

二级标题构成一个幻灯片,一级标题构成大纲。

表格直接用org table;画图用ditaa;图片直接用file链接,控制图片比例的配置方法是:

#+ATTR_LaTeX: width=0.7\linewidth

或者

#+ATTR_LaTeX: width=20em

这种方法也可以控制ditaa生成图片的缩放。

#begin_src/#end_src 生成的代码没有高亮,略显遗憾。

3 分列

三级标题可以表达同一幻灯片页面内的列,通常有两列。

BEAMER_col 控制列宽度,0.5表示一半宽度。

BEAMER_env 控制列外观,值可以是 ignoreheadingblock 等等。

BEAMER_envargs 可以控制列对齐,默认是中间对齐,改成顶部对齐的值为 C[t] ;设置为 <2-> 之类的值,可以控制停顿。