OS X 的 LaTeX 寫作環境

近幾個月換了 Macbook 用作平日工作的電腦,從 Windows 到 OS X 變化不小,但慣用的工具都類似,加上類  Unix 的環境還有些 OS X 才有的軟體如 Skim,其實比起 Windows 還要方便些。

首先是 LaTeX Box 這個 plug-in,使用 Latexmk 自動編譯 LaTeX 檔案的程式,比起 Vim-LaTeX 的 multiple compile 更為迅速。配合功能強大的 pdf 閱讀軟體 skim ,可以隨時自動更新檔案,並且支援 SyncTex 提供的反向定位功能。稍稍修改 LaTeX Box 的編譯指令,就可以同時在原始檔以及輸出的 pdf 中作正向以及反向定位,加速編輯流程。

所謂的正反向定位也就是在 skim 下點完成的 pdf 檔可以要 vim 定位到對應的文字區塊,而反過也可以在 vim 下點文字區塊,對應到輸出檔的位置。有時候在校稿的同時,常常需要反覆在成品以及原始檔間互相對照,找到對應的位置編輯。使用這個功能就可以很輕鬆的在閱讀軟體下直接定位到原始檔的位置;相對地,也可以很快速地在原始檔中要確認輸出結果。

安裝與設定:

Skim

安裝 Skim 相當簡單,到官方網站下載即可:

http://skim-app.sourceforge.net/

並且稍作改變以便跟 LaTeX 運作:在 Preference (偏好設定)內 Sync (同步)頁面內,勾選 Check for file changes(檢查檔案更動)以及底下的 PDF-TeX Sync 支援點選 MacVim (或是點選習慣的文字編輯器,在這邊我們用 Mac 上的 Vim)。

LaTex Box

安裝 LaTeX Box 稍嫌麻煩,對於沒有程式經驗的人看到他們的官方網頁:

https://github.com/LaTeX-Box-Team/LaTeX-Box

可能會非常陌生。基本上安裝的方式有兩種,一種是手動透過 github 下載整個目錄。另一種是安裝 vundle 這個 Vim 專用的套件管理系統:

https://github.com/gmarik/vundle

關於 vundle 安裝方式參閱頁面內的 Quick Start。簡單來說先下載 git ,開啟 terminal (終端機)輸入以下指令

git clone https://github.com/gmarik/vundle.git ~/.vim/bundle/vundle

修改 Vim 的設定檔如 home directory (家目錄)下的 _vimrc 檔案,執行 Vim 並在 Vim 的 normal mode (一般模式也就是啓動後預設的模式)下輸入

:BundleInstall

就完成了。而安裝 LaTeX Box  只要於 _vimrc 內再加入

Bundle 'LaTeX-Box-Team/LaTeX-Box'

並且輸入在 Vim 內輸入 :BundleInstall 的指令。

以上完成後,開啟 .tex 的檔案時, 就會有些簡便的快捷鍵可供使用。要編譯文檔只需在一般模式下按 \ll 、要觀看輸出成果則按 \lv 。編譯後可以用 Ctrl+x Ctrl+o 做自動補完,例如在引用指令

\cite{Grothendieck

旁按 Ctrl+x Ctrl+o 則會自動列出可引用的文獻並且索引開頭是 Grothendieck 的項目。連 \label 定義的標簽也可以用,用法同樣在 \ref 旁按即可。其他詳細的功能參考 LaTeX Box 的 git 網頁或 vim 內的說明 :help latexbox

SyncTeX

另外,為了支援 SyncTeX 最後必須給 pdflatex以下參數:

pdflatex -synctex=1

便會在編譯後產生 (檔案名).synctex.gz 的檔案,以便編輯軟體(如 vim )跟閱讀軟體(如 skim)做前向跟逆向定位。另外,在 OS X 下用其他軟體開啓 MacVim 的話,預設的程式存取路徑由 launchd 決定,不做另外設定的話,只會有以下

  1. /usr/bin
  2. /bin
  3. /usr/sbin
  4. /sbin

這四個目錄下會直接被系統存取到。因此,為了要使用 latexmk,還必須另外將 latexmk 所在目錄 /usr/texbin (此目錄包含 LaTeX 的各種程式)加入。在這邊我們將目錄放到 ftplugin\tex.vim 內,只有當編輯的檔案是 .tex 檔的時候,才會讀取 tex.vim 內的設定。

最後完成的 .vim/ftplugin/tex.vim 檔案的範例如下:

map  <Silent><LocalLeader>ls :silent !/Applications/Skim.app/Contents/SharedSupport/displayline
  \ <C-R>=line('.')<CR> "<C-R>=LatexBox_GetOutputFile()<CR>" "%:p" <CR>
let g:LatexBox_viewer = 'open -a /Applications/Skim.app'
let g:LatexBox_latexmk_options = "-pdflatex='pdflatex -file-line-error -synctex=1'"
let $PATH .= ":/usr/texbin"

這使得每次編輯 .tex 檔案的時候,可以自動套用跟 .tex 檔相關的設定。就像是 _vimrc 但差別在於只有在 .tex 檔案才會套用。第一二行設定 \ls 這個按鍵組合對應到 :slient 開頭這段指令,按下後會執行 Skim 並且跳到對應 Vim 現在游標所對應的位置。第三行設定預設的開啟 pdf 檔的程式,第四行則是告訴 pdflatex 輸出 SyncTex 的檔案,以便支援正反向搜尋。最後一行則將 latexmk 所在目錄加入 vim 的環境目錄內。

參考資料:

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s