latex知识总结


基础知识介绍

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.auxmain.logmain.pdf文件。其中aux是引用标记记录文件,用于再次编译时生成参考文献和超链接。此时的pdf文件中没有包含参考文件,在正文中的引用后为[?]

第二步使用bibtex编译main.aux文件,生成main.bblmain.blg文件。blg为bibtex处理过程记录文件。

第三步使用xelatex或者pdflatex再次编译main.tex,更新main.auxmain.logmain.pdf文件。此时的pdf文件的末尾已经有了参考文献列表,但是在正文中的引用后仍然为[?]

第四步再次编译,同样更新main.auxmain.logmain.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"
]

文章作者: sdj
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 sdj !
  目录