Answers:
首先:这是Emacs。这不是错误,而是设置!
其次,@ glucas正确地说您需要修改org-emphasis-regexp-components
以获得所需的内容。但是,我想对他的(@Malabarba)代码提出两个修改建议,并提供更多的上下文信息:
您无需将整个值复制org-emphasis-regexp-components
到init文件中即可修改单个组件。对于您的用例,以下足够了:
(setcar (nthcdr 2 org-emphasis-regexp-components) " \t\r\n,\"")
你不必须修改org-emphasis-regexp-components
加载之前org-mode
通过(require 'org)
。修改后只需添加以下行:
(org-set-emph-re 'org-emphasis-regexp-components org-emphasis-regexp-components)
如果您想自定义强调标记的工作方式的其他方面,请了解以下几点org-mode
:
的值org-emphasis-regexp-components
是一个包含五个条目的列表。
第一个条目控制允许哪些字符紧接在标记字符之前。如果您希望能够why=hello=
正确渲染,则需要修改该条目。
(setcar org-emphasis-regexp-components "...")
第二个条目控制允许哪些字符立即跟随标记字符。如果您希望能够=hello=there
正确渲染,则需要修改该条目。
(setcar (nthcdr 1 org-emphasis-regexp-components) "...")
第三个条目指定字符不会允许作为边界字符,即字符紧跟开口标记字符或先关闭标记字符。您需要对其进行修改,以使诸如='hello'=
渲染之类的事情能够正确进行。
(setcar (nthcdr 2 org-emphasis-regexp-components) "...")
第四个条目列出了标记的字符串正文中允许的字符,即出现在边框字符之间的字符。您几乎不需要修改它;默认情况下,任何字符都可以用作正文字符。
(setcar (nthcdr 3 org-emphasis-regexp-components) "...")
第五项指定标记的表达式中允许多少换行符。默认情况下,org-mode
允许单个换行符。因此,如果您希望能够向跨超过两行的文本添加标记,则需要修改此条目。
(setcar (nthcdr 4 org-emphasis-regexp-components) N)
... N
您要允许的换行数量在哪里。
"Symbol's value as variable is void: org-emphasis-regexp-components"
即使将这两行放在.emacs
文件的底部,我也碰到了。有什么想法为什么会这样呢?
(require 'org)
在对以下.emacs
文件进行任何自定义之前,您是否在文件中org-emphasis-regexp-components
?
(require 'org)
在init文件中就可以使用它。如果不这样做,那么在以下情况下,Emacs会自动加载它:(a).org
在当前会话中首次打开文件,或(b)M-x
org-mode
在当前会话中首次手动通过模式启用文件,或(c )还原包含至少一个.org
文件的已保存桌面时。(续)
org-mode
自动加载,只是因为您在init文件中对其进行了一些自定义。这就是为什么(require 'org)
在自定义其任何变量之前需要这样做的原因。如果不完全加载模式,Emacs将不知道如何处理诸如org-emphasis-regexp-components
;之类的变量。当Emacs第一次遇到它们时,它们没有被定义,因此Symbol's value as variable is void
消息。