本文修改自LaTeX新人教程,30分钟从完全陌生到基本入门。由于无法找到原文章,于是引用了一片引用率最高的博文,侵删。
我在初接触LaTeX时,翻得到了这篇文章,跟着代码看实例,很容易猜出代码的意思,速成很快,比较推荐。因此在这里引用,并对文章进行了一部分的修改。适合有一定编程基础的同学迅速入门。
其他LaTeX教程攻略,我个人推荐是在看完这一篇之后,再随意当字典或百科全书来查阅。推荐书籍:《LaTeX 入门》--刘海洋
================================
0. 前言
对于真心渴望迅速上手LaTeX的人,前言部分可以跳过不看。(文末有原前言。)
我修改这一篇教程的动机,正是因为网络上能够找到的简要速成的LaTeX教程仅仅有一篇,就是我现在引用的这一篇。这一篇文章的确十分的棒,我在初学的时候也是看这一篇才入门的。但是它有一个问题是,它是2013年写出来的,主要是运用WinEdt+MikTeX进行的。然而我们数学建模课程教学时推荐的是使用TeXStudio套装,而且我们课程对代码、公式、图片、表格的要求更强。因此,我在原来的基础上,增加了图片、代码块、三线表的详细教程并略微修改了公式部分的内容。以教会新人上手的基础上加入了数模论文所需要的内容,确保能够在40分钟内跟着这个教程走完全步骤就可以基本算是“玩转LaTeX”了。
由于我的疏忽,忘了增添代码块部分的教程,现已补上。
由于水平有限、编写时间仓促,文中难免会有一些错误或不准确的地方,恳请读者批评指正。
===============================
下面是教程正文。(正文最后增添了附录)
1. LaTeX软件的安装和使用
方法A(推荐):在 TeXlive 或是 TeXStudio 的官网下载相关套装。
方法B(程序员推荐):在安装好 TeXlive 套装后,VSCode 下载相关插件,并配置自己喜欢的操作界面。我使用的就是这种方式,界面清爽、操作方便、排错简单,但初学者不推荐。
(哈哈这一部分当然不包含在标题的40分钟里。)
2. 第一个文档
打开TexStudio,建立新文档,将以下内容复制进入文档中,保存,保存类型选择为UTF-8。
\documentclass{article}
\begin{document}
hello, world
\end{document}
在编译下拉菜单中选择pdfLaTeX,并点击编译(一个类似于播放的标准,一般在左上角)。
如果顺利的话,我们就可以顺利生成出第一个pdf文件,点击工具栏中的放大镜按钮就可以快速打开生成的pdf文件。
3. 标题、作者和注释
建立一个新文档,将以下内容复制进入文档中,保存,保存类型选择为UTF-8,编译并观察现象。
\documentclass{article}
\author{My Name}
\title{The Title}
\begin{document}
\maketitle
hello, world % This is comment
\end{document}
4. 章节和段落
建立一个新文档,将以下内容复制进入文档中,保存,保存类型选择为UTF-8,编译并观察现象。
\documentclass{article}
\title{Hello World}
\begin{document}
\maketitle
\section{Hello China} China is in East Asia.
\subsection{Hello Beijing} Beijing is the capital of China.
\subsubsection{Hello Dongcheng District}
\paragraph{Tian'anmen Square}is in the center of Beijing
\subparagraph{Chairman Mao} is in the center of Tian'anmen Square
\subsection{Hello Guangzhou}
\paragraph{Sun Yat-sen University} is the best university in Guangzhou.
\end{document}
退格只是我个人偏好,看起来层次清晰美观。实际操作上未必要如此,每一行之前的空格不影响编译生成PDF的排版结果。
5. 加入目录
建立一个新文档,将以下内容复制进入文档中,保存,保存类型选择为UTF-8,编译并观察现象。
\documentclass{article}
\begin{document}
\tableofcontents
\section{Hello China} China is in East Asia.
\subsection{Hello Beijing} Beijing is the capital of China.
\subsubsection{Hello Dongcheng District}
\paragraph{Hello Tian'anmen Square}is in the center of Beijing
\subparagraph{Hello Chairman Mao} is in the center of Tian'anmen Square
\end{document}
6. 换行
建立一个新文档,将以下内容复制进入文档中,保存,保存类型选择为UTF-8,编译并观察现象。
\documentclass{article}
\begin{document}
Beijing is
the capital
of China.
New York is
the capital
of America.
Amsterdam is \\ the capital \\
of Netherlands.
\end{document}
7. 数学公式
建立一个新文档,将以下内容复制进入文档中,保存,保存类型选择为UTF-8,编译并观察现象。
\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\begin{document}
The Newton's second law is F=ma.
The Newton's second law is $F=ma$.
The Newton's second law is
$$F=ma$$
The Newton's second law is
\[F=ma\]
Greek Letters $\eta$ and $\mu$
Fraction $\frac{a}{b}$
Power $a^b$
Subscript $a_b$
Derivate $\frac{\partial y}{\partial t} $
Vector $\vec{n}$
Bold $\mathbf{n}$
To time differential $\dot{F}$
Matrix (lcr here means left, center or right for each column)
\[
\left[
\begin{array}{lcr}
a1 & b22 & c333 \\
d444 & e555555 & f6
\end{array}
\right]
\]
Equations(here \& is the symbol for aligning different rows)
\begin{align}
a+b&=c\\
d&=e+f+g
\end{align}
\[
\left\{
\begin{aligned}
&a+b=c\\
&d=e+f+g
\end{aligned}
\right.
\]
\end{document}
具体细节可以自行搜索LaTeX的数学符号表或别人给的例子。
这里给出一个十分方便的导出LaTex数学公式方式
相信大家都已经安装了MathType了,在MathType中的选项(option)里有一个剪切和复制选项,选择转换其他文字(Text using MythType translator),下拉选择LaTex 2.09 and later,这样你再进行编辑后复制出来的就是LaTeX公式了!怎么样,是不是很方便?
8. 插入图片
建立一个新文档,将以下内容复制进入文档中,保存,保存类型选择为UTF-8,放在和图片文件同一个文件夹里,编译并观察现象。
\documentclass{article}
\usepackage{graphicx}
\begin{document}
\begin{figure}[ht]
\centering %居中
\includegraphics[scale=0.3]{XDU.jpg} %插入图片
\caption{this is my head portrait} %设置图片的一个编号以及为图片添加标题
\label{figl} %给图片一个名称方便后文引用
\end{figure}
\end{document}
figure参数:h 此处(here)t 页顶(top)b 页底(bottom)p 独立一页(page)
9. 简单表格
建立一个新文档,将以下内容复制进入文档中,保存,保存类型选择为UTF-8,编译并观察现象。
\documentclass{article}
\usepackage{booktabs} %三线表需要引用的宏包
\begin{document}
\begin{tabular}{|c|c|}
a & b\\
c & d\\
\end{tabular}
\begin{tabular}{|c|c|}
\hline
a & b\\
\hline
c & d\\
\hline
\end{tabular}
\begin{center}
\begin{tabular}{|c|c|}
\hline
a & b\\ \hline
c & d\\
\hline
\end{tabular}
\end{center}
\begin{table}[htbp]
\begin{center}
\caption{\label{tab:test}example table}
\begin{tabular}{p{1cm}p{2cm}p{3cm}}
\toprule
12 & 12 & 12 \\
\midrule
12 & 12 & 12 \\
12 & 12 & 12 \\
12 & 12 & 12 \\
\bottomrule
\end{tabular}
\end{center}
\end{table}
\end{document}
10. 代码块
建立一个新文档,将以下内容复制进入文档中,保存,保存类型选择为UTF-8,编译并观察现象。
#######自定义代码块######
\documentclass[UTF8]{ctexart}
\usepackage{listings}
\usepackage{xcolor}
\usepackage[titles]{tocloft}
\renewcommand{\cftdot}{$\cdot$}
\renewcommand{\cftsecdotsep}{1.5}
\setlength{\cftbeforesecskip}{7pt}
\setlength{\cftbeforesubsecskip}{3pt}
\renewcommand{\cftsecfont}{\bfseries\zihao{-4}\heiti}
\renewcommand{\cftsecleader}{\cftdotfill{\cftsecdotsep}}
\renewcommand{\cftsecaftersnumb}{\hskip.4em}
\definecolor{dkgreen}{rgb}{0,0.6,0}
\definecolor{gray}{rgb}{0.5,0.5,0.5}
\definecolor{mauve}{rgb}{0.58,0,0.82}
\lstset{
frame=tb,
aboveskip=3mm,
belowskip=3mm,
showstringspaces=false,
columns=flexible,
framerule=1pt,
rulecolor=\color{gray!35},
backgroundcolor=\color{gray!5},
basicstyle={\small\ttfamily},
numbers=none,
numberstyle=\tiny\color{gray},
keywordstyle=\color{blue},
commentstyle=\color{dkgreen},
stringstyle=\color{mauve},
breaklines=true,
breakatwhitespace=true,
tabsize=3,
}
\begin{document}
\thispagestyle{plain} %这个与代码块无关,引用代码块时可去掉
\section{排队算法--matlab 源程序}
\begin{lstlisting}[language=matlab]
kk=2;
[mdd,ndd]=size(dd);
while ~isempty(V)
[tmpd,j]=min(W(i,V));
tmpj=V(j);
for k=2:ndd
[tmp1,jj]=min(dd(1,k)+W(dd(2,k),V));
tmp2=V(jj);
tt(k-1,:)=[tmp1,tmp2,jj];
end
tmp=[tmpd,tmpj,j;tt];
[tmp3,tmp4]=min(tmp(:,1));
if tmp3==tmpd, ss(1:2,kk)=[i;tmp(tmp4,2)];
else,tmp5=find(ss(:,tmp4)~=0);tmp6=length(tmp5);
if dd(2,tmp4)==ss(tmp6,tmp4)
ss(1:tmp6+1,kk)=[ss(tmp5,tmp4);tmp(tmp4,2)];
else, ss(1:3,kk)=[i;dd(2,tmp4);tmp(tmp4,2)];
end;
end;
dd=[dd,[tmp3;tmp(tmp4,2)]];V(tmp(tmp4,3))=[];
[mdd,ndd]=size(dd);kk=kk+1;
end;
S=ss;
D=dd(1,:);
\end{lstlisting}
\end{document}
这里的代码不理解没有关系,只要知道怎么填入以及在哪里填入 matlab、lingo 代码就行了。
11. 中文支持
方法A:把开头的\documentclass{atricle}
换成\documentclass[UTF8]{ctexart}
方法B(推荐):引用宏包\usepackage[UTF8]{ctexart}
如果是第一次使用ctexart的话,会自动下载和安装宏包和模板,之后就不会再下载了。
例子参考如下:
建立一个新文档,将以下内容复制进入文档中,保存,保存类型选择为UTF-8。
\documentclass{ctexart}
\begin{document}
你好,世界
\end{document}
12. 结尾
到目前为止,你已经可以用LaTeX自带的article模板来书写一篇基本的论文框架了,至少你已经能够用得起来LaTeX了。
在论文从框架到完整的过程中,必然还存在许多的细节问题,比如字体字号,比如图片拼合,比如复杂的表格等等。
那些问题,就请咨询google或是CSDN吧。通常来说我们作为初学者会提出的问题,早就已经有许多的先辈们在网络上提过同样的问题了,看看别人的回答就可以。(不推荐百度是因为百度的推荐算法令人窒息)
===============================
附录,有关我认为不是新手急需,但是的确比较有用的信息
1. 宏包
\package{}就是在调用宏包,对计算机实在外行的同学姑且可以理解为工具箱。
每一个宏包里都定义了一些专门的命令,通过这些命令可以实现对于一类对象(如数学公式等)的统一排版(如字号字形),或用来实现一些功能(如插入图片或制作复杂表格)。
通常在\documentclass之后,在\begin{document}之前,将文章所需要涉及的宏包都罗列上。
对于新人而言比较常用的宏包有
编辑数学公式的宏包:\usepackage{amsmath}和 \usepackage{amssymb}
编辑数学定理和证明过程的宏包:\usepackage{amsthm}
插入图片的宏包:\usepackage{graphicx}
复杂表格的宏包:\usepackage{multirow}
差不多了,对于新人来说,这五个宏包已经基本够用了。如果有其他的特殊需求,就通过google去寻找吧。
补充说明一下,现在ctexart模板里集成了中文支持,所以CJK宏包并不是必需品。
2. 模板
模板就是在\documentclass{}后面的大括号里的内容。
在这一份教程中,我们使用的是LaTeX默认自带的模板article,以及中文模板ctexart。
模板就是实现我之前所介绍的LaTeX的经验总结的第二点的实现方式。
一篇文章,我们定义了section,定义了paragraph,就是没有定义字体字号,因为字体字号这一部分通常来说是在模板中实现的。
一个模板可以规定,section这个层级都用什么字体什么字号怎么对齐,subsection这个层级用什么字体什么字号怎么对齐,paragraph又用什么字体什么字号怎么对齐。
当然模板里还可以包含一些自定义的口令,以及页眉页脚页边距一类的页面设置。
由于模板的使用,在我的使用经验里来看,绝对不可能算是基本入门级的内容,所以在正文里当然不会提及。
如果有人实在想学,如果LaTeX已经接触到这个程度上了,那么再去翻其他厚一些的教材,也不亏了。
3. 参考文献和制作幻灯片
做参考文献的时候,文章也已经快写到尾声了,而幻灯片更不是进阶一些的需求。对这两个功能有需求的LaTeX user,使用LaTeX也已经相当熟练了,自己去google一下或查阅其他厚教程是很理所当然的,一点也不冤枉。
在此我就只提供两个搜索关键词,参考文献可以搜bibtex,制作幻灯片可以搜beamer。
===============================
后记(原前言)
本教程面向对LaTeX完全无认知无基础的新人。
旨在让新人能够用最简单快捷的方式,轻松入门,能够迅速使用LaTeX完成基本的文本编辑。
这个教材最终能够达到的水平是能够使用LaTeX写一篇正常的proposal。如果希望有更大需求的提高,那么推荐在熟悉了这一篇文章的内容之后,再自行google或查阅其他稍厚的教材。
尤其旨在破除部分新人对LaTeX在传闻中难以学习的恐惧感。
在入门之后,面对各种进阶应用、特殊要求与异常状况,可以自行咨询google解决。
先用三句话来介绍什么是LaTeX,以下三点基于我个人的主观经验的总结。
1.LaTeX是一类用于编辑和排版的软件,用于生成PDF文档。
2.LaTeX编辑和排版的核心思想在于,通过\section和\paragraph等语句,规定了每一句话在文章中所从属的层次,从而极大方便了对各个层次批量处理。
3.LaTeX在使用体验方面,最不易被Word替代的有四个方面:方便美观的数学公式编辑、不会乱动的退格对齐、非所见即所得因此可以在编辑的时候用退格和换行整理思路但生成PDF出来不影响美观、部分导师和刊物不接受Word排版的文章。
我要严厉警告和强烈声讨那些自以为是advanced LaTeX user的人。请你们不要为了自己那一点可怜可悲的虚荣心,去刻意渲染LaTeX有多么高端多么不容易学习,这和孔乙己炫耀茴香豆的茴字有四种写法有什么区别么?混账!LaTeX到底有多“难”你们自己清楚好么?同理的还有很大一部分的VI user,还有Linux user,还有Fallout player。卧槽,一个软件而已,有什么好显摆的。别人想学LaTeX,好,你随手给人家丢一个几百页的英文Manual,显得自己很高端吗?你自己看过了吗?你推荐给别人的时候真的有希望别人看完吗?只是装逼的话就是混账!
我写这一篇教程的动机,正是因为网络上能够找到的简要速成的LaTeX教程完全没有。我能找得到的最简短或是说在我看来最具有指导意义的,就是那篇《一份不太简短的LaTeX介绍》。然而对于希望迅速对LaTeX有所了解的人,那一篇“不太简短的介绍”也仍旧稍嫌略长,我当初在入门时也研究了整晚。在LaTeX社区群里聊得久了,大家都是朋友,既然缺了这一块我又有闲情,那么就补上了。因此我写了这一篇教程,完全是以教会新人上手为目的,把华而不实的内容统统略去,确保能够在三十分钟内跟着这个教程走完全步骤就可以基本算是“玩转LaTeX”了。这个三十分钟的时长,是我帮助我身边的朋友开始接触LaTeX入门的常规时间,是经验积累的结果。