Hexo - 把word轉成markdown


   

     因為想用markdown寫Hexo+Github發布博客(我的個人靜態博客),而我的文檔是word寫的。

方案們

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

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

 

更多的Pandoc轉換命令

對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編輯器來說也更友好一些。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM