markdown 于 2004 年被提出,在 2012 经过规范化,2017 年提出 GFM 版本,GFM 指 GitHub Flavored Markdown,我们当前使用的版本主要是 GFM。markdown是一种标记语言,类似于 html 语言,它可以转换为 html 文件,本身也兼容 html 语言。markdown 的优势是简单轻量,简单就是最好的。此外,markdown 也可以转换为 word 和 pdf。
注意在书写规范中,中英文和数字相互之间需要加空格,英文标点符号后需要加空格,> 后面需要加空格,数字与 % 和单位之间不用加空格,/ 表示或以及路径分割不需要加空格。
有了 markdown 源码后,通过不同主题或软件可以实现不同效果。markdown 常用的编辑和查看软件有 typora、vscode、mark text 和谷歌插件。其中,typora 是功能最全的,但现在开始收费了,可以使用特殊方法进行安装,它做的最好用,且包含很多新语法;vscode 与 mark text 均为开源免费软件,vscode是集合了 n 多功能,可以通过一个软件实现程序员大部分需求,mark text 可能还含有部分小 bug,例如每次关闭都会提示保存,可以直接去 github 下载安装;谷歌插件仅作为 markdown 文件的查看软件,不能编辑,且支持的特征相对偏少,且插件都很老,功能不全甚至有 bug。此外,还可以使用有道云笔记和 CSDN 进行 markdown 的编辑。
说明:#+空格+内容,最多 6 级标题,第一级一般是题目
效果:1. markdown 教程
示例:**粗体内容**
效果:粗体内容
示例:*斜体内容*
效果:斜体内容
说明:1.+空格+内容 按回车即可
效果:
说明:-+空格+内容 按回车即可
效果:
说明:在下一级直接按 tab 键即可
效果:
说明:-+空格+[ ]+内容 是未选中任务,-+空格+[x]+内容 是选中任务
效果:
说明:表格格式相对复杂,可以直接看源码,需要说明的是 :---- / ----: / :----: 分别表示左对齐/右对齐/居中,其中 - 表示字符数
效果:
苹果 | 西瓜 | 哈密瓜 |
---|---|---|
a | b | c |
说明:通过 !+[描述文字]+(本地位置或网络位置) 实现图片插入,当插入图片失败时,会显示描述文字,本地位置建议使用相对位置,网络位置可以自己找图床上传图片,然后将连接放在这里。PicGo 是图床管理软件,通过 typora+PicGo+图床 可以实现拖拽图片进编辑框后自动上传图床并生成链接。此外,还可以在 CSDN 中进行 markdown 文件的编写,图片直接拖拽进编辑框即可,其会自动上传至 CSDN 且生成链接,即使删除该帖子,链接也依然存在。有道云笔记非会员不能上传本地图片。路过图床网址。在 Jupyter 中的 markdown cell 可以直接集成图片进 ipynb 文件中。
示例:![钢铁侠](https://gimg2.baidu.com/image_search/src=http%3A%2F%2Fsafe-img.xhscdn.com%2Fbw1%2F9ef9fb77-f3c1-4983-b6f6-66ca051fa84a%3FimageView2%2F2%2Fw%2F1080%2Fformat%2Fjpg&refer=http%3A%2F%2Fsafe-img.xhscdn.com&app=2002&size=f9999,10000&q=a80&n=0&g=0n&fmt=auto?sec=1697617505&t=909247a4cf639d051dec671500274d57)
效果:
说明:以上图片插入方式并没有将图片集成进 markdown 文件中,但通过 base64 编码可以实现集成,用 base64 转码工具把图片转成一段字符串,然后把字符串填到基础格式中链接的那个位置。
基础用法:
![avatar](data:image/png;base64,iVBORw0…)
这个时候会发现插入的这一长串字符串会把整个文章分割开,非常影响编写文章时的体验。如果能够把大段的 base64 字符串放在文章末尾,然后在文章中通过一个 id 来调用,文章就不会被分割的这么乱了。
高级用法
比如:
![avatar][base64str]
可以使用 python 将图片转化为 base64 字符串
import base64
f = open('723.png','rb') # 二进制方式打开图文件
ls_f = base64.b64encode(f.read()) # 读取文件内容,转换为 base64 编码
f.close()
print(ls_f)
说明:不管是分离插入还是集成插入的图片尺寸都不可以改变,如果想要改变尺寸,则需要 html 语句
html
html
html
插入 Latex 公式,在某些软件中可能默认不支持,需要在设置中打开该功能,typora 就需要在设置中打开,谷歌插件也需要在插件设置中打开,但有些插件是不支持的,Latex 公式语法可以参考 语法
说明:$公式$
示例:$y = x$
效果: y = x y = x y=x
说明:两组 $$ 所包含的区域书写 Latex 公式
$$
E=mc^2
$$
效果:
E = m c 2 E=mc^2 E=mc2
说明:`代码内容`,可以用于强调
效果:代码内容
说明:可以在三个点号之间输入代码,并可以在第一组点号后面选择语言
```语言
```
效果:
print("abc")
插入 Latex 公式,在某些软件中可能默认不支持,需要在设置中打开该功能,typora 就需要在设置中打开,谷歌插件也需要在插件设置中打开
说明:通过 Latex 公式 $ _{下标} $ 插入(Latex)
效果: a b c 0 abc_{0} abc0
说明:通过 html 语法 2 插入(html)
效果:abc0
说明:通过 Latex 公式 $ ^{上标}$ 插入(Latex)
效果: a b c 2 abc^{2} abc2
说明:通过 html 语法 2 插入(html)
效果:abc2
示例:—
效果:
示例:~~删除内容~~
效果:删除内容
说明:>+空格+内容
效果:
被引用的内容
说明:通过 “\” 可以实现字符转义
说明:[链接文字](http/https网址),Ctrl+点击文字自动跳到网址中
效果:百度
说明:[链接文字][链接记号];[链接记号]:(http/https网址),以便于某网址被多次引用
效果:
百度
说明:[锚点内容](#锚点名),锚点内容即为正文中的跳转位置,锚点名即为被跳转的位置,其为任一标题名称,但该语法仅在部分软件中可用,所以尽量少用
效果:[跳转到1. markdown教程](1. markdown教程)
说明:语法是 :表情代码:,在 typora 中可以直接使用 contrl+command+空格 进行选择,但该语法仅在部分软件中可用,所以尽量少用
效果:微笑
以下语法可能仅仅在 typora 中支持,所以不太建议使用
说明:<无http网址/邮箱>
效果:
说明:通过 ~下标~ 实现下标
效果:abc0
说明:通过 ^上标^ 实现上标
效果:abc2
说明:通过 ==下标== 实现高亮
效果:abc
说明:通过 [toc] 语句可以插入目录
Jupyter notebook 源于 Fernando Perez 发起的 IPython 项目。IPython 是一种交互式 shell,与普通的 Python shell 相似,但具有一些更高级的功能,例如语法高亮显示和代码补全,还有一些 magic 操作,十分方便。Jupyter notebook 将 IPython 做成了一种 Web 应用,我们可以通过它的基本架构更清楚的了解。Jupyter notebook 是一种 Web 应用,它能让用户将说明文本、数学方程、代码和可视化内容全部组合到一个易于共享的文档中,非常方便研究和教学。在原始的 Python shell 与 IPython 中,可视化在单独的窗口中进行,而文字资料以及各种函数和类脚本包含在独立的文档中。但是,notebook 能将这一切集中到一处,让用户一目了然。
可以看到,这里的核心是 notebook 的服务器。用户通过浏览器连接到该服务器,而 notebook 呈现为 Web 应用。用户在 Web 应用中编写的代码通过该服务器发送给内核,内核运行代码,并将结果发送回该服务器。然后,任何输出都会返回到浏览器中。保存 notebook 时,它将作为 JSON 文件(文件扩展名为 .ipynb) 写入到该服务器中。
最简单的方法就是使用 Anaconda,其发行版附带了 Jupyter notebook。
在 conda 环境下安装 Jupyter notebook 可以使用 conda install jupyter notebook。当然,也可以通过 pip 来安装 pip install jupyter notebook。
启动 notebook 很简单,只需要在终端环境下输入 jupyter notebook
, 服务器就会在当前操作的目录下启动。当然你可以建立一些专门用来运行 notebook 的文件夹,尤其对于不同的 Python 版本以及一些项目。
启动后,默认的 notebook 服务器的运行地址是 http://localhost:8888。只要 notebook 服务器仍在运行,你随时都能通过在浏览器中输入 http://localhost:8888 返回到 web 页面中,当然默认端口是可以修改的
Jupyter 还有一种打开方式,非常简单,只需要在 vscode 中安装一个插件 Jupyter 即可在 vscode 中新建 ipynb 文件,不需要打开命令窗口运行任何命令,参考。
Jupyter 由两种 cell 组成,分别是 markdown cell 和 code cell,在 markdown cell 中可以像正常 markdown 文件一样进行书写,在 code 中可以像正常编程一样写代码。
注意在 Jupyter 中的 markdown 中,可以直接插入图片,且图片是集成在 Jupyter 文件中的,不像原生 markdown 文件中,图片是分离的,参考。markdown 单元格中的粘贴来的临时图片和代码单元格生成的图片都是以附件(Base64编码)形式直接保存在 ipynb 文件中。但 markdown 单元格中的本地图片将不会保存在 ipynb 文件中,仍然以本地文件形式存储,参考。
在 Jupyter 中的 code 中,通过 Magic 关键字可以实现一些特殊功能,例如测试单元格运行时间,嵌入程序的输出图。Magic 命令的前面带有一个或两个百分号(%
或 %%
),分别代表行 Magic 命令和单元格 Magic 命令。行 Magic 命令仅应用于编写 Magic 命令时所在的行,而单元格 Magic 命令应用于整个单元格。
如果要测算整个单元格的运行时间,请使用 %%timeit
,如下所示:
如果要在 notebook 中嵌入可视化内容,可以说使用 %matplotlib inline
,如下所示:
既然 Jupyter 是与 CS 形式运行的,那 client 与 server 就不一定非要在同一台机器上,完全可以 server 运行在服务器上,而 client 运行在本地机器上,具体实现过程参考:链接 1 与 链接 2