在组织模式下,如果我想将文字格式化为等宽字体,即~...~
,如果它在引号内:~"..."~
,则不会格式化(保持原样)。
另外,引用保留符号,如果是,它们是什么意思? (它们似乎不会影响生成的HTML /内部Emacs显示。)
答案 0 :(得分:7)
在这种情况下,罪魁祸首是 org-emph-re
org-verbatim-re
中的正则表达式,负责确定文档中的字符序列是否要逐字设置。
org-verbatim-re是`org.el'中定义的变量。 它的价值在于 “\([('\”{] \ | ^ \)\(\([=〜] \)\([^
\ N,\“'] \ | [^
\ N,\“'] \。?(?:吗?\ n \)\ {0,1 \} [^
\ n,\“'] \)\ 3 \)\([ - 。,:!?;'\”)} \] \ | $ \)“
引号和双引号在
的逐字符=~
中被明确禁止
[^
\n,\"']\|[^
\n,\"']
我发现3年后的讨论得出的结论是你必须修改这个正则表达式并将变量org-emph-re
/ org-verbatim-re
设置为符合你的emacs设置中的愿望(也许文件局部变量也可以工作)。您可以通过从排除字符类和外部匹配中排除双引号进行试验,如
“\([('{] \ | ^ \)\(\([* / _ =〜+] \)\([^
\ N,'] \ | [^
\ N,'] \?(?:吗?\ n \)\ {0,1 \} [^
\ n,'] \)\ 3 \)\([ - 。,:!?;')} \] \ | $ \)“
但是看着那个正则表达式,天堂知道复杂文件会发生什么 - 你必须尝试......
编辑:碰巧,如果我将以下内容评估为区域,=
内的引号会正确导出,但没有其他内容:-),当我有更多内容时,我会进一步调查时间。
(setq org-emph-re“\([('{] \ | ^ \)\(\([* / _ =〜+] \)\([^ \ N,'] \ | [^ \ n'] \(:??\ n.?\)\{0,1\}[^ \ n,'] \)\ 3 \)\([ - 。,:!?;')}] \ | $ \)“)
编辑2::直接更改org.el
让它发挥作用:
将(defvar org-emphasis-regexp-components
后面的行从'(" \t('\"{" "- \t.,:!?;'\")}\\" " \t\r\n,\"'" "." 1)
更改为'(" \t('{" "- \t.,:!?;')}\\" " \t\r\n,'" "." 1)
并重新编译组织,然后重新启动emacs。
这是8.0发布之前的defcustom
,现在已经不存在了,所以你必须忍受这种手动修改。
的问候, 汤姆
答案 1 :(得分:2)
最后,我找到了http://comments.gmane.org/gmane.emacs.orgmode/82571
的解决方案根据该主题,逐字的正则表达式是由变量org-emphasis-regexp-components
构建的,它定义了重点之前,之后,边界或重要部分的合法字符;和逐字是org模式中的重点环境之一。
该线程给出的可行设置:
(setcar (nthcdr 2 org-emphasis-regexp-components) " \t\n,")
(custom-set-variables `(org-emphasis-alist ',org-emphasis-alist))
答案 2 :(得分:2)
我遇到了类似的问题,并感谢@chaiko提供了一个基本的解决方案。但是,@ chaiko的解决方案仅适用于org-mode的fontification,它不会影响org-export
。要获得正确的导出文档,您需要通过(org-element--set-regexps)
对org-mode的解析器进行更多额外的破解。
所以完整的代码片段应该是这样的:
(setcar (nthcdr 2 org-emphasis-regexp-components) " \t\n\r")
(custom-set-variables `(org-emphasis-alist ',org-emphasis-alist))
(org-element--set-regexps)
我已将此集成到我的oh-my-emacs项目中:https://github.com/xiaohanyu/oh-my-emacs/blob/e82fce10d47f7256df6d39e32ca288d0ec97a764/core/ome-org.org#code-block-fontification。
答案 3 :(得分:1)
对于在Emacs org-mode中有一些不良影响的少量字符(因为是元字符),在org-mode(special symbols)中查看org-entities.el可能会有所帮助。
因此,例如"
可以由\quot{}
编码(其中末尾的大括号对不是强制性的,但如果后面没有空格则需要)。
因此,="..."=
代替=\quot{}...\quot{}=
。
这是一些打字更多,看起来很难看。但是对于后一种组织模式有一个解决方案:通过C-c C-x \
,您可以为这些符号切换显示魔术。如果魔术是活跃的,那么在输入\quot{}
resp后直接。 \quot{}
将显示"
。
此外,这个符号列表可以很容易地扩展,例如。
(add-to-list 'org-entities
'("backslash" "\\textbackslash" nil "\\" "\\" "\\" "\\"))
尽管如此,除了上面的解决方案之外,我还很容易错过在org-mode中更容易的转义,除了在:
处开始整行之外。
如果=verbatim=
在所有情况下都会使=
之间的文字保持不变,我会很高兴。不是=this
*bold*
text=
,而是=this *bold* text=
。就像我们从每个精心设计的标记/下载语言中知道的那样。
但是,当然,这可以更好地放在组织模式开发页面上。理想情况下,贴合贴片......: - )