Markdown 单元格#

可以使用 Markdown 单元格向 Jupyter Notebook 中添加文本。你可以通过 单元格 菜单、工具栏或快捷键 m 将单元格类型更改为 Markdown。Markdown 是一种流行的标记语言,是 HTML 的一个超集。其规范可以在这里找到

https://daringfireball.net/projects/markdown/

Markdown 基础#

你可以通过在文本块前后分别使用单个或双个 * 来使文本变为 斜体粗体

你可以构建嵌套的无序列表或有序列表

    • 子列表

      • 这个

    • 子列表 - 那个 - 另一个

    • 子列表

    • 子列表

现在是另一个列表

  1. 开始了

    1. 子列表

    2. 子列表

  2. 我们继续

  3. 现在是这个

你可以添加水平分割线


这是一个块引用

优美胜于丑陋。明了胜于晦涩。简洁胜于复杂。复杂胜于凌乱。扁平胜于嵌套。稀疏胜于密集。可读性至关重要。特殊情况不足以打破规则。尽管实用性胜过纯粹性。错误不应悄无声息地忽略。除非明确使其静默。面对模棱两可,拒绝猜测的诱惑。应该有一种——最好只有一种——显而易见的方法来做到这一点。尽管这种方法一开始可能并不明显,除非你是荷兰人。现在就做胜于永不开始。尽管永不开始通常比 立即 就做好。如果实现很难解释,那就是个坏主意。如果实现很容易解释,那它可能是个好主意。命名空间是个绝妙的主意——让我们多多使用它吧!

以及链接的简写方式

Jupyter 的网站

你可以使用反斜杠来生成在 Markdown 语法中具有特殊含义的字面字符。

\*literal asterisks\*
 *literal asterisks*

使用双反斜杠来生成字面上的 $ 符号。

标题#

你可以通过在一行开头使用一个(或多个)# 后跟一个空格来添加标题,如下例所示

# Heading 1
# Heading 2
## Heading 2.1
## Heading 2.2

嵌入代码#

你可以嵌入用于说明而非执行的 Python 代码

def f(x):
    """a docstring"""
    return x**2

或其他语言

for (i=0; i<n; i++) {
  printf("hello %d\n", i);
  x += 4;
}

LaTeX 方程#

得益于 MathJax,你可以在行内插入数学表达式:\(e^{i\pi} + 1 = 0\),也可以独立成行显示

\begin{equation} e^x=\sum_{i=0}^\infty \frac{1}{i!}x^i \end{equation}

行内表达式可以通过在 latex 代码前后加上 $ 来添加

$e^{i\pi} + 1 = 0$

独立成行的表达式则用 \begin{equation}\end{equation} 包围

\begin{equation}
e^x=\sum_{i=0}^\infty \frac{1}{i!}x^i
\end{equation}

GitHub 风格的 Markdown#

Notebook webapp 支持 Github 风格的 markdown,这意味着你可以使用三个反引号来创建代码块

```python
print "Hello World"
```

```javascript
console.log("Hello World")
```

得到

print "Hello World"
console.log("Hello World")

以及像这样的表格

| This | is   |
|------|------|
|   a  | table|

一个漂亮的 HTML 表格

这个

一个

表格

通用 HTML#

因为 Markdown 是 HTML 的一个超集,你甚至可以添加像 HTML 表格这样的东西

标题 1

标题 2

第 1 行, 第 1 单元格

第 1 行, 第 2 单元格

第 2 行, 第 1 单元格

第 2 行, 第 2 单元格

本地文件#

如果你的 Notebook 目录中有本地文件,你可以在 Markdown 单元格中直接引用这些文件

[subdirectory/]<filename>

例如,在 images 文件夹中,我们有 Python 的徽标

<img src="../images/python_logo.svg" />

b0675bbd82ae44a5bc6363422a8b0f46

以及一个使用 HTML5 video 标签的视频

<video controls src="../images/animation.m4v">animation</video>

这些操作不会将数据嵌入到 notebook 文件中,并要求在查看 notebook 时这些文件必须存在。

本地文件的安全性#

请注意,这意味着 Jupyter notebook 服务器也充当一个通用文件服务器,为与你的 notebook 在同一目录树下的文件提供服务。访问权限不会超出 notebook 文件夹,因此你可以严格控制哪些文件是可见的,但因此强烈建议你不要在文件系统的高层级(例如你的主目录)运行 notebook 服务器。

当你以受密码保护的方式运行 notebook 时,除非启用了只读视图,否则对本地文件的访问将仅限于经过身份验证的用户。

Markdown 附件#

从 Jupyter notebook 5.0 版本开始,除了引用外部文件,你还可以将文件附加到 markdown 单元格中。为此,在编辑 markdown 单元格时,将文件拖入其中

pycon-logo.jpg

文件存储在单元格的元数据中,如果在保存时未被引用,将被自动清除。你可以通过其以 attachment: 开头的 URL 来识别附加的图像。对于上面的图像

![pycon-logo.jpg](attachment:pycon-logo.jpg)

请记住,附加文件会增加你的 notebook 的大小。

你可以通过 视图 > 单元格工具栏 > 附件 菜单手动编辑附件,但通常不需要这样做。