{ // LaTeX Workshop 配方 —— 与 docs/paper/README.md 记录的口令一致: // latexmk -xelatex -interaction=nonstopmode -halt-on-error main.tex // 论文需要多遍编译(交叉引用、目录与长表格),且必须用 XeLaTeX(ctex + fontspec), // 因此默认配方取 latexmk,而不是单遍 xelatex。 "latex-workshop.latex.workingDirectory": "%DIR%", "latex-workshop.latex.tools": [ { // 默认配方使用的工具:%DOCFILE% 与 %DIR% 配合, // 切换工作目录后传给 latexmk 的仍是纯文件名,避免绝对路径与 \input 相对路径冲突。 "name": "latexmk (xelatex, paper)", "command": "latexmk", "args": [ "-synctex=1", "-interaction=nonstopmode", "-halt-on-error", "-file-line-error", "-xelatex", "%DOCFILE%" ], "env": {} }, { // 备选:产物集中到 build/ 子目录,源码目录更干净; // 需要清理时删除 docs/paper/build 即可(该目录已在 .gitignore 中)。 "name": "latexmk (xelatex, outdir=build)", "command": "latexmk", "args": [ "-synctex=1", "-interaction=nonstopmode", "-halt-on-error", "-file-line-error", "-xelatex", "-outdir=build", "%DOCFILE%" ], "env": {} }, { // 单遍 xelatex 只用于排查单个文件的语法错误,交叉引用会显示为 ?? "name": "xelatex (单遍,调试用)", "command": "xelatex", "args": [ "-synctex=1", "-interaction=nonstopmode", "-file-line-error", "%DOCFILE%" ], "env": {} } ], "latex-workshop.latex.recipes": [ { "name": "latexmk (xelatex, paper)", "tools": ["latexmk (xelatex, paper)"] }, { "name": "latexmk (xelatex, outdir=build)", "tools": ["latexmk (xelatex, outdir=build)"] }, { "name": "xelatex (单遍,调试用)", "tools": ["xelatex (单遍,调试用)"] } ], // 默认配方:本项目的实际编译口令(多遍 + XeLaTeX + 遇错即停)。 // // 产物写入 build/ 而不是就地写 docs/paper/main.pdf:就地编译时若 PDF 预览 // 仍打开发着 main.pdf,Windows 会锁住该文件,xdvipdfmx 随即报 // "gave an error" 且不产出 PDF,表现为"编译没反应"。 // 写到 build/ 后,预览读的是 docs/paper/build/main.pdf,不再与源码目录的 // main.pdf 抢占,保存即编译也就稳定了。 // 需要就地产出时,把下面这行改为 "latexmk (xelatex, paper)",并先关闭 PDF 预览。 "latex-workshop.latex.recipe.default": "latexmk (xelatex, outdir=build)", // 预览与 build/ 配方保持一致 "latex-workshop.latex.outDir": "build", // 保存即编译:单次编译约十秒,开启后可直接看 PDF 预览; // 只想手动触发时把下一行改为 "never"。 "latex-workshop.latex.autoBuild.run": "onSave", "latex-workshop.latex.autoClean.run": "onBuilt", "latex-workshop.latex.clean.subfolder.enabled": true, "latex-workshop.view.pdf.viewer": "tab", // 禁止 LaTeX Workshop 用启发式自动切换工具,始终按上面的配方执行 "latex-workshop.latex.build.forceRecipeUsage": true }