Org-Mode内联代码使用等号标记

28
在 org-mode 中,我想使用等号和引号来表示内联代码:
<div class="foo">

在org-mode中,我通常会这样做

=<div class="foo">=

当我把它导出为HTML时,它会被呈现成这样:

<div class "foo">=

有没有正确的方法来内联处理它(而不仅仅是创建一个源代码块)?

4个回答

16
你可以使用文字标记符号~来代替:
~<div class="foo">~

3
我最终做的就是这样,但似乎如果我指定的东西是代码,我应该能够标记它是代码! - alexplanation
4
根据这个链接~是一种代码标记。它们改变了吗? - Guildenstern

3

问题在于'class'后面的等号被解释为闭合代码段的分隔符。您可以通过在等号前插入一个空格来防止这种情况发生,像这样:

=<div class = "foo">=

5
这是一个让人沮丧但却有效的解决方法。然而我不会接受它,因为如果在代码中空格真的很重要的话,那么它就不再有效了,所以这并不是一个真正的“解决方案”。 - alexplanation
我认为你可以通过修改org-emphasis-regexp-components来实现,但我太懒了不想尝试。请参考http://orgmode.org/manual/Emphasis-and-monospace.html和'C-h v org-emphasis-regexp-components RET'。 - Ista

1

经过将近十年,这里是正确答案:

Org的转义字符零宽空格。当插入此字符时,Emacs不会将=解释为文本结束符。Emacs可以正确解释=<div class="foo">=。请注意,此字符串包含一个看不见的零宽空格字符。

但是,由于一个错误,从org导出到其他格式的文件中,会有这个字符,需要手动删除。例如,上面的字符串导出到markdown的结果将是`<div class="foo">`,这正是我们想要的,只是多了一个零宽空格字符。 修复这个问题并不难。使用replace-string命令很容易去除所有这些额外的字符。

提示:您可以使用C-x 8 RET(或insert-char命令),然后选择200B在Emacs中插入零宽空格字符。


0

我希望在Github的解析器中正确显示org-mode的源代码。但是,就像=:echo“hello”=在Emacs中无法正确显示一样,在Github中也无法正确显示。然而,我尝试了其他字符与C-x 8 RET一起使用,发现LEFT DOUBLE QUOTATION MARKRIGHT DOUBLE QUOTATION MARK可以正常工作。也就是说,

=:echo “hello“=

成功显示为

:echo “hello“

很遗憾,我认为如果将它们复制并粘贴到所有环境中,它们实际上不会起作用。Vim会显示E15: Invalid expression: “hello“。但是,我们有多少次会将命令粘贴到Vim的命令行中呢?好吧,还有:@"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接