从Word、MarkDown到Latex,打造最优雅的写作方式
1 | 本来我是没有写这篇文章的,但是因为最近正好换了新电脑,所以Latex环境要全部重配,因此干脆顺便记录一下使用过程以及debug过程。 |
Markdown与Typora
如果你具有较为充足的时间,并且考虑使用电子产品做课程笔记,那么Markdown将会是你在学习Latex前很好的过渡工具。
如果不是,那么可以直接跳转到后文观看Latex的使用,以应付你的毕业设计。
功能介绍与下载安装
- Markdown是一种轻量化文本标记语言,其本质同word差别不大,对于理工科人而言,最好的区别在于其在word的基础上增加了公式与一些简单的标记(比如这里显示的加粗与前面的序列)。可以将Markdown试做Latex的超级轻量化版本,主要用于掌握数学公式的语法,这在后续撰写Latex的时候也将更加习惯。
- Word是一种所见即所得的语言,即你打出来的字同你最终得到的效果是一致的
- Markdown严格来讲是一种所见非所得的语言,即你所打字的内容不仅包含主要内容,还包含对格式的定义等,需要通过额外的编译步骤才能得到最终生成的文本or PDF。
- 由于Markdown的语法本身比较简单,所以Typora将这种所见非所得的语言简化为了所见即所得的格式,即你在打字的同时Typora就在帮你实时编译。这一操作极大地方便了从Word过渡到Markdown的用户。
- Typora打字界面的左下角有一个小按钮,为
启用源代码模式
,点击即可看到所生成代码的源代码,即在编译之前的语言。有时一些小bug可以在源代码界面中进行修改。
- Typora是markdown的编辑器之一,如同Microsoft和WPS都是word的编辑器之一一样。
- Typora简洁并且独立,同时也为Markdown做了一定的特定优化方案,缺点是要钱,不过下面有一套完整的免(po)费(jie)Typora下载方案:
- 先在以下链接中下载1.9.3版本(实际上是1.9.5):Typora — stable release channel
- 下载完成后进入该链接下载工具包(百度云或蓝奏云)并根据教程进行序列号提取:Typora 免费安装教程(支持版本:1.9.5)_typora免费版-CSDN博客
Markdown的配置
完成安装后,进入“文件”-“偏好设置”,进行一些个人推荐的基础配置:
- “编辑器” - “成对使用的符号” - “匹配Markdown字符” 勾选,这个选项可以让你更方便的进行字体的加粗和倾斜。
- “Markdown” - “Markdown扩展语法” - “内联公式
$$
” 勾选,这个可以让你快速的用$$
输入行内公式,现在这个用法已经不算很扩展了,很多编译器(包括Latex的)都支持。其他的扩展语法可勾可不勾,但需要知道的是这些语法是Typora才有的,换成Latex语法或者其他的Markdown编辑器都是不支持的,仅是为了方便你使用。 - “外观” - “字体大小” 可以改成自定义,自行调整大小,我用的16-17。
Markdown的语法
Markdown本身的语法很简单,基本常用就是以下几个:(没列出来的一般就用的比较少了)
语法 | 备注 | 效果 |
---|---|---|
**加粗** |
(快捷键 Ctrl+B) | 加粗 |
*斜体* |
(快捷键 Ctrl+I) | 斜体 |
<u>下划线</u> |
(快捷键 Ctrl+U) | 下划线 |
数杠线(大括号右边那个) | 连续输入三个,每个中间空格,输完回车 | 表格 |
(Ctrl+Enter换行) | ||
- (后面有空格) |
(Tab变子列表) | 无序列表 |
1. (后面有空格) |
(Tab变子列表) | 有序列表 |
# (后面有空格) |
一级标题 | |
## (后面有空格) |
(以此类推,最小6级) | 二级标题 |
键盘左上角的顿号(波浪号下面那个) |
把内容放在两个顿号中间,行内代码 | 效果 |
键盘左上角的顿号(波浪号下面那个) |
连按三个后回车,行间代码,可选择语言(如c,python等) | 同上 |
比较难记的是数学公式,行内数学公式使用$公式$
输入,行间数学公式使用
1 | $$ |
输入。数学公式和希腊字母表见链接:markdown公式符号大全_markdown符号-CSDN博客。
举个例子,常见的二次方程求根公式 $ x_{1,2}= $ 在Markdown中的语法是:
1 | $ x_{1,2}=\frac{-b \pm \sqrt{b^2-4ac}}{2a} $ |
在熟练之后,这套数学公式语法体系将比Mathtype要快上数倍。
基于VSCode的Latex编译
同上文一致,Latex也是一种文本语言,但是其结构比Markdown要复杂的多,可以说Markdown就是在Word的基础上加上了Latex的数学公式部分而已。除数学公式外,Latex能通过文本直接定义所生成内容的一切格式,就像在Word中常见的居中、字体、页码、页眉页脚、封面等等一切。Word是一种所见即所得的文本语言,而Latex不是,也就是说你所打字打出来的内容同你最终编译得到的内容(在格式方面)千差万别。
Latex的好处是在经历初期繁琐的设置和一定的学习成本之后,可以让创作者专注于内容本身——因为格式早就已经被写好了。
同Microsoft、WPS、Typora类似,Latex作为一种语言也需要相应的编辑器支持,比较常用的有简单易上手的在线编辑器Overleaf(但是因为在网页端所以存在大小限制问题),专门的TEX编辑器TexStudio(本人刚上手用的时候一直报错遂放弃),以及理工科代码领域的神,大名鼎鼎的万能软件VSCode(值得一提的是,他同样也可以当做Markdown编辑器)。
下载与环境配置
TexLive的下载与安装
编辑Latex所需要环境和语言有很多种可选,比如MikTex、TexLive等,具体区别可参考(译)在Windows上使用TeX:TeX Live与MiKTeX的对比 - gisliuliang - 博客园。这里以TexLive为例进行安装和使用。
TexLive的下载网址在这:Acquiring TeX Live as an ISO image - TeX Users Group。当然如果网络不行的话,可以选择开源的镜像网站进行下载,也就是该网页中自带的“download from a nearby CTAN mirror”。所需要下载的文件是”TexLive-版本号.iso“这一光盘映像文件,这个文件极大,可能需要下载几十分钟。
下载完成后,进入该映像文件,选择 "install-tl-windows" 文件,为了后面不必要的麻烦,右键以管理员身份运行。在所出现的安装界面Installer中,仅需要更改两个内容:安装位置和取消勾选“安装TexLive前端”。(本文中所使用的前端就是VSCode,所需无需TexLive自带的前端)。安装过程如下图所示:
这个下载的过程极久,总用时从大几十分钟到几个小时不等。安装结束后会出现running mktexlsr ‘安装目录’
的字样,这是配置文件的写入。出现“欢迎进入Latex的世界”表明安装成功。可以在命令行窗口(Win+R
→ cmd)输入xelatex -v
来确认安装版本和完成情况。
VSCode的下载与环境配置
如果你没有VSCode,那么直接上官网下载即可,记得更改相应的安装路径,并在安装时勾选“添加到PATH”。如果你忘记了自己是否将其添加到Path内,则在此电脑或Win中搜索“环境变量”后,查看Path
内是否含有VSCode的安装路径(精确到bin
),如下图。如果没有,新建添加进去即可,比如我的环境变量是D:\Microsoft VS Code\bin
。
中文插件:
为安装相应的中文扩展,在VSCode的扩展栏中输入
Chinese
搜索,安装Chinese (Simplified) Language Pack for Visual Studio Code
插件,重启VSCode后生效。Latex插件:
在VSCode的扩展栏中输入
latex
搜索,安装Latex Workshop
插件,直接生效。设置:
点击VSCode左下角的齿轮图案,选择
设置
。在右上角找到打开设置(json)
的图标并单击,进入VSCode的json配置界面settings.json
。如果是新的Latex,那么现在所呈现的内容将只有一段花括号。输入以下内容:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117// Latex settings:
{
"latex-workshop.latex.autoBuild.run": "never",
"latex-workshop.showContextMenu": true,
"latex-workshop.intellisense.package.enabled": true,
"latex-workshop.message.error.show": false,
"latex-workshop.message.warning.show": false,
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOCFILE%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
}
],
"latex-workshop.latex.recipes": [
{
"name": "XeLaTeX",
"tools": [
"xelatex"
]
},
{
"name": "PDFLaTeX",
"tools": [
"pdflatex"
]
},
{
"name": "BibTeX",
"tools": [
"bibtex"
]
},
{
"name": "LaTeXmk",
"tools": [
"latexmk"
]
},
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
},
],
"latex-workshop.latex.clean.fileTypes": [
"*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.ist",
"*.fls",
"*.log",
"*.fdb_latexmk"
],
"latex-workshop.latex.autoClean.run": "onFailed",
"latex-workshop.latex.recipe.default": "lastUsed",
"latex-workshop.view.pdf.internal.synctex.keybinding": "ctrl-click" // 我把原配置double-click改成了ctrl-click,这个是编译生成的pdf结果如何定位到原文的快捷键,个人习惯ctrl+click
}
注:
- 本人一般都使用Latex作为默认的PDF查看器,所以这段代码不包含外部PDF查看器的设置和使用,通常这二者是冲突的,即最好不要在使用其他软件打开所编译的PDF的情况下进行Latex的编译。
- 根据 json
文件编写规则,每个代码语句(除了代码块儿最后一句)都需要加上英文状态下的
,
,否则就会报错;而每个代码块儿的最后一句是不需要加上,
的。从上文整个代码块儿可以看出此规则。所以当你日后再次更改json文件为其他插件进行配置时,记得在最后加上,
。 - 代码块解读请参考Visual Studio Code (vscode)配置LaTeX - 知乎的6.2小节或其他相关文章。每篇教程所给出的latex配置json文件会有部分差异,所以为了日后使用建议还是读一下。
以电气学院毕设为例的Latex使用
基本使用步骤
- 首先下载浙大电气学院下的毕设模板latex包(下载地址为关于公布《电气工程学院2025届本科生毕业设计(论文)工作管理实施细则》的通知(更新),需内网,同毕设模板一起),解压得到如下文件夹(我是编译过了所以多了些奇奇怪怪的文件,不用在意)。其中
body
文件夹存放主要的文章内容,figure
文件夹存放文章图片,是两个比较常用的子文件夹。
使用VSCode打开
zjuthesis
这一整个文件夹(文件夹名字如果不是zjuthesis而是后面有一堆什么version的也一样,无所谓),并使用VSCode双击打开后缀是tex
的文件zjuthesis.tex
。这个tex文件是整个毕设论文的总配置文件,后面所有的子文件都被该主文件调用才能进行编译。点击VSCode右上角的绿色小三角形
Build Latex project
。- 如果VSCode的左下角开始转圈,一会儿后文件夹中多了一堆同名不同后缀的文件,主要关注
zjuthesis.pdf
,则表明编译成功。可以用VSCode打开该PDF文件,并左右分屏(如下图),实现左边输入,右边观测输出的写作模式。 - 如果没有任何反应,在搜索栏搜索
settings.json
,并重新复制上面的一长串代码后再次尝试(原因是zjuthesis可能自带了一个配置文件)。 - 如果还不行,可尝试的操作有:1)删去
.latexmkrc
;2)在其他教程上搜索一份settings.json
的配置代码放入。 - 如果之前存在编译出错或长时间编译失败的问题,建议打开左侧的Latex扩展,选择
清理辅助文件
进行重置。此外,建议打开VSCode下方的命令行窗口中的输出
栏,查看编译过程信息,若有编译问题会显示问号?
。
- 如果VSCode的左下角开始转圈,一会儿后文件夹中多了一堆同名不同后缀的文件,主要关注
这里以电气工程学院ee的本科生undergraduate毕业设计的最终版本final(而非开题版本)进行演示。
zjuthesis.tex
文件中包含了作者的一些基本信息和文件调用,原作者有比较详细的注释,跟着填写即可,编译后右侧的PDF会同步更新。下面这些代码无需更改,但是需要看一下,只要稍微有点英文和代码基础都能理解。
\newcommand{\inputundergraduate}
,很明显,这启用了一个新的代码块,这段代码块将其他文件夹下undergruduate
的部分引用了进来。下面还有一个类似的\newcommand
,但是那个是研究生的。因为我们已经在上面设置过我们是undergraduate
,所以只需要关注这里的就行。\ifthenelse{\equal{\Period}{final}}
,\newcommand{\undergradcurrstage}{final}
,我们是最终版本而不是开题,所以选择final
而不是proposal
,所以这只需要关注这一块即可。\inputpage{final}{cover}
,说明我们的文章构成中有cover
这一个东西。这个东西也是他帮你生成好了的。
- 那我们要改那些地方呢?——主文件
zjuthesis.tex
和你所使用的文件夹中的所有.tex
文件就是你的内容,在本例中,就是zjuthesis/undergraduate/final
里面的所有文件,包含abstract.tex
(摘要)、content.tex
(目录和主体内容)等。下面一节将具体讲解在写毕设论文的时候,该如何使用它去写。
手把手教你写毕设
现在,可以用latex原文+pdf编译结果的双屏显示来快速熟悉该毕设的代码架构了。
完善填写
zjuthesis.tex
中的个人基本信息,填写完成后编译查看是否有问题。顺着PDF的结构往下阅读,可以对PDF中的文字使用
Ctrl+Click
或double Click
来快速跳转到TEX文件对应的原文。- 快捷键取决于
settings.json
中最后一行设置的latex-workshop.view.pdf.internal.synctex.keybinding
是哪个)。 - 可以在左侧的资源管理器中看到文件所处的位置和文件名,一般需要自己改动的文件存在上文介绍的文件夹
\final
中,不需要自己改动的文件存在\page
中。 - 一般而言,在标题、作者等这类属于“论文基本信息”的位置,很多Latex模板(包括上面的毕设模板)都采取的是“先定义、后调用”的方式,所以使用该双向定位可能不准。如果跳转到了
\page
下的文件中,说明实际需要修改的位置不在这里。
- 快捷键取决于
- 目录是自动生成的(作者写好相应的代码了),无需改动
- 文章的主体内容章节存在
content.tex
文件中,打开即可看到如下图所示界面。- 很容易知道里面所示的
instructions
、introductions
等四部分就是zjuthesis.pdf
生成的四个章节(第一到四章)。所以可以在这里增/删/改内容以实现文章主要内容的替换。 - 个人建议可以先保留原文的几个章节,因为这几个章节中有一小部分Latex代码的语法说明,可以帮助你进行上手和学习。复制其中的某一章节,重命名为
Chapter1_Introduction
并仿照格式插入到content.tex
中,并将其中的非代码部分替换为自己的内容即可得到所需内容。
- 很容易知道里面所示的
常用快捷键
快捷键 | 作用 | 备注 |
---|---|---|
Ctrl+Alt+B | 编译Latex(等同于右上方的绿色小三角) | 觉得难按的可以在文件-首选项-键盘快捷方式 中进行替换 |
Ctrl+Alt+J | 从Latex文件位置快速定位到PDF位置 | 同上 |
Ctrl+Click | 从PDF位置快速定位到Latex文件位置 | 快捷键取决于settings.json 最后一行 |
如何使用期刊的Latex模板
- 毕设论文的模板使用比期刊复杂的多得多,因为毕设论文太长了,格式要求也很多,而期刊短得多!
首先找到你所需要投稿的期刊的Latex模板,下面给出一些常用的检索方法:
- IEEE的论文期刊模板: IEEE-Template Selector
- SCI的论文期刊模板:【LetPub】最新SCI期刊影响因子查询及投稿分析系统(2024-2025年) - LetPub,进去选择期刊后可以在作者指南或者期刊官网中找
- 期刊官网(很多中文期刊没有Latex模板,英文的基本都有)
以IEEE为例演示如何下载期刊的Latex模板
- 进入上文给出的IEEE论文期刊模板网站
- 在这里搜索你所投稿的期刊名,如
IEEE Electrification Magzine
(IEEE 电气化杂志),下载 - 下载完成后解压得到如下文件夹,可以看到非常的简洁
如何使用期刊的Latex模板
使用VSCode打开该文件夹
可以看到里面只有两个
.tex
后缀的文件,其中一个文件名是how-to
,很明显不是正文,所以打开另一个。打开后得到如下界面,啥也别管先编译一遍,生成同名的
.pdf
文件,双屏打开,到这一步没有问题那就成功90%了。使用上文的快捷键可以快速实现Latex代码和PDF位置的双向定位,以供你得知什么地方需要修改。值得注意的是,在标题、作者等这类属于“论文基本信息”的位置,很多Latex模板(包括上面的毕设模板)都采取的是“先定义、后调用”的方式,所以使用该双向定位可能不准。
Latex的基本语法
- Latex的语法很多,没必要一口气学完。可以先看看下面的基础语法,当你需要更加精细的格式设置时,再上网搜索使用和设置方法,现学现用会更好。
换段落与换行
可以用\newline
,但一般使用空行进行新建段落。比如:
1 | 段落1的内容 |
这个有什么用呢,就是一般我们写完数学公式的时候下面会紧跟着,“式中,\(\sigma\)表示……”这种不空两格的解释语句,那么这个时候这段话与数学公式间就不要空行,这样生成的内容就会顶格而非空两格。
标题
大标题 \section
然后是
\subsection
,\subsubsection
,我记得最多就到这了,也就是最后会生成1.1.1 xxxxx
这样的标题
字体
一般而言需要乱动字体的情况不多,一般也不建议乱动。
最常用的就是加粗,在Latex中表示为\textbf{加粗内容}
。此外可能会用到斜体,在Latex中表示为\itshape{斜体内容}
。
EE学院提供的zjuthesis对字体(在你看不见的定义文件中)做了比较详细的定义,所以可能存在部分函数是zjuthesis独有的(自定义了一些函数),在其他Latex文件中不适用。默认英文字体为新罗马 Times New Roman,默认正文中的中文字体为仿宋,应该都不需要咋改。
列表
1 | \begin{enumerate}[label=\textbf{(\alph*)}] % itemize为无序列表,[]内为备注和格式设置 |
- 详细配置可参考:LaTeX 排版(1):列表 | Linux 中国 - 知乎
图片
1 | \begin{figure}[!ht] % 可选参数有:!htbp |
关于Latex进行多行多列的图片排版(比如常见的
图1.1 (a)aaa (b)bbb
),建议参考这个关于Latex并排多张图片及加入图片说明的方法_latex图片说明-CSDN博客
表格(三线表)
一般而言论文中的表格都是三线表
1 | \begin{table}[H] |
- 详细配置可参考:Latex中经典三线表、多线表、内容跨行/跨列复杂表的详解与源代码_latex toprule-CSDN博客,其中包含三线表中标题行需要有多行、多列的特殊情况,笔者在论文中也有使用。
数学公式
1 | \begin{equation} |
- 关于数学公式符号语法,若有遗忘,可以参考:Latex数学公式符号大全(超详细)_latex数学符号-CSDN博客
- 关于数学公式的换行问题,可以参考:Latex公式排版(编号、换行、括号内换行、对齐)_latex公式换行编号合并-CSDN博客
引用
数学公式、图片和表格的引用使用\autoref
命令,如如\autoref{code:sample}所示,这是一段代码。
,其中的code:sample
是你在输入公式时给他写的\label{}
。如果公式没有写这个,那么无法引用。
个人的强烈建议:可以给公式的\label
全都命名成equ:Name
的格式,图片fig:Name
的格式,表格tab:Name
的形式,方便引用。Name可以和你的图、表、公式标题一致或类似,方便引用的时候查找。
参考文献
- 参考文献列在
ref.bib
中,不同于以往任何一个引用格式,BibTex是专门为Latex设计的参考文献格式,知网、谷歌学术等知名论文浏览平台均可以直接下载到所需文献的BibTex参考文献格式。复制进去即可。 - 需要注意的是,可能需要根据学校或者论文的要求,对BibTex中所列明的参考文献条目进行删改。比如,学校的毕设论文不要求DOI,但是有些参考文献在复制BibTex格式时就会自带DOI,这个时候需要手动删除。
1 | @article{example2, |
- 参考文献的引用标签就是BibTex中第一行,
{
后面紧跟的内容。这段内容是你唯一可以且需要更改的地方。为了方便引用,非常建议统一参考文献的格式,比如常见的“论文作者+论文时间”的格式Paradox2025
,或其他你自己喜欢的格式。 - 比如上面这个参考文献,引用方式应该是:
1 | 文献\parencite{example2}中新的实验结论表明,Paradox是最阴暗的下水道鼠鼠\cite{example2}。 |
- 生成的内容如下(这两种引用方式的区别应该很明显了):
文献\({[1]}\)中提出了一种新的实验结论,即Paradox是最阴暗的下水道鼠鼠\(^{[1]}\)。
- Latex会依据你的引用顺序进行自动标号。