org-mode下的表格不对齐,原因是什么呢?

org-mode下编辑了一些表格,发现都是不对齐的.一开始怀疑是中英混排导致的问题,因此安装了valign插件,但似乎没有作用?另外我也单独尝试了纯英文的排版,一样是错位的.

图片

试过C-c C-c强制重排,也是无效的.我使用的是doom emacs.

valign 插件应该可以解决。确认mode开启了吗?

image

刚才测试了一下, 似乎没有问题. 我这里没有用什么插件, 只是安装了下面这个字体,

突然意识到,会不会是我使用的Cascadia Code PL所带的ligature连字,导致的--被连起来导致的?

目前的状况我有些无法理解。我的字体配置:

(setq doom-font (font-spec :family "Cascadia Mono" :size 16 :weight 'normal)
      doom-variable-pitch-font (font-spec :family "Cascadia Mono")
      doom-serif-font (font-spec :family "Sarasa Mono SC" :weight 'semi-bold)
      doom-unicode-font (font-spec :family "Sarasa Mono SC" :weight 'semi-bold)
      doom-big-font (font-spec :family "Sarasa Mono SC" :weight 'semi-bold :size 24))

通过SPC q r重新打开org-mode的buffer时,显示状况是(此时焦点不在此buffer): 图片

但将焦点切换回这个org-modebuffer中,revert-buffer后,所有的-(dash)都自动变成了连字: 图片

而且从图中可以看出,表格以外的dash没有发生连字。

按照Cascadia Code项目github页面的说法,Cascadia Mono字体是不带连字符的,因此应该不会导致连字,另外我将光标移到表格中的dash上,describe-char给出的信息也是Cascadia-Mono

这一切现象让我实在摸不着头脑。

这是已知问题

现阶段要么关行号,要么关 org-indent-mode

最终的解决方法:不使用valign插件,通过设置所有字体为Sarasa Mono SC解决。

产生问题的原因确实如楼上所说,是因为同时开启了行号与indent,另外导致--出现ligature应该是valign的行为导致的替换。目前由于行号与indent我都比较不能割舍,因此只能舍弃valign与Cascadia Code的英文字体,统一使用Sarasa Mono SC(建议设置semi-bold作为:weight,否则有些太细)之后,基本表格的对齐是很完美的,似乎没有出现https://emacs-china.org/t/valign-org-indent-mode/15325/15?u=wang1zhen中所说的相差一个英文字符无法对其的情况。

总的来说,在valign插件兼容行号显示与indent之前,这应该是相对比较低成本的解决方案了。

我现在配置是:

(use-package org-faces
    :config (when (display-graphic-p)
              (set-face-attribute 'org-table nil :family "Sarasa Mono SC")))

建议看一下这个:Org mode 中英混排对齐的问题,好像看到只是设置 org-table 的话表格里面有链接会有问题,可以再探索一下

1赞