1. 程式人生 > >怎麼把word轉成markdown

怎麼把word轉成markdown

原文地址:

http://www.jianshu.com/p/b0be43b03015

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

其實折騰這個事情的初衷是因為想用markdown寫資料庫設計文件,而現在的資料庫設計文件是word版的。以前也嘗試過類似PowerDesigner(曾經的重度使用者,各種大型專案都是用這個,在哪個年代還是比較流行的)啊UML啊各種資料庫建模工具,說老實話,嚴謹是比較嚴謹,方便也還方便,可是裝起來實在太麻煩了,啟動成本也挺高的。

畢竟word文件沒法搞版本管理這種事嘛(當然,手工管理版本也算版本管理吧,但是兩個版本的差異維護那就太麻煩了),而且跟現在文件整合到git裡的潮流也不符合嘛。

也有很多人直接用SQL語句來當做資料庫設計文件,當然,寫寫欄位註釋,列舉一下列舉值是可以的,想做比較多的說明,帶些示例資料之類的,總感覺混進原始碼還是略有點麻煩。另外,由於是原始檔,高亮肯定是針對sql來的,其他所有文字都是註釋,完全沒法做格式化,閱讀起來不是很方便。

方案們

目前只研究了Mac下的方案:

  1. word-to-markdown,google用word to markdown搜出來第一個,看來這個名字起得好。用這個的話得裝個
    LibreOffice
  2. pandoc,這個就比較大名鼎鼎了

首先嚐試word-to-markdown

我用google搜到的第一個就是這個了,當然要試試。

坑:極度安全的Mac自帶Ruby

要玩gem,首先當然是上(Fan)套(Qiang)咯。連上vpn,然後:

$ gem install word-to-markdown

你以為這麼一句話就能搞定了嗎,那可真就太天真了。撞到最後一個premailer開始報對gem資料夾沒有許可權的錯誤,查了查,其實就是Mac版自帶ruby版本的問題,不允許隨便裝東西,即便有sudo也不讓。

網上的解決方案是開機安住CMD+R,把Integrity Protection

禁用,然後進系統裝不能裝的gem,然後再回去把它啟用。這方案麻煩不說,其實還是在系統的gem庫里加了也許就只會用那麼一兩次的不該加的東西,各種不安嘛,這方案明顯不符合我的審美。

ok,那就rbenv走起吧

求助萬能的谷哥,提供了兩種選擇,rbenv或者rvm,看了一下,貌似rbenv更加的handoff,而且提供Homebrew安裝,那就選它了。

$ brew update
$ brew install rbenv

然後官方說是要執行rbenv init,執行一下說把下面這行加到.zshrc裡去

eval "$(rbenv init -)"

然後重啟一下Terminal,

# 看看裝了些啥版本,system就是系統自帶的了
$ rbenv versions
# 然後看看當前的版本
$ rbenv version
# 看看能裝哪些版本
$ rbenv install list

最後隨便選了個2.3.0(其實也不是隨便選的,我這人就愛最新版,但2.4.0還在dev,就選這個次新版了)

$ rbenv install 2.3.0
$ rbenv global 2.3.0

這樣就把ruby命令替換成rbenv管理的版本了,各種gem install也不會報什麼許可權錯誤啊操作不允許之類的了。

速度重灌word-to-markdown

$ gem install word-to-markdown

這次安裝過程果然順利,裝完執行:

$ w2m 1.docx

我勒個去,轉換結果直接輸出到命令行了,而且也貌似並沒有提供什麼引數來指定輸出檔案,官方的意思就是:我輸出到stdout了,剩下的你自己玩吧。

那就redirect一下吧

$ w2m 1.docx > 1.md

so easy嘛,順便說說這個redicrect,有這麼幾種用法:

system_profiler > file.txt
  1. > take the output of system_profiler and save it to the file file.txt
  2. &> The & tells the shell to redirect the standard output and standard error to the file.
  3. 2> If you want to just output standard error
  4. >> appending to the existing file

大名鼎鼎的Pandoc

其實一開始只知道第一個方案,後來搜搜索的過程中居然發現大名鼎鼎的的Pandoc也是能幹這個事情的,而且我在以前折騰Latex的時候機子上已經裝過了(我TM是有多無聊)。

# Docx to markdown, including math:
$ pandoc -s example30.docx -t markdown -o example35.md

對Table轉換的表現

由於其實要要寫資料庫設計文件,所以我主要是比較關注對Table的轉換

word-to-markdown

轉出這麼個玩意兒

| **名稱** | **資料型別** | **預設值** | **說明** | **描述** |
| --- | --- | --- | --- | --- |
| id | int(11) |
 | 主鍵 |
 |
| f\_classify\_id | tinyint(2) |
 | 一級分類id | act\_classify表的id |
| s\_classify\_id | tinyint(2) |
 | 二級分類ID |
 |
| count | int(11) |
 | 命中次數 |
 |
| date | date |
 | 日期 | 單位:天 |

沒細看原始碼,這種轉換效果,估計對合並單元格的表格支援是有問題的(不過md的table本就不支援合併單單元格這麼複雜的玩意兒),很明顯的在不該換行的地方換行了。

Pandoc

其實pandoc並不支援markdown裡的table語法,只是吧表格轉換成了一個視覺上的表格。

  **名稱**          **資料型別**   **預設值**   **說明**     **描述**
  ----------------- -------------- ------------ ------------ ---------------------
  id                int(11)                     主鍵
  f\_classify\_id   tinyint(2)                  一級分類id   act\_classify表的id
  s\_classify\_id   tinyint(2)                  二級分類ID
  count             int(11)                     命中次數
  date              date                        日期         單位:天

這就有點尷尬了,不過其實標準的md語法並不支援table,好吧,就這麼自我安慰好了。

結論

  1. word-to-markdown之後進一步手動編輯整理完善表格。

  2. 如果沒什麼特別要求,只是想把word轉成markdown看看,然後看著更方便的話,pandoc對table的轉換更具有可讀性,對一些不支援table語法轉換的markdown編輯器來說也更友好一些。



文/MArCo大叔(簡書作者)
原文連結:http://www.jianshu.com/p/b0be43b03015
著作權歸作者所有,轉載請聯絡作者獲得授權,並標註“簡書作者”。