1# @Time : 2020-12-28
2# @Language: Markdown
3# @Software: VS Code
4# @Author : Di Wang
5# @Email : [email protected]
因为要准备写大论文了,之前写 JACoW 论文都是直接拿template往里填充,对TeX语法也并不熟悉,决定稍微学习下,文章基于overleaf的教程和
<latex入门-简版>-刘海洋
。
基础概念
类似于HTML 和 CSS , tex
文件可以有两种格式定义:class
和style
,前者是针对一个特定文档类型,后者则主要是添加某种feature。
BibTeX
参考文献管理是个麻烦事。
BibTeX涉及两种格式:bst
和bib
。
bst
代表Bibliography Style
,和tex
文件的style
类似,定义了参考文献的格式,比如期刊名怎么缩写,作者名字是名在前还是姓在前等等。
bib
文件就是一个参考文献数据库文件,在一个bib
文件里放一堆reference就构成了一个数据库,然后需要在文字哪个部分用哪个就在tex
正文中用\cite{label}
命令去引用,其中label是自定义的某个文献的别名。不引用的话默认不会出现在PDF文件中,除非用了\nocite{label}
,表示“我没有在正文中引用这个文献,但依然要在文末的reference section里显示它”。
大致了解LaTeX的都知道,需要多次编译,过程如下。
1(xe/pdf)latex foo.tex # 表示使用 latex, pdflatex 或 xelatex 编译
2bibtex foo.aux
3(xe/pdf)latex foo.tex
4(xe/pdf)latex foo.tex
为什么需要四次编译?具体细节参考这篇
- LaTeX读取
tex
文件,找里面出现的cite
命令,然后创建一个aux
后缀的辅助文件,表示要引用某个label的文献,但此时还不知道是哪个文献。 - 由BibTex读取
aux
文件,去参考文献数据库里找名为label的文献,然后生成一个bbl
文件,bbl文件里就是latex格式的bibitem
列表。 - LaTeX这时候去读
bbl
文件,把文献列表在PDF中显示,然后更新aux
文件,建立label和文献编号的关系。 - 最后一步,再读取
aux
文件,把正文中引用部分的label也替换成编号。
bib
文件大概长这样:
1@book{adams1995hitchhiker,
2 title={The Hitchhiker's Guide to the Galaxy},
3 author={Adams, D.},
4 isbn={9781417642595},
5 url={http://books.google.com/books?id=W-xMPgAACAAJ},
6 year={1995},
7 publisher={San Val}
8}
而通过bibtex编译生成的bbl
文件长这样:
1\begin{thebibliography}{9} % Use for 1-9 references
2 \bibitem{SuperKEKB}
3 Y. Ohnishi et al.,
4 \textquotedblleft{Accelerator design at SuperKEKB}\textquotedblright,
5 \emph{Prog. Theor. Exp. Phys.}, 2013, 03A011.
6 ...
7 \end{thebibliography}
当然也可以直接在tex
文件里自己写bibitem
,不过写的多了估计就意识到为什么要发明BibTeX这个东西了。
基础语法
在前言(preamble)中添加一些设置值,然后\maketitle
,正文中的一些基础语法,斜体,加黑,下划线,插入图片表格,标签以及如何引用。
数学公式可以是inline mode
或者displayed mode
,后者可以添加公式编号。
1\documentclass[12pt, letterpaper, twoside]{article}
2\usepackage[utf8]{inputenc}
3\usepackage{graphicx}
4\graphicspath{ {images/} }
5
6\usepackage{amsmath}
7
8\title{First document}
9\author{Hubert Farnsworth \thanks{funded by the Overleaf team}}
10\date{February 2017}
11
12\begin{document}
13
14\maketitle
15\tableofcontents
16
17\begin{abstract}
18This is a simple paragraph at the beginning of the
19document. A brief introduction about the main subject.
20\end{abstract}
21
22We have now added a title, author and date to our first \LaTeX{} document!
23
24Some of the \textbf{greatest}
25discoveries in \underline{science}
26were made by \textbf{\textit{accident}}.
27
28\begin{figure}[h]
29 \centering
30 \includegraphics[width=0.25\textwidth]{mesh}
31 \caption{a nice plot}
32 \label{fig:mesh1}
33\end{figure}
34
35As you can see in the figure \ref{fig:mesh1}, the
36function grows near 0. Also, in the page \pageref{fig:mesh1}
37is the same example.
38
39\begin{itemize}
40 \item The individual entries are indicated with a black dot, a so-called bullet.
41 \item The text in the entries may be of any length.
42\end{itemize}
43
44\begin{enumerate}
45 \item This is the first entry in our list
46 \item The list numbers increase with each entry we add
47\end{enumerate}
48
49The mass-energy equivalence is described by the famous equation
50\[ E=mc^2 \]
51discovered in 1905 by Albert Einstein.
52In natural units ($c = 1$), the formula expresses the identity
53\begin{equation}
54E=m
55\end{equation}
56
57\begin{center}
58 \begin{tabular}{||c c c c||}
59 \hline
60 Col1 & Col2 & Col2 & Col3 \\ [0.5ex]
61 \hline\hline
62 1 & 6 & 87837 & 787 \\
63 \hline
64 2 & 7 & 78 & 5415 \\
65 \hline
66 3 & 545 & 778 & 7507 \\
67 \hline
68 4 & 545 & 18744 & 7560 \\
69 \hline
70 5 & 88 & 788 & 6344 \\ [1ex]
71 \hline
72\end{tabular}
73\end{center}
74
75\end{document}
对于分段:
10 \chapter{chapter}
21 \section{section}
32 \subsection{subsection}
43 \subsubsection{subsubsection}
54 \paragraph{paragraph}
65 \subparagraph{subparagraph}
对于特殊字符:
字符 | 功能 | 打印字符本身 |
---|---|---|
# | 宏参数 | \# |
$ | 数学公式 | $ |
% | 注释 | \% |
^ | 公式上标 | \^{} or \textasciicircum |
& | 表格中分列 | \& |
_ | 公式下标 | \_ |
{ } | processing block | \{ \} |
~ | 不可 | \textasciitilde or \~{} |
\ | 符号后接命令 | \textbackslash |
自定义命令:
对于\newcommand{\plusbinomial}[3][2]{(#2 + #3)^#1}
,[3]
代表总共三个参数,[2]
代表第一个参数的默认值。
1\newcommand{\plusbinomial}[3][2]{(#2 + #3)^#1}
2
3To save some time when writing too many expressions
4with exponents is by defining a new command to make simpler:
5
6\[ \plusbinomial{x}{y} \]
7
8And even the exponent can be changed
9
10\[ \plusbinomial[4]{y}{y} \]
自定义environment:
以下示例用了两种方法定义了带编号的environment
1%In the preamble
2---------------------------------
3%Numbered environment
4\newcounter{example}[section]
5\newenvironment{example}[1][]{\refstepcounter{example}\par\medskip
6 \noindent \textbf{Example~\theexample. #1} \rmfamily}{\medskip}
7
8
9%Numbered environment defined with Newtheorem
10\usepackage{amsmath}
11\newtheorem{SampleEnv}{Sample Environment}[section]
12--------------------------------------------------------------------
13
14
15\begin{example}
16User-defined numbered environment
17\end{example}
18
19\begin{SampleEnv}
20User-defined environment created with the \texttt{newtheorem} command.
21\end{SampleEnv}
自定义class
一个class文件的通常分为四个部分:
identification
定义了版本,class的名称为Thesis
,时间。
1\NeedsTeXFormat{LaTeX2e}[1996/12/01]
2\ProvidesClass{Thesis}
3 [2007/22/02 v1.0
4 LaTeX document class]
preliminary declarations
在这个部分定义新命令,引入继承的基础class,引入别的package,以及一些其他声明。
options
\DeclareOption
命令接受两个参数,第一个代表option,第二个代表如果接受这个option需要执行的代码。
1\DeclareOption{onecolumn}{\OptionNotUsed}
2\DeclareOption{green}{\renewcommand{\headlinecolor}{\color{green}}}
3\DeclareOption{red}{\renewcommand{\headlinecolor}{\color{slcolor}}}
4\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
5\ProcessOptions\relax
6\LoadClass[twocolumn]{article}
more declarations
其他的一些命令定义等。