如何对org-mode中的单词首字母加下划线

在使用emphisis时均需要以空格来对 boldunderlined 、 /italic/ 等进行识别,并导出。 我想实现单词首字母下划线或加粗,而不要空格,但是我只能得到下面的效果:

Screenshot from 2021-06-03 12-41-49

请问如何对其中的空格进行处理?

orgmode里面支持写html

导出latex呢?只能用\textbf{H}ello word. \underline{U}nderline ?

导出latex我就不清楚了,没用过

测试了一下,可以使用latex的命令。只是通用性不强。同时导出html和latex的情况下,需要修改。不过我一般用latex多一些。也可以接受了。应该是可以写个命令定义一下的,可惜我不会。感谢提醒,基本解决。

可以试试 M-: (insert-char #x200b) 插入一个零宽的空格在 emphasis 标记两侧。

2 个赞

可以为每个导出单独书写内容,May 2021

I love using Org to export to @@html:<abbr title="Hyper Text Markup Language">HTML</abbr>@@ @@latex:\LaTeX{}@@ documents.
3 个赞
(defun insert-zero-width-space ()
    (interactive)
    (insert "\u200b"))
1 个赞

The zero-width spaces are still shown as a full character in my TUI emacs though. Any ideas on that?

Update: I found the solution:

(set-char-table-range glyphless-char-display
                      (char-from-name "ZERO WIDTH SPACE") 'zero-width)

Nice.

But it would be better if we could still find the zero-wide spaces when necessary:

+ ;; Show zero-width spaces in `whitespace-mode'
+ (with-eval-after-load 'whitespace
+   (setq whitespace-space-regexp "\\( +\\|\u200b\\)")
+   (add-to-list 'whitespace-display-mappings '(space-mark #x200b [?▾])))

Screenshot_2021-06-04_at_6.54.11_PM_show-zero-width-space-in-whitespace-mode

是的,解决方案是插入零宽度空格。此时导出html和latex均可实现。 对于设置,可以定义为命令,也可以定义为快捷键。我使用了快捷键定义。

(define-key org-mode-map (kbd "M-SPC M-SPC")                                                                                                                      
      (lambda () (interactive) (insert "\u200b"))) 

该方法在GUI上不显示零宽度空格,在TUI上则显示一个短下划线,我个人认为在org modez中显示 零宽度空格中是合适的,只需要在导出时不显示即可。 效果如图

零宽空格在 GUI 中默认不显示,可以使得版面上看起来比较整洁,但编辑的时候心里不太有底,你不知道空格到底是否存在。

在 TUI 中显示下划线,编辑起来比较放心,但版面看起来不太整洁而且容易跟真正的下划线混淆。

所以,不如统一改成正常情况下不显示,但可以在 whitespace 模式下显示,并且占位符号改为非下划线,以避免混淆。