org mode
export Markdown .md from org mode
M-x customize-variable RET org-export-backends
check the “markdown” option
publish org mode to md file: C-c C-e m m
patch to support GFM(github flavored markdown) fenced code block
GFM fenced code block support source code highlight
emacs/share/emacs/24.4/lisp/org/ox-md.el
;;; Define Back-End
(org-export-define-derived-backend 'md 'html
:export-block '("MD" "MARKDOWN")
:filters-alist '((:filter-parse-tree . org-md-separate-elements))
:menu-entry
'(?m "Export to Markdown"
((?M "To temporary buffer"
(lambda (a s v b) (org-md-export-as-markdown a s v)))
(?m "To file" (lambda (a s v b) (org-md-export-to-markdown a s v)))
(?o "To file and open"
(lambda (a s v b) (if a (org-md-export-to-markdown t s v) (org-open-file (org-md-export-to-markdown nil s v)))))))
:translate-alist '((bold . org-md-bold)
(code . org-md-verbatim)
(comment . (lambda (&rest args) ""))
(comment-block . (lambda (&rest args) ""))
(example-block . org-md-example-block)
(fixed-width . org-md-example-block)
(footnote-definition . ignore)
(footnote-reference . ignore)
(headline . org-md-headline)
(horizontal-rule . org-md-horizontal-rule)
(inline-src-block . org-md-verbatim)
(inner-template . org-md-inner-template)
(italic . org-md-italic)
(item . org-md-item)
(line-break . org-md-line-break)
(link . org-md-link)
(paragraph . org-md-paragraph)
(plain-list . org-md-plain-list)
(plain-text . org-md-plain-text)
(quote-block . org-md-quote-block)
(quote-section . org-md-example-block)
(section . org-md-section)
(src-block . org-md-src-block)
(template . org-md-template)
(verbatim . org-md-verbatim)))
;;;; Example Block and Src Block
(defun org-md-example-block (example-block contents info)
"Transcode EXAMPLE-BLOCK element into Markdown format.
CONTENTS is nil. INFO is a plist used as a communication
channel."
(replace-regexp-in-string
"^" " "
(org-remove-indentation
(org-export-format-code-default example-block info))))
;;;; Example Block and Src Block
(defun org-md-src-block (src-block contents info)
"Transcode EXAMPLE-BLOCK element into Markdown format.
CONTENTS is nil. INFO is a plist used as a communication
channel."
(concat
"``` "
(org-element-property :language src-block) "\n"
(org-remove-indentation
(org-export-format-code-default src-block info))
"```" "\n"))