我在用 Org Mode 编写博客内容时,经常需要插入源代码,Org Mode 提供非常好的语法高度功能,我就是通过 Org Mode 来快速插入一段代码到文档里,并发布成 Html 上传到 WordPress 里。

在 Org Mode 里插入代码内容块,我使用的是 YASnippet 模块;但是在输入有关语言标识符( Identifier )的时候,具体有什么要求呢?

Org Mode 官网上 Working With Source Code: Languages 已经详细介绍了语言标识符的缩写,但是我依然想测试一下有关大小写对语言标识符使用的影响。

经过测试,语言标识符是大小写敏感的,所以发布的时候要特别注意语言标识符的大小写问题,最好严格按照 Org Mode 设定好的大小写来输入。

以下举例来说,如果语言标识符使用大写的 Cpp 字符串,则效果如下所示:

// assignment operator with lists
#include <iostream>
#include <list>
using namespace std;

int main ()
{
  list<int> first (3);      // list of 3 zero-initialized ints
  list<int> second (5);     // list of 5 zero-initialized ints

  second=first;
  first=list<int>();

  cout << "Size of first: " << int (first.size()) << endl;
  cout << "Size of second: " << int (second.size()) << endl;
  return 0;
}

如果使用小写的 cpp 字符串,则效果如下所示:

// assignment operator with lists
#include <iostream>
#include <list>
using namespace std;

int main ()
{
  list<int> first (3);      // list of 3 zero-initialized ints
  list<int> second (5);     // list of 5 zero-initialized ints

  second=first;
  first=list<int>();

  cout << "Size of first: " << int (first.size()) << endl;
  cout << "Size of second: " << int (second.size()) << endl;
  return 0;
}

如果使用大写的 C 字符,则效果如下所示:

// assignment operator with lists
#include <iostream>
#include <list>
using namespace std;

int main ()
{
  list<int> first (3);      // list of 3 zero-initialized ints
  list<int> second (5);     // list of 5 zero-initialized ints

  second=first;
  first=list<int>();

  cout << "Size of first: " << int (first.size()) << endl;
  cout << "Size of second: " << int (second.size()) << endl;
  return 0;
}

如果使用小写的 c 字符,则效果如下所示:

// assignment operator with lists
#include <iostream>
#include <list>
using namespace std;

int main ()
{
  list<int> first (3);      // list of 3 zero-initialized ints
  list<int> second (5);     // list of 5 zero-initialized ints

  second=first;
  first=list<int>();

  cout << "Size of first: " << int (first.size()) << endl;
  cout << "Size of second: " << int (second.size()) << endl;
  return 0;
}

大家可以看出还是有一定的影响吧?对于 C++ 大小写是有区别的,对于 C 语言来说大小写是没有区别的。所以在 Org Mode 里引用代码的时候,最好特别注意代码标识符的大小写,以防止有意外发生。

另外,建议修改你的模板,让代码高亮部分的背景设置为黑色的或者其它深色的,这样方便读者观看。

虽然估计没人会有这样的误解,但是我还是说一下题外话:大家经常使用的 Htmlize 只是针对单独的 el 文件来 html 格式化的工具,并不影响 Org Mode 导出源代码为高亮显示的 Html 部分。