使用 Markdown 來撰寫文件真的相當方便,不只可以快速地將文件結構組織起來,現在我更拿它來作筆記、寫部落格,像現在這篇文章就是使用 Github Pages 的服務,加上使用 Jekyll 工具,然後搭配 Markdown 來寫文章,基本的語法可以參考 Markdown 語法說明

Github Flavored

然而在文章中常會放上程式碼,這時候如果有語法高亮,那就完美了!Github Flavored 就是提供這樣的功能,寫法也很簡單:

```javascript
function foo() {
  var bar = '';
  if (bar === 'Awesome'){
    return true
  }
}
```

上面這樣的寫法,透過 Github Flavored 的 highlighter-rouge 去渲染後,就會變成這樣:

function foo() {
  var bar = '';
  if (bar === 'Awesome'){
    return true
  }
}

是不是看起來更清楚了!而且 Github Flavored 支援超多種語言,參考下面的語言識別碼做設定:

Language IDs
ASP asax • ascx • ashx • asmx • asp • aspx • aspx-vb • axd •
Assembly a51 • asm • assembly • nasm •
C c • cats • h • idc • w •
C# c# • cs • csharp • cshtml • csx •
C++ c++ • cc • cp • cpp • cxx • h • h++ • hh • hpp • hxx • inl • ipp • tcc • tpp •
F# f# • fs • fsharp • fsi • fsx •
Go go •
HTML htm • html • html.hl • st • xht • xhtml •
CSS css •
SCSS scss •
HTTP http •
Jasmin j • jasmin •
JavaScript _js • bones • es6 • frag • gs • jake • javascript • js • jsb • jsfl • jsm • jss • jsx • njs • node • pac • sjs • ssjs • sublime-build • sublime-commands • sublime-completions • sublime-keymap • sublime-macro • sublime-menu • sublime-mousemap • sublime-project • sublime-settings • sublime-theme • sublime-workspace • sublime_metrics • sublime_session • xsjs • xsjslib •
JSON json • lock •
Markdown markdown • md • mkd • mkdn • mkdown • ron •
PHP aw • ctp • fcgi • inc • php • php3 • php4 • php5 • phpt •
PLSQL pkb • pks • plb • pls • plsql • sql •
PowerShell posh • powershell • ps1 • psd1 • psm1 •
Shell bash • bats • cgi • command • fcgi • ksh • sh • shell • tmux • zsh •
SQL cql • ddl • prc • sql • tab • udf • viw •
Stylus styl • stylus •
Text fr • text • txt •
TypeScript ts • typescript •
Visual Basic bas • cls • frm • frx • vb • vb.net • vba • vbhtml • vbnet • vbs • visual-basic •
XML ant • axml • ccxml • clixml • cproject • csproj • ct • dita • ditamap • ditaval • dll.config • filters • fsproj • fxml • glade • grxml • ivy • jelly • kml • launch • mm • mxml • nproj • nuspec • osm • plist • pluginspec • ps1xml • psc1 • pt • rdf • rss • scxml • srdf • storyboard • sttheme • sublime-snippet • targets • tmcommand • tml • tmlanguage • tmpreferences • tmsnippet • tmtheme • ts • ui • urdf • vbproj • vcxproj • vxml • wsdl • wsf • wxi • wxl • wxs • x3d • xacro • xaml • xib • xlf • xliff • xmi • xml • xml.dist • xsd • xul • zcml •
YAML reek • rviz • yaml • yml •

Jekyll Syntax Highlighting

開頭有提到,我使用 Github Pages 加上 Jekyll,然後搭配 Markdown 來寫文章,很多時候文章會列出多種程式碼,因此程式碼的顏色樣式是提高閱讀性的重要功能,這裡我使用 Rouge 來幫我為程式碼加上顏色,他支援 183 種程式碼,幾乎會用到的程式語言都支援了,不過在 Markdown 中使用的時候,要注意他對應的程式語言分析器關鍵字,也就是 Markdown 用來標示程式碼段落所用的程式語言名稱,如下面的 javascript 這個關鍵字:

 
```javascript
function foo() { /* 略 */}
```

在 Rouge 的 GitHub Wiki 中,有他所有支援的程式碼語言與分析器對照表,詳細請參考 List of supported languages and lexers,我把我比較可能會用的做成表格列在下方:

Language IDs
C c •
C# c# • cs • csharp •
C++ c++ • cpp •
F# fsharp •
Go go • golang •
HTML html •
CSS css •
SCSS scss •
HTTP http •
JavaScript javascript • js •
JSON json • json-doc •
Markdown markdown • md • mkd •
PHP php • php3 • php4 • php5 •
PowerShell posh • powershell • microsoftshell • msshell •
Shell bash • zsh • ksh • sh •
SQL sql •
Text plaintext • text •
TypeScript ts • typescript •
Visual Basic vb • visualbasic •
XML xml •
YAML yaml • yml •

更多資訊請參考以下的參考資料。


參考資料:


Poy Chang

Trial and Error