Latex从零开始到写出论文
1.前言
我们都知道写论文的主流方式有word和latex等,鄙人觉得word后期调格式插公式太过繁琐,不如学个latex一劳永逸,而且在投递论文时,支持latex的期刊更多,大多都提供latex模板。
在使用latex之前要大概理解一个概念,latex也分前后台:
Texlive是主流后台,而前台有很多,我这里对比使用后更倾向于Texmaker,原因在于它是以分屏的形式,左右两边分别是编译器和pdf展示,观感上比较适合入门者观察代码改动对pdf结果的影响。(当然也可以使用其他前台,有很多很多,功能上大同小异)
本文的学习流程:下载安装->基本概念的了解->实战学习(***)
2.下载安装
2.1下载
不得不说从官网下载Texlive和Texmaker是真的慢,所以不推荐从官网下载。
镜像下载Texlive:
清华镜像https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/Images/
找到并下载texlive.iso文件即可。
百度网盘下载Texmaker:链接:https://pan.baidu.com/s/1U4bld1mglCIEjsK5PfG9dg?pwd=wfku
提取码:wfku
2.2安装
下载完Texlive点进去,在目录中找到并点击install-tl-windows.bat文件进行安装即可,**注意安装会有配置勾选,在安装Teworks前端一栏取消勾选,还要记一下安装路径,**安装过程大约20分钟。
Texmaker安装比较简单,一路点下一步即可。
然后打开,在选项中配置我们的后台,只需要找到我们刚安装的Texlive路径中的latex.exe和pdflatex.exe即可,后面的-xxx内容是自动生成的。
到此就安装好了,下面进行简单的使用了解流程:
-
菜单栏,
文件 ---> 新建
,创建一个新的tex文件,内容如下: -
\documentclass{article} \title{Title} \author{Your Name} \begin{document} \maketitle{} \section{Introduction} This is where you will write your content. \end{document}
-
点击运行按钮即可生成pdf并展示在右侧。
3.使用教程
下面正式进入Latex的学习阶段。
3.1基础概念
导言区与正文区
在begin{document}
和end{document}
之间的就是正文区,而在这之前的就是导言区。
文档类型
\documentclass{article}
是确定了文档类型为article
,一般LaTeX提供三种基本文档,此外两种是report
和book
。三者分别用来写小篇幅的文章、中篇幅的报告和长篇幅的书籍。
(这一部分一般下载某期刊的模板后,模板都指定好了)
宏包
LaTeX导言区可以导入各种宏包,以使用相应宏包的功能,一条语句中可以导入多个宏包,语法如下:
\usepackage{宏包1, 宏包2}
注释
单行注释
% 注释内容
多行注释
\iffalse
注释内容
\fi
转义字符
写法:\+字符
用途:当某些特殊字符与LaTeX语法冲突时,使用转义字符可以使字符强制显示。
示例:\%
,可以显示出百分号,而不是注释的含义;\_
,显示下划线,而不是下标;\^
显示符号本身,而不是上标。
可选参数[htbp]
LaTeX插入图片、表格等元素时,第一行后面有一个可选参数[htbp]
,例如,\begin{figure}[htbp]
。
[htbp]
是个可选参数项,允许用户指定图片、表格等元素被放置的位置。这一可选参数项可以是下列字母的任意组合。
h(here): 当前位置;将图形放置在 正文文本中给出该图形环境的地方。如果本页所剩的页面不够, 这一参数将不起作用。
t(top): 顶部;将图形放置在页面的顶部。
b(bottom): 底部;将图形放置在页面的底部。
p(page): 浮动页;将图形放置在一只允许有浮动对象的页面上。
注意:在使用这些参数时:
- 如果在图形环境中没有给出上述任一参数,则缺省为
[tbp]
。 - 给出参数的顺序不会影响到最后的结果。因为在考虑这些参数时LaTeX总是尝试以
h-t-b-p
的顺序来确定图形的位置。所以[hb]
和[bh]
都以h-b
的顺序来排版。 - 给出的参数越多,LaTeX的排版结果就会越好。
[htbp], [tbp], [htp], [tp]
这些组合得到的效果不错,[h]
也是常用的选择。
常见的指令
- 节指令:
\section{}
和\subsection{}
。 - 图指令:
\begin{figure} ... \end{figure}
。 - 表指令:
\begin{table} ... \end{table}
。 - 公式指令:
\begin{equation} ... \end{equation}
。 - 参考文献指令:
\bibliography{}
。 - 引用指令:
\cite{}
、\ref{}
和\eqref{}
。
节指令
\section{}
和\subsection{}
是用来生成论文中的“节”。
\section{}
生成的是论文中的某节,比如第1节,第2节,第3节,等等。
\subsection{}
生成的是论文中的某子节,比如第1.1节,第1.2节,第1.3节,等等。
或许还有机会用到 \subsubsection{}
,生成的是第三级的子节,比如第1.1.1节,第1.1.2节,第1.1.3节,等等。
图指令
通常写法是这样子的:
\begin{figure}[htbp]
\centering
\includegraphics[width=0.5\textwidth]{fig.pdf}
\caption{Some caption}
\label{fig:your_label}
\end{figrue}
123456
从上往下讲解。
\begin{figure} ... \end{figure}
代表插入图的框架。- [htbp] 表示插入图的位置。
\centering
表示插入的图为居中格式。\includegraphics[width=0.5\textwidth]{fig.pdf}
表示插入图片。[width=0.5\textwidth]
:图宽度是页面宽度的1/2。{fig.pdf}
:要插入的图文件,一般与.tex
文件放在同一路径。
\caption{Some caption}
表示图例说明,一定要放在\includegraphics[width=\textwidth]{fig.pdf}
的下面。\label{fig:your_label}
表示图引用标签,为后面引用作准备。
插入图的话,记得在文档最开始插入宏包 \usepackage{graphicx}
。
表指令(推荐在线生成)
推荐:https://tableconvert.com/zh-cn/latex-generator
通常写法是这样子的:
\begin{table}[htbp]
\centering
\caption{your_caption}
\label{tab:your_label}
\begin{tabular}{ccc}
\toprule
xxx & xxx & xxx \\
\midrule
xxx & xxx & xxx \\
\bottomrule
\end{tabular}
\end{table}
123456789101112
从上往下讲解。
\begin{table} ... \end{table}
代表插入表的框架。[htbp]
表示插入表的位置,含义已在前面解释过。\centering
表示表格居中。\caption{your_caption}
和\label{tab:your_label}
的含义在前面已经解释过,但需要注意的是,这两行代码一定要放在\begin{tabular}{ccc} ... \end{tabular}
的前面。\begin{tabular}{ccc} ... \end{tabular}
表示创建表格环境,表的内容全部写在这里面。{ccc}
表示表格有3列,居中格式。\toprule
、\midrule
和\bottomrule
分别为三线表的上、中、下线。&
连接一行之中的各元素,\\
表示表格换行。
插入表的话,记得在文档最开始插入宏包 \usepackage{booktabs}
。
公式指令(推荐在线生成)
推荐:https://www.latexlive.com/(支持图片识别)
通常写法是这样子的:
\begin{equation}
\label{eq:your_label}
r=a(1-sinθ)
\end{equation}
1234
从上往下讲解。
\begin{equation} ... \end{equation}
代表插入公式的框架。\label{eq:your_label}
为数学公式的标签。r=a(1-sinθ)
为想要编写的公式。
插入公式的话,记得在文档最开始插入宏包 \usepackage{amsmath}
。
参考文献指令
只有一行,很简单,\bibliography{reference}
。reference
代表文件reference.bib
,文件名可以随便取。
reference.bib
为要引用的参考文献,各期刊网站都会给出论文的bibtex
格式,导出的时候选择bibtex
即可。
引用指令
常用的引用指令有 3 种,\cite{}
、\ref{}
和 \eqref{}
。
\cite{}
为参考文献的引用方式,输入代码\cite{xxx}
即可,xxx为参考文献关键字。\ref{}
通常用于引用打了标签(\label{}
)的地方,比如说章节号、图号、表号等等。\eqref{}
用于引用公式编号。
3.2实战学习
latex内容其实是很多的,想系统学习短时间内是做不到的(大佬除外),最快的学习方法还是直接上手模板,遇到不懂的直接搜。
要找到一个模板,除了在期刊官网,这个网站一定要知道的:
https://template-selector.ieee.org/secure/templateSelector/publicationType
找到一个模板后,你会发现模板本身是对格式的提示,模板的内容是对论文写作的提示,一般是对摘要字数限制,关键字等内容的约数。
下面以我下载的一个模板进行学习(其他模板大同小异)
1.模板的第一部分一般是注释,图中上红框中,是对作者遇到某些情况时的提示(比如摘要超过当前页)。图中下红框部分即为该模板的第一条有用指令:
\documentclass[times,twocolumn,final]{elsarticle}
定义了文档类为elsarticle
,并设置了几个选项。times
表示使用Times字体,twocolumn
设置文档为两栏格式,final
指定这是最终版本,不显示草稿标记。
继续往下看
%% Stylefile to load CAG template
\usepackage{cag}
\usepackage{framed,multirow}
%% Stylefile to load CAG template
: 说明接下来的操作是加载一个用于CAG模板的样式文件。\usepackage{cag}
: 这行代码实际上尝试加载名为cag.sty
的样式文件。这个文件应当包含了定义CAG模板所需的所有格式设置、宏定义等。该文件和模板在一个文件夹内。\usepackage{framed,multirow}
: 这行代码同时加载了两个LaTeX包:framed
包:提供了框架或阴影效果的环境,常用于突出显示文本块,比如警告、注意事项或者创建带有边框的盒子。multirow
包:用于在表格(tabular
环境)中创建跨越多行的单元格。这对于制作复杂表格非常有用,尤其是当某个单元格内容需要覆盖多行时。
%% The amssymb package provides various useful mathematical symbols
\usepackage{amssymb}
\usepackage{latexsym}
%% The amssymb package provides various useful mathematical symbols
: 说明接下来的包 (\usepackage{amssymb}
) 用于加载一系列的数学符号。amssymb
包含了大量的数学符号,如各种集合符号、关系符号、算子等,对于撰写含有大量数学公式的文档非常有用。\usepackage{amssymb}
: 正如上面的注释所说,这一行代码实际上加载了amssymb
包。\usepackage{latexsym}
: 而这一行则是加载latexsym
包。latexsym
包提供了一些在老版本的 LaTeX 核心中定义的基本符号命令,这些符号在使用amsmath
或amssymb
等更现代的包时可能已经被覆盖,但加载latexsym
可以确保兼容性,特别是对于一些特定的、非AMS的符号。尽管如此,随着 LaTeX 发展,直接使用amssymb
通常已足够满足大部分数学符号需求,latexsym
的需求相对减少。
% Following three lines are needed for this document.
% If you are not loading colors or url, then these are
% not required.
\usepackage{url}
\usepackage{xcolor}
\definecolor{newcolor}{rgb}{.8,.349,.1}
% Following three lines are needed for this document.
:说明接下来的三行代码对于当前文档是必要的。% If you are not loading colors or url, then these are not required.
:指出如果你的文档不需要颜色设置或网址链接样式调整,那么下面的包和定义就可以省略。\usepackage{url}
:这一行代码加载了url
包,它允许你在文档中以更美观的方式显示长网址。url
包可以自动处理网址中的特殊字符,并且可以根据设置的选项调整网址的样式。\usepackage{xcolor}
:这一行加载了xcolor
包,它扩展了LaTeX的颜色功能,提供了更多的颜色模型、混色能力以及颜色命名,使得在文档中使用颜色更为灵活和方便。\definecolor{newcolor}{rgb}{.8,.349,.1}
:这一行定义了一个名为newcolor
的自定义颜色,使用RGB模型,其红、绿、蓝分量分别为0.8、0.349、0.1。这意味着你可以之后在文档中通过\textcolor{newcolor}{your text}
来使用这个自定义颜色,或者应用于其他元素的着色。
接下来,就正式开始撰写论文了
\usepackage{hyperref}
\usepackage[switch,pagewise]{lineno} %Required by command \linenumbers below
\journal{Computers \& Graphics}
\usepackage{hyperref}
:这一行加载了hyperref
包。它为PDF文档添加超链接功能,比如让目录条目、参考文献引用、URLs等变成可点击的链接。使用这个包后,交叉引用会自动链接到相应的目标位置。\usepackage[switch,pagewise]{lineno}
:这一行加载了lineno
包,并设置了两个选项。lineno
包用于给文档中的每一行添加行号,这对于审阅文档、标注错误或在学术交流中引用具体行非常有用。switch
选项意味着行号只在\linenumbers
和\nolinenumbers
命令之间出现的部分启用,而pagewise
则指示行号应按页重新编号。如果你在文档中某处使用了\linenumbers
,文档就会开始显示行号。\journal{Computers \& Graphics}
:声明目标投稿。
\begin{document}
\verso{Preprint Submitted for review}
\begin{frontmatter}
\begin{document}
:这标志着文档正文内容的开始。所有将被编译成可见文本的部分都应该放在这个命令与对应的\end{document}
之间。\verso{Preprint Submitted for review}
:这条命令表明这份文档是一个提交审核的预印本。\begin{frontmatter}
:这标志着文档前言部分(front matter)的开始,通常包括标题、作者信息、摘要、关键词、作者声明等内容。
注意,\verso{...}
和具体的前言环境\begin{frontmatter}
不是标准LaTeX命令,而是特定模板或自定义宏包的一部分。
\title{Computers and Graphics submission formatting guidelines\tnoteref{tnote1}}%
\tnotetext[tnote1]{Only capitalize first word and proper nouns in the title.}
\title{Computers and Graphics submission formatting guidelines\tnoteref{tnote1}}%
:这一行代码用于设置文章的主标题。\tnoteref{tnote1}
是用来插入一个脚注引用标记,这里标记为tnote1
,表示标题下方会有一个对应编号的脚注。末尾的%
符号用来避免在标题行末产生不必要的空格或换行。\tnotetext[tnote1]{Only capitalize first word and proper nouns in the title.}
:这一行定义了刚才在标题中引用的脚注内容。[tnote1]
指定了这个脚注与之前在标题中通过\tnoteref{tnote1}
引用的标记相匹配。在提醒作者在处理标题时应遵循的大小写规则,即只有首字母和专有名词需要大写。
\author[1]{First Author Given Name \snm{Surname}\corref{cor1}}
\cortext[cor1]{Corresponding author:
Tel.: +0-000-000-0000;
fax: +0-000-000-0000;}
\emailauthor{example@email.com}{Corresponding Author Name}
%\ead{example@email.com}
\author[2]{Second Author Given Name \snm{Surname}\fnref{fn1}}
\fntext[fn1]{Footnote 1.}
\address[1]{Address, City, Postcode, Country}
\address[2]{Address, City, Postcode, Country}
\author[1]{First Author Given Name \snm{Surname}\corref{cor1}}
:这一行定义了第一位作者。方括号[1]
指定了该作者与地址[1]
对应(稍后定义)。\snm{Surname}
用于指定作者的姓氏,\corref{cor1}
表示这位作者是通讯作者(Corresponding Author),与后续的\cortext[cor1]
配对。\cortext[cor1]{Corresponding author: Tel.: +0-000-000-0000; fax: +0-000-000-0000;}
:定义了通讯作者的联系信息,包括电话和传真号码。[cor1]
与前面\corref{cor1}
对应,建立了联系。\emailauthor{example@email.com}{Corresponding Author Name}
:这个命令用于指定通讯作者的电子邮件地址和名称。\emailauthor
不是标准命令,是特定模板中的自定义命令。\author[2]{Second Author Given Name \snm{Surname}\fnref{fn1}}
:定义第二位作者,同样方括号[2]
指向其对应的地址信息。\fnref{fn1}
表明该作者有一个脚注,通过\fntext[fn1]{Footnote 1.}
来定义这个脚注的内容。\fntext[fn1]{Footnote 1.}
:定义了之前通过\fnref{fn1}
引用的脚注文本,这里简单地标记为“Footnote 1”。\address[1]{...}
和\address[2]{...}
:分别定义了两个地址,与作者信息中的索引相对应。例如,[1]
对应第一位作者的地址,[2]
对应第二位作者的地址。
%\received{1 February 2017}
\received{\today}
%%%% Do not use the below for submitted manuscripts
%\finalform{28 March 2017}
%\accepted{2 April 2017}
%\availableonline{15 May 2017}
%\communicated{S. Sarkar}
\received{1 February 2017}
:这个命令用于指定文章首次接收的日期。被注释掉的原始日期是2017年2月1日,而实际使用的命令是\received{\today}
,这意味着它会自动插入文档编译当天的日期,这对于跟踪稿件处理进度有用,尤其是在草稿阶段。%\finalform{28 March 2017}
:这个注释掉的命令用于标注文章最终形式确定的日期,这里给出的是2017年3月28日。在提交最终版本之前,这一信息通常不会被需要。%\accepted{2 April 2017}
:标记文章被接受的日期,此例中为2017年4月2日。这也是在文章被正式接受发表之后才需要填写的信息。%\availableonline{15 May 2017}
:指文章在线发布或可供公众查看的日期,此处为2017年5月15日。这同样是文章正式出版流程的一部分。%\communicated{S. Sarkar}
:用于标注负责处理这篇稿件的编辑或通信作者的名字,在这个例子中是"S. Sarkar"。这通常在文章发表时列出,以示感谢和责任归属。
在实际操作中,这些命令的具体使用和是否需要,会根据期刊或会议的投稿要求而有所不同。在提交稿件时,除非被特别要求,否则通常不需要提供像“final form”、“accepted”或“available online”这样的日期,这些信息会在审稿和出版过程中由出版社或会议组织者添加。
\begin{abstract}
\end{abstract}
容易理解,摘要内容
\begin{keyword}
%% MSC codes here, in the form: \MSC code \sep code
%% or \MSC[2008] code \sep code (2000 is the default)
%\MSC 41A05\sep 41A10\sep 65D05\sep 65D17
%% Keywords
\KWD Computers and Graphics\sep Formatting\sep Guidelines
\end{keyword}
\begin{keyword}
和\end{keyword}
:这对环境用于包围关键词列表.% MSC codes here, in the form: \MSC code \sep code
:指导如何在文档中加入数学主题分类代码。MSC代码用于归类数学及相关领域的文献,每个代码代表一个特定的主题领域。通常,这些代码会以\MSC
命令后跟代码数字和\sep
分隔不同代码的方式列出。这里的示例被注释掉了,意味着实际没有添加MSC代码。%\MSC 41A05\sep 41A10\sep 65D05\sep 65D17
:展示如果要包含MSC代码,应该如何编写。每个代码(如41A05
)代表一个数学主题分类,\sep
用于分隔不同的代码。\KWD Computers and Graphics\sep Formatting\sep Guidelines
:这部分是实际的关键词定义。\KWD
(特定于模板,标准LaTeX中通常使用\keywords{...}
)后面跟随以\sep
分隔的关键词。
\end{frontmatter}
\end{frontmatter}
这个命令标志着文档前言部分(front matter)的结束。与前文的 \begin{frontmatter}
命令相对应。
\linenumbers
上文讲过,用于启动行号显示功能。
%% main text
\section{Note}
\label{sec1}
Please use \verb+elsarticle.cls+ for typesetting your paper.
Additionally load the package \verb+cag.sty+ in the preamble using
the following command:
\begin{verbatim}
\usepackage{cag}
\end{verbatim}
%% main text
:用来标记文档主体内容的起始。\section{Note}
:创建了一个新的小节标题,标题名为 “Note”。\label{sec1}
:为当前小节分配了一个标签sec1
。这使得可以通过\ref{sec1}
在文档其他地方引用这个小节,自动插入对应的编号。- 接下来的文本是一个普通的段落,内容是指导用户如何使用
\verb+elsarticle.cls+
类文件来排版他们的论文。\verb+...+
命令用于在文本中插入代码片段,保持其原有的格式,不进行文本排版,这里用来展示类文件名elsarticle.cls
。 - 文本中还提到了加载额外的样式文件
\verb+cag.sty+
。为了演示如何在文档前言(preamble)中正确加载这个包,它提供了一个代码块(通过\begin{verbatim} ... \end{verbatim}
环境包裹),展示实际的LaTeX命令\usepackage{cag}
。verbatim
环境使得文本内容按原样输出,不进行任何形式的格式化,适用于展示代码或需要保留特殊字符和空格的文本。
Following commands are defined for this journal which are not in
\verb+elsarticle.cls+.
\begin{verbatim}
\received{}
\finalform{}
\accepted{}
\availableonline{}
\communicated{}
\end{verbatim}
这段LaTeX代码通过verbatim
环境列出了几个特定于期刊的命令,这些命令并未包含在标准的elsarticle.cls
文档类中。下面是每个命令的简要说明:
\received{}
:用于记录文章首次被期刊接收的日期。\finalform{}
:标记文章最终版本完成的日期。\accepted{}
:指示文章被正式接受的日期。\availableonline{}
:记录文章在线发布或可获取的日期。\communicated{}
:用于指明与作者沟通的编辑或审稿人的名字,通常用于表示谁负责处理该稿件。
这一块上文讲过,对于作者来说没什么用。
Any instructions relevant to \verb+elsarticle.cls+ are applicable
here as well. See the online instruction available on:
\makeatletter
\if@twocolumn
\begin{verbatim}
http://support.stmdocs.in/wiki/
index.php?title=Elsarticle.cls
\end{verbatim}
\else
\begin{verbatim}
http://support.stmdocs.in/wiki/index.php?title=Elsarticle.cls
\end{verbatim}
\fi
-
\makeatletter
和\makeatother
:这两个命令用于允许在宏定义中使用@
符号,这是LaTeX内部命令的一部分,通常对外部文档是不可见的。在这个上下文中,它们包裹了条件判断代码,确保内部命令的正确处理。 -
\if@twocolumn
:这是一个条件测试,检查文档是否设置了双栏模式。如果是双栏模式,则执行接下来的代码直到遇到对应的\else
或\fi
。 -
在双栏模式下,网址被格式化为两行显示,以适应双栏排版的宽度限制:
http://support.stmdocs.in/wiki/ index.php?title=Elsarticle.cls
-
如果文档不是双栏模式(即单栏模式),则网址作为一个整体显示在一行中:
http://support.stmdocs.in/wiki/index.php?title=Elsarticle.cls
-
两种情况下提供的网址都是相同的,指向STMDocs上的一个页面,该页面包含了关于如何使用
elsarticle.cls
类文件的在线指南。这个页面对于使用elsarticle
文档类撰写和排版文章的作者来说,是一个重要的参考资料,提供了详细的使用说明和常见问题解答。
命令的一部分,通常对外部文档是不可见的。在这个上下文中,它们包裹了条件判断代码,确保内部命令的正确处理。
-
\if@twocolumn
:这是一个条件测试,检查文档是否设置了双栏模式。如果是双栏模式,则执行接下来的代码直到遇到对应的\else
或\fi
。 -
在双栏模式下,网址被格式化为两行显示,以适应双栏排版的宽度限制:
http://support.stmdocs.in/wiki/ index.php?title=Elsarticle.cls
-
如果文档不是双栏模式(即单栏模式),则网址作为一个整体显示在一行中:
http://support.stmdocs.in/wiki/index.php?title=Elsarticle.cls
-
两种情况下提供的网址都是相同的,指向STMDocs上的一个页面,该页面包含了关于如何使用
elsarticle.cls
类文件的在线指南。这个页面对于使用elsarticle
文档类撰写和排版文章的作者来说,是一个重要的参考资料,提供了详细的使用说明和常见问题解答。
未完待续。。。。。