Skip to main content

Org Mode 标记语言的一些疑问

技术
Author

cookwhy

Published

October 9, 2011

在 Emacs Org Mode 里,默认情况下 _ 这种字符会被当成标记语言来进行转义。有的时候,如果你只是写写文章,这种默认的转义,会让你很不方便,尤其是你在写一篇介绍技术的文章,里面出现的变量名有很多的下划线。这时,你会说:”Oh, my god! 难道要我一个一个去标记不让 _ 转义么?”

如何设置让 Org Mode 在默认情况下,不转义 _ 字符呢?

单个 org 文件的解决办法

<p>
  你可以在一个 org 文件的开头,用<a href="http://orgmode.org/manual/Export-options.html">下面的设置</a>来关闭这个功能。
</p>

<pre>
#+OPTIONS: ^:nil
<p>
  如果你需要更方便的设置,可以把上面这个改为
</p>

<pre>
#+OPTIONS: ^:{}
<p>
  这样,当你写
</p>

<pre>
a_{b}
<p>
  时,_ 后被 {} 括起来的内容就会被转义,而写 <strong>a_b</strong> 时,就按普通的方式来显示。
</p></p>

org sites 的解决办法

<p>
  如果你是<a href="http://blog.waterlin.org/articles/publish-org-files-to-html-project.html">用 org sites 来写笔记</a>,想让某个 site 的所有 org 文件不转义 _ 字符,则也可以直接在 org sites 配置文件里,配置下面这么一句,一了百了:
</p>

<pre>
(setq org-export-with-sub-superscripts nil)
<p>
  也可以<a href="http://orgmode.org/manual/Publishing-options.html">在 org sites 里设置这个属性</a>,只作用于某一个 site:
</p>

<pre>
:sub-superscript nil
<p>
  如果需要像上面一样,采用相对智能的 {} 方式,可以设置成
</p>

<pre>
:sub-superscript {}
<p>
  或是直接用 elisp 来设置全局的属性:
</p>

<pre>
(setq org-export-with-sub-superscripts ’{})
<p>
  这样就会<a href="http://stackoverflow.com/questions/698562/disabling-underscore-to-subscript-in-emacs-org-mode-export">用 {} 来转义</a>了。
</p></p>