LaTeX入门目录
0引言
0.1本文工作
因为平时使用LaTeX较少,本身对LaTeX不是很熟悉,所以文本不会系统且全面的介绍如何使用LaTeX制作一些精美的PPT、简历、报告、科技文章,也不会从头到尾教大家建议一套可用的LaTeX模板。但是本文想尽力解决在拿到模板后如何独立排版出一篇科技论文这一问题。从LaTeX软件的安装到期刊模板的使用,再到一些基本的配套插件,并分享一些主要的统计相关的使用技巧.
排版一篇文论需要一下几个方面的考虑:
– LaTeX软件的安装
– 公式的制作与引用
– 图的插入
– 表的制作与插入
– 参考文献的制作与引用
– 其他常用的方面
0.2 为什么学习LaTeX???(LaTeX VS Word)
在使用LaTeX之前大多数人使用的应该是Word来排版自己需要的报告、文档、待发表的文章甚至是书籍。相比较本文的LaTeX而言,Word给人的感觉是可见即可得,交互性比较好,而且排版功能还是比较强大的,但是我们为什么还需要付出学成本学习LaTeX呢。下面客观总结一下LaTeX的优缺点:
LaTeX优点
– 对于科研人员来说很多编辑设会提供或者只提供LaTeX模板给作者。
– 合适的使用模板会让你的文章or书籍快速接近印刷级别的水平。
– 更加便捷的排版大量的数学公式。
– 学习程高本相对不高(相对R语言、py等语言)。通过使用固定的模板和学习少量的命令可以快速的生成自己需要的文档。
– 相对于R的扩展包而言,LaTeX也具有很多功能强大的扩展红宏使用,用以实现大多数人的排版需求。
– 使用平台广泛:常见PC系统(XP win 7 -10 mac)都有相应的LaTeX版本与之对应。
当然我使用的比较少,除了上述优点外还有很多其他的有点等待着你们去发现。下面聊一下我感受到的缺点。
LaTeX缺点
– 自己从头设计版面,还是需要一定的学习成本和时间的付出。
– LaTeX更加擅长一下诸如文章书籍PPT等有结构化模板的排版任务,一些非结构化的排版任务就不是很方便使用LaTeX来做。
– 想熟练掌握LaTeX的大部分命令还是需要一定时间和练习。
– 不能可见即可得,想要预览需要LaTeX编译一下才可以。
总结
各种不同的软件都有自己的适用场景,在不强制的情况下大家可以自己选择自己熟练和适合自己的软件即可。
1、软件的安装
latex排版软件我知道两个:Ctex套装
和texlive
两个,这两个软件可以同时安装。如果要下载可以下载ctex套装
,理由如下:Ctex套装安装简单,不需要配置外置编译器和pdf生成器,对电脑的配置要求相对texlive
较低。排版编程界面比较友好,适应绝大多数的模板,已安装好大部分常用包。当然有条件也可以同时安装texlive
,因为也确实有模板在Ctex套装
不可以兼容,由于编译洁面和功能比较简陋,这时候需要自己配置编译器,推荐两个周围人常用和我自己在用的编译器:WinEdt 10、texstudio、SumatraPDF
.下面提供了下载网址点击链接即可,有需要自己移步去看,这里就不重复列出了。链接。
也可以自定百度(这里用的是必应)。
1.1 Ctex下载地址
最后找一个自己喜欢得方式下载安装即可。
1.2 texlive的下载地址
引言中的链接其实已经给了下载地址,可以自己按需求去下载,不过这个安装会有点麻烦,如果遇到问题可以自行百度安装。
2、公式制作与引用
在介绍公式之前说明一下LaTeX文档的基本结构。
\documentclass[a4paper,12pt]{article} %% 设置文档类别,12pt字体和A4纸
\usepackage[12345678]{--------} %%载入宏包
\begin{document} %% 文档开始
正文书写内容
\end{document} %% 文档结束
上面是一下常见的LaTeX格式,一般都是在正文内容编辑。
2.1 公式几种形式
形式一:单$
前文,$x + y = 2$,后文
结果一:
前文,
x
+
y
=
2
x + y = 2
x+y=2,后文
形式二:双$
$$x + y = 2$$
结果二:
x
+
y
=
2
x + y = 2
x+y=2
形式三:\begin{align} ***\end{align}
\begin{align}
x + y = 2
\end{align}
结果三:
x
+
y
=
2
(1.1)
x + y = 2\tag{1.1}
x+y=2(1.1)
形式四:\begin{equation} ***\end{equation}
\begin{equation}
x + y = 2
\end{equation}
结果四:
x
+
y
=
2
(1.2)
x + y = 2\tag{1.2}
x+y=2(1.2)
形式五:\[ ***\]
\[x + y = 2\]
结果五:
x
+
y
=
2
x + y = 2
x+y=2
总结:以上五种排版生成方式都可以用来生成公式,其中单$是句内部排版公式,其他四种方式是用来句间排版公式,一般是公式居中显示。\begin{align} ***\end{align}
和\begin{equation}***\end{equation}
可以对公式自动编号。下面以\begin{equation}***\end{equation}
为例子进行进行其他公式的说明。
2.2公式的编号与引用
2.2.1自动编号+自动引用
代码一:
注意:要想引用公式需要使用\label
给公式起名字。才可以使用名字进行自动引用
\begin{equation}
x + y = 1 \label{eq1}
\end{equation}
\begin{equation}
x + y = 2 \label{eq2}
\end{equation}
公式\ref{eq1}和公式\ref{eq2}的引用。
效果一:
x
+
y
=
1
(1.3)
x + y = 1 \tag{1.3}
x+y=1(1.3)
x
+
y
=
2
(1.4)
x + y = 2 \tag{1.4}
x+y=2(1.4)
公式1.3和公式1.4的引用。
代码二:
也可以通过\notag
命令去掉自动编号的命令。
\begin{equation}
x + y = 2 \notag
\end{equation}
效果二:
x
+
y
=
2
x + y = 2
x+y=2
2.2.2手动编号+手动引用
代码一:
\begin{equation}
x + y = 3 \tag{1.1.1}
\end{equation}
\begin{equation}
x + y = 3 \tag{2.5.6}
\end{equation}
公式(1.1.1)和公式(2.5.6)的引用。
效果一:
x
+
y
=
1
(1.1.1)
x + y = 1 \tag{1.1.1}
x+y=1(1.1.1)
x
+
y
=
2
(2.5.6)
x + y = 2 \tag{2.5.6}
x+y=2(2.5.6)
公式(1.1.1)和公式(2.5.6)的引用。
2.2.3子公式的编号和引用
代码一:
子公式自动编号:
\begin{align}
x + y = k \label{eq3}\\
x + y = k \notag \\
x + y = k \label{eq4}
\end{align}
\begin{subequations}
\begin{align}
x + y = k \label{eq5}\\
x + y = k \notag \\
x + y = k \label{eq6}
\end{align}
\end{subequations}
\par 公式\ref{eq3}、公式\ref{eq4}、公式\ref{eq5}和公式\ref{eq6}的引用。
效果一:
x
+
y
=
k
(1.5)
x
+
y
=
k
x
+
y
=
k
(1.6)
\begin{aligned} & x + y = k \text{ (1.5)}\\ &x + y = k\\ &x + y = k \text{ (1.6)} \end{aligned}
x+y=k (1.5)x+y=kx+y=k (1.6)
x
+
y
=
k
(1.7a)
x
+
y
=
k
x
+
y
=
k
(1.7b)
\begin{aligned} & x + y = k \text{ (1.7a)}\\ &x + y = k\\ &x + y = k \text{ (1.7b)} \end{aligned}
x+y=k (1.7a)x+y=kx+y=k (1.7b)
公式1.5、公式1.6、公式1.7a和公式1.7b的引用。类似的也可以通过\tag
手动编号和绝对引用。
2.3 公式与R语言的交互
上面介绍了在LaTeX中常用的创建公式的方式,以及如何对公式进行打标签,编号和引用。其实平时绘图和编辑Markdown命令的时候也会使用到类似的LaTeX
公式,我一般使用的比较多的Markdown是CSDN中的博客编译器以及RMarkdown。R语言是以统计计算和统计可视化见长的统计软件,这部分以R语言中的应用为例子认识一下LeTeX基本公式语法。
往图中添加标签公式的方法有很多,R基础包自带的expression
函数就是一个,除此之外还有latex2exp
可以在R语言中使用latex的命令来给图片添加公式。《R语言画图之——expression》1基于expression
函数常用的命令从常用的运算符、大型运算、集合运算、希腊字母等方面给出常用的公式命令。而latex2exp包则使用TeX
函数实现LaTeX
公式的创建,以上两种方式都可以在基础绘图
和ggplot2
等R语言的绘图系统中使用。
下面给出R语言的代码和例子:
plot(0, 0, xlim = c(5,6), ylim = c(5,6),
xlab = expression(beta),
ylab = expression(gamma))
text(5.5, 5.5, expression(frac(1, beta)), cex = 2)
2.4常用公式汇总
数学公式是非常多的,在《LaTeX公式手册(全网最全)》2中整理了大部分的我们有可能会用到的公式,下面是这篇博客的目录,有兴趣的同学可以自己移步去浏览查看。想要全部记住是需要一定的时间和精力,本小节给出平时用的多一些的公式和数学符号。
2.4.1 初等函数和基本运算
$$
\hat{\beta},
a^b,
\log_{10} x,
\log e,
\sin a,
\arcsin a,
\min(x1,x2),
\max(x1,x2),
\lim_{x \to +\infty} \frac{1}{x(x+1)},
g', g'', g^{(3)},
\sqrt{2},
\boxplus,
\oplus,
\circleddash,
\bigoplus
$$
β ^ , a b , log 10 x , log e , sin a , arcsin a , min ( x 1 , x 2 ) , max ( x 1 , x 2 ) , lim x → + ∞ 1 x ( x + 1 ) , g ′ , g ′ ′ , g ( 3 ) , 2 , ⊞ , ⊕ , ⊝ , ⨁ \hat{\beta}, a^b, \log_{10} x, \log e, \sin a, \arcsin a, \min(x1,x2), \max(x1,x2), \lim_{x \to +\infty} \frac{1}{x(x+1)}, g', g'', g^{(3)}, \sqrt{2}, \boxplus, \oplus, \circleddash, \bigoplus β^,ab,log10x,loge,sina,arcsina,min(x1,x2),max(x1,x2),x→+∞limx(x+1)1,g′,g′′,g(3),2,⊞,⊕,⊝,⨁
2.4.2集合逻辑符号
$$
\varnothing,
\in,
\notin ,
\subset,
\subseteq,
=,
\ne,
\neq,
\approx,
<,\le,
\ge,
\leqslant,
\geqslant,
\exists,
\therefore,
\because,
\cap,
\cup
$$
∅ , ∈ , ∉ , ⊂ , ⊆ , = , ≠ , ≠ , ≈ , < , ≤ , ≥ , ⩽ , ⩾ , ∃ , ∴ , ∵ , ∩ , ∪ \varnothing, \in, \notin ,\subset,\subseteq,=, \ne, \neq,\approx,<,\le,\ge,\leqslant,\geqslant, \exists,\therefore, \because,\cap,\cup ∅,∈,∈/,⊂,⊆,=,=,=,≈,<,≤,≥,⩽,⩾,∃,∴,∵,∩,∪
2.4.3上下标
$$
x^2,
x_2,
A^{i,j},
A_{i,j},
{}_1^2\!Y_3^4
$$
x 2 , x 2 , A i , j , A i , j , 1 2 Y 3 4 x^2, x_2, A^{i,j}, A_{i,j}, {}_1^2\!Y_3^4 x2,x2,Ai,j,Ai,j,12Y34
2.4.4大型运算符
$$
\sum_{n=1}^N n,
\prod_{n=1}^N x_n,
\int_{-1}^{1} x\, {\rm d}x,
\iint_{R} \, \mathrm{d}x\,\mathrm{d}y,
\bigcap_{n = 1}^{N} A_n,
\bigcup_{n = 1}^{N} A_n,
\dbinom{n}{k}=\binom{n}{n-k}=\mathrm{C}_n^k=\mathrm{C}_n^{n-k}
$$
∑ n = 1 N n , ∏ n = 1 N x n , ∫ − 1 1 x d x , ∬ R d x d y , ⋂ n = 1 N A n , ⋃ n = 1 N A n , ( n k ) = ( n n − k ) = C n k = C n n − k \sum_{n=1}^N n, \prod_{n=1}^N x_n, \int_{-1}^{1} x\, {\rm d}x, \iint_{R} \, \mathrm{d}x\,\mathrm{d}y, \bigcap_{n = 1}^{N} A_n, \bigcup_{n = 1}^{N} A_n, \dbinom{n}{k}=\binom{n}{n-k}=\mathrm{C}_n^k=\mathrm{C}_n^{n-k} n=1∑Nn,n=1∏Nxn,∫−11xdx,∬Rdxdy,n=1⋂NAn,n=1⋃NAn,(kn)=(n−kn)=Cnk=Cnn−k
2.4.5 矩阵大括号
$$
\begin{matrix}
11 & 12 \\
21 & 22
\end{matrix}
$$
$$
\begin{vmatrix}
11 & 12 \\
21 & 22
\end{vmatrix}
$$
$$
\begin{bmatrix}
11 & \cdots & 1n \\
\vdots & \ddots & \vdots \\
n1 & \cdots & nn
\end{bmatrix}
$$
11
12
21
22
\begin{matrix} 11 & 12 \\ 21 & 22 \end{matrix}
11211222
∣
11
12
21
22
∣
\begin{vmatrix} 11 & 12 \\ 21 & 22 \end{vmatrix}
∣∣∣∣11211222∣∣∣∣
[
11
⋯
1
n
⋮
⋱
⋮
n
1
⋯
n
n
]
\begin{bmatrix} 11 & \cdots & 1n \\ \vdots & \ddots & \vdots \\ n1 & \cdots & nn \end{bmatrix}
⎣⎢⎡11⋮n1⋯⋱⋯1n⋮nn⎦⎥⎤
$$
f(n) =
\begin{cases}
1, & \text{if }n \le 2 \\
0, & text{if }n > 2
\end{cases}
$$
f ( n ) = { 1 , if n ≤ 2 0 , if n > 2 f(n) = \begin{cases} 1, & \text{if }n \le 2 \\ 0, & \text{if }n > 2 \end{cases} f(n)={1,0,if n≤2if n>2
2.4.6 空格
$$
\alpha\quad\beta, %单个空格
\alpha\qquad\beta, %% 两个空格
\alpha\ \beta, %%正常空格
\alpha\!\beta%%减小空格
$$
α β , α β , α β , α β \alpha\quad\beta, %单个空格 \alpha\qquad\beta, %% 两个空格 \alpha\ \beta, %%正常空格 \alpha\!\beta%%减小空格 αβ,αβ,α β,αβ
2.4.7 希腊字母
小写:
$$
\alpha,
\beta,
\gamma,
\delta,
\theta,
\lambda,
\mu,
\rho,
\sigma,
\tau,
\phi,
\psi
$$
α
,
β
,
γ
,
δ
,
θ
,
λ
,
μ
,
ρ
,
σ
,
τ
,
ϕ
,
ψ
\alpha, \beta, \gamma, \delta, \theta, \lambda, \mu, \rho, \sigma, \tau, \phi, \psi
α,β,γ,δ,θ,λ,μ,ρ,σ,τ,ϕ,ψ
大写:
$$
\Alpha,
\Beta,
\Gamma,
\Delta,
\Theta,
\Lambda,
\Mu,
\Rho,
\Sigma,
\Tau,
\Phi,
\Psi
$$
A , B , Γ , Δ , Θ , Λ , M , P , Σ , T , Φ , Ψ \Alpha, \Beta, \Gamma, \Delta, \Theta, \Lambda, \Mu, \Rho, \Sigma, \Tau, \Phi, \Psi A,B,Γ,Δ,Θ,Λ,M,P,Σ,T,Φ,Ψ
2.5公式插件神奇——Mathtype
在使用word排版公式时除了自带的公式编译器还有matthtype
可以被我们使用,比较神奇的是mathtype
软件还可以交互的生成LaTeX
的命令,如何遇到比较复杂的公式自己不会而又很急着打出来,又或者你已经用mathtype
把需要的公式打了出来。都可以使用这个功能转化为LaTeX
代码。在博客3《latex排版神器——Mathtype和Excel2LaTeX》中介绍基本的使用方式。大家有需要的自取。
注:这个软件对于初学者是比较友好的,但是如何是长期使用LaTeX
的用户来说,建议识记常用的命令语句,提高排版效率,而不是过度依赖这个软件。
3、图片的插入与引用
对于期刊中学术图片的插入,LaTeX自己拥有绘制高质量图片的功能同时也可以从R、py、Matlab、Viso、Xmind
等软件中制作完成后插入LaTeX模板使用。因为我的主语言是R,而R本身也是可以绘制高质量的统计可视化图片,本节会介绍一些使用R语言转换外部图片的命令,对接外部图片和R语言的绘制的图片
与LaTeX
。同时也会介绍LaTeX的插图排版的基本命令,在插图时期刊更倾向于使用eps、pdf
等格式,作图质量一般不低于300dpi
。
3.1LeTeX插图引图基本命令
类似R语言中library
,先载入LaTeX中图型相关的宏包。
\usepackage{epsfig,graphicx,picins,picinpar,subfigure,epstopdf}% 图形宏包
\usepackage{amsmath,amssymb,amsfonts,amsthm,fancyhdr}
\usepackage[dvips]{color}%色彩宏包
3.1.1载入单张图片
代码讲解:
\begin{figure}[htbp] %% 载入格式开始
\centering %% 居中
\includegraphics[scale = 0.5]{图名.扩展名}
\caption{图片标题}
\label{图片标签方便引用}
\end{figure} %% 载入格式结束
第一行说明的是控制图片位置的参数:[htbp]
:
— [h] :全称是(here)
,固定图片在当前位置,若如果这一页的空间不足,图片会转到下一页,并在上一页留下空白;
— [t] ] :全称是(top)
,优先把图片放置在页面的顶部;
— [b] :全称是(bottom)
,优先把图片放置在页面底部;
— [p] 浮动,系统会自动排版图片的位置;
一般这几个参数会混合使用,例如:[h]、[ht]、[htbp]
。
第三行参数scale = 0.5
图片大小控制参数:
— [scale = 0.5]
,表示按原图比例缩放,比如 scale=0.5 表示将原图缩小 2 倍,如果要放大只需要将 scale 设置为大于 1 即可;
— [height = 5cm, width = 5cm]除了上面的scale
参数,还可以直接设置图片宽高。
— \caption
是用来设置图片的名称的。
下面以jpeg
格式图片为例,做一个是实际例子。
实际案例:
\begin{figure}[ht]
\centering
\includegraphics[scale = 0.8]{ts.jpeg}
\caption{时间序列分解图}
\label{ts}
\end{figure}
\section{Table}
我想引用Fig\ref{ts}.
效果:
我想引用Fig1.
3.1.2 载入多张图片
\begin{figure}[htbp]
\centering
\subfigure[pie1]
{
\begin{minipage}[b]{.3\linewidth}
\centering
\includegraphics[scale = 0.2]{hY.jpeg}
\end{minipage}
}
\subfigure[pie2]
{
\begin{minipage}[b]{.3\linewidth}
\centering
\includegraphics[scale = 0.2]{hY.jpeg}
\end{minipage}
}
\subfigure[pie3]
{
\begin{minipage}[b]{.3\linewidth}
\centering
\includegraphics[scale = 0.2]{hY.jpeg}
\end{minipage}
}
\caption{饼图}
\end{figure}
其中\subfigure[***]
, ***
处填写子图的名字,\begin{minipage}[b]{.3\linewidth}
中的0.3
是表示该子图占整行的百分比。
下面是效果:
直接重新复制一组代码可以得到:
\begin{figure}[htbp]
\centering
\subfigure[pie1]
{
\begin{minipage}[b]{.3\linewidth}
\centering
\includegraphics[scale = 0.2]{hY.jpeg}
\end{minipage}
}
\subfigure[pie2]
{
\begin{minipage}[b]{.3\linewidth}
\centering
\includegraphics[scale = 0.2]{hY.jpeg}
\end{minipage}
}
\subfigure[pie3]
{
\begin{minipage}[b]{.3\linewidth}
\centering
\includegraphics[scale = 0.2]{hY.jpeg}
\end{minipage}
}
\subfigure[pie4]
{
\begin{minipage}[b]{.3\linewidth}
\centering
\includegraphics[scale = 0.2]{hY.jpeg}
\end{minipage}
}
\subfigure[pie5]
{
\begin{minipage}[b]{.3\linewidth}
\centering
\includegraphics[scale = 0.2]{hY.jpeg}
\end{minipage}
}
\subfigure[pie6]
{
\begin{minipage}[b]{.3\linewidth}
\centering
\includegraphics[scale = 0.2]{hY.jpeg}
\end{minipage}
}
\caption{饼图}
\end{figure}
多图的引用也是类似的这里就不多介绍了。
3.2 任意格式图片的制作
上面大体介绍了LaTeX
中单图和多图的插入,在实际的排版中我更加倾向于使用R语言绘图,拼图保存为固定的格式。也可以使用R语言转换数据的格式。本小节介绍用R语言实现LaTeX与固定格式的交互。
3.2.1 R语言绘图排版
R语言中有很多可以拼接布局图片的功能与软件,《R语言可视化——图片拼接排布(一)》4中介绍了使用customLayout
包对图片进行布局,除此之外基础白内还有一些图片布局函数:layout(mat)、par(mfrow = c(n, m))、par(mfcol = c(n, m))、par(fig = c(1 2 3 4))
等,还有ggplot2
包中的分面也可以对多张子图进行统一布局,与之相关的还有patchwork
以及布局包gridExtra
。由于篇幅原因这里只是简单列举相关的包,就不会详细的展示了,大家有兴趣的可以自行寻找资料学习。
3.2.2 R语言可以输出的格式
R语言可以保存的图片种类很多,下面介绍一些主要的保存图片的格式。先介绍一个不使用函数命令的方法:
选中R中的图片,右键。
这样就可以保存eps
或者ps
格式的图片了。也可以通过下面的方式保存图片:
上面的保存方式是通过实时的图片大小控制保存图片大小的。不能够批量的保存,而且每次调节大小比较麻烦。下面介绍命令交互保存。首先是一类常用的内置函数:
pdf("Plot.pdf")
Plot <- ggplot(data, aes(x, y)) + geom_point()
print(Plot)
dev.off()
上面以pdf
格式为例展示了R语言中一类图片输出函数。除此之外还有:
函数 | 图片格式 |
---|---|
png | .png |
jpeg | .jpg or .jpeg |
postscript | .eps |
具体参数的说明:
> jpeg
function (filename = "Rplot%03d.jpg", width = 480, height = 480,
units = "px", pointsize = 12, quality = 75, bg = "white",
res = NA, family = "sans", restoreConsole = TRUE, type = c("windows",
"cairo"), antialias = c("default", "none",
"cleartype", "gray", "subpixel"))
注意:文件名字一定要带正确的后缀名,打开图片设备后一定要使用dev.off()
函数关闭设备才可以保存成功。
– filename :文件名字
– width:图片宽度
– height:图片高度
– units:单位
– bg:背景色
– res:分辨率
除了上述的用法还有:ggplot2里还有ggsave
函数可以保存图片,下面是使用格式:
> library(ggplot2)
> ggsave
function (filename, plot = last_plot(), device = NULL, path = NULL,
scale = 1, width = NA, height = NA, units = c("in",
"cm", "mm", "px"), dpi = 300, limitsize = TRUE,
bg = NULL, ...)
参数和内置函数很相似,但是有一些差距,具体含义如下:
– filename :文件名字
– width:图片宽度
– height:图片高度
– units:长度宽度单位
– bg:背景色
– dpi:分辨率
– scale 默认图片的几倍
3.2.3 任意图片格式的转换
3.2.3.1 PS转换
可以把图片导入PS,然后通过另存为转化。除了会改变图片格式,也可以加强图片的画质。其他图片处理软件的思路类似,随着设备性能的提升,甚至可以直接截图保存常见的图片。初次之外还有很多转换图片格式的小插件。
3.2.3.2 命令窗口转换
已有 png 或 jpg 格式的图片,在图片目录下,和打开jupyter
类似,按住 shift+鼠标右键,选择 在此处打开命令窗口(在此处打开 PowerShell 窗口
),然后在终端窗口输入:bmeps -c ***.jpg ***.eps
,其中 -c
是让图片彩色输出,***.jpg
为原图,***.eps
为转换的 eps 格式的图的名字和格式;
3.2.3.3 R语言作图系统转换
除了上述两种方式之外,还可以使用R语言转换数据格式,因为图片本身是三通道的三张数字表格,我们可以通过数据整形转化为橡塑颜色,使用R语言的基础绘图系统或者ggplot2
绘图系统展示出来,并且可以保存为我们想要的图片格式。
# 载入包
library(jpeg) # 读取数据
library(reshape) # 数据整形
图片的读取:
> (Jpg <- list.files(path = "data", pattern = ".jpg"))
[1] "ATT1_DSCN9647.jpg" "ATT2_HoireRDBeekeeperReport.jpg"
[3] "ATT3_AttackCarnage1.jpg" "ATT4_20190921_152954.jpg"
[5] "ATT5_20190918_230100.jpg" "ATT6_20190918_235343.jpg"
> img <- readJPEG(paste0("data\\", Jpg[3]), native = F)
> dim(img)
[1] 600 450 3
可以看出图片是600*450的三张像素数据。然后使用reshape::melt
拉直三张数据。
> longImage <- reshape::melt(img)
> dim(longImage)
[1] 810000 4
> str(longImage)
'data.frame': 810000 obs. of 4 variables:
$ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
$ X2 : int 1 1 1 1 1 1 1 1 1 1 ...
$ X3 : int 1 1 1 1 1 1 1 1 1 1 ...
$ value: num 1 1 0.996 0.992 0.988 ...
> 600*450*3
[1] 810000
使用reshape
提取每个点的三原色做成数据框。
> rgbImage <- reshape(longImage, timevar = "X3", idvar = c("X1", "X2"), direction = "wide")
> str(rgbImage)
'data.frame': 270000 obs. of 5 variables:
$ X1 : int 1 2 3 4 5 6 7 8 9 10 ...
$ X2 : int 1 1 1 1 1 1 1 1 1 1 ...
$ value.1: num 1 1 0.996 0.992 0.988 ...
$ value.2: num 1 1 1 0.996 0.992 ...
$ value.3: num 0.984 0.98 0.976 0.973 0.969 ...
- attr(*, "reshapeWide")=List of 5
..$ v.names: NULL
..$ timevar: chr "X3"
..$ idvar : chr "X1" "X2"
..$ times : int 1 2 3
..$ varying: chr [1, 1:3] "value.1" "value.2" "value.3"
> 600*450
[1] 270000
做颜色数据框,三列代表rgb
三原色。
> rgbImage$X1<- -rgbImage$X1
> col <- rgbImage[, substr(colnames(rgbImage), 1, 5)== "value"]
绘图输出:
with(rgbImage,
plot(X2, X1, col = rgb(col),
asp = 1, pch = ".", axes = F,main = paste0(Jpg[3])),
xlab = "n", ylab = "n"
)
图片的介绍就大体介绍这些,下面介绍LaTeX
中的表格制作。
4、表格的插入与引用
4.1 创建表格
4.1.1简单表格与基本参数说明
代码:
\begin{center}
\begin{table}[ht]
\centering
\caption{Table 1}
\begin{tabular}{ |l| c| r| }
\hline
NA& NA & NA \\
\hline
NA & NA& NA\\
\hline
\end{tabular}
\label{tab1}
\end{table}
\end{center}
\begin{table}[ht] ** \end{table}
用来创建表格,\centering
表格居中,[ht]
参照公式的位置控制参数,\caption{Table 1}
表格名字,\label{tab1}
表格标签,\hline
添加表格框线。|l| c| r|
分别是表格内部的左对齐、居中、右对齐。
效果:
4.1.2双线表的制作
代码:
\begin{table}[ht]
\centering
\caption{Table 2}
\begin{tabular}{||c c c c||}
\hline
Col1 & Col2 & Col2 & Col3 \\
\hline\hline
1 & NA & NA & NA \\
\hline
2 & NA & NA & NA \\
\hline
3 & NA & NA & NA \\
\hline
4 & NA & NA& NA \\
\hline
5 & NA & NA & NA \\
\hline
\end{tabular}
\end{table}
左右两边的双线由{||c c c c||}
控制,中见的双线由\hline\hline
控制。
4.1.3固定行宽
代码:
\begin{center}
\begin{table}[ht]
\centering
\caption{Table 1}
\begin{tabular}{| m{5em} | m{1cm}| m{1cm} |}
\hline
NA& NA & NA \\
\hline
NA & NA& NA\\
\hline
\end{tabular}
\label{tab1}
\end{table}
\end{center}
其中{| m{5em} | m{1cm}| m{1cm} |}
控制行宽,在这里,m
代表middle,p
代表top,b
代表bottom。
效果:
4.1.4 合并和列
代码:
\begin{center}
\begin{tabular}{ |c|c|c|c| }
\hline
\multicolumn{3}{|c|}{Multiple col}\\
\hline
col1 & col2 & col3 \\
\hline
\multirow{3}{4em}{Multiple row} & NA & NA \\
& NA & NA \\
& NA & NA \\
\hline
\end{tabular}
\end{center}
使用\multicolumn
命令来合并列。使用multirow
合并行,但是合并行需要引入multirow
宏包。
效果:
4.1.5算法表格实操
\begin{table}
\centering
\caption{EM Algorithm}
\begin{tabular}{ll}
\hline\noalign{\smallskip} %行距设置为smallskip
\multicolumn{2}{l}{\textbf{\emph{EM Algorithm}}} \\
\noalign{\smallskip}\hline\noalign{\smallskip}
Step$\:$1 & Set$\beta = \beta_0$\\ %
\noalign{\smallskip}
Step$\:$2 & for i in 1:N \\
\noalign{\smallskip}
Step$\:$3& E步,计算潜变量的期望\\
\noalign{\smallskip}
Step$\:$4& M步,计算得分的函数极大值点更新$\beta$\\
\noalign{\smallskip}
Step$\:$5& 设置收敛条件,收敛输出,不收敛重复Step$3$和Step$4$。\\
\noalign{\smallskip}\hline
\end{tabular}
\end{table}
效果:
4.2 Excel2LaTeX与表格
类似与mathtype
,制作表格也有很多插件,《latex排版神器——Mathtype和Excel2LaTeX》3中介绍了Excel2LaTeX
的使用,有需要可以移步去看。
4.3 R语言与表格的制作
即使是有了上述制作表格的插件,也需要去手动的输入,这节主要介绍R语言和LaTeX
结合的一些功能。
– R语言可以把计算好的格式型数据存为csv
、excel
。或者是txt
。
– R语言可以通过字符操作直接生成中见繁琐的重复性命令。比如下面的命令
> data.frame(
+ x1 = round(rnorm(10, 99, 16)),
+ y1 = rep('&', 10),
+ x2 = round(rnorm(10, 99, 16)),
+ y2 = rep('&', 10),
+ x3 = round(rnorm(10, 99, 16)),
+ y3 = rep('&', 10),
+ z = rep('\\', 10)
+ )
x1 y1 x2 y2 x3 y3 z
1 95 & 93 & 95 & \\
2 112 & 124 & 110 & \\
3 96 & 103 & 88 & \\
4 68 & 104 & 82 & \\
5 113 & 86 & 119 & \\
6 114 & 97 & 107 & \\
7 104 & 86 & 98 & \\
8 100 & 102 & 77 & \\
9 106 & 96 & 83 & \\
10 116 & 77 & 72 & \\
5、参考文献的插入与引用
5.1 参考文献的格式
使用格式:
\begin{thebibliography}{99}
\bibitem{ref1}
\bibitem{ref2}
\bibitem{ref3}
\end{thebibliography}
代码:
\begin{thebibliography}{99}
%\addcontentsline{toc}{section}{References}
\bibitem{HH} Huang heng. Research on the influence of negative online comment response on the purchase intention of potential consumers [D]. Huazhong Agricultural University, 2016. %2a
\bibitem{ggplot2} Hadley Wickham.ggplot2. Elegant Graphics for Data Analysis. Springer, 2016.%在可视化分析应用、模型无关放在最后
\bibitem{1} Keyu Yan, Yichi Zhang. Text feature extraction method based on TF-IDF for ancient books. Electronic Technology and Technical Engineering, 2019(17):130-131.
\bibitem{2} Yongliang Wu, Shuliang Zhao, Changjing Li, Nadi Wei, Ziyan Wang. Text classification method based on TF-IDF and cosine similarity[J]. Chinese Information Journal, 2017,31(05):138-145.
\bibitem{3} Wang Tao, Li Ming. Research on comment text mining based on LDA Model and Semantic network [J]. Journal of Chongqing Technology and Business University (Natural Science Edition), 2019,36 (04) : 9-16. %LDA
\end{thebibliography}
效果:
5.1 参考文献的引用
绝对引用使用$^{[1-5]}$
[
1
−
5
]
^{[1-5]}
[1−5]
相对引用使用\cite{toc}
[
1
]
^{[1]}
[1]
6、其他常用操作
6.1 章节结构
\section{问题重述}
\section{符号说明}
\section{问题分析}
\section{基本假设}
\section{模型的建立与求解}
\subsection{问题一的求解}
\subsection{问题二的求解}
\subsection{问题三的求解}
\section{模型的优缺点}
\par 换行另起一段
\\ 换行不起一段
% 注释
\noindent 段落缩进
6.2 引用
\label{section:this}
\ref{section:this}
\pageref{section:this}
7、总结
最后希望可以帮助大家提高latex排版效率。但是想要熟练使用,需要再自己排版出一篇完整的文章。水平有限发现错误还望及时评论区指正,您的意见和批评是我不断前进的动力。
参考文献
R语言画图之——expression:https://tjxwz.blog.csdn.net/article/details/112150509 ↩︎
LaTeX公式手册(全网最全):https://www.cnblogs.com/1024th/p/11623258.html ↩︎
latex排版神器——Mathtype和Excel2LaTeX: https://tjxwz.blog.csdn.net/article/details/119087353 ↩︎ ↩︎
R语言可视化——图片拼接排布(一)https://blog.csdn.net/weixin_46111814/article/details/105666491 ↩︎