因為想用markdown寫Hexo+Github發布博客(我的個人靜態博客),而我的文檔是word寫的。
方案們
目前只研究了Mac下的方案:
- word-to-markdown,google用
word to markdown
搜出來第一個,看來這個名字起得好。用這個的話得裝個LibreOffice - pandoc,這個就比較大名鼎鼎了
- unoconv,介紹
首先嘗試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 > take the output of system_profiler and save it to the file file.txt &> The & tells the shell to redirect the standard output and standard error to the file. 2> If you want to just output standard error >> appending to the existing file
大名鼎鼎的Pandoc
其實一開始只知道第一個方案,后來搜搜索的過程中居然發現大名鼎鼎的的Pandoc
也是能干這個事情的,
macOS安裝(其他的系統看官網):You can install pandoc using homebrew: brew install pandoc
# 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,好吧,就這么自我安慰好了。
結論
-
用
word-to-markdown
之后進一步手動編輯整理完善表格。 -
如果沒什么特別要求,只是想把word轉成markdown看看,然后看着更方便的話,
pandoc
對table的轉換更具有可讀性,對一些不支持table語法轉換的markdown編輯器來說也更友好一些。