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-> 之类的值,可以控制停顿。

使用org-capture记录密码

org-capture是orgmode的最新特性之一,它试图取代org-remember,成为快速记录的利器。

org-capture(包括org-remember)的目的,是通过事先定义记录信息的位置、格式,使得我们在记录时专注于内容本身,而不是其形式。由于记录信息不再需要一系列繁琐的步骤,记录速度得到极大的提升,工作流程也不会被严重打断。

org-capture与org-remember的功能并非完全相同,下面两幅图展示了操作界面的不同。

org-capture启动界面(点击图片看大图)

org-remember启动界面(点击图片看大图)

另外一个不同是,org-remember只能记录headline,而org-capture则提供多种形式以供选择,具体参见作者的详细描述

我目前使用org table来保存用户名密码信息(并使用GPG加密),由于文件中还存有其它信息,定位表格的步骤比较无聊。而利用org-capture添加表格行的功能,极大地减轻了操作负担。配置如下(假设表格位于Web accounts这个headline之下):

;; org-capture
(define-key global-map [(f8)] 'org-capture)

(setq org-capture-templates
      `(("t" "Todo" entry (file+headline "~/gtd/todo.org" "Tasks")
         "* TODO %?\n  %i" :prepend t)

        ("n" "Note" entry (file+headline "~/gtd/notes.org" "Notes")
         "* %U %?\n\n  %i" :prepend t :empty-lines 1)

        ;; ...

        ("a" "Account" table-line
         (file+headline "~/.account.org.gpg" "Web accounts")
         "| %? | | %a | %U |")))

最后一项就是用来记录用户名和密码的,快捷键为F8 a,其中链接和创建时间可以自动填充。下图是记录Quora注册信息的例子,最后一行是自动添加的(倒数第二行的Quora注册信息是之前记录的)。

使用org-capture记录用户名密码(点击图片看大图)

在记录信息时,org-capture使用indirect buffer,而org-remember则使用单独的buffer,这个不同很重要。前者相当于直接在源文件上修改,内容不会丢失,所以能够在一次capture过程没有结束时再一次调用capture;org-remember则做不到这一点。

org-remember的优点是撤销操作(C-c C-k)很容易,只要将记录信息的buffer杀掉就可以了;而org-capture则在某些情况下无法完美撤销,需要手工操作,比如自动添加的表格行就不得不手工删除。作者声称这不是一个bug

org-remember记录buffer(点击图片看大图)