The Issue of the Day Before

將 Asciidoc 轉成 Markdown 格式

pandoc -
> asciidoctor -b docbook5 <yourfile>.ad
> pandoc -f docbook -t markdown_strict <yourfile>.xml -o <yourfile>.md

Why

太多時候需要 markdown 格式,但你只寫了 asciidoc。 既不想從頭寫一遍也不想為兩者的差異逐一修改。這時候你需要 pandoc

What

AsciiDoc

AsciiDoc 是一種輕量級標記式語言。

asciidoctor

asciidoctor 是以 Ruby 實現的 AsciiDoc 轉換工具。

pandoc

pandoc 是以 Haskell 實現的通用文件轉換器。

How

查一下 pandoc 能做什麼?

使用 pandoc --list-input-formats 查詢 pandoc 支援輸入的格式。很遺憾,其中並不包括 asciidoc。 但幸好用 pandoc --list-output-formats 查詢 pandoc 支援輸出的格式中有 asciidoc。 這樣問題就解了一半。

再查一下 asciidoctor 能做什麼?

    -b, --backend BACKEND            set backend output format: [html5, xhtml5, docbook5, manpage] (default: html5)

支援的輸出跟 pandoc 輸入重合的有

  • docbook

  • html

挑上面其一作為中介格式,應就能達成任務。

考慮 docbookhtml 對格式的定義更嚴謹些,能更好降低格式對應模糊的問題。 就先試試用 docbook 來當中介格式吧。

考慮有這樣一個轉換鍊 ad → docbook → md

現在使用命令列來達成這個轉換鍊。

> asciidoctor -b docbook5 <yourfile>.ad
> pandoc -f docbook -t markdown_strict <yourfile>.xml -o <yourfile>.md

讓我們讓他更方便一點,將它寫成一個指令。

.profile
ad2md() {
  filename=`echo $1 | sed -re 's/(^.*[^/])\.[^./]*$/\1/'`
  asciidoctor -b docbook5 $1
  pandoc -f docbook -t markdown_strict ${filename}.xml -o ${filename}.md
  rm -rf ${filename}.xml
}

將上述放入 .profile 檔內,之後便能以 ad2md <yourfile> 來將 asciidoc 轉成 markdown

閱讀在雲端