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

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

单个 org 文件的解决办法

你可以在一个 org 文件的开头,用下面的设置来关闭这个功能。

<pre>

#+OPTIONS: ^:nil

<p>
  如果你需要更方便的设置,可以把上面这个改为
</p>

<pre>

#+OPTIONS: ^:{}

<p>
  这样,当你写
</p>

<pre>

a_{b}

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

org sites 的解决办法

如果你是用 org sites 来写笔记,想让某个 site 的所有 org 文件不转义 _ 字符,则也可以直接在 org sites 配置文件里,配置下面这么一句,一了百了:

<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>