基础知识介绍
latex包含什么?
1.引擎
引擎的基本功能是解释TeX语法,把字排成行,把行排成页,涉及到断字、断行、分页等算法。
重要引擎 | 描述 |
---|---|
Tex | 大部分TeX相关的基础,其生成dvi文件,由其他程序转为pdf文件 |
pdfTeX | 将TeX代码直接编译成PDF文件 |
XeTeX | 支持 Unicode 编码和直接访问操作系统字体。 |
LuaTeX | 支持Unicode、系统字体和内嵌语言扩展,能直接输出PDF格式文件,也可以仍然输出 DVI 格式。 |
2.格式
TeX语言本身只有300个命令,一个简单的符号可能就需要多个命令来实现,可以将这些最基本的命令封装起来做个简写(宏)以实现特殊的目的。格式可以与不同的引擎相结合。
重要格式 | 描述 |
---|---|
Plain TeX | 最小最古老的宏集合 |
LaTeX | 更易于使用的宏集,最常见的一种格式。 |
ConTeXt | 另一种常见的格式。 |
3.宏包
一些辅助文件,在LaTeX中叫做packages,在LaTeX格式中,导言区的usepackage的作用就是引入各种宏包。宏包其实也是一堆基本的TeX命令的集合,只是其不够全,所以称之为宏包而不是格式。
4.发行版
一个完整的TeX需要最基本的TeX引擎、格式支持、各种辅助宏包、一些转换程序、GUI、编辑器、文档查看器等等。通过选择不同的组合就构成了不同的发行版。
重要发行版 | 描述 |
---|---|
TeX Live | 支持Linux,Windows,Mac OS。有一个团队在负责,每年都会更新一次 |
MiKTeX | 只支持Windows。由一个人开发,除非重大修改才更新。 |
CTeX | CTeX基于MiKTeX,并加入了中文的支持,只支持Windows。同时CTEX是一个网站,ctex是可以很好支持中文的宏包。 |
一个latex工程中包含哪些文件?
- tex文件:平时编写文章的文件
- cls文件:latex的格式文件,规定了tex源文件的排版格局,称为类文件(
class
)一般使用\documentclass{}
导入 - sty文件:宏包文件(
package
),一般使用\usepackage{}
导入 - bst文件 :参考文件的格式文件,一般使用
\bibliographystyle{}
导入 - bib文件:参考文献的库,一般使用
\bibliography{}
导入
%main.tex文件
%导入latex排版格局
\documentclass{A} % 使用A.cls定义的排版格局
\documentclass{article}% 使用默认格局
\usepackage{B} % 从B.sty文件中以及导入一些其他常用的宏文件,如amsmath、amssymb、amsthm等数学相关的宏文件
\begin{document}
XXX
XXX
XXX
% 正文结束
\bibliography{D} % 从D.bib文件中导入正文中引入文献的数据
\bibliographystyle{C} % 从C.bst文件中导入参考文献的格式文件C.bst
\end{document}
一个latex工程如何进行编译的?
第一步使用xelatex或者pdflatex编译main.tex文件,生成main.aux
、main.log
和main.pdf
文件。其中aux
是引用标记记录文件,用于再次编译时生成参考文献和超链接。此时的pdf
文件中没有包含参考文件,在正文中的引用后为[?]
。
第二步使用bibtex编译main.aux文件,生成main.bbl
和main.blg
文件。blg
为bibtex处理过程记录文件。
第三步使用xelatex或者pdflatex再次编译main.tex,更新main.aux
、main.log
和main.pdf
文件。此时的pdf
文件的末尾已经有了参考文献列表,但是在正文中的引用后仍然为[?]
。
第四步再次编译,同样更新main.aux
、main.log
和main.pdf
文件。并生成最终的pdf
文件,此时正文中的引用后已经标记好了引用文献的序号[1]
、[2]
等。
xelatex/pdflatex main.tex # 表示使用 latex, pdflatex 或 xelatex 编译,下同
bibtex main.aux
xelatex/pdflatex main.tex
xelatex/pdflatex main.tex
在VSCode编译latex工程
VSCode作为一款含有大量插件的编辑器,可以大大简化latex的编译过程。
VSCode具有一款专门用于latex的强大插件 latex workshop。安装完成后可以通过在setting的json文件中进行配置。
首先定义各个编译命令的参数:这里分别定义了pdflatex,xelatex,bibtex
"latex-workshop.latex.tools": [
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
]
},
{"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
}
]
然后配置latex的编译顺序:这里定义了两种顺序①xe->bib->xe->xe②pdflatex -> bibtex -> pdflatex*2
"latex-workshop.latex.recipes": [
{
"name": "pdflatex",
"tools": [
"pdflatex"
]
},
{
"name": "xelatex",
"tools": [
"xelatex"
]
},
{
"name": "xe->bib->xe->xe",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": ["pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
}
]
最后定义删除中间文件
"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"
]