在Mac上用VSCode敲LaTeX

一开始我是使用内网搭建的shareLaTeX,如果状态好的时候也可以用这个来写完一篇论文(第一篇论文就是在shareLaTeX上面完成的),但是因为实验室网络以及服务器的不稳定,我觉得现在得放弃用shareLaTeX来编写论文了。上次就因为运维sharelatex的人在赶作业= =也不好意思麻烦别人来维护,差点就丢失了论文数据,还好最后重新搭一遍找到了我的论文。

既然科研要深入,还是一次性配置好这个LaTeX,免得以后再来做这种琐碎的小事。

电脑环境

Mac OS Mojave版本10.14.3 VS code版本1.30.2

安装LaTeX

LaTeX安装教程特别多,而且安装文件特别大,MacTex整套装下来有3.42GB,MacTeX包含了一些GUI界面,有另一种BasicTeX不包括GUI的,仅有70MB+,有兴趣的可以尝试。为避免不必要的麻烦,我还是选择安装MacTeX。有两种安装方法:

  brew cask install basictex

安装好之后应用程序folder会出现TeX文件夹: tex-folder tex-folder-content

  • BibDesk 是用来管理参考文献的,这个对于第一次写论文的人来说是一个大项目,但是一旦做完了以后引用文献就很方便了。
  • TeXShop 是可以用来编辑LaTeX
  • TeX Live Utility是管理LaTeX宏包的GUI界面

在VScode中配置LaTeX

在VSCode中点选左侧扩展按钮,在展开的扩展栏顶端搜索 LaTeX Workshop,搜到后点击安装。(该扩展是当前编译 LaTeX 的全部依赖,微软官方的LaTeX Language Support已经停止开发。)

重启vscode,然后,打开vscode的配置界面(快捷键cmd+,),需要修改下面两项配置。

  • latex-workshop.latex.tools配置中,增加xelatex项,具体如下。这一项的作用是在工具集中定义xelatex项,以便下一项配置能找到
  • latex-workshop.latex.recipes配置中,将第一项的latexmk改为xelatex。这里定义的是编译时调用的工具顺序,默认第一个为latexmk,因为我们要支持中文,所以替换为xelatex。
{
    "latex-workshop.latex.tools": [
        {
            "name": "xelatex",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "%DOC%"
            ]
        },
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "%DOC%"
            ]
        },
        {
            "name": "pdflatex",
            "command": "pdflatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOC%"
            ]
        },
        {
            "name": "bibtex",
            "command": "bibtex",
            "args": [
                "%DOCFILE%"
            ]
        }
    ],
    "latex-workshop.latex.recipes": [
        {
              "name": "xelatex -> bibtex -> xelatex*2", //如果带有BibTeX,要编译三次
              "tools": [
                  "xelatex",
                  "bibtex",
                  "xelatex"
              ]
          },
        {
            "name": "pdflatex -> bibtex -> pdflatex*2",
            "tools": [
                "pdflatex",
                "bibtex",
                "pdflatex",
                "pdflatex"
            ]
        }
    ]
}

安装宏包

在配置完VScode之后,还需要另外装宏包来支持编译。用tlmgr管理比较方便.

tlmgr install 宏包

后记

配置问题

在安装的过程中,一直卡在了setting.json的配置上面,网上有多种配置教程。官网有一个推荐的override setting,但是使用那个后会出现以下错误:

logger[4155]    This is pdfTeX, Version 3.1415926-1.40.11 (TeX Live 2010)
logger[4155]    restricted \write18 enabled.
logger[4155]    entering extended mode
logger[4155]    ! I can't write on file `test.log'.
logger[4155]    (Press Enter to retry, or Control-D to exit; default file extension is `.log')
logger[4155]    Please type another transcript file name
logger[4155]    ! Emergency stop

这个错误大致意思是没有写入权限。但是我在文件夹单独编译.tex文件又不会报出这种错误,所以应该是要定义好正确的写入路径,和原.tex在同一目录下。在tools的args参数中要定义好%DOC%,马上就成功了。

字体

我之前是采用了IEEEtran的模版,但是编译出来字体一直不正确,会报出下面的错误:

LaTeX Font Warning: Font shape `TU/ptm/m/n' undefined
(Font)              using `TU/lmr/m/n' instead on input line 503.

xelatex不支持里面的font,难怪看起来特别丑= =

解决方法是在/documentclass[conference]{IEEEtran}后面加上\usepackage[OT1]{fontenc} ,这个包可以补充font,再编译就成功了。

ref:

  1. Writing LaTeX Documents In Visual Studio Code With LaTeX Workshop

  2. 使用VSCode编写LaTeX