将org看成文字处理器
Table of Contents
经常有人问我同一个问题:
Hi, 很感谢你在youtube上的视频,我看了之后有两个问题想问一下:
- 你在 这个视频 中是如何做到显示图片的?
- 如何向这个视频中那样,做到让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退出全屏模式,然后加载一个文件来展示一下这些设置的效果:
上图中的淡蓝色部分是被标示为了代码 (我之所以改颜色是因为我默认使用了等宽字体). 此外,在这张屏幕截图中,我使用的主题是 Tomorrow
,字体用的 Hasklig
. 如果我有什么遗漏或者你有什么好技巧请告诉我,谢谢.