主要参考
https://zhuanlan.zhihu.com/p/337459645 https://zhuanlan.zhihu.com/p/112108701 * 非常感谢夕雪大大及评论区各位的思考与贡献
1. 为什么选择WSL
由于TeXLive对Windows支持不好等原因,其在Windows下效率较低。WSL是在Windows下对Linux的虚拟化,在该文章的测试中,WSL相比直接在Windows下跑,最多能实现一倍的提升。
2. 环境描述
-
根据该文章测试,若将tex文件放在Windows文件区 (/mnt/x/…) ,会对性能造成较大影响,所以选择将文件放在Linux目录下。 -
目录结构如下 ------Tex
|------.vscode
|------settings.json
|------correct_path
|------doc1
|------test.tex
-
建议不要将tex文件直接放在“Tex”目录下,不然反向搜索可能无法实现窗口复用。
3. 具体配置(正向搜索与反向搜索)
VSCode端
.settings.json
"latex-workshop.latex.tools": [
{
"name": "correct_path",
"command": "../.vscode/correct_path"
},
"latex-workshop.latex.recipes": [
{
"name": "pdf->bib->pdf->pdf",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex",
"correct_path" // 注意这里
]
},
······
"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.external.viewer.command": "/mnt/d/Software/SumatraPDF/SumatraPDF.exe", // 改为自己的路径
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
],
"latex-workshop.view.pdf.external.synctex.command": "/mnt/d/Software/SumatraPDF/SumatraPDF.exe", // 改为自己的路径
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"\\\\wsl$\\Ubuntu\\%TEX%", // 改为自己的发行版名称
"%LINE%",
"-reuse-instance",
"\\\\wsl$\\Ubuntu\\%PDF%" // 改为自己的发行版名称
]
correct_path (注意修改为自己的路径)
gunzip *.synctex.gz
sed -i "s/\/home\/winnie\/Tex\//\\\\\\\\wsl$\\\\Ubuntu\\\\home\\\\winnie\\\\Tex\\\\/g" *.synctex
gzip *.synctex
该文章提供了把上述代码写在一行的方法,与settings.json文件集成在一起,可供参考
SumatraPDF端
在任意路径创建一个vbs文件(实现cmd窗口隐藏)
Set args = WScript.Arguments
arg = ""
For Each s In args
arg = arg & " " & s
Next
WScript.CreateObject("WScript.Shell").Run "wsl code " & arg, 0
此处填入(注意修改vbs文件和/mnt/x/…路径)
wscript "D:\Projects\Script\Inverse Search.vbs" -r -g $(echo $(wslpath '%f:%l') "|" sed 's/\/mnt\/d\/wsl$\/Ubuntu//g')
大功告成!
最后,值得注意的是,代码有效性可能会随版本变动而不同,可参见该文章。 截至2022年3月7日最新版,笔者使用的版本如下:
- VSCode:1.65.0
- LaTeX Workshop:8.23.0
- SumatraPDF:3.3.3
|