Visual Studio Code 编辑 LaTex 入门 (一)

刚装了电脑,这几天一直在整理资料还有倒腾软件。今天打开Word突然觉得它很难用,因为它经常出现格式混乱的情况。这时候脑海里浮出Latex,于是上知乎搜索了一下,发现了VS Code这个软件,第一眼就被软件的高颜值吸引了。于是打算好好研究一下。这篇文章就是学习笔记了。

一、VS Code 说明

VS Code 这款软件是微软家做的开源免费软件,属于全平台集成开发软件。也就是说它支持非常多编程语言,可以用作程序编辑器。不同于Notpad++ 这款轻量级编辑器,VSCode还可以编译软件,一句话,就是个IDE.

虽然它的功能如此强大,可以编译运行程序。界面也很黑科技,看上去就是很炫酷的编程界面,也支持智能代码提示。但是我不不用它编程。因为我是设计师又不是程序员...我能用到的编程方面的需求,还是用更强大的IDE,比如说Java用Eclipse或者IDEA,Android用AS,其他的用Qt。我的电脑配置还可以所以大型IDE打开速度也很快,就不用这种不健全的IDE干活。

这个软件,主要还是用来写Markdown语言还有学习LaTex。我认为这么漂亮的界面,不用来写字有点浪费。

一些常用操作:

  • 按F1打开命令行
  • 使用打开文件夹功能打开文档储存区
  • 在设置->首选项里面修改json文件来修改配置,每一行以,结尾,最后一行不要写,
  • 输入install extensions或者按左边最下功能键来查看已经安装的插件
  • ctrl+x可以删除当前行

这里有一个人喜欢折腾VSCode:
VS Code 折腾记

想要了解更多可以看这里:
Visual Studio Code 官方文档

二、Latex 环境配置

工欲善其事必先利其器,开发之前先配置环境,配置需要以下工具:

  • LaTeX 环境
  • VS Code 编辑器
  • LaTex Workshop 编辑环境
  • LaTex language support ,VS Code下的语言支持

先下载VSCode,然后在软件内安装支持插件LaTex Workshop和LaTex language support之后我们就可以配置开发环境了

LaTex 环境

使用latex首先就要抛出word里面那种一篇文章就是一个文件的思想。我们可以把它看成一个网页或者一个程序项目更加合适,所以它也有编译的环节。一般来说latex基本流程就是:Latex->Bibtex->Latext->Latex。

  1. 第一步Latex编译,可以获得.aux文件、.dvi文件、.log文件以及.gz文件;

  2. 第二步Bibtex编译,可以获得.blg(性能监视器文件)和.bbl文件;

  3. 第三步Latex编译,获得新的.aux文件、.dvi文件、.log文件以及.gz文件;

  4. 第四步再次Latex编译。

所以我们需要latex编译器。目前有四种编译器可以选择xelatex、pdflatex、latexmk以及make,大致区别就是

PDFLATEX 不能处理常见的 EPS 图形,需要先⽤ epstopdf 将其转化成 PDF。不过 PDFLATEX 增加了对 png,jpg 等格式的⽀持,⽐较⽅便。TEXLive ⾃从 2010 版本起⾃动调⽤epstopdf 将 EPS 图形转化为 PDF。
latexmk 命令⽀持全⾃动⽣成 LATEX 编写的⽂档,并且⽀持使⽤不同的⼯具链来进⾏⽣成,它
会⾃动运⾏多次⼯具直到交叉引⽤都被解决。

上文中出现了TEXLive,这是一个开发套装,专门用于编写Latex文档,就像word,使用它就不用配置,直接开始开发就好了。同类的还有

  • TeX Live
  • MiKTex
  • CTeX

详细内容参看 一份其实很短的 LaTeX 入门文档,第 11 节:TeX 家族。

根据LaTex Workshop的说明

Requirements

LaTeX distribution in system PATH. For example, TeX Live.
Please note MikTeX does not ship with SyncTeX. See this link for a possible solution.
Optional: Set your LaTeX toolchain (LaTeX Workshop should just work out of the box for users with latexmk installed).

我们下载CTex套装来满足这个需求:
下载地址

下载之后参考Specter119的做法来设置Toolchain

配置VSCode为LaTeX集成开发环境(IDE) - 初级版

"latex-workshop.latex.toolchain": [
        {
            "command": "",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-shell-escape",
                "%DOC%"
            ]
        },
        {
            "command": "bibtex",
            "args": [
                "%DOCFILE%"
            ]
        },
        {
            "command": "",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-shell-escape",
                "%DOC%"
            ]
        },
        {
            "command": "",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "-shell-escape",
                "%DOC%"
            ]
        }],

这里使用了Magic comments的方法设置变量
如果在Latex文档最开始加上

% !TEX program = xelatex

这是使用xelatex > bibtex > xelatex > xelatex过程编译。如果不加则默认使用latexmk的默认设置pdflatex代替。

至此,环境就配置好了
更多介绍可以看这篇文章:VS Code 与 LaTeX 真乃天作之合

用户代码

之前以及说明,经过这样的配置之后我们使用pdflatex编译,它不能识别常用的EPS图像,但可以直接识别png和jpg。所以我们可以通过代码直接插入jpg。但是一份文档经常要插入图片,有没有快捷的方法?这时候就要介绍用户代码功能了。

VSCode为了避免同一段代码在不同语言中使用产生矛盾,它对每种语言设置了不同的json配置语言,因此就不会混淆了。
我们在文件->首选项->用户代码片段中选择LaTeX,进入之后把这段代码复制进去

"Input a figure": {
        "prefix": "figure",
        "body": [
            "\\begin{figure}[htp]",
            "\t\\centering",
            "\t\\includegraphics[width=13cm]{$1}",
            "\t\\caption{$2}",
            "\t\\label{fig:$3}",
            "\\end{figure}",
            "$0"
        ],
        "description": "Input a figure"
    }

注意: 使用之前要先声明\usepackage{graphicx}
然后我们就可以f1-insert snippet-figure来插入代码段。通过按tab键在不同值之间切换

三、LaTeX 入门语法

简介

先用一段简单代码演示

\documentclass{article}
\begin{document}
hello,world
\end{document}
实例

网上还有一些人制作了毕业论文的模板上传到Github,可以下载学习:

VSCode页面

这里主要参考的教程是以下内容,多谢分享:

  1. 一份其实很短的 LaTeX 入门文档
  2. LaTeX新人教程,30分钟从完全陌生到基本入门

特别说明:作为个人学习笔记,本文内容不严格说明出处,大部分内容来自文章中出现过的链接文章。

第一 简单标签介绍

因为一个.tex文件在预览的时候会执行一系列操作,产生同名的.aux .bbl .bbg .log .pdf .synctex.gz一共7个文件,所以建议对不同tex建立不同文件夹
VSCode 支持英文单词记忆,可惜不支持汉字记忆
LaTeX 有点像是升级版的Markdown,有些规则都是类似的。相比之下,它多了一个模板的概念

以下是对于LaTeX的语法说明


%——注释符号
\\——换行并到段落首格
双换行——换行并到段落缩进首格
$\frac{a}{b}$——b分之a , 需要导入数学包
  • \documentclass{article}选择article这个类作为文档的模板,它规定了格式
  • \title{xxxx} 应用xxxx作为title格式
  • \begin{document} 正文
    • \maketitle 制作封面
    • 直接输入正文内容 后加%注释内容
    • section{一级标题1的内容} + 标题下的正文内容
    • subsection{二级标题1.1的内容} + 标题下的正文内容
    • subsunsection{三级标题1.1.1的内容} + 标题下的正文内容
      • 以上内容出现第二次就数字加1 ,类似i++的用法
    • paragraph{段落加粗内容}+之后的正文
    • subparagraph{段落加粗内容}+之后的正文 相比上一个要缩进一级
  • \end{document} 结束

在非封面(不使用\maketitle 时候 可以用\tableofcontents制作目录)

  • \documentclass{article}选择article这个类作为文档的风格
  • \usepackage{amsmath} 使用数学工具包,这里不详细讲数学工具包,因为不常用。
  • \begin{document} 正文
    • \tableofcontents 将下文做成目录Contents
  • \end{document} 结束

以下是表格的简单运用

\begin{center}          %设置表格居中
\begin{tabular}{|c|c|}  %表格标签
\hline                  %显示横线
a & b \\                %a在(1,1)b在(1,2)
\hline                  %隐藏横线
c & d\\                 %c在(2,1)d在(2,2)
\hline                  %显示横线
\end{tabular}
\end{center}

第二 对第一的Tips

  1. 中文支持:把开头的\documentclass{atricle}换成\documentclass{ctexart}会有更好的中文支持
  2. 宏包:\package{}就是在调用宏包,可以理解为工具箱。
    每一个宏包里都定义了一些专门的命令,通过这些命令可以实现对于一类对象(如数学公式等)的
    统一排版(如字号字形),或用来实现一些功能(如插入图片或制作复杂表格)。

通常在\documentclass之后,在\begin{document}之前,将文章所需要涉及的宏包都罗列上。
对于新人而言比较常用的宏包有

  • 编辑数学公式的宏包:\usepackage{amsmath}和 \usepackage{amssymb}
  • 编辑数学定理和证明过程的宏包:\usepackage{amsthm}
  • 插入图片的宏包:\usepackage{graphicx}
  • 复杂表格的宏包:\usepackage{multirow}
  1. 更高级的应用:参考文献可以搜bibtex,制作幻灯片可以搜beamer。

第三 正式入门

这是下一次的内容哦

四、后记

起因是搜索LaTex软件被VSCode漂亮的界面吸引,没想到一下子扎进去这么多,顺学习了Markdown和LaTex。其实要是说方便的话,用typora(其实我不怎么喜欢这种所见即所得的方式,虽然看上去这样很简单,但是还是觉得不舒服,担心把排版搞乱了。相比之下还是喜欢分屏显示,左边代码一样黑底白字有高亮显示,右边是白底黑字排好版的文稿,这样左边安心输入内容,右边就自动转化过去了感觉会灵性很多)写markdown,用CTeX写LaTex就可以了。下载两个软件就直接用,很简单,不用倒腾配置VSCode。但是我不想装那么多软件,能用一个软件搞定所有文本输入问题这样才优雅。另外,如果事情变得那么简单,学习Markdown或者LaTex的热情就不会那么高了,可能软件下载之后看几眼文档就丢一边了。

反而是在这样的一点点倒腾过程中,对这些语言的了解一点点加深。从一个个小的成就感中巩固了知识,这个过程虽然慢一点,但是有效。对于我这种不聪明的人来说,可能快速学习就是个伪命题。

这篇文档也是用Markdown写的,写完感觉Markdown的确很好用。按照我用Word的方法,一般就是不管格式先把内容记下来,最后再调整格式。但是这样排版不好看写起来就很难受。用Markdown,左边写内容的同时右边就是漂亮的格式,也不用担心把格式搞乱了,还是很舒服的。所以我又把最近的任务用Markdown整理了一下,这里配合的是Markdown All in One这个插件

推荐阅读更多精彩内容