EMACS-DOCUMENT

=============>集思广益

将org看成文字处理器

经常有人问我同一个问题:

Hi, 很感谢你在youtube上的视频,我看了之后有两个问题想问一下:

  1. 你在 这个视频 中是如何做到显示图片的?
  2. 如何向这个视频中那样,做到让org-mode的标题有更大的字体和不同的颜色?

十分感谢.

我从未有意将Org Mode变得看起来或者操作上就像一个文字处理软件一样, 只是时不时的做一些小的调整,结果就成这样了. 虽然我所有的代码都在我的 dot-files 仓库中能找到,但是我还是觉得将相关代码抽取出来比较好些.

1 仅仅显示斜体字就好,谢谢

/org italic/ 看起来就好像是斜体字被正则表达式的分隔符所包围了一样. 隐藏这些标记很简单

(setq org-hide-emphasis-markers t)

记住,这些斜杠字符(用于标示粗体的星号等其他字符也是一样)依然存在的,只是没有显示出来而已.

想要修改这些标记也很简单,只要在之上按退格键就行.

2 更好看的符号列表标记

用星号和破折号来作为符号列表的标记挺好的, 但是使用一个真正的圆形符号来作标示也不错:

(font-lock-add-keywords 'org-mode
                        '(("^ +\\([-*]\\) "
                           (0 (prog1 () (compose-region (match-beginning 1) (match-end 1) "•"))))))

这段代码将所有行中匹配指定正则表达式的内容都显示为一个Unicode的圆形符号,该段正则的意思是"以1个或多个空格开头,紧接着是一个破折号或一个星号,再又是一个".

3 更好看的标题符号标记

当我刚开始从Markdown切换到org-mode时, 很看不惯标题的显示方式. 最高层标题由一个符号标记看起来还行(just not really a header),但是下面的子标题由多个符号标记. 这也是为什么我喜欢org-bullets 项目的原因.

从MELPA上安装org-bullets之后, 只需要将下面这段代码添加到你的 .emacs 初始化文件中去就行:

(require 'org-bullets)
(add-hook 'org-mode-hook (lambda () (org-bullets-mode 1)))

4 更好看的标题

我赞同EMagicians Starter Kit 中的做法,尤其是它让headers变得更大而不是换个颜色. 我的代码有点繁琐,还可以进行很大的简化:

(let* ((variable-tuple (cond ((x-list-fonts "Source Sans Pro") '(:font "Source Sans Pro"))
                             ((x-list-fonts "Lucida Grande")   '(:font "Lucida Grande"))
                             ((x-list-fonts "Verdana")         '(:font "Verdana"))
                             ((x-family-fonts "Sans Serif")    '(:family "Sans Serif"))
                             (nil (warn "Cannot find a Sans Serif Font.  Install Source Sans Pro."))))
       (base-font-color     (face-foreground 'default nil 'default))
       (headline           `(:inherit default :weight bold :foreground ,base-font-color)))

  (custom-theme-set-faces 'user
                          `(org-level-8 ((t (,@headline ,@variable-tuple))))
                          `(org-level-7 ((t (,@headline ,@variable-tuple))))
                          `(org-level-6 ((t (,@headline ,@variable-tuple))))
                          `(org-level-5 ((t (,@headline ,@variable-tuple))))
                          `(org-level-4 ((t (,@headline ,@variable-tuple :height 1.1))))
                          `(org-level-3 ((t (,@headline ,@variable-tuple :height 1.25))))
                          `(org-level-2 ((t (,@headline ,@variable-tuple :height 1.5))))
                          `(org-level-1 ((t (,@headline ,@variable-tuple :height 1.75))))
                          `(org-document-title ((t (,@headline ,@variable-tuple :height 1.5 :underline nil))))))

上面代码的第一步是选择一个字体. 你需要修改这些字体为你自己所喜欢的那些字体.

5 总结

让我们将Emacs退出全屏模式,然后加载一个文件来展示一下这些设置的效果:

orgmode-wordprocessor.png

上图中的淡蓝色部分是被标示为了代码 (我之所以改颜色是因为我默认使用了等宽字体). 此外,在这张屏幕截图中,我使用的主题是 Tomorrow ,字体用的 Hasklig. 如果我有什么遗漏或者你有什么好技巧请告诉我,谢谢.