ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Mac OS X + MacTex + VSCode构建Latex平台

2021-03-01 23:02:30  阅读:246  来源: 互联网

标签:Latex pdflatex name latex VSCode MacTex 编译 workshop xelatex


前言:

系统为mac OS High Sierra (10.13), 原本计划使用TexStudio作为编辑器,但是下载网站(http://texstudio.sourceforge.net/)提示TexStudio安装包适用于10.13以上系统,低版本系统需要从源文件构建或使用Homebrew安装。

 

后使用 brew install --cask texstudio 安装,安装完成后可以编译生成.pdf文件,但是点击构建并显示按钮后直接闪退,即无法使用内置pdf显示(即使更改build中配置依旧闪退,只能使用外置pdf软件,很难受)。最终选择直接删除TexStudio使用VSCode。

 

MacTex安装:

下载.pkg文件(文件较大,时间较久)进行安装,安装为MacTex2020版。2020版安装完成后只有两个软件。(网上教程大多为2020之前版本,有5个软件,三个在2020版本中取消,所以不必惊慌,一开始我以为我安装失败了)。TexShop为自带编辑外壳,可以用来简单验证一下Tex,或者简单点在终端使用指令 tex -version验证。

 

 

VSCode配置:

安装LaTeX Workshop插件。新建一个简单的.tex文件,打开所在文件夹,识别到tex文件左侧会出现tex栏。设置中打开settings.json(可以按F1,输入选择首选项:设置json)进行配置,可以直接copy下面的内容就可以运行了。

  1 {
  2     "latex-workshop.latex.autoBuild.run": "never",
  3     "latex-workshop.showContextMenu": true,
  4     "latex-workshop.intellisense.package.enabled": true,
  5     "latex-workshop.message.error.show": false,
  6     "latex-workshop.message.warning.show": false,
  7     "latex-workshop.latex.tools": [
  8         {
  9             "name": "xelatex",
 10             "command": "xelatex",
 11             "args": [
 12                 "-synctex=1",
 13                 "-interaction=nonstopmode",
 14                 "-file-line-error",
 15                 "%DOCFILE%"
 16             ]
 17         },
 18         {
 19             "name": "pdflatex",
 20             "command": "pdflatex",
 21             "args": [
 22                 "-synctex=1",
 23                 "-interaction=nonstopmode",
 24                 "-file-line-error",
 25                 "%DOCFILE%"
 26             ]
 27         },
 28         {
 29             "name": "latexmk",
 30             "command": "latexmk",
 31             "args": [
 32                 "-synctex=1",
 33                 "-interaction=nonstopmode",
 34                 "-file-line-error",
 35                 "-pdf",
 36                 "-outdir=%OUTDIR%",
 37                 "%DOCFILE%"
 38             ]
 39         },
 40         {
 41             "name": "bibtex",
 42             "command": "bibtex",
 43             "args": [
 44                 "%DOCFILE%"
 45             ]
 46         }
 47     ],
 48     "latex-workshop.latex.recipes": [
 49         {
 50             "name": "XeLaTeX",
 51             "tools": [
 52                 "xelatex"
 53             ]
 54         },
 55         {
 56             "name": "PDFLaTeX",
 57             "tools": [
 58                 "pdflatex"
 59             ]
 60         },
 61         {
 62             "name": "BibTeX",
 63             "tools": [
 64                 "bibtex"
 65             ]
 66         },
 67         {
 68             "name": "LaTeXmk",
 69             "tools": [
 70                 "latexmk"
 71             ]
 72         },
 73         {
 74             "name": "xelatex -> bibtex -> xelatex*2",
 75             "tools": [
 76                 "xelatex",
 77                 "bibtex",
 78                 "xelatex",
 79                 "xelatex"
 80             ]
 81         },
 82         {
 83             "name": "pdflatex -> bibtex -> pdflatex*2",
 84             "tools": [
 85                 "pdflatex",
 86                 "bibtex",
 87                 "pdflatex",
 88                 "pdflatex"
 89             ]
 90         },
 91     ],
 92     "latex-workshop.latex.clean.fileTypes": [
 93         "*.aux",
 94         "*.bbl",
 95         "*.blg",
 96         "*.idx",
 97         "*.ind",
 98         "*.lof",
 99         "*.lot",
100         "*.out",
101         "*.toc",
102         "*.acn",
103         "*.acr",
104         "*.alg",
105         "*.glg",
106         "*.glo",
107         "*.gls",
108         "*.ist",
109         "*.fls",
110         "*.log",
111         "*.fdb_latexmk"
112     ],
113     "latex-workshop.latex.autoClean.run": "onFailed",
114     "latex-workshop.latex.recipe.default": "lastUsed",
115     "latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",
116     "latex-workshop.view.pdf.viewer": "tab"
117 }

 

 效果如图。

 

ps:UI 设置页面和JSON设置页面均为设置页面,其功能是一样的。不同的是,UI 设置页面交互能力较强,但一些设置需要去寻找,比较麻烦;而JSON设置页面虽然相对 UI 而言不那么直观,但却可以对自己想要的功能直接进行代码编写,且代码设置可以直接克隆别人的代码到自己的编辑器中,从而直接完成相应设置,比较便捷。

 

附:setting.json详情

"latex-workshop.latex.autoBuild.run": "never"

设置何时使用默认的(第一个)编译链自动构建 LaTeX 项目,即什么时候自动进行代码的编译。有三个选项:
1. onFileChange:在检测任何依赖项中的文件更改(甚至被其他应用程序修改)时构建项目,即当检测到代码被更改时就自动编译tex文件;
2. onSave : 当代码被保存时自动编译文件;
3. never: 从不自动编译,即需编写者手动编译文档
"latex-workshop.showContextMenu": true

启用上下文LaTeX菜单。此菜单默认状态下停用,即变量设置为false,因为它可以通过新的 LaTeX 标记使用(新的 LaTeX 标记能够编译文档,将在下文提及)。
只需将此变量设置为true即可恢复菜单。即此命令设置是否将编译文档的选项出现在鼠标右键的菜单中。
设置为true时,菜单中多了两个选项,其中多出来的第一个选项为进行tex文件的编译,而第二个选项为进行正向同步,即从代码定位到编译出来的 pdf 文件相应位置。
"latex-workshop.intellisense.package.enabled": true

设置为true,则该拓展能够从使用的宏包中自动提取命令和环境,从而补全正在编写的代码。
"latex-workshop.message.error.show"  : false,
"latex-workshop.message.warning.show": false

这两个命令是设置当文档编译错误时是否弹出显示出错和警告的弹窗。因为这些错误和警告信息能够从终端中获取,且弹窗弹出比较烦人,故设置均设置为false。
"latex-workshop.latex.tools": [
        {
            "name": "xelatex",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOCFILE%"
            ]
        },
        {
            "name": "pdflatex",
            "command": "pdflatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOCFILE%"
            ]
        },
        {
            "name": "latexmk",
            "command": "latexmk",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-pdf",
                "-outdir=%OUTDIR%",
                "%DOCFILE%"
            ]
        },
        {
            "name": "bibtex",
            "command": "bibtex",
            "args": [
                "%DOCFILE%"
            ]
        }
    ]
这些代码是定义在下文 recipes 编译链中被使用的编译命令,此处为默认配置,不需要进行更改。其中的name为这些命令的标签,用作下文 recipes 的引用;而command为在该拓展中的编译方式。

可以更改的代码为,将编译方式: pdflatex 、 xelatex 和 latexmk 中的%DOCFILE更改为%DOC。%DOCFILE表明编译器访问没有扩展名的根文件名,而%DOC表明编译器访问的是没有扩展名的根文件完整路径。这就意味着,使用%DOCFILE可以将文件所在路径设置为中文,但笔者不建议这么做,因为毕竟涉及到代码,当其余编译器引用时该 tex 文件仍需要根文件完整路径,且需要为英文路径
"latex-workshop.latex.recipes": [
        {
            "name": "XeLaTeX",
            "tools": [
                "xelatex"
            ]
        },
        {
            "name": "PDFLaTeX",
            "tools": [
                "pdflatex"
            ]
        },
        {
            "name": "BibTeX",
            "tools": [
                "bibtex"
            ]
        },
        {
            "name": "LaTeXmk",
            "tools": [
                "latexmk"
            ]
        },
        {
            "name": "xelatex -> bibtex -> xelatex*2",
            "tools": [
                "xelatex",
                "bibtex",
                "xelatex",
                "xelatex"
            ]
        },
        {
            "name": "pdflatex -> bibtex -> pdflatex*2",
            "tools": [
                "pdflatex",
                "bibtex",
                "pdflatex",
                "pdflatex"
            ]
        }
    ]
此串代码是对编译链进行定义,其中name是标签,也就是出现在工具栏中的链名称;tool是name标签所对应的编译顺序,其内部编译命令来自上文latex-workshop.latex.recipes中内容。

ps:

PDFLaTeX 编译模式与 XeLaTeX 区别如下:

1. PDFLaTeX 使用的是TeX的标准字体,所以生成PDF时,会将所有的非 TeX 标准字体进行替换,其生成的 PDF 文件默认嵌入所有字体;而使用 XeLaTeX 编译,如果说论文中有很多图片或者其他元素没有嵌入字体的话,生成的 PDF 文件也会有些字体没有嵌入。

2. XeLaTeX 对应的 XeTeX 对字体的支持更好,允许用户使用操作系统字体来代替 TeX 的标准字体,而且对非拉丁字体的支持更好。

3. PDFLaTeX 进行编译的速度比 XeLaTeX 速度快。
"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"
    ]
这串命令则是设置编译完成后要清除掉的辅助文件类型,若无特殊需求,无需进行更改。
"latex-workshop.latex.autoClean.run": "onFailed"
这条命令是设置什么时候对上文设置的辅助文件进行清除。其变量有:
1. onBuilt : 无论是否编译成功,都选择清除辅助文件;
2. onFailed : 当编译失败时,清除辅助文件;
ever : 无论何时,都不清除辅助文件。
由于 tex 文档编译有时需要用到辅助文件,比如编译目录和编译参考文献时,如果使用onBuilt命令,则会导致编译不出完整结果甚至编译失败;而有时候将 tex 文件修改后进行编译时,可能会导致 pdf 文件没有正常更新的情况,这个时候可能就是由于辅助文件没有进行及时更新的缘故,需要清除辅助文件了,而never命令做不到这一点;故而笔者使用了onFailed,同时解决了上述两个问题。
"latex-workshop.latex.recipe.default": "lastUsed"该命令的作用为设置 vscode 编译 tex 文档时的默认编译链。有两个变量: 1. first : 使用latex-workshop.latex.recipes中的第一条编译链,故而您可以根据自己的需要更改编译链顺序; 2. lastUsed : 使用最近一次编译所用的编译链。
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click"
用于反向同步(即从编译出的 pdf 文件指定位置跳转到 tex 文件中相应代码所在位置)的内部查看器的快捷键绑定。变量有两种:

1. ctrl-click : 为默认选项,使用Ctrl/cmd+鼠标左键单击

2. double-click : 使用鼠标左键双击

配置文件和附录参考:https://zhuanlan.zhihu.com/p/166523064

标签:Latex,pdflatex,name,latex,VSCode,MacTex,编译,workshop,xelatex
来源: https://www.cnblogs.com/jiayisong/p/14466520.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有