在 Mac 上以 VS Code 編輯 LaTeX
本文基於以下幾篇文章完成,由於我只需要 Paper 和 Book 兩種版型所以省略了很多步驟,如果需要完整版教學的請看原文:
以及 Windows 系統的用法,由於 Docker 模擬 Linux 環境,所以應該是比較不容易出問題的方案
- LaTeX Workshop – 在VSCode中編輯及編譯LaTeX
- 使用VSCode上撰寫中文LaTeX文件
- Building LaTeX projects on Windows easily with Docker
應該本地編輯還是使用 Overleaf?
是否該在本地編輯 LaTeX?我分為以下幾點考量
在編譯時間上:
- 包含 tikz 並且文章嵌入 PDF 的文件
- 在 M1 Mac 上編譯 70 頁編譯耗時約 7.5 秒
- 在 Overleaf 上編譯時間為 10 秒
- 在 Overleaf 上會不斷被警告編譯超時
- 如果電腦比 M1 爛可以考慮直接在 Overleaf 上編輯
在容量問題上:
- 在容量寸土寸金的 Mac 上 MacTeX 需要 6GB 的儲存空間
在錯誤處理上:
- Overleaf 幫你處理了常見問題,如 build command, 字體等等
- 在本地需要自行解決
這三點是在 Overleaf 還有本地編輯的主要考量。
安裝
需要安裝以下幾項:
- brew 套件管理器
- MacTeX,LaTeX 本身
- VS Code,文字編輯器,因為 MacTeX 編輯器醜到不行
- VS Code 的 LaTeX 插件 LaTeX Workshop
- 安裝標楷體
安裝 Brew
先安裝套件管理器,後續所有安裝都使用此管理器。
# 安裝
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 刷新 shell
exec zsh
# 檢查
brew --version
# 如果沒有找到 brew,需要把 brew 加入系統路徑
echo 'export PATH="/opt/homebrew/bin:$PATH"' >> ~/.zshrc
# 再次刷新 shell
exec zsh
網路教學會把加入系統路徑的指令改為 echo 'eval $(/opt/homebrew/bin/brew shellenv)' >> ~/.zprofile
,兩者差別為前者只會加入系統路徑,後者除了系統路徑還會加上補全系統,這會導致終端機啟動速度變慢,依照個人需求選擇。
安裝 LaTeX
MacTeX 容量 6GB,他的伺服器網速又很慢,安裝時可以先去滑手機。
# 安裝 MacTeX
brew install --cask MacTeX-no-gui
# 安裝完成後重新開啟終端機
# 更新 LaTeX packages
sudo tlmgr update --self
sudo tlmgr update --all
安裝 VS Code
只需要一行就可完成。
brew install --cask visual-studio-code
安裝 VS Code LaTeX 插件
點擊此連結安裝 LaTeX Workshop。
安裝標楷體
Windows 和 Mac 的標楷體雖然名稱一樣但是顯示效果不一樣,這大家應該都知道,如果沒有和 Windows 系統一樣的標楷體,換到 Windows 開就一定會跑版,解決方法是請找到符合著作權法的 ttf 檔案替換。
設定
設定包含 LaTeX 本身的設定以及在 Mac 一定會遇到的字體問題。
設定 LaTeX 編譯
- 複製以下文本
Preferences: Open User Settings (JSON)
- 打開 VS Code,按下
command + shift + p
,貼上剛才複製的文本,enter 進入。 - 貼上以下設定檔
{
"LaTeX-workshop.LaTeX.tools": [
{
"name": "xeLaTeX",
"command": "/Library/TeX/TeXbin/xeLaTeX",
"args": [
"-syncTeX=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
]
},
{
"name": "bibTeX",
"command": "/Library/TeX/TeXbin/bibTeX",
"args": [
"%DOCFILE%"
]
},
{
"name": "LaTeXmk-xeLaTeX",
"command": "/Library/TeX/TeXbin/LaTeXmk",
"args": [
"-xeLaTeX",
"-syncTeX=1",
"-interaction=nonstopmode",
"-file-line-error",
"-outdir=%OUTDIR%",
"%DOC%"
]
}
],
"LaTeX-workshop.LaTeX.recipes": [
{
"name": "XeLaTeX ➞ bibTeX ➞ XeLaTeX×2",
"tools": [
"xeLaTeX",
"bibTeX",
"xeLaTeX",
"xeLaTeX"
]
},
{
"name": "LaTeXmk 🔃",
"tools": [
"LaTeXmk-xeLaTeX"
]
}
],
"LaTeX-workshop.view.pdf.viewer": "tab",
"LaTeX-workshop.LaTeX.autoBuild.run": "onSave",
"LaTeX-workshop.LaTeX.autoClean.run": "onFailed",
"LaTeX-workshop.LaTeX.clean.fileTypes": [
"*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.fls",
"*.log",
"*.fdb_LaTeXmk",
"*.snm",
"*.syncTeX(busy)",
"*.syncTeX.gz(busy)",
"*.nav"
],
"LaTeX-workshop.LaTeX.recipe.default": "lastUsed",
"LaTeX-workshop.view.pdf.internal.syncTeX.keybinding": "double-click",
"editor.unicodeHighlight.allowedLocales": {
"zh-hans": true,
"zh-hant": true
},
"[LaTeX]": {
"editor.defaultFormatter": "James-Yu.LaTeX-workshop"
}
}
其中 LaTeX-workshop.LaTeX.recipes
是目錄,平常使用就是選擇以哪個 recipe 進行編譯,而 LaTeX-workshop.LaTeX.tools
代表的是該 recipe 執行的具體方式。
完整版本請見 科研必会——在Mac上配置LaTeX写作环境,我用不到那麼多所以只留下必要的,兩個分別代表
- XeLaTeX ➞ bibTeX ➞ XeLaTeX×2: 傳統編譯方式,需要先編譯 XeLaTeX,再回來編 bibTeX,最後又要整合,耗時約 20 秒。
- LaTeXmk: 整合上述步驟,執行時間只需要 7.5 秒。
設定字體
以我的 LaTeX 文件來說,這是我原始在 Overleaf 的設定,需要直接把 BiauKai.ttf 丟上去
\setCJKmainfont[AutoFakeBold=6,AutoFakeSlant=.4]{[BiauKai.ttf]}
\defaultCJKfontfeatures{AutoFakeBold=6,AutoFakeSlant=.4}
\newCJKfontfamily\Kai{[BiauKai.ttf]} %定義指令\Kai則切換成標楷體