Latex是一个基于Tex的文章,期刊,书籍的排版系统,可让使用者在极短的时间内写出很高排版质量的文档。
对于没有接触过Latex的同学来说,这种以代码形式进行文档书写的方式,会让人一头雾水,摸不到南北。
下面我以本人的视角来梳理《中文版Latex常用语法大全教程》,请大家一定要先浏览本文目录,目录一般呈现的都是文章大纲,对理解文章很有帮助。
不建议大家一开始就从头看到尾,而是在写作的过程中用到了那个知识点就去看那一点,这样更有助于学习。若是零基础的同学,我会再出一版《Latex快速入门》,请持续关注哦。
不过在开始本文前,需要各位同学配好自己的环境,我的环境配置,请参考我的另一篇文章《ubuntu20.04下vim+vimtex编写latex的利器》,本文的所有演示用例,都是基于该环境实现的。
数学用的平面几何图形绘制,请参考我的另外文章
在开始本文之前,请先熟悉下,Latex的行文结构,这也是最基本的,作为一个程序员来说,每开始一个新的编程语言学习时,都要先了解该程序语言的结构,那样才能快速编程。
\documentclass[options]{class}
\begin{document}
% 录入正文内容
\end{document}
参数
注意: 本文所有的教程都是基于 中文环境 的Latex文档编写。
Latex的中文环境配置请参考我的另一篇文章《ubuntu20.04下vim+vimtex编写latex的利器》。
让我们来创建第一个文档,中文版的“hello world”,使用 vim 编写 test.tex 文档,录入如下代码
%! Tex program = xelatex
\documentclass{article}
\usepackage[UTF8]{ctex}
\begin{document}
hello 中国
\end{document}
编好后,在vim的命令行模式下,按 “\ll” 进行编译并预览,每次更改代码并重新保存后,都会实时更新预览界面。如下图:
是不是很简单啊,让我们期待在本文的帮助下,畅游Latex文档编写的世界吧。
Latex也如 C语言等编程语言一样,也有单行和多行注释
示例
%! Tex program = xelatex
\documentclass{article}
\usepackage[UTF8]{ctex}
\usepackage{verbatim}
\begin{document}
%单行注释
hello 中国
\begin{comment}
这是一个注释行
这又是一行注释
hehe
\end{comment}
\end{document}
换行
- \\ 换行
- \newline 与\\相同
- 注意,这里的换行,都是在段内换行
分段
- \par 添加在段落末尾或另起一行进行分段
- 在段落后连续两个回车,也可以实现分段效果(推荐的方式)
分页
- \newpage 添加在段落末尾或另起一行进行分页
示例
%! Tex program = xelatex
\documentclass{article}
\usepackage[UTF8]{ctex}
\usepackage{verbatim}
\begin{document}
%换行
三更\\灯火五更鸡,
正是男儿读书时。\par
\noindent 黑发不知勤学早,\newpage
白首方悔读书迟。
\end{document}
粗体
- \textbf{文字}
斜体
- \emph{文字},( 备注,中文文档里面斜体配置没有成功,以后有时间再改进)
颜色,有 3种方式可选
- 直接使用定义好的颜色
1. \usepackage{color}
2. \textcolor{red/blue/green/black/white/cyan/magenta/yellow}{text}
3. % 其中textcolor{…}中包含的是系统定义好的颜色- 组合red、green和blue的值合成我们想要的颜色
- \usepackage{color}
- \textcolor[RGB]{R,G,B}{text}
- % 其中{R,G,B}代表red、green和blue三种颜色的组合,取值范围为[0-255]
- 定义一种颜色,直接调用
- \usepackage{color}
- \definecolor{ColorName}{RGB}{R,G,B} % 这时R/G/B的定义域就在[0-255]
- \textcolor{ColorName}{text}
- 这里为颜色定义了名称ColorName,下面可以直接调用这个颜色方案
大小
- 全局模式
- \documentclass[12pt]{article}
- 局部模式
- 根据既有命令设置
- 命令:\tiny、\scriptsize、\footnotesize、\small、\normalsize、\large、\Large、\LARGE、\huge、\Huge
- 示例,\tiny{Latex},注意命令跟文字之间有空格
- 自定义修改字体大小和尺寸
- \fontsize{字体尺寸}{行距}
- 示例, \fontsize{20pt}{24pt} 中国,注意命令跟文字之间有空格
示例
%! Tex program = xelatex
\documentclass{article}
\usepackage[UTF8]{ctex}
\usepackage{verbatim}
\usepackage{color}
\setlength{\parindent}{0pt} %配置整篇不缩进
\begin{document}
% 粗体
\textbf{三更灯火五更鸡,}
% 斜体
\emph{正是男儿读书时。}
%颜色
\textcolor{red}{黑发}\\
\textcolor[RGB]{80,200,120}{不知}\\
\definecolor{newColor}{RGB}{200,100,200}
\textcolor{newColor}{勤学早,}
%大小
\large{白首}\\
\footnotesize{方悔}\\
\fontsize{12pt}{24pt}读书迟。
\end{document}
效果图如下
注意,单行注释也算是空行,所以不要以为这里的分段是需要 1个空行的,所有的分段都需要2个空行。
注意啊,看到形似 \usepackage{ulem} 的语句,要记得要添加该包。
\usepackage{ulem}
…
\uline{黑发不知勤学早,白首方悔读书迟。} %下划线
\uuline{黑发不知勤学早,白首方悔读书迟。} %双下划线
\uwave{黑发不知勤学早,白首方悔读书迟。} %波浪线
\sout{黑发不知勤学早,白首方悔读书迟。} %删除线
\xout{黑发不知勤学早,白首方悔读书迟。} %斜删除线
示例
%! Tex program = xelatex
\documentclass{article}
\usepackage[UTF8]{ctex}
\setlength{\parindent}{0pt} %配置整篇不缩进
\usepackage{ulem}
\begin{document}
劝学诗
%下划线
\uline{唐 颜真卿}
%双下划线
\uuline{三更灯火五更鸡,}
%波浪线
\uwave{正是男儿读书时。}
%删除线
\sout{黑发不知勤学早,}
%斜删除线
\xout{白首方悔读书迟。}
\end{document}
效果图如下
至此,有关Latex中关于文字处理的部分就写完了,既然是文章,那就应该有标题、段落等组织方式。
接下来就开始讲解文档的组织结构。
其实篇小字少的文档很好组织,但是一涉及到多篇章长段落多层次的文档,就体现到文档的组织功底了,组织的好,使读者赏心悦目;组织的不好,使人眼花缭乱,头昏脑涨。
Latex对每一个文档类型都有一个可供参考的层次分类,下面对常用 document class 做了简短的说明,各位同学在编排文档时尽量对号入座。如下所述:
- article - for articles in scientific journals, presentations, short reports, program documentation, invitations, …(科学期刊、 演示文档、 短报告、 程序文档、 邀请函等)
- book - for real books(书籍排版)
- letter - for writing letters.(信件书写)
- *report - for longer reports containing several chapters, small books, thesis, …(多章节长报告、 短篇书籍、 博士论文等)
- proc - a class for proceedings based on the article class.(基于 article 的会议文集类)
- slides - for slides. The class uses big sans serif letters.(幻灯片。 该文档类使用大号 sans serif 字体。)
- minimal - is as small as it can get. It only sets a page size and a base font. It is mainly used for debugging purposes.(非常小的文档类。 只设置了页面尺寸和基本字体。 主要用来查错。)
- beamer - for writing presentations.(演示文稿编写)
里面有几个词,需要拿出来说一说,也就是:
- part – 篇,实对章节的归类
- chapter – 章
- section – 一级标题,也就是节
- subsection – 二级标题
- subsubsection – 三级标题
- paragraph – 段,是一段文字的说明
- subparagraph – 子段,是以列举的形式对前段文字的说明
其中文档类 article 是Latex的最基本类别,本文中的示例都是基于这一文档类来演示的。
示例:
%! Tex program = xelatex
\documentclass[14pt]{article}
\usepackage[UTF8]{ctex}
\usepackage{graphicx} %插入图片
%----封面
\title{二十四史:史记}
\author{司马迁}
\date{东汉}
\begin{document}
\begin{titlepage}
\maketitle
\vspace{2cm}
\includegraphics[scale=1]{simaqian.png}
\end{titlepage}
%----简介
\centerline{\Huge{简介}}\vspace{2cm}\par
《史记》全书包括十二本纪(记历代帝王政绩)、三十世家(记诸侯国和汉代诸侯、勋贵兴亡)、七十列传(记重要人物的言行事迹,主要叙人臣,其中最后一篇为自序)、十表(大事年表)、八书(记各种典章制度记礼、乐、音律、历法、天文、封禅、水利、财用)。
\newpage
%----目录
\tableofcontents
\newpage
%----正文
\section{本纪}
\subsection{第一章 五帝本纪}
\paragraph{黄帝者,少典之子,姓公孙,名曰轩辕。生而神灵,弱而能言,幼而徇齐,长而敦敏,成而聪明。轩辕之时,神农氏世衰。诸侯相侵伐,暴虐百姓,而神农氏弗能征。於是轩辕乃习用干戈,以征不享,诸侯咸来宾从……}
\subparagraph{黄帝,是少典部族的子孙,姓公孙名叫轩辕。他一生下来,就很有灵性,在襁褓中就会说话,幼年时聪明机敏,长大后诚实勤奋,成年以后见闻广博,对事物看得透彻。轩辕时代,神农氏的统治逐渐衰弱,诸侯之间互相侵伐,祸害百姓,而神农氏无力征讨。于是轩辕就动用武力去讨伐那些不守纪律,不来朝拜神农氏的人,因而诸侯都对他表示臣服与追随……}
\subsection{第二章 夏本纪}
\subsection{第三章 殷本纪}
\section{表}
\subsection{三代世表第一}
\subsection{十二诸侯年表第二}
\end{document}
一般情况下,大家都需要在封面上填上,标题,作者,日期等内容。直接上示例
%! Tex program = xelatex
\documentclass{article}
\usepackage[UTF8]{ctex}
\usepackage{graphicx} %插入图片
%封面格式
\title{劝学}
\author{颜真卿}
\date{唐代}
\begin{document}
%制作封面
\begin{titlepage}
\maketitle
\includegraphics[scale=1]{yanzhenqing.png} %插入图片
\end{titlepage}
%正文
颜真卿3岁丧父,家道中落,母亲殷氏对他寄予厚望,实行严格的家庭教育,亲自督学。颜真卿也格外勤奋好学,每日苦读。这首诗正是颜真卿为了勉励后人所作。
\end{document}
首先使用\section{},subsection{},\part{},\chapter{}等命令在正文中插入了章节之后才能够再使用\tableofcontents命令在这些个命令出现的位置插入目录。
尤其是在写论文时,通常在正文开篇前就应该加上摘要。格式:
\begin{abstract}
%摘要内容
\end{abstract}
有的模板有关键字格式,比如 “IEEE” 文件,格式如下:
\begin{IEEEkeywords}
keyword1, keyword2.
\end{IEEEkeywords}
当然,你也可以自定义关键字格式,如下
% Keywords command
\providecommand{\keywords}[1]
{
\small
\textbf{\textit{Keywords---}} #1
}
……
\begin{document}
……
\keywords{one, two, three, four}
通过 “quote” 关键字实现,示例及效果图如下:
注意: 其中 “kaishu” 是指定字体的关键字。
在需要添加脚注的文字后添加\footnote{脚注内容},示例及效果图如下:
Latex有两种公式模式
示例
%! Tex program = xelatex
\documentclass{article}
\usepackage[UTF8]{ctex}
\begin{document}
数学公式,$lim_{x\to0}x^2$
质能方程即描述质量与能量之间的当量关系的方程, \[E = mc^2\]
\end{document}
绘制数学图形,我这边使用的是 \usepackage{tikz} 包
示例
%! Tex program = xelatex
\documentclass{article}
\usepackage[UTF8]{ctex}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[style=thick]
\draw [dashed] (0,4) -- (0.8,0.4);
\draw [fill, color=gray] (0,2) ellipse [x radius=1, y radius=0.23] ;
\draw [fill, color=gray] (0,0) ellipse [x radius=2, y radius=0.46] ;
\draw (0,2) ellipse [x radius=1, y radius=0.23] ;
\draw (0,0) ellipse [x radius=2, y radius=0.46] ;
\draw (0,4) -- (-2,0);
\draw (0,4) -- (2,0);
\draw (0,4) -- (-0.8,-0.4);
\draw (0,4)[above right=-1.75pt] node{$(x_0,t_0)$};
\draw [->] (1.2,2.2) -- (1.8,2.8);
\draw (1.5,2.8)[above right=-1.75pt] node{$B(x_0,t_0-t)$} ;
\end{tikzpicture}
\end{document}
插入图形使用是 ** “graphicx” ** 包,格式
\usepackage{graphicx} %插入图片
...
\includegraphics[scale=1]{yanzhenqing.png} %插入图片
格式:
\begin{tabular}
……
\end{tabular}
也可设置表格的属性等情况
格式
\usepackage{listings}
...
\begin{lstlisting}
% 代码段
\end{lstlisting}
若需要代码高亮,需要使用 “\usepackage{xcolor}” 包,使用前需要定制一些参数,即代码块的基本配置
\lstset{
columns=fixed,
numbers=left, % 在左侧显示行号
numberstyle=\tiny\color{gray}, % 设定行号格式
frame=none, % 不显示背景边框
backgroundcolor=\color[RGB]{245,245,244}, % 设定背景颜色
keywordstyle=\color[RGB]{40,40,255}, % 设定关键字颜色
numberstyle=\footnotesize\color{darkgray},
commentstyle=\it\color[RGB]{0,96,96}, % 设置代码注释的格式
stringstyle=\rmfamily\slshape\color[RGB]{128,0,0}, % 设置字符串格式
showstringspaces=false, % 不显示字符串中的空格
language=c++, % 设置语言
}
需要使用 “\usepackage{framed}” 包,示例及效果如下
使用包 “\usepackage{multicol}”,格式
\usepackage{multicol}
...
\begin{multicols}{2} %分2栏
%要分栏的内容
\end{multicols}
添加 **空行 **、行间距的实现,使用包 “setspace” ,示例及效果
- \vskip 1cm %跳过1cm的间距。
\usepackage{setspace}
……
\begin{spacing}{2.0} %2倍行间距
……
\end{spacing}
段间距,格式: \setlength{\parskip}{2em} %设置段落间距
示例及效果
首行缩进,使用包 “ \usepackage{indentfirst} ”,使用命令设置缩进的距离
setlength{\parindent}{2em} ,这里的 2em 表示缩进 2 个字符位置.如果有一个段落你不想首行缩进, 在段落前使用命令 \noindent .示例如下:
\usepackage{indentfirst}
\noindent Thirty-two
\indent\setlength{\parindent}{1em}During
使用命令 “\quad” 实现空格效果,例如:
使用geometry宏包,可以让页边距和页眉页脚的设置变得非常简单,示例
\documentclass[a4paper]{article}
\usepackage{geometry}
\geometry{left=2.5cm,right=2.5cm,top=2.5cm,bottom=2.5cm}
\begin{document}
test
\end{document}
也可以配置页面大小,如:
其他常用的长度选项还有 head, headsep, foot,见下图
通常用fancyhdr宏包来设置页眉和页脚,常用命令有:\pagestyle{type},\thispagestyle{type},setcounter{page}{number},\pagenumbering{style}。
示例
\begin{document}
\thispagestyle{empty} % 当前页不显示页码
\newpage %分页
\pagestyle{headings}
\setcounter{page}{1}
\pagenumbering{Roman}
\end{document}
可以手动书写参考文献,格式
\begin{thebibliography}{widest label}
\bibitem[item number]{citation}
\end{thebibliography}
其中widest label 用来设置参考文献序号的宽度,item number自定义参考文献的序号一般是省略的,该命令会按照顺序自动生成参考文献序号,citation为区分参考文献的标签(类似变量名),使用\cite{citation}命令引用参考文献时填入其中。示例如下:
%! Tex program = xelatex
\documentclass{article}
\usepackage[UTF8]{ctex}
\begin{document}
黑发不知勤学早,白首方悔读书迟~\cite{quanxue}。
山有木兮木有枝,心悦君兮君不知\cite{yuerenge}。
\begin{thebibliography}{}
\bibitem{quanxue}
《劝学》,唐,颜真卿
\bibitem{yuerenge}
《越人歌》,先秦,作者未知
\end{thebibliography}
\end{document}
注意!!!:在article文档类的节标题默认为 “Reference”,在 report / book 文档类的节标题默认为 “Bibliography”。若要修改默认节标题可以用以下命令。
\renewcommand{\refname}{\centerline{section-name}}
其中section-name可自行设置,若不填该参数,则取消显示节标题;若section-name不为空,则节标题即为所填的值。
说是自动,其实跟手动差不多,不过是需要名字进行连接,废话不多说,直接上代码。
1、创建一个Latex文件,命名随意,如 test.tex
%! Tex program = xelatex
\documentclass{article}
\usepackage[UTF8]{ctex}
\begin{document}
黑发不知勤学早,白首方悔读书迟~\cite{quanxue}。
\bibliography{bibFormat}{}
\bibliographystyle{plain}
\end{document}
注意,在要注释的语句后写上 “~\cite{name}” ,这里的 name 用于在 bib 文件中检索。
2、创建一个BibTeX参考文献库文件,文件的命名跟上述语句保持一致 \bibliography{bibFormat}{} ,也就是创建名为 “bibFormat” 的bib文件,即 bibFormat.bib。录入如下内容,每一个参考文献,写一个 “@misc{ …… }”。
@misc{ quanxue,
author = "颜真卿",
title = "劝学",
year = "唐"}
本文的部分内容来自于网络搜索,我这里综合整理出来,以供大家学习参考。
其实整理文档不容易,内容繁多,各种资料查找,网络搜索,再加工,期间一度不想做了,但还是坚持了下来,在完结的那一刻感觉心情无比轻松……