![](https://img.laitimes.com/img/__Qf2AjLwojIjJCLyojI0JCLicmbw5SNwUWNyM2MlNDOyUTZlVDOzEmM1ETY5kjZ5EGMjFTM08CX0JXZ252bj91Ztl2Lc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
前言
LaTeX作為一種強大的排版系統,對于理工科,特别是公式比較多的數(tu)學(tou)專業,其重要性自不必多說,不在本文探讨範圍之内。
而選擇一個比較好的編譯器是很重要的,至少對筆者而言是如此。筆者前期使用的
TeXstudio進行文檔的編譯的,但是其編譯速度比較慢,并且頁面不是很美觀。最讓人頭疼的是,當公式比較長的時候,使用的括号就比較多,但
Texstudio的代碼高亮功能實在是....(它對于括号根本就沒有高亮,頭秃)
而
Visual Studio Code呢?話不多說,直接上圖!
可以看到,它不僅能夠對代碼高亮,不同級别括号用不同顔色标注了,顔值也很高。vscode 最突出的特點就是其強大的插件功能,每個使用者都能夠根據自己的需求和想法下載下傳相應的插件,進而将之配置為高度個性化的編輯器。可以這麼說,每個使用者的 vscode 都不一樣,為其專屬定制編輯器。
筆者配置了好久,找了很多資料,很多部落客也隻是貼上了配置代碼,沒有詳細的介紹說明。為了讓更多人能夠有一個比較清晰的了解,以此可以随時對自己的配置代碼進行更改,筆者寫下了此文。希望能夠對大家有所幫助。
注 1 :本文使用圖檔均為筆者自身編輯器截圖或筆者朋友的編輯器截圖(經過對方同意),且所有引用在文中或文末注明了來源,其餘均為原創内容(代碼不算哈哈哈)。
注 2 :若您的 vscode 頁面和筆者所用圖檔中展示的頁面有略微不同,均為筆者所安裝的其餘插件以及其餘設定所緻,并不影響本文中所說的所有配置,您無需擔心,隻需按照圖檔中所指向圖示進行配置即可。
注 3 :文末有完整的個人配置代碼(有的地方需要更改路徑,有具體說明)。
1 TeX Live 下載下傳與安裝
筆者選用的 Tex 系統是 TeX Live ,如果您想了解 TeX Live 和 MiKTeX 的差別,可以檢視此篇文章:
(譯)在Windows上使用TeX:TeX Live與MiKTeX的對比www.cnblogs.com
接下來是 TeX Live 的
下載下傳與安裝說明:
① 通過網址 :
Acquiring TeX Live as an ISO imagetug.org
進入 ISO 下載下傳頁面,點選圖示紅框圈畫位置進入随機的鏡像網站。
② 可以看到的是,筆者進入了清華大學鏡像網站,點選紅框圈畫連結進行 TeX Live 下載下傳。
③ 如果
下載下傳速度過慢,可以傳回前一頁面,進行重新點選,随機進入另一鏡像網站進行下載下傳嘗試,直到下載下傳速度在您的可接受範圍内即可。或者在前一頁面,點選
"mirror list"進入鏡像清單
然後手動選擇某一鏡像網站進行下載下傳:
④ 找到下載下傳好的壓縮包,右鍵,在打開方式中選擇
“Windows 資料總管"打開
⑤ 找到
"install-tl-windows"檔案,為了後面不必要的麻煩,右鍵
以管理者身份運作⑥ 會先出現下圖,無需理會,等會兒會消失
⑦
基本更改:出現下圖後,需要進行路徑的更改;由于 TeX Live 自帶的 TeXworks 不怎麼好用,并且此文主要将 vscode 作為 LaTeX 的編輯器,故而取消
安裝 TeXworks 前端的選項,再點選安裝
⑧
個性化安裝:如果您需要個性化程度高的話,那麼可以點選上圖左下角的
Advancde,根據您的需要進行相應的更改,但
建議在不明白各個選項的作用時,不要對其進行修改,以免後期使用産生奇怪的問題。要注意的是,
Adjust searchpath這個選項一定要選中,将之添加到環境變量,否則後期手動添加比較麻煩;
而對于我們大部分人來說,隻需要更改下圖框選出的部分即可,也就是上圖所完成的功能,再點選
安裝即可
⑨
進行安裝:接着就會出現下圖,具體的安裝名額已在下圖示明,可根據其數字來判斷安裝所需時間。
當上面标示的時間安裝完之後,會出現一些配置檔案的安裝運作寫入,進行等待即可,幾分鐘左右:
當出現下圖所示彈窗時,說明安裝完畢,點選關閉即可。
⑩ 檢查安裝是否正常: 按
win + R打開運作,輸入
cmd,打開指令行視窗;然後輸入指令
xelatex -v,如下圖
如上圖所示,若輸出了一些版本資訊,則安裝正常。
2 vscode下載下傳
官網下載下傳:
Click here to download Visual Studio Codecode.visualstudio.com
點進去之後就可以進行下載下傳了。具體安裝過程與常見的軟體安裝過程一緻,這裡就不作贅述。筆者隻對幾個
要點進行提及:
① 記得
修改安裝路徑② 根據個人想法可以選擇是否在開始菜單檔案夾建立 vscode 的快捷方式
③ 一定要選上
"添加到PATH”這個選項,能省很多麻煩。其餘如圖所示,自行選擇。
安裝好之後,打開 vscode,應如下圖頁面所示:
3 中文語言環境配置
vscode的中文環境需要下載下傳插件來進行支援。如下圖所示:
① 點選拓展圖示,打開拓展;
② 輸入
"Chinese",選擇第一個Chinese (Simplified) Language Pack for Visual Studio Code插件;
③ 點選
"install"進行安裝,等待安裝完成;
④ 點選頁面右下角跳出視窗中的
"Restart now",進行 vscode 重新開機。
⑤ 完成中文環境配置,顯示如下:
4 LaTeX的支援插件 LaTeX Workshop安裝
① 點選拓展圖示,打開拓展;
② 輸入
"latex workshop",選擇第一個LaTeX Workshop插件;
③ 點選
"install"進行安裝,等待安裝完成;
④ 若在安裝完該插件之後在 vscode 頁面右下角跳出如下彈窗,無需在意,隻是提醒該插件已經更新到了8.11.1版本。若您想要了解新版本增加的功能,可以點選
"Change log"進行檢視;若不想了解,點選
"Disable this message"即可。
5 打開LaTeX環境設定頁面
① 點選設定圖示
② 點選設定
③ 轉到 UI 設定頁面
④ 點選下圖
1處打開 json 檔案,進入代碼設定頁面
UI 設定頁面和JSON設定頁面均為設定頁面,其功能是一樣的。不同的是,UI 設定頁面互動能力較強,但一些設定需要去尋找,比較麻煩;而JSON設定頁面雖然相對 UI 而言不那麼直覺,但卻可以對自己想要的功能直接進行代碼編寫,且代碼設定可以直接克隆别人的代碼到自己的編輯器中,進而直接完成相應設定,比較便捷。
注 5 :可以直接按
Ctrl + ,進入設定頁面。
6 LaTeX環境的代碼配置
6.1 LaTeX配置代碼展示
先給出效果圖:
LaTeX 配置代碼如下(不包含外部 pdf 檢視器設定):
{
"latex-workshop.latex.autoBuild.run": "never",
"latex-workshop.showContextMenu": true,
"latex-workshop.intellisense.package.enabled": true,
"latex-workshop.message.error.show": false,
"latex-workshop.message.warning.show": false,
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOCFILE%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
}
],
"latex-workshop.latex.recipes": [
{
"name": "XeLaTeX",
"tools": [
"xelatex"
]
},
{
"name": "PDFLaTeX",
"tools": [
"pdflatex"
]
},
{
"name": "BibTeX",
"tools": [
"bibtex"
]
},
{
"name": "LaTeXmk",
"tools": [
"latexmk"
]
},
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
},
],
"latex-workshop.latex.clean.fileTypes": [
"*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.ist",
"*.fls",
"*.log",
"*.fdb_latexmk"
],
"latex-workshop.latex.autoClean.run": "onFailed",
"latex-workshop.latex.recipe.default": "lastUsed",
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click"
}
注 6 : 若您不想要配置外部檢視器以及了解内部檢視和外部檢視之間切換操作,可以直接複制上述代碼至 json 檔案中,即可完成 LaTeX 的配置,進而可以對 LaTeX 代碼進行編譯。
注 7 :根據 json 檔案編寫規則,每個代碼語句(除了代碼塊兒最後一句)都需要加上英文狀态下的
,
,否則就會報錯;而每個代碼塊兒的最後一句是不需要加上
,
的。從上文整個代碼塊兒可以看出此規則。
如果您日後需要在上述代碼之後再添加其他代碼,請記得在最後一句
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click"
後添加上
,
,即變為
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",
......
其中的
......
為您添加的其餘代碼。
切記!6.2 LaTeX配置代碼解讀
如果您對此不感興趣,可以跳過該小節。下面進行代碼
注釋解讀:
"latex-workshop.latex.autoBuild.run": "never"
設定何時使用預設的(第一個)編譯鍊自動建構 LaTeX 項目,即什麼時候自動進行代碼的編譯。有三個選項:
1.
onFileChange:在檢測任何依賴項中的檔案更改(甚至被其他應用程式修改)時建構項目,即當檢測到代碼被更改時就自動編譯tex檔案;
2.
onSave: 當代碼被儲存時自動編譯檔案;
3.
never: 從不自動編譯,即需編寫者手動編譯文檔
此項筆者設定為
never。
"latex-workshop.showContextMenu": true
啟用上下文LaTeX菜單。此菜單預設狀态下停用,即變量設定為
false,因為它可以通過新的 LaTeX 标記使用(新的 LaTeX 标記能夠編譯文檔,将在下文提及)。隻需将此變量設定為
true即可恢複菜單。即此指令設定是否将編譯文檔的選項出現在滑鼠右鍵的菜單中。
下兩圖展示兩者差別,第一幅圖為設定
false情況,第二幅圖為設定
true情況。可以看到的是,設定為
true時,菜單中多了兩個選項,其中多出來的第一個選項為進行tex檔案的編譯,而第二個選項為進行正向同步,即從代碼定位到編譯出來的 pdf 檔案相應位置,下文會進行提及。
筆者覺得菜單多了此選項較友善,故此項筆者設定為
true"latex-workshop.intellisense.package.enabled": true
設定為
true,則該拓展能夠從使用的宏包中自動提取指令和環境,進而補全正在編寫的代碼。
"latex-workshop.message.error.show" : false,
"latex-workshop.message.warning.show": false
這兩個指令是設定當文檔編譯錯誤時是否彈出顯示出錯和警告的彈窗。因為這些錯誤和警告資訊能夠從終端中擷取,且彈窗彈出比較煩人,故而筆者設定均設定為
false。
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOCFILE%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
}
]
這些代碼是定義在下文 recipes 編譯鍊中被使用的編譯指令,此處為預設配置,不需要進行更改。其中的
name
為這些指令的标簽,用作下文 recipes 的引用;而
command
為在該拓展中的編譯方式。
可以更改的代碼為,将編譯方式: pdflatex 、 xelatex 和 latexmk 中的
%DOCFILE
更改為
%DOC
。
%DOCFILE
表明編譯器通路沒有擴充名的根檔案名,而
%DOC
表明編譯器通路的是沒有擴充名的根檔案完整路徑。這就意味着,使用
%DOCFILE
可以将檔案所在路徑設定為中文,但筆者不建議這麼做,因為畢竟涉及到代碼,當其餘編譯器引用時該 tex 檔案仍需要根檔案完整路徑,且需要為英文路徑。筆者此處設定為
%DOCFILE
僅是因為之前使用 TeXstudio,導緻路徑已經是中文了。
更多詳情可以通路 github 中 LaTeX-Workshop 的 Wiki:
https://github.com/James-Yu/LaTeX-Workshop/wiki/Compile#placeholdersgithub.com
"latex-workshop.latex.recipes": [
{
"name": "XeLaTeX",
"tools": [
"xelatex"
]
},
{
"name": "PDFLaTeX",
"tools": [
"pdflatex"
]
},
{
"name": "BibTeX",
"tools": [
"bibtex"
]
},
{
"name": "LaTeXmk",
"tools": [
"latexmk"
]
},
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
}
]
此串代碼是對編譯鍊進行定義,其中
name
是标簽,也就是出現在工具欄中的鍊名稱;
tool
是
name
标簽所對應的編譯順序,其内部編譯指令來自上文
latex-workshop.latex.recipes
中内容。
定義完成後,能夠在 vscode 編譯器中能夠看到的編譯順序,具體看下圖:
可以看到的是,在編譯鍊中定義的指令出現在了vscode右側的工具欄中。
注 8 :PDFLaTeX編譯模式與
XeLaTeX差別如下:
1. PDFLaTeX 使用的是TeX的标準字型,是以生成PDF時,會将所有的非 TeX 标準字型進行替換,其生成的 PDF 檔案預設嵌入所有字型;而使用 XeLaTeX 編譯,如果說論文中有很多圖檔或者其他元素沒有嵌入字型的話,生成的 PDF 檔案也會有些字型沒有嵌入。
2. XeLaTeX 對應的 XeTeX 對字型的支援更好,允許使用者使用作業系統字型來代替 TeX 的标準字型,而且對非拉丁字型的支援更好。
3. PDFLaTeX 進行編譯的速度比 XeLaTeX 速度快。
引用自 蛐蛐蛐先生的部落格 :
PDFLaTeX和XeLaTeX有什麼差別_qysh123的專欄-CSDN部落格_xelatex和pdflatex哪個更好blog.csdn.net
編譯鍊的存在是為了更友善編譯,因為如果涉及到
.bib檔案,就需要進行多次不同指令的轉換編譯,比較麻煩,而編譯鍊就解決了這個問題。
"latex-workshop.latex.clean.fileTypes": [
"*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.ist",
"*.fls",
"*.log",
"*.fdb_latexmk"
]
這串指令則是設定編譯完成後要清除掉的輔助檔案類型,若無特殊需求,無需進行更改。
"latex-workshop.latex.autoClean.run": "onFailed"
這條指令是設定什麼時候對上文設定的輔助檔案進行清除。其變量有:
1.
onBuilt: 無論是否編譯成功,都選擇清除輔助檔案;
2.
onFailed: 當編譯失敗時,清除輔助檔案;
3.
never: 無論何時,都不清除輔助檔案。
由于 tex 文檔編譯有時需要用到輔助檔案,比如編譯目錄和編譯參考文獻時,如果使用
onBuilt
指令,則會導緻編譯不出完整結果甚至編譯失敗;
而有時候将 tex 檔案修改後進行編譯時,可能會導緻 pdf 檔案沒有正常更新的情況,這個時候可能就是由于輔助檔案沒有進行及時更新的緣故,需要清除輔助檔案了,而
never
指令做不到這一點;
故而筆者使用了
onFailed
,同時解決了上述兩個問題。
"latex-workshop.latex.recipe.default": "lastUsed"
該指令的作用為設定 vscode 編譯 tex 文檔時的預設編譯鍊。有兩個變量: 1.
first: 使用
latex-workshop.latex.recipes
中的第一條編譯鍊,故而您可以根據自己的需要更改編譯鍊順序; 2.
lastUsed: 使用最近一次編譯所用的編譯鍊。
筆者選擇使用
lastUsed。
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click"
用于反向同步(即從編譯出的 pdf 檔案指定位置跳轉到 tex 檔案中相應代碼所在位置)的内部檢視器的快捷鍵綁定。變量有兩種:
1.
ctrl-click: 為預設選項,使用Ctrl/cmd+滑鼠左鍵單擊
2.
double-click: 使用滑鼠左鍵輕按兩下
此處筆者使用的為
double-click。
7 tex檔案編譯
7.1 tex測試檔案下載下傳
為了測試 vscode 功能是否比較完整,筆者編寫了一份簡單的 tex 檔案,以此測試其是否支援中英文,能否編譯目錄,能否插入圖檔,能否進行引用,能否編譯參考文獻(編譯bixtex檔案)等功能。
測試所用的 tex 檔案可以從 github 下載下傳:
Ali-loner/Ali-loner.github.iogithub.com
如圖:
若因網絡原因無法連接配接到github導緻無法下載下傳,可以使用自己的tex檔案進行測試,或者複制以下代碼進行文檔的簡單編譯測試,但其隻能測試一部分功能:
documentclass[a4paper]{article}
usepackage[margin=1in]{geometry} % 設定邊距,符合Word設定
usepackage{ctex}
usepackage{lipsum}
title{heitizihao{2} This is a test for vscode}
author{songti Ali-loner}
date{2020.08.02}
begin{document}
maketitle
begin{abstract}
lipsum[2]
end{abstract}
tableofcontents
section{This is a section}
Hello world! 你好,世界 !
end{document}
7.2 tex 測試檔案編譯
① 打開測試檔案所在檔案夾,進行檔案内容檢視
由于進行測試的檔案中涉及參考文獻的引用(
.bib的編譯),故而選擇
xelatex -> bibtex -> xelatex*2
編譯鍊。
為了更友善進行編譯,可對其設定快捷鍵,設定快捷鍵步驟如下:
筆者将快捷鍵設定為
Ctrl+Alt+R。
選中tex檔案的代碼頁面(若未選中,則無法進行編譯),然後按下該快捷鍵,在編輯器頁面上端進行編譯鍊選擇,如下圖:
當發現頁面下方出現
√符号時,說明編譯成功,相反,如果出現
×符号,說明編譯失敗,就要找失敗原因了。
a.左側工具欄
當編譯成功後,選中 tex 檔案中任意的代碼,以此來選中 tex 檔案,然後進行圖示操作。其中側邊欄所展現的就是上文提及的新的 LaTeX 标記。
快捷鍵
選中 tex 檔案中任意的代碼,然後按
Ctrl+Alt+V,出現編譯好的 pdf 頁面。該快捷鍵為預設設定。若您想要更改,可以根據上文進行配置。
注意到,現在編譯的結果為内部檢視器檢視。
⑤ 正向同步測試,即從代碼定位到 pdf 頁面相應位置。有以下三種方法:
a.使用側邊工具欄
使用右鍵菜單
使用快捷鍵
選中需要跳轉的代碼所在行,按Ctrl+Alt+J,右側就會跳轉到相應行。這裡的快捷鍵為預設設定,可自行通過上文方式設定為您想要的快捷鍵。
⑥ 反向同步測試,即從 pdf 頁面定位到代碼相應位置
在編譯生成的 pdf 上,選中想要跳轉行,滑鼠
左鍵輕按兩下或
ctrl+滑鼠左鍵單擊,跳轉到對應代碼。此處快捷鍵的選擇為上文設定,若使用筆者的代碼,則為
滑鼠左鍵輕按兩下。
8 SumatraPDF 安裝設定(可選)
您可自行選擇是否需要設定此部分内容。
有的時候,由于想要看到 pdf 檔案的完整展現效果,使用内置檢視器已無法滿足需求,這時可以使用外部檢視器進行檢視。
外部檢視器的優勢是能夠看到 pdf 檔案在檢視器中的目錄,可以實時進行跳轉;且根據筆者使用來看,外部檢視器展示出來的 pdf 預設會放大一些,使得字型變大,要更加讓人舒服一些。
筆者選擇
SumatraPDF作為外部檢視器,該軟體的優點在于在具有 pdf 閱讀功能的同時很輕量,安裝包不到 10MB 大小,且支援雙向同步功能。通過調整其與 vscode 的視窗位置,能夠在擁有這些優勢的同時,達到與内置 pdf 檢視具有相同的效果。
8.1 SumatraPDF下載下傳與安裝
官網下載下傳:
Click here to download SumatraPDFwww.sumatrapdfreader.org
其安裝很簡單,與通用軟體安裝過程一緻,記得更改安裝路徑并記住,下文配置需要使用其路徑。
8.2 使用SumatraPDF檢視的代碼配置
8.2.1 代碼展示
{
"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.ref.viewer":"auto",
"latex-workshop.view.pdf.external.viewer.command": "F:/SumatraPDF/SumatraPDF.exe", // 注意修改路徑
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
],
"latex-workshop.view.pdf.external.synctex.command": "F:/SumatraPDF/SumatraPDF.exe", // 注意修改路徑
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
""F:/Microsoft VS Code/Code.exe" "F:/Microsoft VS Code/resources/app/out/cli.js" -r -g "%f:%l"", // 注意修改路徑
"%PDF%"
]
}
此代碼僅為展示所用,讓您進行檢視,為下文解讀之用。如需寫入到 json 檔案内,可直接完整複制文末筆者的個人配置到自己的編譯器内。
8.2.2 代碼解讀
"latex-workshop.view.pdf.viewer": "external"
設定預設的pdf檢視器,有三種變量參數:
1.
tab: 使用 vscode 内置 pdf 檢視器;
2.
browser: 使用電腦預設浏覽器進行 pdf 檢視;
3.
external: 使用外部 pdf 檢視器檢視。
此處選擇
external參數,使用外部檢視器。
注 12 :此參數為下文進行pdf内部檢視和外部檢視進行切換的關鍵參數。
"latex-workshop.view.pdf.ref.viewer":"auto"
設定PDF檢視器用于在
ref指令上的[View on PDF]連結,此指令作用于
ref引用檢視。有三個參數變量:
1.
auto: 由編輯器根據情況自動設定;
2.
tabOrBrowser: 使用vscode内置pdf檢視器或使用電腦預設浏覽器進行pdf檢視;
3.
external: 使用外部pdf檢視器檢視。
此處設定為
auto。
"latex-workshop.view.pdf.external.viewer.command": "F:/SumatraPDF/SumatraPDF.exe"// 注意修改路徑
使用外部檢視器時要執行的指令,設定外部檢視器啟動檔案
SumatraPDF.exe檔案所在位置,此處需要您根據自身情況進行路徑更改,正常情況下隻需更改磁盤盤符即可。
請注意中間為
" / "而不是
" ",不然會報錯。
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
]
此代碼是設定使用外部檢視器時,
latex-workshop.view.pdf.external.view .command
的參數。
%PDF%
是用于生成PDF檔案的絕對路徑的占位符。
"latex-workshop.view.pdf.external.synctex.command": "F:/SumatraPDF/SumatraPDF.exe" // 注意修改路徑
此指令是将生成的輔助檔案
.synctex.gz轉發到外部檢視器時要執行的指令,設定其位置參數,您注意更改路徑,此路徑為
SumatraPDF.exe檔案路徑。與上文相同。
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
""F:/Microsoft VS Code/Code.exe" "F:/Microsoft VS Code/resources/app/out/cli.js" -r -g "%f:%l"", // 注意修改路徑
"%PDF%"
]
當
.synctex.gz檔案同步到外部檢視器時
latex-workshop.view.pdf.external.synctex
的參數設定。
%LINE%
是行号,
%PDF%
是生成PDF檔案的絕對路徑的占位符,
%TEX%
是當觸發syncTeX被觸發時,擴充名為
.tex的 LaTeX 檔案路徑。
上面代碼串中記得進行
Microsoft VS Code路徑修改,修改如下圖:
此處感謝@可愛又迷人的反派 對于筆者的代碼提出的修改,讓一部分讀者存在的 SumatraPDF 無法進行正常反向同步操作的問題得到了解決。
9 SumatraPDF 的使用
将完整代碼複制到自己的 json 檔案内後,即可使用 SumatraPDF作為自己的 pdf 外部檢視器了。以下為具體操作:
① 點選編輯頁面任意位置來選中 tex 檔案;
② 按Ctrl+Alt+V,打開編譯出的 pdf 檔案;
③ 出現如下圖頁面。可以看到的是,原本内嵌輸出的 pdf 變為了在 SumatraPDF 上檢視,且側面帶有書簽:
④ 為了出現和内嵌輸出具有相同的效果,可以将 vscode 和 SumatraPDF 進行分屏,且根據需要關閉标簽,如下圖:
⑤ 且同樣支援雙向同步(正向同步和反向同步),其操作步驟與内嵌輸出 pdf 時操作步驟相同,此處就不再贅述。檢視效果圖:
10 pdf 内部檢視與外部檢視的切換
以下展示由外部檢視轉為内部檢視的操作,由内轉外操作相同。
共有兩種操作方式:
UI界面設定或
Json界面設定。具體見下圖:
您可根據個人适應選擇相應的方法。
11 個人完整配置
{
//------------------------------LaTeX 配置----------------------------------
// 設定是否自動編譯
"latex-workshop.latex.autoBuild.run":"never",
//右鍵菜單
"latex-workshop.showContextMenu":true,
//從使用的包中自動補全指令和環境
"latex-workshop.intellisense.package.enabled": true,
//編譯出錯時設定是否彈出氣泡設定
"latex-workshop.message.error.show": false,
"latex-workshop.message.warning.show": false,
// 編譯工具和指令
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOCFILE%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
}
],
// 用于配置編譯鍊
"latex-workshop.latex.recipes": [
{
"name": "XeLaTeX",
"tools": [
"xelatex"
]
},
{
"name": "PDFLaTeX",
"tools": [
"pdflatex"
]
},
{
"name": "BibTeX",
"tools": [
"bibtex"
]
},
{
"name": "LaTeXmk",
"tools": [
"latexmk"
]
},
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
}
],
//檔案清理。此屬性必須是字元串數組
"latex-workshop.latex.clean.fileTypes": [
"*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.ist",
"*.fls",
"*.log",
"*.fdb_latexmk"
],
//設定為onFaild 在建構失敗後清除輔助檔案
"latex-workshop.latex.autoClean.run": "onFailed",
// 使用上次的recipe編譯組合
"latex-workshop.latex.recipe.default": "lastUsed",
// 用于反向同步的内部檢視器的鍵綁定。ctrl/cmd +點選(預設)或輕按兩下
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",
//使用 SumatraPDF 預覽編譯好的PDF檔案
// 設定VScode内部檢視生成的pdf檔案
"latex-workshop.view.pdf.viewer": "external",
// PDF檢視器用于在ref上的[View on PDF]連結
"latex-workshop.view.pdf.ref.viewer":"auto",
// 使用外部檢視器時要執行的指令。此功能不受官方支援。
"latex-workshop.view.pdf.external.viewer.command": "F:/SumatraPDF/SumatraPDF.exe", // 注意修改路徑
// 使用外部檢視器時,latex-workshop.view.pdf.external.view .command的參數。此功能不受官方支援。%PDF%是用于生成PDF檔案的絕對路徑的占位符。
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
],
// 将synctex轉發到外部檢視器時要執行的指令。此功能不受官方支援。
"latex-workshop.view.pdf.external.synctex.command": "F:/SumatraPDF/SumatraPDF.exe", // 注意修改路徑
// latex-workshop.view.pdf.external.synctex的參數。當同步到外部檢視器時。%LINE%是行号,%PDF%是生成PDF檔案的絕對路徑的占位符,%TEX%是觸發syncTeX的擴充名為.tex的LaTeX檔案路徑。
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
""F:/Microsoft VS Code/Code.exe" "F:/Microsoft VS Code/resources/app/out/cli.js" -r -g "%f:%l"", // 注意修改路徑
"%PDF%"
]
}
寫在最後 : 筆者也隻是一個初學者,文中如果出現錯誤的地方,歡迎您在評論區批評指正,筆者會虛心接受這些産生錯誤的地方,争取以後學得更紮實再編寫這些文字。
另:若您感覺此文寫得還行,希望您能夠不吝點贊,以激發筆者的創作熱情,進而能在日後寫下更多更好的文章。非常感謝您!!!
參考:
https://zhuanlan.zhihu.com/p/38178015zhuanlan.zhihu.com