Org mode 中英混排对齐的问题

说实话其实可以用vim :joy: 不管是终端还是图形vim都是对齐的 终端不是所有按键组合都能用的。而且也一般没有图片支持。

如果没有强迫症完全可以在需要导出时用终端导出,自然就对齐了。 如果需要看的时候就对齐那就在需要用表格的org-mode时用终端。我自己就是这样,觉得没什么不好。 需要看图片看latex预览的时候我都用gui版。要变通啊……

当然设置中英字体确实也是很好的解决方案,但对与强迫症的我来说还没找到喜欢的能匹配的中英字体……哭

1 个赞

正解。

这也是事实,你就当做是带着脚镣跳舞吧,需要更小心地编排快捷键。一旦习惯了,会发现适用场合更广了。

我试了下这个方法,效果还不错,等宽是可以做到的,等高好像不行(在一行中只有英文的情况下,输入中文导致英文下沉)。

;; 等宽: Source Code Pro 13 + STkaiti 16
(setq face-font-rescale-alist `(("STkaiti" . ,(/ 16.0 13))))

(set-face-attribute 'default nil :font "Source Code Pro-13")

(set-fontset-font t 'han      (font-spec :family "STkaiti"))
(set-fontset-font t 'cjk-misc (font-spec :family "STkaiti"))

;; 测试
"
| 软件      |  版本 | 发布日期     |
|-----------+-------+--------------|
| GNU Emacs |  25.1 | 2016 年 9 月 |
| Org       | 9.9.5 | 2017 年 2 月 |
"

2 个赞

最近刚解决掉这个问题,用的是一个插件: chinese-fonts-setup,原理是设置中英文的字体大小解决对其问题。 我的解决方案

3 个赞

看到你的截图中汉字是斜体的,请问怎么做到的?谢谢

注释的 Face 定义成了斜体

感觉还是完全看英文字体

我用 PragmataPro 的话对齐就完全没问题,因为它的英文字母窄,同样大小的中文字正好是两个英文字母的宽度。

效果不错,只是好像中文的字体比英文的要高一些

1 个赞

按照codefalling的方法,试了下Inconsolata 字体也能达到对齐的目的,缩放也不影响对齐问题. 个人感觉比Ubuntu 的字体好看。更清楚些

下载地址:Google font-Inconsolata

3 个赞
;; https://github.com/jixiuf/vmacs/blob/master/conf/custom-file.el
;; 如果配置好了, 下面20个汉字与40个英文字母应该等长
;; here are 20 hanzi and 40 english chars, see if they are the same width
;;
;; aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa|
;; 你你你你你你你你你你你你你你你你你你你你|
;; ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,|
;; 。。。。。。。。。。。。。。。。。。。。|
;; 1111111111111111111111111111111111111111|
;; 東東東東東東東東東東東東東東東東東東東東|
;; ここここここここここここここここここここ|
;; ココココココココココココココココココココココココココココココココココココココココ|
;; 까까까까까까까까까까까까까까까까까까까까|

(defun create-frame-font-mac()          ;emacs 若直接启动 启动时调用此函数似乎无效
  (set-face-attribute
   'default nil :font "Menlo 12")
  ;; Chinese Font
  (dolist (charset '( han symbol cjk-misc bopomofo)) ;script 可以通过C-uC-x=查看当前光标下的字的信息
    (set-fontset-font (frame-parameter nil 'font)
                      charset
                      (font-spec :family "PingFang SC" :size 14)))

  (set-fontset-font (frame-parameter nil 'font)
                    'kana                 ;script ココココココココココココココココココココココココココココココココココココココココ
                    (font-spec :family "Hiragino Sans" :size 14))
  (set-fontset-font (frame-parameter nil 'font)
                    'hangul               ;script 까까까까까까까까까까까까까까까까까까까까
                    (font-spec :family "Apple SD Gothic Neo" :size 16))

  )
(when (and (equal system-type 'darwin) (window-system))
  (add-hook 'after-init-hook 'create-frame-font-mac))

(defun create-frame-font-w32()          ;emacs 若直接启动 启动时调用此函数似乎无效
  (set-face-attribute
   'default nil :font "Courier New 10")
  ;; Chinese Font
  (dolist (charset '( han symbol cjk-misc bopomofo)) ;script 可以通过C-uC-x=查看当前光标下的字的信息
    (set-fontset-font (frame-parameter nil 'font)
                      charset
                      (font-spec :family "新宋体" :size 16)))

  (set-fontset-font (frame-parameter nil 'font)
                    'kana                 ;script ココココココココココココココココココココココココココココココココココココココココ
                    (font-spec :family "MS Mincho" :size 16))
  (set-fontset-font (frame-parameter nil 'font)
                    'hangul               ;script 까까까까까까까까까까까까까까까까까까까까
                    (font-spec :family "GulimChe" :size 16)))

(when (and (equal system-type 'windows-nt) (window-system))
  (add-hook 'after-init-hook 'create-frame-font-w32))

(defun  emacs-daemon-after-make-frame-hook(&optional f) ;emacsclient 打开的窗口相关的设置
  ;; (when (fboundp 'tool-bar-mode) (tool-bar-mode -1))
  ;; (when (fboundp 'scroll-bar-mode) (scroll-bar-mode -1))
  ;; (when (fboundp 'menu-bar-mode) (menu-bar-mode -1))
  (with-selected-frame f
    (when (window-system)
      (when (equal system-type 'darwin) (create-frame-font-mac))
      (when (equal system-type 'windows-nt) (create-frame-font-w32))
      ;; (set-frame-position f 160 80)
      ;; (set-frame-size f 140 50)
      ;; (set-frame-parameter f 'alpha 85)
      ;; (raise-frame)
      )))

(add-hook 'after-make-frame-functions 'emacs-daemon-after-make-frame-hook)

4 个赞

这是正确使用 cfs 的一种姿势,也符合我设计这个 template 命令的初衷,教程写的很好,赞

等宽和等高往往是不能兼顾的, 如果字体选择合适,等宽和登高确实可以同时实现。

这个效果确实好! 不过我的是Source Code Pro 14+ STFangsong 16 :+1:

;;WIn7下使用Emacs-25会遇到卡顿,解决方法为使用 Microsoft YaHei Mono 字体。
(custom-set-faces
'(default ((t (:family "Microsoft YaHei Mono" :foundry "outline" :slant normal :weight normal :height 98 :width normal)))))
;;如使用Microsoft YaHei Mono,则可使用如下设置
;; Chinese Font
(dolist (charset '(kana han symbol cjk-misc bopomofo))
(set-fontset-font (frame-parameter nil 'font) charset (font-spec :family "Microsoft YaHei" :size 14)))

Microsoft YaHei Mono 字体网上挺多地方可能下到,但还是建议保存一下,编程和非编程都很适合。 http://www.sdbeta.com/xiazai/2016/0805/99188.html

好像随便设置一个中文字体就可以解决卡顿问题

已经使用 这个字体看起来非常舒服 谢谢

这个设置只有在字体固定大小时有效,一放大或缩小,又对不齐了。

这也是我维护 chinese-fonts-setup 的原因, cfs 可以将常用的所有字号都实现对齐, 放大缩小字体也不影响对齐效果

1 个赞

等等,似乎没必要设置全局字体,可以只设置 org-table 字体。

这样字体强迫症有福了。

1 个赞