昨天我立下了一个豪言壮语,“要写完毕业论文的初稿”,在完成了我的幻想之后,小菜鸡想给大家分享一点我用Latex的小经验。
对于公式主要问题集中在我们对于公式有许多莫名的需求,比如多行公式一个编号,多行公式多个编号,多行不同的对齐格式。
这里将经常使用的格式整理如下:
常用的环境主要有4种:gather、align、equation+split、equation+case
(1)gather环境默认多行居中对齐,一行一个编号。
例如:
\begin{gather}
y = \frac{1}{2}x^2+4x+6 \\
y = 6x
\end{gather}
(2)使用**可以暂停这段环境中公式的编号(align,equation通用)。
例如:
\begin{gather*}
y = \frac{1}{2}x^2+4x+6 \\
y = 6x
\end{gather*}
(3)notag可以阻止该行的编号。(align,equation通用)
例如:
\begin{gather}
y = \frac{1}{2}x^2+4x+6 \notag \\
y = 6x
\end{gather}
(1)align环境默认右对齐,一行一个编号
如:
\begin{align}
y = \frac{1}{2}x^2+4x+6 \\
y = 6x
\end{align}
(2)align环境可以结合"&“使用,就通过”&"对齐
如:
\begin{align}
y &= \frac{1}{2}x^2+4x+6 \\
y &= 6x
\end{align}
(1)equation默认情况下不换行,可以通过引入split环境,使用“\”换行,split默认右对齐。
(2)里面的split环境同样可以使用“&”对齐
\begin{equation}
\begin{split}
y &= \frac{1}{2}x^2+4x+6 \\
y &= 6x
\end{split}
\end{equation}
equation+case环境主要用来分类讨论,或者有左大括号的数学公式。
(1)默认环境下会左对齐。
比如:
\begin{equation}
D(x)=\begin{cases}
y = \frac{1}{2}x^2+4x+6 , \text{如果}x \in (-\infty,0] \\
y = 6x , \text{如果}x \in (0,+\infty)
\end{cases}
\end{equation}
\begin{equation}
D(x)=\begin{cases}
y = \frac{1}{2}x^2+4x+6 , &\text{如果}x \in (-\infty,0] \\
y = 6x , &\text{如果}x \in (0,+\infty)
\end{cases}
\end{equation}
这里给大家推荐一本书“一份不太简短的 LATEX 2ε 介绍”。书的第50页是数学符号表。
百度网盘:链接:https://pan.baidu.com/s/1m2P00VfPSD3kJinxQQWDrA 密码:j09y
或者使用网页
https://blog.csdn.net/ViatorSun/article/details/82826664
这里给大家推荐一个在线网站,贼简洁:
http://www.tablesgenerator.com/latex_tables
进入网站之后,点击 “File” ** -> “Paste table data”。如果是csv文件可以直接导入。然后把excel表格里面的内容直接复制进去,点击"Load"**。
直接会生成latex表格的内容。
如果导入之后,内容或者版式不满意,还可以使用上面的工具栏修改细节格式,如“合并单元格”,“调整字的颜色”,“设置边框线”等。
调整完之后直接点击**“Generate”**,即可更新代码。
这个可以减轻很多工作,特别是latex表格书写不熟悉的时候。
强烈推荐。
直接将代码复制进我们的tex文件中,即可以查看使用的表格。(如果报错的话,可以检查需要插入的包是否插入,在文章最开头插入即可。)
效果:
我们对于表格除了上述需求外,可能为了排版好看还会对表格的行宽以及列宽进行设置,
比如我们觉得上面的表格行间距太小了,我们想使用1.5倍行高,只需插入一行代码:\renewcommand\arraystretch{1.5}
即全部代码为:
\renewcommand\arraystretch{1.5}
\begin{table}[]
\begin{tabular}{|l|l|l|l|}
\hline
& 1月 & 2月 & 3月 \\ \hline
武汉加油 & \multirow{2}{*}{我要合并} & 我不合并 & 论文延期了 \\ \cline{1-1} \cline{3-4}
中国加油 & & \multicolumn{2}{l|}{我要上学} \\ \hline
\end{tabular}
\end{table}
必须我们想指定每一行的行宽,直接在\bgein{tabular}后面设置宽度即可,表格里面的内容就会自动换行,如:
\begin{tabular}{|p{2cm}|p{2cm}|p{4cm}|p{2cm}|}
结果:
此时格式默认单元格左对齐,如果这个时候还需要居中,右对齐,就不能通过直接指定"l/c/r"这些字母实现,需要使用**\centering(居中),\raggedleft(右对齐),\raggedright(左对齐)**等实现。(需要使用array包,即\usepackage{array})
如第2列居中,第3列右对齐,第4列左对齐:
\usepackage{array} %文章开头
\begin{tabular}{|p{2cm}|p{2cm}<{\centering}|p{4cm}<{\raggedleft}|p{2cm}<{\raggedright}|}
补充资料:https://blog.csdn.net/chichoxian/article/details/52050260
分章节编译是一个非常好用的功能,可以把不同章节分配在不同的tex文件中,有助于同时创作,相互参考。
比如我们在RelatedWork.tex文件中写所有和相关工作有关的内容,不需要额外的引入包,设置环境格式。
然后在主文件中,只需要\include{RelatedWork}即可,编译也是直接在主文件编译。所以一篇文章的主文件可以只有:
\documentclass[a4paper, 12pt]{book}
\usepackage{FDUThesis}
\usepackage{float}
\begin{document}
\include{Forewords}
\include{intro}
\include{RelatedWork}
\include{data_analysis}
\include{Methodology}
\include{Experiments}
\bibliographystyle{FDUbib}
\bibliography{Pandoxie-BiB}
\end{document}
对于Latex的书写,在之前Overleaf还没有崩掉的时候,我非常喜欢使用Overleaf写,因为它即使出错也可以编译出结果,还有检查英文单词错误的功能。而且模版超级多,随便下载一个就能开始书写。不用安装本地环境,还可以在不同的平台上创作,还可以多人协同修改。
现在还可以在半夜登陆,虽然有点慢,但是还算正常。
这里不做详细介绍。
乍一看本地环境配置有点略复杂有三个软件,但是拆开来看
具体安装以及配置过程(附安装包)可见:https://blog.csdn.net/ciecus_csdn/article/details/104623570
使用这个环境编译有以下好处:
latex有些不太方便的地方在于它不是一个“所见即所得”的东西,但是在这种编程环境下就没有这种问题。
对于公式,插图,在你插入的地方点击文件名,就会直接显示你插入的图片,或者你正在书写的公式。
此外因为链接了skim,所以再每一次编译完之后,pdf会直接显示最新编译的结果。
在你写完\ref按下键盘上的“{”之后,会自动跳出提示,告诉你这一页有哪些可以引用的部分,你选中你要引用的直接回车即可。
只要你把你的文本保存成.tex文件之后,你就发现所有关键字,文本都用不同颜色区分开来。提升写作的愉快感,并且能够提示你是否书写正确。
最后再跟大家讨论一个小众的问题,遇到这个问题是因为我做数据分析的时候,有个样本名词是韩文,但是我编译完之后显示的都是方框,如下图所示:
出现方框,说明目前latex没有合适的字体编译它,这个问题是大家提及比较少的一个问题,经过我的一番摸索,我终于找到了一个简单并且行之有效的方案,分享给大家,以便大家可以自由选择书写语言。
如果你使用的CJK编译环境,那么这种包是支持中日韩语言的。
步骤可以分成3步,此处以韩文为例:
(1)查电脑中有哪些支持韩文显示的字体
mac可以直接在Font(字体册)里面搜:韩语,就会显示支持韩语的所有字体。
(2)在sty文件中增加韩文字体
在sty文件中增加两行,
第一行:\setCJKfamilyfont{缩写名}{本地字体名}
第二行:\newcommand*{\命令名}{\CJKfamily{缩写名}}
本地字体名就是上面查找到字体的 PostScript名称,自己选择一个合适的就行。
\setCJKfamilyfont{korean_fonts}{JCsmPC}
\newcommand*{\korean}{\CJKfamily{korean_fonts}}
(3)在latex文字中告诉latex哪一段是特殊语言,用括号括起来。
比如:{\korean 시간을 달려서} (Rough)
然后我们再编译的时候就发现可以正常编译了。