Markdown解決方案
為了記錄自己的學習歷程以及建立一些筆記,一直在尋求良好Markdown寫作環境,後來還是發覺Visual Studio Code最上手,但還是碰到諸多問題、花了許多時間解決,希望由本文可以幫助到有需要的人
本文主要建置環境為Mac
MARKDOWN寫作用途與需求
- 因為主力是資料科學相關,所以要可以支援程式碼高亮與數學公式
- 正確轉成PDF
- 可以跨平台觀看
問題1:手機裝置不支援latex等數學公式
我找了很久,在ios上幾乎沒有支持latex的markdown閱讀器,byword、1writer都試過了,後來發覺一個妙招
在md文檔前面加入
1 | <script |
1writer的Preview竟然就可以神奇的顯示數學公式,後來發覺可能是因為有支援html,才可以直接調用Mathjax的函式庫
不用擔心,這些程式碼在Markdown Preview的時候也不會被顯示出來
本人還滿推薦這個app,只要150元,介面也很簡明
問題2:MD轉PDF的困難
有時候不是人人都有MD,還是有要轉成PDF的需求
VSC有一個Markdown PDF的套件可以使用,不過我覺得這個套件對於中文的支援不太好(轉出來不太好看),數學公式的顯示依然失效,會變回原本的
這時候就要出動Pandoc了,這又是神奇的工具,各種文件類型可以透過這個東西互轉,推薦使用homebrew來安裝
1 | brew install pandoc |
接著還需要安裝Mac上latex的相關套件,有兩個解決方案,一個是Mactex,一個是BasicTex
前者很完整,但是超級肥大(破2G),後者不到100mb,Pandoc官方是建議裝basictex然後再安裝需要的,但是Mactex的官網中Basictex的載點卻死去了,所以再次感恩讚嘆homebrew
1 | brew cask install basictex |
接著請將basictex的路徑加入環境變數
1 | # pdftex |
問題還沒解決呢!Pandoc建議我們安裝一些必要套件
1 | sudo tlmgr install collection-fontsrecommended |
好啦,那我們來試著把Markdown轉成PDF吧
先嘗試看看
1 | pandoc test.md -o test.pdf |
然後就會出現以下訊息
1 | ! Package inputenc Error: Unicode char 解 (U+89E3) |
查很久才發現latex不支持中文,所以要改用xelatex,並且要調用中文字型
1 | pandoc --pdf-engine=xelatex |
想要加上程式碼區塊的背景,改成這樣即可
1 | pandoc --pdf-engine=xelatex --highlight-style zenburn |
調用Mac上的中文字形,這樣就可以正確轉出來了,至於怎麼正確指定字型,可以在字體簿查PostScript 名稱(這個也查超久,天啊)

如果報錯說! LaTeX Error: File 'sometihng.sty' not found.
只要就去CTAN找一下他是什麼套件,然後sudo tlmgr install yourpackage就好了,yourpackage是你要裝的套件
但是在vsc如果邊開MD預覽邊用中文打,可能會有一點小bug,會出現奇怪的空白字元導致pdf沒有辦法轉
到vsc設定改"editor.renderControlCharacters": true 這樣奇怪的字元會直接顯示出來,把它刪掉即可
VCS快速轉PDF
如果只有一般需求的話,那VSC裡面的Markdown PDF就可以快速完成MD轉pdf的工作,但是我們辛辛苦苦建立的pandoc,也是可以用在VSC裡面
vs-pandoc可以讓我們很方便的在VSC利用pandoc轉檔,裝好插件之後到使用者設定更改我們要的參數
1 | "pandoc.pdfOptString":"--pdf-engine=xelatex --highlight-style tango |
就跟剛剛的設定差不多,這樣VSC會自動調用這些設定來幫你轉檔,然後只要按cmd + shift + P然後打pandoc,出現pandoc render 選PDF就可以輕鬆轉成PDF
公式另外的解決方案
只要在這個API打上latex公式,會自動幫你生成公式的png,超棒的!1
http://latex.codecogs.com/gif.latex?x=1
or google chart
1 | http://chart.apis.google.com/chart?cht=tx&chl=m_0c^2 |
就像這樣
總結
連假搞了那麼久,終於搞好了
如果不想搞得這麼囉哩八唆,那typora也是很棒的選擇