大家好,基于Python的数据科学实践课程第五期又到来了,大家尽情学习吧。本期内容主要由春艳同学与政委联合推出。
上一节我们其实主要介绍了Jupyter Notebook的基本结构。其中最重要的部分就是在Jupyter Notebook中使用单元格。而除了最常用的代码单元格之外,标记(Markdown)单元格也是Notebook的一大特色。本节主要从几个方面简单介绍markdown单元格的使用,更详细的Markdown使用方式可以参考其官方文档说明。
Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。同时Markdown也是一个Web编写者常用的text-to-HTML工具,也就是说,它允许我们使用易阅读、易编写的纯文本格式进行编写,然后将其转换为结构有效的XHTML(或HTML)。
因此,所谓“Markdown”,其实有两个部分,一是纯文本的格式化语法,二是将纯文本格式转换为HTML的软件工具。这里我们主要对Markdown的语法进行说明。
为了提高可阅读性,Markdown的语法完全由标点字符组成,并且这些标点字符在经过精心挑选之后,与其语法指代的含义有所对应。例如,一个单词周围的星号实际上是表明强调,Markdown列表也对应于实际的列表。
Markdown可以内联HTML,它并不是HTML的替代品,甚至有明显的差别。它的语法非常小,仅对应一小部分的HTML标记。HTML是一种发布格式,而Markdown是一种写作形式。因此,Markdown的格式化语法仅解决可以用纯文本传达的问题。而对于Markdown语法未涵盖的标记,我们只需直接使用HTML。
对Markdown基础语法的介绍包含以下内容:
一个 Markdown 的段落是由一个或多个连续的文本行组成的,它前后需要有一个以上的【空行】。普通的段落不应使用【空格】或【制表符】来缩进。
Markdown允许段落内的强迫换行,可以通过在需要换行处插入两个【空格】然后按【Enter】键来实现。
例1 段落和换行
图1 段落和换行的运行结果
Markdown支持两种样式的标题,Setext样式和atx样式,其中atx样式更为常用。
Setext样式的标题是通过给标题内容使用【=】(第一级标题)和【-】(第二级标题)加“下划线”的方式来实现。
例2 Setext样式的标题
注:只要【=】或【-】数量有两个及以上均可实现标题格式。
atx样式的标题则是通过在行的开头使用1-6个【#】字符再加上一个【空格】分别实现标题的1-6级别。另外,在工具栏的下拉选项中,如果选择标题单元格选项,那么该单元格中会自动出现一个【#】加上【空格】,也就是atx样式的一级标题格式。
例3 atx样式的标题
上两种样式的运行结果是相同的。
图2 标题运行结果
列表分为有序列表和无序列表两种。有序列表使用数字加上一个英文的句点加上空格表示,无序列表则可以使用星号【*】、【+】或是【-】再加上空格表示。
当然,通过在次级列表前面加上四个【空格】或【制表符】我们也可以实现列表的嵌套使用。
例4 列表
11. 有序列表1
2 1. 有序列表1.1
3 2. 有序列表1.2
42. 有序列表2
53. 有序列表3
6
7* 无序列表1
8 * 无序列表1.1
9 * 无序列表1.2
10+ 无序列表2
11- 无序列表3
图3 列表运行结果
注:不论在有序列表的标记上使用的数字是什么,它都会从第一行列表的数字开始逐个向下计数,也就是说,即使我们输入以下代码,也会得到图2中有序列表部分的相同结果。
11. 有序列表1
2 1. 有序列表1.1
3 1. 有序列表1.2
49. 有序列表2
55. 有序列表3
Markdown中对文字的引用通过【>】来实现。引用同样可以嵌套使用,【的数量表示了引用的嵌套层级。另外,引用的区块里也可以包含有别的Markdown格式,例如标题、列表等。
例5 引用
1>引用段落1
2>>引用段落1.1
3
4>
5* 无序列表1
6* 无序列表2
图4 引用运行结果
一些常用的表示文本强调的特殊文本格式如加粗、斜体、删除线等可以分别通过在需要强调的文字两端加不同数量的【*】、【_】和【~】来实现。
例6 特殊文本
1*斜体1*
2_斜体2_
3**粗体1**
4__粗体2__
5***粗斜体1***
6___粗斜体2___
7~~加删除线~~
图5 特殊文本运行结果
分隔线:在一个空白行中输入三个及以上的【*】或者【-】或者【_】,除了符号之间可以插入空格外,该行内不能有其他内容。
对齐方式:在需要对齐的文本内容前面加上【】,后面加上
。基本格式为 文本内容
,左、中、右对齐时把【orientation】改成对应的【left】、【center】、【right】即可。
加下划线:在需要加下划线的文本内容前面加上【】,后面加上【】,基本格式为文本内容。
特殊字符:在特殊字符之前加【\】可以插入一些用于构成Markdown语法的特殊标点符号。
例7 特殊格式
1***
2<p style="text-align: left" > 左对齐 p>
3<p style="text-align: center" > 居中 p>
4<p style="text-align: right" > 右对齐 p>
5
6<u>加下划线u>
7
8\*文本前加星号
图6 特殊格式运行结果
对Markdown扩展语法的介绍主要包括以下内容:
插入代码
插入表格
插入链接
插入图像
插入LaTeX公式
代码的插入分行内插入和代码块插入两种。当需要行内插入时,直接将代码用单引号括起来即可;当插入代码块时,有两种方式可供选择。
一是在代码块第一行开头输入四个【空格】或是一个【制表符】;二是使用三个反引号【```】在代码块前后将其框起来。另外,当需要代码高亮时,可以在代码块之前的【```】后面加入代码语言。需要注意的是,插入代码块之前需要至少一个空行。借用例1.2-3-3中的代码块来进行如下示例:
例8 插入代码
图7 插入代码运行结果
插入表格时,用【|】表示单元格边界,在表格标题行下方插入一行同样列数的【-】,每个单元格中的【-】数量可以为任意个。Notebook中表格会自动对齐,有良好的格式。同时,为了精简表格的样式,可以省略每行首尾单元格靠表格边框的【|】。与插入代码块一样,插入表格前至少需要一个空行。
例9 插入表格
1完整表格格式
2
3|学号|姓名|分数|
4|--|--|--|
5|小明|男|75|
6|小红|女|79|
7|小陆|男|92|
8
9精简表格格式
10
11学号|姓名|分数
12
-|-|-
13小明|男|75
14小红|女|79
15小陆|男|92
图8 插入表格运行结果
要在文本中插入链接有三种方式:
行内式:用【方括号】来标记链接的文字,然后在【方括号】后面紧接着【圆括号】并插入网址链接即可,如果还想要加上链接的title文字,可以在网址后面用【双引号】把title文字包起来。
参考式:用【方括号】来标记链接的文字,在【方括号】后再接上另一个【方括号】,里面填入用以辨识链接的标记,然后在文件的任意处把这个标记的链接内容定义出来。链接内容的格式为:带有辨识标记的【方括号】加上一个【冒号】加上一个以上的【空格】或【制表符】加上链接的网址,然后可以选择性地加上title内容,用【单引号】、【双引号】或是【括弧】包着。
自动链接:用【】把网址链接包起来,最终直接显示网址链接。
例10 插入链接
1**行内式插入链接:**
2行内式超链接1[百度](http://www.baidu.com)
3行内式超链接2[百度](http://www.baidu.com "悬停显示百度")
4
5**参考式插入链接:**
6常用的搜索引擎有[谷歌] [1] [雅虎] [2] 和[百度] [3].
7
8 [1]: http://google.com/ "谷歌"
9 [2]: http://search.yahoo.com/ '雅虎'
10 [3]: http://www.baidu.com (百度)
11
12**自动链接:**
13<http://
www.baidu.com/>
图9 插入链接运行结果
插入图像的方式有两种,行内式和参考式。与插入链接的方式非常类似,只需要在插入链接的方式前面加上【感叹号】即可。
例11 插入图像
1**行内式插入Jupyter logo:**
2![Jupyter logo](http://jupyter.org/assets/main-logo.svg "Jupyter")
3
4**参考式插入Jupyter logo:**
5![Jupyter logo][logo]
6
7[logo]:http://jupyter.org/assets/main-logo.svg "Jupyter"
图10 插入图像运行结果
Notebook里面插入LaTeX公式的用法有很多,Notebook的官方文档里也给出了许多例子。这里只作简要的介绍。
插入行内公式:在公式两边都用【$】包起来。
插入整行公式:在公式两边都用【$$】包起来。
例12 插入LaTeX公式
1**插入行内公式:**
2质能守恒方程的方程式是: $E=mc^2$
3
4**插入整行公式:**
5$$\sum_
{i=1}^n a_i=0$$
6$$f(x_1,x_x,\ldots,x_n) = x_1^2 + x_2^2 + \cdots + x_n^2 $$
7$$\sum^{j-1}_{k=0}{\widehat{\gamma}_{kj} z_k}$$
图11 插入公式运行结果