macOS 矢量作圖小貼士
「放大放大再放大,每一根毛都看的清清楚楚。」
——[歡樂筆記本]內置病毒AIPC筆記本電腦
前些天我在寫畢業論文,自然免不了作圖。我相信有很多讀者像我一樣有這樣的強迫症:插圖不是矢量圖就渾身難受。插矢量圖的好處都有啥?
- 放大看也不會模糊
- 可選中圖片中的文字(似乎也沒啥用)
- 看起來更像是自己畫的而不是從網上截圖
LaTeX 作矢量圖的一大流派是 tikz
,但是這個包對我來說還是太難了,總是學不會。而且我總是覺得,作圖這種事情,就應該是在圖形化界面裡面拖拖點點更加直觀清晰。之前我也聽說有人用 InkScape、Ipe 等等軟體的,但試了一下用起來總是不順手。
可能是因為做幻燈片的機會比作圖多得多吧,我發現我對 Keynote 非常習慣,於是理所當然地,我就順帶用 Keynote 來作圖了。下面就介紹一下我在 macOS 下面作矢量圖的經驗,裡面也包含了一部分用來做幻燈片的技巧。
矢量圖格式
常見的矢量圖格式以及在各種軟體的兼容性可以總結成下面的這個表:
Format | LaTeX | Keynote | Browser --------+-------+---------+---------- .pdf | Yes | Yes | .eps | Yes | Yes | .ps | Yes | Yes | .svg | | | Yes
既然要用 Keynote 作圖,當然要把素材矢量圖導入進去啦。對於 .pdf
和 .eps
文件,直接往 Keynote 裡面拖就行了。這裡介紹一下另外幾個實用的小技巧。
用 Preview 複製 pdf 中的一部分
有時候我們想要引入一個 pdf 的一部分,比方說一幅圖或者一個公式。最想當然的方法就是截圖了,但截圖產生的是點陣圖,一拉伸就糊了。使用 Preview 可以非常方便地把矢量圖原樣取出來:
點擊搜索欄左邊的鉛筆標籤,可以多出來一個 Markup Toolbar,再點擊其中的選取工具,然後選擇你需要的部分,按 cmd+c
複製,切換到 Keynote 裡面,按 cmd+v
粘貼就行了。
從 Keynote 的側邊欄可以看到,我們粘貼進來的圖像是 pdf 格式的,而且可以通過放大縮小來驗證,確實是矢量圖。
另外,如果不想把選區插入 Keynote 而是想直接保存成圖片,那麼在按 cmd+c
複製選區,點擊菜單欄 File / New from Clipboard 或者按 cmd+n
,就會創建一個新的圖片,按 cmd+s
保存成 pdf 文件就可以插入到 LaTeX 裡面了。
用 Preview 複製一整頁 pdf 幻燈片
這個技巧與上面的類似。在製作幻燈片的時候,有時我們想引用別人的整張幻燈片。使用 Preview 這也可以很輕鬆地做到:
點擊最左邊的視圖圖標,選中縮略圖視角,在左側會多出來幻燈片的縮略圖,點擊需要複製的幻燈片,按 cmd+c
複製,按 cmd+v
粘貼到 Keynote 裡面就行了。
插入數學公式
Keynote 作圖有個先天的功能性缺失:無法插入數學公式。不過既然可以插入 pdf,這就不是一個問題。MacTeX 套件在安裝的時候會順帶安裝一個非常好用的小工具,叫做 LaTeXiT。
寫好 LaTeX 公式之後,按 LaTeX it!,等待圖片生成好,往 Keynote 裡面拖就行了,導出的也是 pdf 格式。
更厲害的是,還可以反向地拖回來:先在 Keynote 裡面選中圖片,然後在側邊欄把 pdf 圖片的圖標拖到 LaTeXiT 窗口裡面,公式就回來了,可以方便地對其進行修改。
Keynote 導出矢量圖
用 Keynote 畫好之後,可以通過下面的方式導出成矢量圖:點擊 Keynote 菜單欄 File / Export to / PDF,選擇最好的圖像質量,然後導出。用 Preview 打開導出的 pdf 文件,然後和前面提到的技巧一樣,先複製選區,然後從剪貼板新建圖像,再保存成 pdf 就行了。
用 Inkscape 轉換圖像格式
有時候,我們從網上下載到的矢量圖素材是 .svg
格式的,無法插入到 Keynote 裡面。Inkscape 可以幫助我們把圖片轉成 .eps
格式。首先安裝 Homebrew 和 Homebrew Cask,然後用下面的命令就可以一鍵安裝 Inkscape:
brew cask install inkscape
然後用 Inkscape 打開圖片,再保存成 .eps
就行了。或者,也可以用下面的命令行一鍵轉換:
inkscape --export-eps=/path/to/image.eps /path/to/image.svg
需要注意的是,因為一些bug導致從命令行調用 inkscape
的時候當前工作目錄會發生改變,所以說一定要使用絕對路徑。
Matplotlib 導出矢量圖
在用 matplotlib
作圖的時候,只要指定保存的圖片的後綴為 .pdf
就能生成矢量圖了。
plt.savefig(tmp.pdf, bbox_inches=tight)
在 Jupyter Notebook 上顯示矢量圖
相信大家都很熟悉在 Jupyter Notebook 上面用 Matplotlib 了,但是不知道大家看到畫出來那一坨糊糊的東西會不會跟我一樣渾身難受。實際上,只要多加一行配置,就能夠讓 Matplotlib 在 Jupyter Notebook 上面輸出矢量圖了:
import matplotlibimport matplotlib.pyplot as plt%matplotlib inline%config InlineBackend.figure_format = svg
上面的最後一行指定了輸出的格式是 svg,這樣瀏覽器就能為你渲染矢量圖了。下面上兩張比較圖:
首發於博客:macOS 矢量作圖小貼士
推薦閱讀:
※為什麼 OS X 在工業和製造業等領域的應用不及 Windows?
※Alfred 3 新功能一覽:讓 DIY 更簡單
※安卓設備如何用SMB協議訪問MAC OSX?
※為什麼批評 OS X 多會得到無厘頭式的回應,批評 Windows 則得到無厘頭式的附和?
※重裝系統