LatexNote

Latex笔记

学习资源

安装配置

不同平台上使用的latex发行版本有所差异,常见的发行版包括TexLive和MacTex。

  • TexLive 适用于Windows和Unix平台
  • MacTeX 适用于MacOS平台
  • OverLeaf 一个在线的LaTex编辑器

我这里使用的是MacOS平台,故只能在MacTex下选择,而MacTex又有两个可以选择的版本。

  • MacTex,一个all-in-one的安装包,整个安装包大小超过4GB,涵盖了一系列的宏、语言配置、甚至一个简单的图形编辑界面。
  • BasicTex,一个精简浓缩的安装包,大小仅90M,需要自行配置latex编辑器,或者使用命令行操作。

根据我个人的偏好,选择使用BasicTex,编辑器配合VSCode和LaTex Workshop使用,颜值和极客风俱备!

由于国外下载网站实在太慢了,这里可以选择使用清华源镜像。也有人说可以通过brew来安装,但是教程有点老了,也可能是我用了中科大镜像的原因,brew里面搜不到basictex源,所以这里暂且按下不表。

官网下载BasicTex安装包后一路确认安装即可,值得注意的是,安装完成后,不会生成任何的app启动图标(MacTex会生成四五个冗杂的app启动图标)。通过以下命令检查是否安装完成!

1
2
3
latex -v
xetex -v
tlmgr --help

如果没有报 command not found 的错误,则安装成功。

有个值得梳理的点,由于BasicTex安装后“没有任何文件生成”,我们对BasicTex的安装位置、安装内容一无所知,这肯定是不行的!关于这一点,官网的 What Is Installed 有比较详细的介绍,我也在这上面花了不少心思,这里做个简单梳理。

安装程序执行完成后,所有的可执行文件都被放到了 /Library/TeX/texbin 目录下,并且将 /Library/TeX/texbin 添加到了 PATH 环境变量中。我找遍了所有能想到的配置文件路径,包括 ~/.zshrc, ~/.bashrc, ~/.bash_profile, /etc/zshrc, /etc/zprofile, /etc/bashrc,都没能找到 /Library/TeX/texbin 是怎么被添加到 PATH 环境变量中去的。

最后还是在官方文档里面找到的答案,安装程序自动完成了两个配置,分别位于 /etc/manpaths.d/TeX/etc/paths.d/TeX。BasicTex的环境变量就是通过 /etc/paths.d/TeX 来配置的。

Mac下的paths.d目录神奇用法

paths.d 的作用很简单,就是在里面创建一个文件,然后写上需要在全局命令行下用到的命令,直接配置一个目录即可。在 /etc/profile 下会有一个 path_helper 的工具,这个工具就是会读取 /etc/paths.d 目录下的文件中的路径,然后加载到环境变量 $PTAH 中去。

关于手动安装宏包

宏包的下载网址

这里有几个介绍可以参考:

个人实践案例:

安装完BasicTex之后发现果然自己“一贫如洗”,居然连个texdoc工具都没有,参考上面的文章自己安装了一下texdoc

1
tlmgr install texdoc

另一个选择 —— MiKTeX

对于mac平台来说,直接使用MacTex实在是太占用硬盘空间了,更重要的是,会安装一堆可能你一辈子都用不上的宏包(尤其是launch pad里那几个碍眼的软件),这是无法忍受的。但是使用BasicTex又会面临另外一个问题,那就是作为一个fresh bird,我根本不知道应该安装哪些宏包,一旦编译报错,甚至无法定位出错原因,另外,频繁安装宏包也是相当的浪费时间。

对此,这里其实还有另外一个选择 —— MikTeX。MikTeX最大的优势是可以根据实际需求,在缺少依赖的宏包时才进行相关宏包的安装。早期的MikTeX其实只支持windows和linux系统,近些年才推出了mac平台的版本。关于TexLive和MixTeX这两个发行版的差异可以参考下面的文章:

MikTeX默认安装目录:/Users/dogqizi/Library/Application\ Support/MiKTeX/texmfs,其下又包含config、data、install三个目录,而插件目录位于 install/tex/latex

踩坑实录

macOS latex 使用中文报错

我的latex文稿:

1
2
3
4
5
6
7
\documentclass{article}
\usepackage{ctex}
\begin{document}
``Hello world!" from \LaTeX.

你好,latex
\end{document}

报错信息

1
2
3
4
5
"resource": "/fontset/ctex-fontset-macnew.def",

"message": "Package fontspec: The font \"Kaiti SC\n\" cannot be found.\n",

"message": "Font \"Songti SC Light\" does not contain requested\n(fontspec)\tScript \"CJK\".\n",

解决方法

局部文档解决

先设置文档字体为nofonts,再手动指定系统中存在的字体名。

1
2
3
4
5
6
7
8
9
10
11
\documentclass[a4paper,nofonts]{article}

\usepackage{ctex}

\setCJKmainfont[BoldFont={STSongti-SC-Bold},ItalicFont={STSongti-SC-Light}]{STSongti-SC-Regular}

\begin{document}
``Hello world!" from \LaTeX.

你好,latex
\end{document}

系统全局解决

MiKTeX/texmfs/install/tex/latex/ctex/fontset/ctex-fontset-macnew.def 中对应的字体名字修改为与自己系统中的名字一致!

参考资料:

VSCode配置

安装插件 LaTex Workshop。这个博客里面对于各项配置的作用讲得比较详细:Visual Studio Code (vscode)配置LaTeX

Command+Shift+P 打开控制盘,输入 set json 搜索,选择 Preference: Open Settings (JSON),追加以下配置到现有配置的最外层大括号内。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
{
"latex-workshop.latex.tools": [
{
"name": "xelatex",
// 如果没有配置全局环境变量,command填具体的工具路径,比如/usr/local/tex/bin/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%"
]
}
],
"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"
]
}
],
"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.view.pdf.viewer": "tab",
"latex-workshop.latex.autoBuild.run": "never",
"latex-workshop.showContextMenu": true,
"latex-workshop.intellisense.package.enabled": true,
"latex-workshop.message.error.show" : false,
"latex-workshop.message.warning.show": false,
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",
}

快捷键:

  • option+command+B 生成PDF文档
  • option+command+V 预览PDF文档

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!