在Mac上用VSCode敲LaTeX
在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。有两种安装方法:
- MacTeX官网
- homebrew安装。
brew cask install basictex
安装好之后应用程序folder会出现TeX文件夹:
- 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,再编译就成功了。