文章目录
l a t e x latex latex
记录有用的 l a t e x latex latex文档
如果要使用 l a t e x latex latex,首先要装上Tex的发行版,比如在windows或Linux或Mac上安装 T e x L i v e Tex Live TexLive,windows还可选择安装另外的发行版 M i K T e x MiKTex MiKTex[^1],mac上还可以安装 M a c T e x MacTex MacTex
[^1]MiKTex是另外一个Tex发行版,注重Minimal as possible, Just enough Tex。不过建议安装TexLive发行版。
TexLive文档
TexWorks是Tex引擎前端,安装上发行版后都会自带安装上TexWorks
TeX \TeX TEX历史
1977年 Knuth教授构思了 TeX \TeX TEX的排版系统。 TeX \TeX TEX生成的文件为DVI(device independent file)文件,这种文件格式是为了适配不同的输出设备 [ 1 ] ^{[1]} [1]。同时Knuth还开发了METAFONT字体生成程序 [ 2 ] ^{[2]} [2]。由Kunth设计调用 TeX \TeX TEX的一组命令集来被称为 p l a i n TeX plain \TeX plainTEX,但是这个命令集过于复杂 [ 3 ] ^{[3]} [3]。
1984年 Lamport给 TeX \TeX TEX编写了一组自定义命令宏包(package),并命名 LaTeX \LaTeX LATEX.生成的文件为DVI文件 [ 2 ] ^{[2]} [2]。
1993年 Knuth宣布不再对 TeX \TeX TEX和METAFONT进行更新,两个软件版本号分别停留在3.141592653和2.718281(分别是 π \pi π和e的近似值) [ 2 ] ^{[2]} [2]。
1998年 p d f TeX / p d f LaTeX pdf\TeX/pdf\LaTeX pdfTEX/pdfLATEX开发出来,可以直接将源文件编译成PDF格式文件 [ 2 ] ^{[2]} [2]。
2004年 X e TeX / X e LaTeX Xe\TeX/Xe\LaTeX XeTEX/XeLATEX发布,可以将源文件编译成DVI格式后,转换为PDF格式文件输出 [ 2 ] ^{[2]} [2]。
2010年 L u a TeX / L u a LaTeX Lua\TeX/Lua\LaTeX LuaTEX/LuaLATEX发布,是对 p d f TeX / p d f LaTeX pdf\TeX/pdf\LaTeX pdfTEX/pdfLATEX的扩展,内置Lua脚本语言,可在源文件中进行编程 [ 2 ] ^{[2]} [2]。
[1]http://www.tug.org/TUGboat/Articles/tb24-2/tb77waud-what.pdf
[2]胡伟.
LaTeX
2
e
\LaTeX2e
LATEX2e完全学习手册[M].
[3]https://ctan.org/tex
l a t e x latex latex
- A brief history of LATEX
对于latex的历史介绍,对于latex之前的印刷术讲了不少,latex涉及也就1页而已。 - recommend reference
对于latex的一些推荐的学习文档,里面有很多推荐的文档链接,一应俱全,在下面也会涉及到一部分。 - The Not-So Short Guide to LATEX 2ε
最权威的一份文档,读完差不多就了解了Tex所有部分,还有中文版本 - 一份其实很短的 LaTeX 入门文档
算是开始入门时我看到最简单易懂的文档了
l a t e x 2 e latex2e latex2e
对于 l a t e x 2 e latex2e latex2e的简介latex2e for author,包括
- l a t e x 2 e latex2e latex2e和 l a t e x latex latex的简单区别
- l a t e x 2 e latex2e latex2e加入的新的特性
latex2e是将以前带有不同扩展的 l a t e x latex latex集合在一起的项目。
另一个非官方的文档也非常详细,LATEX2e: An unofficial reference manual
不同的名称
xelatex支持UTF-8编码,这样就不需要使用奇怪的其他宏包就可以进行中英文混排。
下面为参考文档中的内容
引擎 排版引擎,编译源代码并生成文档
格式 定义了一组命令的代码集
编译命令 实际调用引擎按照格式生成文档的命令
引擎 | 格式 | 命令 |
---|---|---|
Tex | tex | |
pdfTex | pdftex | pdfLatex |
XeTex | xetex | xeLatex |
LuaTex | luatex | luaLatex |
尽量使用 X e TeX Xe\TeX XeTEX进行编译,带来的好处包括
- 支持更多的语言
- 支持插入的位图格式比 P d f TeX Pdf\TeX PdfTEX多一个bmp
Beamer
pdfPages
在Beamer
中类似\includepdf
的命令只能在frame
之外工作,而且需要设置背景为空,否则插入的pdf将会被背景覆盖。
\setbeamercolor{background canvas}{bg=}
\includepdf[pages={1-5}]{peTimeCoeff.pdf}
graphicx
cannot determine size of graphic
错误原因有很多,下面是我遇到的问题
编译时我用的是latexmk
命令行工具,使用xelatex
引擎
latexmk --xelatex final.tex
很多地方回答说要用pdflatex
,实际上我的原因在于图片命名格式中包含了两个.
号,似乎graphicx
解析文件是从前向后解析(不确定),删掉一个点号即可.
另外我在stackoverflow上发现可以通过{final.1}.png的方式解决这个问题
- 支持的图片格式pdf,png
latex支持的图片格式不多,我将网站上一张webp类型的文件保存成png文件后,发现latex无法识别该webp文件,用dwebp src.webp -o dst.png
转换成png图片解决了这个问题
table
在表格环境中无法正常使用footnote,手动调整比如使用\footnotemark,\footnotetext时,脚注会出现在页面底部,加入minipage后会在表格下出现默认的横线。此处提供另外一种方式,使用threeparttable
\usepackage{threeparttable}
\begin{threeparttable}
\centering
%\resizebox{\textwidth}{16mm}{
\begin{tabular}{cccccccc}
\hline
& CR50\% & CR40\% & CR30\% & CR20\% & CR15\% & CR10\% & CR5\% \\ \hline
CPE & 14.9 & 12.0 & 8.8 & 5.8 & 4.4 & 2.9 & 1.5 \\
CPE+SPE\tnote{a} & 25.8 & 20.7 & 15.7 & 10.1 & 7.6 & 5.0 & 2.6 \\
CPE+SPE\tnote{b} & 38.8 & 30.7 & 23.2 & 15.1 & 11.4 & 7.5 & 3.9 \\
\hline
\end{tabular}
\begin{tablenotes}
\item[a]{This footnote shows what footnote symbols to use.}
\item[b]{This footnote shows the text turning over when a long footnote is added.}
\end{tablenotes}
\end{threeparttable}
效果:
cls命令
参考
\newcommand
定义新的命令[]
内代表参数个数,使用#1,#2
索引参数
字体大小查看
如果想要查看或者使用字体大小作为变量,可以使用\f@size
,比如如果想要输出字体大小使用下面的代码加入正文
\makeatletter
\show\f@size
\show\f@family
\makeatother
\makeatletter
和\makeatother
会使得@
这个字符能够不被latex误解,\f@size
和\f@family
为字体大小和种类,编译过程中会暂停在对应位置,回车即可接着运行。
siunitx
这个包可以实现数值和单位之间的空格,默认宽度是number-unit-product \,
patchcmd
参考
\patchcmd
可以替换原本命令中的某些部分
\pretocmd{<command>}{<code>}{<success>}{<failure>}
\apptocmd{<command>}{<code>}{<success>}{<failure>}
\patchcmd{<command>}{<code to replace>}{<code>}{<success>}{<failure>}