分析技术研习室

Logo

课题组每周研讨会

View the Project on GitHub XSLiuLab/Workshop

+++

使用Latex写论文

+++

前言

最近写文章的时候,发现修改时调整参考文献的引用,是一件非常麻烦的事情,于是找到了一种简便的方法进行调整,发现了用Latex写论文原来这么好用。

主要内容

使用的工具

优点:不用本地搭建环境;在线编辑并渲染;部分投稿期刊直接提供链接模板。

mac的我还没有安过,仅列出来供参考。

除了上面列出来的,还有很多其他的,根据自己的喜好使用吧。

基本语法

注意到一个部分有开始也有结束,中间就是这个部分的内容。

\documentclass{article}

\begin{document}
First document. This is a simple example, with no 
extra parameters or packages included.
\end{document}

在LaTex中,所有在document内容之前的都称为preamble,在preamble中可以定义整个文档的格式、使用的语言、你需要使用到的宏包、以及其他的元素。举例:

\documentclass[12pt, letterpaper]{article} %设置
\usepackage[utf8]{inputenc} %加载了名叫inputenc的宏包,设置使用utf-8来编码。

[]方括号中都是一些参数的选择,documentclass中设置了字体大小为12pt(默认的字体大小是10pt),纸张大小为信纸,其他的设置可以看Overleaf的文档说明

这些内容也属于preamble:

标题

\title{First document}

作者

\author{cat}

日期

\date{March 2021}

谢言

\thanks{funded by the Overleaf team}

字体的简单格式可以通过以下代码实现:

Some of the \textbf{greatest} %字体加粗
discoveries in \underline{science} %加入下划线
were made by \textbf{\textit{accident}}. %斜体

还有更多的字体变换可以更改,具体参考字体格式,来个简单的应用示例感受一下它的实用性。

Overleaf 示例

1. 模板的使用

进入 Overleaf模板,选择合适的模板

这其中包括国科大的毕业论文模板开题报告模板,以及各种杂志期刊、简历、信件、海报、报告、作业和写书的模板等等(部分期刊杂志会提供Overleaf的模板)。

以论文写作为例

随便打开一个模板,最右边是实时的渲染结果,中间是可以编辑的部分,左边是模板的目录下文件。

左边的目录下存储了4个文件:

通常用来存储引用文献的信息,其中引用文献需要用特定的格式——BibTex存储,可以通过谷歌学术、百度学术或者其它方式进行导出(谷歌学术的导出功能经常会崩溃),如何使用Bibtex格式进行文献引用请跳转 点击跳转

这个文件通常由期刊或杂志提供,设置了参考文献出现的文章结尾的方式,比如:设置排序方式,设置作者名称是缩写还是全称,标题的大小写等等,一般不需要自行维护,而且可以根据自己的需求来在.tex中重新调整。

这个是进行文档内容编辑的文件,可以在这个文件中加载宏包,进行内容以及格式的更改。

这个文件通常是类文件,通过文档最前面的\documentclass导入,这里的\documentclass[options]{class}是用来指定文档类型的,可以通过options参数来定制文档类的属性,不同的选项之间需要用逗号隔开,比如这里的\documentclass[final,3p]{CSP},其中final指的不在页面的边缘标记一个黑色框,这个3p对它的解释是:

formats the article to the look and feel of the final format of model 3+ journals.

我没明白这个3+model是什么意思,但是通过调试,发现这个数字越大,页面距就越大。

另外别的模板中还存在这些文件:

这是编译之后形成的文件,这里直接就显示了编译后的形式,可以直接下载PDF文件。

这是包文件,通常使用\usepackage导入。

2. 内容的编辑以及参考文献的引用

内容的编辑

载入宏包的方法是在文档开始前\begin{document},写入\usepackage{package}

这里介绍几个常用的宏包:

特别的,当要使用英文下划线-时,比如写入sigminer包中的函数名read_maf时,并不能直接识别下划线,需要载入该包来处理,或者给每处下划线改成\_也可以不用载入包来识别。

语法:\usepackage[options]{hyperref}

示例:加入超链接,同时将文献也超链接到reference中,并且设置超链接的颜色,常用的设为蓝色或者黑色。

\usepackage[backref, colorlinks,linkcolor=blue]{hyperref}

文献的引用

如下图所示,谷歌学术中可以直接得到BibTex这种引用格式,将文献信息存储在.txt中,然后更改后缀为.bib即可。

点击 BibTex 后会弹出下图所示页面,复制内容至.bib文件内即可。

在文档结束位置\end{document}前,增加对参考文献格式以及引用的设置,比如:

\bibliographystyle{bibft}\it
\bibliography{bibfile}

bibft是模板自带并自己命名的格式文件,这是由.cls文件定义的,bibfile就是制作好的bibtex文件,

注意这里的文献引用格式有很多种,除了模板中定义的格式,可以通过参数的调整将格式更改为自己想要的,比如常用的,在方括号中标注数字,并且根据文献引用的先后顺序对reference排序:

\begin{document}
\bibliographystyle{unsrt}

\bibliographystyle{unsrt} %根据引用顺序自动排序
\bibliography{bibfile.bib} %引用文献的文件
\end{document}

我认为最方便的地方就是这里,能够根据文献引用的顺序对reference进行自动排序

通常在正文中有很常见的几种文献引用格式: 温哥华格式(上标形式) 哈佛格式(直接显示作者和发表年份) IEEE 格式(方括号内标注引用顺序)

在文中一般使用\cite{}进行引用,括号中的内容就是BibTex中的第一个参数,这个是可以自定义的,通常都是作者的姓或者名+发表年份+论文题目的首个单词。

@inproceedings{song2013hierarchical,
  title={Hierarchical representation using NMF},
  author={Song, Hyun Ah and Lee, Soo-Young},
  booktitle={International conference on neural information processing},
  pages={466--473},
  year={2013},
  organization={Springer}
}

另外还有宏包natbib,通过不同形式的cite比如:

\citet

\citet{jon90}
##
Jones et al. (1990)

\citep

\citep{jon90}	
##
(Jones et al., 1990)

\citeyear

\citeyearpar{jon90}
##
(1990)

……

该宏包的使用方式如下。

\usepackage[option]{natbib}

\bibliographystyle{natbib}
\bibliography{bibfile}

3. 表格的制作

分为以下两个部分:

可以在Excel中使用插件:Excel2Latex,该插件能够将Excel表格转化为LaTex的表格形式。

  1. Word中的表格

可以使用pandoc直接转换为.tex格式,不过转换之后不是完美的,可能需要手动调整一下。

示例:

pandoc test.docx -o test.tex
  1. 其他文件形式的表格

比如在R当中得到的表格,可以使用stargazer包把结果输出为LaTex格式,或者xtable包。

xtable包为例:

> install.packages("xtable") #安装xtable
> library(xtable) #载入
> data(iris) # 示例数据
> xtable(head(iris),digits=3,caption="Head of Iris Data")
#将iris数据前6行
# 保留三位小数
#标题设为"Head of Iris Data",导出为LaTex格式
% latex table generated in R 4.0.2 by xtable 1.8-4 package
% Sat Mar  6 20:04:47 2021
\begin{table}[ht]
\centering
\begin{tabular}{rrrrrl}
  \hline
 & Sepal.Length & Sepal.Width & Petal.Length & Petal.Width & Species \\ 
  \hline
1 & 5.100 & 3.500 & 1.400 & 0.200 & setosa \\ 
  2 & 4.900 & 3.000 & 1.400 & 0.200 & setosa \\ 
  3 & 4.700 & 3.200 & 1.300 & 0.200 & setosa \\ 
  4 & 4.600 & 3.100 & 1.500 & 0.200 & setosa \\ 
  5 & 5.000 & 3.600 & 1.400 & 0.200 & setosa \\ 
  6 & 5.400 & 3.900 & 1.700 & 0.400 & setosa \\ 
   \hline
\end{tabular}
\caption{Head of Iris Data} 
\end{table}

表格的介绍

表格的基本格式和要素如下(2行2列表格):

\documentclass{article} 
\usepackage{float}%提供float浮动环境
\usepackage{makecell} %%用来基线
\begin{table}[h]
\centering %%表居中
\caption{table} %%表格标题

\begin{tabular}{|c|c|} %%{cc} 表示各列元素对齐方式,left-l,right-r,center-c,两个c表示两列,|表示增加垂直方向基线
\hline %%\hline 在此行下面画一横线
a & b \\\hline
c & d\\
\hline
\end{tabular}
\end{table}
 
\end{document}

当表格太大或者太小的时候,有非常多的解决办法,可以通过调整字体的长或宽,也可以直接整体调整表格的大小,本质都是通过在tabular类外,套上调整表格的参数设置。

通过调整字体的宽度(mm是百分比,60mm就是60%):

\resizebox{\textwidth}{60mm}{}

通过调整表格的大小:

\usepackage{graphicx}
\begin{table}

\caption{表格标题}
\scalebox{0.9}{ %缩小至原来的90%
\begin{tabular}
……
\end{tabular}}
\end{table}

文献中常用的三线表可以通过以下Latex实现:

\documentclass{article} 
\usepackage{float}%提供float浮动环境
\usepackage{booktabs} %%提供命令\toprule\midrule\bottomrule
\usepackage{makecell} %%用来基线
\usepackage{geometry}
\usepackage{amsmath}
%\geometry{papersize={40cm,80cm}}
\geometry{left=1cm,right=1cm,top=3cm,bottom=1cm}
\begin{document}
 
%经典三线表
\begin{table}[H] %%H为当前位置
\caption{\textbf{test title}}%标题
\centering%把表居中
\begin{tabular}{ccc}%四个c代表该表一共四列,内容全部居中
\toprule[1.5pt]%第一道横线
year & month & day \\
\midrule%第二道横线 
2021 & 3 & 5 \\

\bottomrule[1.5pt]%第三道横线
\end{tabular}
\end{table}

\end{document}

4. 图片的引入

LaTeX插入图片时,支持格式有各种:png, pdf, jpg, eps等等。

将图片全部保存在目录下的同一个文件夹下,方便查找,注意图片的命名尽量避免中文,特殊字符等等(这里就只用了一个文件,我就直接放在目录下了)。

必须加载graphicx等包来支持图片的导入。

\documentclass{article}
\usepackage{graphicx}
\graphicspath{ {images/} }

\begin{document}
The universe is immense and it seems to be homogeneous, 
in a large scale, everywhere we look at.

\includegraphics{universe}

There's a picture of a galaxy above
\end{document}
\usepackage{graphicx} %%插入图片的宏包
\usepackage{float} %%设置图片浮动位置的宏包
\usepackage{subfigure} %%插入多图时用子图显示的宏包
\begin{figure}   %%旋转子系统姿态角
  \centering
  \subfigure{
    \label{fig:subfig:a} %% label for first subfigure
    \includegraphics[width=4cm,height=4cm]{taoziyu.jpg}}
  \hspace{1in}
  \subfigure{
    \label{fig:subfig:b} % label for second subfigure
    \includegraphics[width=4cm,height=4cm]{taoziyu.jpg}}
  \caption{The same cute cat (a) cute cat1. (b) cute cat2.}
  %% caption用于图表的标题
  \label{fig:attitude}  %% label for entire figure
\end{figure}

参考资料