Org-Mode 表格对齐设置
Emacs
字数960 2020-04-02

Org-Mode表格对齐

Emacs的Org-Mode表格功能是大杀器,但对于中文用户来说,比较不爽的是因为中英字体不等宽导致Org-Mode表格无法对齐显示。

cnfonts是针对这种问题的一种解决方案,通过找到匹配的中英文字体搭配来解决Org-Mode表格不对齐的问题,但是这种方法有一个最显著的副作用是,为了让Org-Mode表格对齐,会造成默认字体的英文字符太窄了,影响编码中字符的识别。虽然cnfonts也可以单独配置Org-Mode的字体,但是折腾也比较复杂。

新的方法

其实更简单的做法是,利用更纱黑体这个字体来解决表格对齐的问题,因为更纱黑体字体通过融合现有字体实现中文字符的宽度刚好是英文字符宽度的两倍,以此来解决表格对齐的问题。

  1. 首先通过命令 sudo pacman -S ttf-sarasa-gothic wqy-microhei 安装好字体
  2. 然后把下面的配置放入 ~/.emacs 中即可
(let ((emacs-font-size 14)
      (emacs-font-name "WenQuanYi Micro Hei Mono"))
  (set-frame-font (format "%s-%s" (eval emacs-font-name) (eval emacs-font-size)))
  (set-fontset-font (frame-parameter nil 'font) 'unicode (eval emacs-font-name)))

(with-eval-after-load 'org
  (defun org-buffer-face-mode-variable ()
    (interactive)
    (make-face 'width-font-face)
    (set-face-attribute 'width-font-face nil :font "等距更纱黑体 SC 15")
    (setq buffer-face-mode-face 'width-font-face)
    (buffer-face-mode))

  (add-hook 'org-mode-hook 'org-buffer-face-mode-variable))

上面配置的意思是,默认Emacs使用文泉驿字体,Org-Mode使用更纱黑体字体,这样既可以解决Org-Mode表格对齐问题,又避免对Emacs其他模式产生影响。