vscode latex 踩坑记 : 文献索引 bib 文件和setting.json的那点事

两年前打美赛试着用过latex,还记得当时用的是sublime+SumatraPDF+latex 可以实现双向定位。但当时出现了很多加入图片的位置无法正确出现的bug ,总之是一地鸡毛,最后也铩羽而归(当然也是因为自己很菜)

 

2019年了,vscode越来越火,各种插件层出不断,自然会出现对latex的扩展。然后我尝试了一个晚上,用来调整这个bib文件的配置,讨论如下。(其实算是个新手,对latex的编译过程没怎么理解,是在这个晚上反复试验后才逐渐摸索到了一些门道)

网上配置vscode+latex的教程很多。关键在于setting.json的修改。

我第一次参考的是这篇文章:
https://blog.youkuaiyun.com/qq_28303495/article/details/89848209

{
    "latex-workshop.latex.recipes": [
  {
    "name": "xelatex",
    "tools": [
        "xelatex"
    ]
  },
 
  {
    "name": "latexmk",
    "tools": [
        "latexmk"
    ]
  },
  
  {
    "name": "pdflatex -> bibtex -> pdflatex*2",
    "tools": [
        "pdflatex",
        "bibtex",
        "pdflatex",
        "pdflatex"
    ]
  }
  ],


  "latex-workshop.latex.tools": [{
  "name": "latexmk",
  "command": "latexmk",
  "args": [
    "-synctex=1",
    "-interaction=nonstopmode",
    "-file-line-error",
    "-pdf",
    "%DOC%"
  ]
  }, {
  "name": "xelatex",
  "command": "xelatex",
  "args": [
    "-synctex=1",
    "-interaction=nonstopmode",
    "-file-line-error",
    "%DOC%"
  ]
  }, {
  "name": "pdflatex",
  "command": "pdflatex",
  "args": [
    "-synctex=1",
    "-interaction=nonstopmode",
    "-file-line-error",
    "%DOC%"
  ]
  }, {
  "name": "bibtex",
  "command": "bibtex",
  "args": [
    "%DOCFILE%"
  ]
  }],
  "latex-workshop.view.pdf.viewer": "tab",
  "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"
  ],
}

有两个注意事项:在修改setting.json时应该注意不是覆盖,而是添加进去。因为原来很可能有其他的配置语句也在里面(比如我自己的有一些个性化的设置和leetcode插件的配置)。直接覆盖会损失惨重···

第二个注意事项:latex-workshop.latex.recipes暂时只能使用第一个(这个观点来自于https://www.meiwen.com.cn/subject/cejdrxtx.html)使我最终才豁然开朗,当然这是后话。

这个配置的问题在于,只会使用第一个recipe

{
    "name": "xelatex",
    "tools": [
        "xelatex"
    ]
  },

所以会导致什么问题呢?

参考文献导入的时候会产生一些坑(如何导入参考文献:https://blog.youkuaiyun.com/evergreeen/article/details/7710001

假设我们的核心文件是hello.tex,我们的参考文件是ref.bib,在hello.tex文末通过  \bibliography{ref}  来指明引用的文件叫做ref.bib。然后编译hello.tex,发现文章除了参考文献之外的其他内容都是正常的,唯独参考文献。这是因为只用了xelatex来编译hello.tex。而ref.bib也需要编译,通过bibtex。而直接在命令行里输入bibtex ref.bib会有问题报错说找不到ref.aux。本文件夹里只有hello.aux,因此只需要将ref.bib改名为hello.bib即可(在hello.tex中也需要将对应的 \bibliography{ref} 改为 \bibliography{hello}),然后先编译hello.tex(这个能在vscode里通过ctrl+s自动保存hello.tex进而自动编译)生成hello.aux,再通过命令行编译hello.bib生成hello.bbl,然后再编译hello.tex更新hello.aux,然后再编译hello.tex将其与参考文献(hello.bbl)真正结合起来。所以一共需要编译4次!

很麻烦!那么我们只需要对上述的三个recipe调换顺序即可,把第三个放到第一位置:

  "latex-workshop.latex.recipes": [
  {
    "name": "pdflatex -> bibtex -> pdflatex*2",
    "tools": [
        "pdflatex",
        "bibtex",
        "pdflatex",
        "pdflatex"
    ]
  }

  {
    "name": "xelatex",
    "tools": [
        "xelatex"
    ]
  },
 
  {
    "name": "latexmk",
    "tools": [
        "latexmk"
    ]
  },
  ],

这样就可以了通过一次单纯的ctrl+s自动顺序完成全部4次编译!而且也不必保证.bib文件名必须与.tex一致。缺点是每次都会编译4次,花费约7秒钟。如果只是单纯的一次编译仅需要不到3秒(pdflatex,xelatex,latexmk可以互换,个人感觉采用pdflatex比xelatex快,latexmk最慢)。

另一篇博客(https://blog.youkuaiyun.com/zxyhappiness/article/details/98639094)采用的是

{
  "latex-workshop.latex.recipes":[
      {
          "name": "xe->bib->xe->xe",
          "tools": [
              "xelatex",
              "bibtex",
              "xelatex",
              "xelatex"
          ]
      }
  ],

  "latex-workshop.latex.tools":[
    {
        // 编译工具和命令
        "name": "xelatex",
        "command": "xelatex",
        "args": [
            "-synctex=1",
            "-interaction=nonstopmode",
            "-file-line-error",
            "-pdf",
            "%DOCFILE%"
        ]
    },
    {
        "name": "pdflatex",
        "command": "pdflatex",
        "args": [
            "-synctex=1",
            "-interaction=nonstopmode",
            "-file-line-error",
            "%DOCFILE%"
        ]
    },
    {
        "name": "bibtex",
        "command": "bibtex",
        "args": [
            "%DOCFILE%"
        ]
    }
],

他没有这两项"latex-workshop.view.pdf.viewer" (用来指定pdf预览的工具,tab就是在vscode内部,也是默认方式,external是用采用第三方pdf阅读器打开),"latex-workshop.latex.clean.fileTypes"(指定清除的文件类型)。

就在我快写完这篇博客时我突然间看到这个窗口,其实是可以直接鼠标选择采用哪种recipe(组合)进行编译的。是我智障了orz。用脑子想想,保存时自动编译的功能当然选择第一个recipe因为它没得选,但是可以手动点击编译时是有图形界面可以选择的呀!

 

 

 

 

### 配置与使用 LaTeX #### 安装必要的软件扩展 为了能够在 VSCode 中顺利编写并编译 LaTeX 文档,需要先安装两个主要组件:LaTeX 发行版以及相应的 VSCode 扩展。 对于 LaTeX 发行版的选择,在 Windows 上推荐 MikTeX 或者 TeX Live;而在 Linux macOS 平台上则通常预装有 TeX Live,如果没有可以手动安装。这些发行版包含了编译 LaTeX 文件所需的各种工具链[^2]。 接着是在 VSCode 内部安装适合处理 LaTeX 的扩展程序。“LaTeX Workshop” 是一个广泛使用的选项,提供了丰富的特性来辅助日常写作工作流,包括语法高亮显示、自动补全等功能,并且能够很好地兼容不同操作系统下的操作习惯支持多种语言文字混排的需求[^1]。 #### 创建项目结构 当上述准备工作完成后,就可以开始创建新的 LaTeX 工程了。一般情况下会建立如下目录结构: - `main.tex` —— 主文档文件; - `.bib` 文件——用于管理参考文献列表; - 图片资源夹等其他可能需要用到的数据资料存放位置。 在主文档 (`main.tex`) 中加入特定命令以引入外部样式表或其他辅助性的宏包,例如通过 `\usepackage[numbers]{natbib}` 来加载 natbib 包以便更好地管理格式化引用项[^3]。 ```tex \documentclass{article} % 导言区配置... \begin{document} 这里是正文部分... \bibliographystyle{plain} % 设置参考文献风格 \bibliography{references} % 引入 .bib 文件作为参考文献源 \end{document} ``` #### 编辑器设置优化 为了让编辑体验更加流畅高效,可以在 VSCode 用户偏好设定里调整一些参数,比如启用实时预览模式让修改后的变化即时反映出来,或是自定义快捷键加快常用指令执行速度等等。此外还可以考虑利用 talkx 这样的第三方插件增强交互性,提供更便捷的功能如代码片段快速插入、在线翻译服务集成等。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值