表格中文对齐
2023年8月12日 2024年1月27日
便签
方法一: 使用valign
- 像素对齐
- 使用时会导致图片加载卡顿
1;; (use-package valign 2;; :ensure t 3;; ) 4;; (add-hook 'org-mode-hook #'valign-mode)
方法二: 使用cnfonts
字体受到cnfonts支持的限制
1;; (use-package cnfonts 2;; :ensure t) 3;; (cnfonts-mode 1) 4;; (define-key cnfonts-mode-map (kbd "C--") #'cnfonts-decrease-fontsize) 5;; (define-key cnfonts-mode-map (kbd "C-=") #'cnfonts-increase-fontsize)
方法三: 分别对中文字体和英文字体进行设置
找到满足英文:中文=1:2的两个字体
下载Iosevka
1# brew tap homebrew/cask-fonts 2# brew install font-iosevka
设置Emacs中英文字体
字号使用14, 16正常
1;; (let ((default-font (font-spec :name "Iosevka" :size 14)) 2;; (cn-font (font-spec :name "Sarasa Mono SC"))) 3;; (set-face-attribute 'default nil :font default-font) 4;; (dolist (charset '(kana han symbol cjk-misc bopomofo)) 5;; (set-fontset-font t charset cn-font)))
方法四: 对org-mode表格字体进行设置
Emacs 29中使用 C-c C-c
, 没中文的和没中文的对齐, 有中文的和有中文的不一定能对齐, 有中文的和没中文的不能对齐…
下载更纱字体
1# brew install font-sarasa-gothic
设置表格字体
更纱黑体
1;; (custom-set-faces 2;; '(org-table ((t (:family "等距更纱黑体 SC")))))
-
Sarasa Mono SC
和设置更纱黑体一样
1;; (custom-set-faces 2;; '(org-table ((t (:family "Sarasa Mono SC")))))
Iosevka
1(custom-set-faces 2 '(org-table ((t (:family "Iosevka")))))
设置Emacs字体
1;; (let ((emacs-font-size 14) 2;; (emacs-font-name "Victor Mono")) 3;; (set-frame-font (format "%s-%s" (eval emacs-font-name) (eval emacs-font-size))) 4;; (set-fontset-font (frame-parameter nil 'font) 'unicode (eval emacs-font-name)))
方法五: 研究表格对齐实现
Emacs版本 29.2
查看face
M-x describe-face org-table
函数: org-table-align
设置字体
1;; 表格能对齐 2;; (set-face-attribute 'default nil :font (font-spec :name "Iosevka" :size 14)) 3 4;; 表格无法对齐 5;; (custom-set-faces '(default ((t (:family "Victor Mono" :foundry "outline" :slant normal :weight normal :height 140 :width normal)))))
关键语句
-
计算最大宽度
1;; (setq max-width (max max-width (org-string-width cell)))
-
设置项宽度
1;; (mapconcat #'identity 2;; (cl-mapcar #'org-table--align-field 3;; fields 4;; widths 5;; alignments) 6;; "|")
关键函数: org-table–align-field
field字段存放某项(某行某列)内容, 使用 org-string-width
计算字符串长度
关键函数: org-string-width
当版本低于28时, 使用 org--string-width-1
修改
使用 org--string-width-1
替换 org-string-width
org-table.el |
|
---|---|
org-table--align-field |
1处 |
org-table-align |
1处 |
编译org-table.el
-
重启Emacs后, 提示
Source file ‘/usr/local/Cellar/emacs-plus@29/29.2/share/emacs/29.2/lisp/org/org-table.el’ newer than byte-compiled file; using older file
-
编译
M-x byte-compile-file /usr/local/Cellar/emacs-plus@29/29.2/share/emacs/29.2/lisp/org/org-table.el
生成org-table.elc文件
书签
- |
---|
编译el文件 |