orgmode中文粗体/斜体/下划线等等的显示

以前通过修改变量 org-emphasis-regexp-components 的值可以实现不用空格分隔的粗体,斜体,下划线等等这些高亮,但是这招在最新版的 orgmode 中好像不好使了。大家是怎样处理这个问题的呢?

image

我用的 org 版本:Org mode version 9.2.4 (9.2.4-1-g0d7d12-elpaplus @ /home/james/.emacs.d/elpa/26.2/develop/org-plus-contrib-20190617/)

我用的 emacs 版本 26.2

org-emphasis-regexp-components 的值(这招以前是管用的):

(setq org-emphasis-regexp-components '("[:multibyte:] \t('\"{" "[:multibyte:]- \t.,:!?;'\")}\\[" " \t\r\n,\"'" "." 1))
1 个赞

这个问题给我的感觉是第二格漫画里的钻孔机

very interesting :joy:

hellooooo,论坛里那么多 org 用户,只有我有这个问题吗?

前后都要加空格吧

以前用我贴的regexp是不用加空格的,一直用的很爽的。不知道从哪个commit开始后不行了

@xuchunyang, @tumashu 两位怎么解决这个问题的?

我就是加空格,没办法,等方案。

看看这个行不行 科研人员请进,你们平时都用emacs做些什么? - #12,来自 kinono

试一下我贴的regex管用不

你贴的链接明显和我说的不是一回事

是一回事。。。那层楼后半有例子,我直接贴过来吧

;; 让中文也可以不加空格就使用行内格式
(setcar (nthcdr 0 org-emphasis-regexp-components) " \t('\"{[:nonascii:]")
(setcar (nthcdr 1 org-emphasis-regexp-components) "- \t.,:!?;'\")}\\[[:nonascii:]")
(org-set-emph-re 'org-emphasis-regexp-components org-emphasis-regexp-components)
(org-element-update-syntax)
;; 规定上下标必须加 {},否则中文使用下划线时它会以为是两个连着的下标
(setq org-use-sub-superscripts "{}")

我一直用 emacs 自带的 org-mode,不知道最新版管不管用。

8 个赞

我们用的方法本质上是一样的

试了不管用,咱俩版本应该一样

试一下用 emacs -q 启动,先启用 org-mode,再执行上面的配置。我也是 26.2,org-mode 版本 9.1.9,是可行的。

基于 @kinono 的答案,已经在最新的 org 以及 emacs 26.2 上测试可用

(setq org-emphasis-regexp-components '("-[:multibyte:][:space:]('\"{" "-[:multibyte:][:space:].,:!?;'\")}\\[" "[:space:]" "." 1))
(org-set-emph-re 'org-emphasis-regexp-components org-emphasis-regexp-components)
(org-element-update-syntax)
8 个赞

试用这个这个方案,确实可以实现不加空格加粗中文字体,不过如果一段中有多处高亮:=*明日*隔山岳,*世事*两茫茫=,那么「明日」「隔山岳,」「世事」三处都会高亮,一般来讲,「隔山岳,」不应该被高亮。

在不加空格的情况下可以实现只高亮两处么?