内容摘要:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
- Handout使用教程
- 在pyhon直接使用Markdown
- 把讲义导出为html网页
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我想要使用Python代码直接排版,怎样才能做到?
- 我只喜欢用python,也只想使用python。我想用python就可以直接排版。
- 还要可以在任何文本编辑器里,方便地转换成标题、代码、文本等各种样式。
- 最好还能直接运行Python代码,并且展示运行的结果。
Google Brain的研究员Danijar Hafner发布Python Handout这一Python模块包, 几乎完美地实现了我的以上诉求。
Python Handout借助和Markdown一样的代码命令,让Python代码可以直接转换为讲义的样式。
使用Python Handout的大致流程如下:
- handout 作为正常 Python 程序内的库导入
- 编写python代码和运行python脚本
- 在浏览器中打开保存的网页文件以查看结果。
- 修改文件后,刷新浏览器以查看新的导出结果。
首先,你需要安装Python Handout 模块。
安装命令:
pip3 install -U handout
安装完成后,就可以在python中,愉快地使用Handout进行排版了。
你可以在python中,控制文档的显示。比如,你可以创建粗体的文字,斜体的文字,添加图片,并且创建列表 等等。 基本上来讲,排版的方式就是在普通的文字基础上,加上 # 或者 * 等符号。
导入相关的模块!
import handout
import matplotlib.pyplot as plt
import numpy as np
设置保存的网页的文件目录
- 如果不填写详细的目录路径,则默认为当前的py文件目录。
- 如果目录不存在,则会自动创建。
doc = handout.Handout('输出目录/示例')
Markdown的格式说明
带有三个引号的注释将转换为文本块。注意:必须为英文状态下的双引号,单引号无效。 文本块支持Markdown格式,例如:
- 标题
- 超链接
- 粗体和斜体
- 数学公式:f(x)=x2f(x)=x2
- 超链接
超链接设置方法:
# [超链接][1]
# 第1个[ ]里面填写超链接的文本,例如标题或说明。
# 第2个[ ]里面填写超链接的序号。
# 然后写下超链接的地址,格式如下:[1]: https://commonmark.org/help/
注意,以上的超链接的具体地址不会在转换后的讲义中显示, 但是单击超链接的文本,将打开网页链接。
添加文本和变量
使用与Python的print()相同的方式输出文本:
for index in range(3):
doc.add_text(f'循环3次,现在是第{index+1}次。')
doc.show()
效果和print()是一样的。输出如下所示:
循环3次,现在是第1次。
循环3次,现在是第2次。
循环3次,现在是第3次。
添加 Matplotlib 图像
在handout展示matplotlib的绘图结果:
fig, ax = plt.subplots(figsize=(4, 3))
ax.plot(np.arange(100))
fig.tight_layout()
doc.add_figure(fig)
doc.show() # 在此行代码下面展示绘图结果
设置输出的图像的宽度以并排显示多个图形:
for iteration in range(3):
fig, ax = plt.subplots(figsize=(3, 2))
ax.plot(np.sin(np.linspace(0, 20 / (iteration + 1), 100)))
doc.add_figure(fig, width=0.33)
doc.show()
添加图像和视频
这个功能需要安装 imageio 模块
image_a = np.random.uniform(0, 255, (200, 400, 3)).astype(np.uint8)
image_b = np.random.uniform(0, 255, (100, 200, 1)).astype(np.uint8)
doc.add_image(image_a, 'png', width=0.4)
doc.add_image(image_b, 'jpg', width=0.4)
doc.show()
video = np.random.uniform(0, 255, (100, 64, 128, 3)).astype(np.uint8)
doc.add_video(video, 'gif', fps=30, width=0.4)
doc.add_video(video, 'mp4', fps=30, width=0.4)
doc.show()
隐藏代码
隐藏单行代码不予展示
在代码后面添加:# handout: exclude 即可隐藏掉代码。
# 下面一行代码,不会被展示出来:
# value = 13 # handout: exclude 这行代码被隐藏掉了。
隐藏多行代码不予展示
开始处,使用语句: # handout: begin-exclude
结束处,使用语句: # # handout: end-exclude
查看讲义
当你运行'doc.show()'时,讲义将会自动保存。
使用浏览器打开文件夹'输出目录/示例'里面的 index.html 文件,即可查看转换后的讲义。
当python文件作了修改,并且重新运行后,只需在浏览器里刷新一下,即可查看修改后的导出内容。
附完整代码:
"""
# Python版本的Markdown工具:Handout使用教程!
# 用Python代码直接排版!
我想要使用Python代码直接排版,怎样才能做到?
- 我只喜欢用python,也只想使用python。我想用python就可以直接排版。
- 还要可以在任何文本编辑器里,方便地转换成标题、代码、文本等各种样式。
- 最好还能直接运行Python代码,并且展示运行的结果。
Google Brain的研究员Danijar Hafner发布Python Handout这一Python模块包,
几乎完美地实现了我的以上诉求。
Python Handout借助和Markdown一样的代码命令,让Python代码可以直接转换为讲义的样式。
使用Python Handout的大致流程如下:
1. handout 作为正常 Python 程序内的库导入
2. 编写python代码和运行python脚本
3. 在浏览器中打开保存的网页文件以查看结果。
4. 修改文件后,刷新浏览器以查看新的导出结果。
## 首先,你需要安装Python Handout 模块。
安装命令: pip3 install -U handout
安装完成后,就可以在python中,愉快地使用Handout进行排版了。
你可以在python中,控制文档的显示。比如,你可以创建粗体的文字,斜体的文字,添加图片,并且创建列表 等等。
基本上来讲,排版的方式就是在普通的文字基础上,加上 # 或者 * 等符号。
导入相关的模块!
"""
import handout
import matplotlib.pyplot as plt
import numpy as np
"""设置保存的网页的文件目录
- 如果不填写详细的目录路径,则默认为当前的py文件目录。
- 如果目录不存在,则会自动创建。
"""
doc = handout.Handout('Python教程/Handout教程')
"""
## Markdown的格式说明
带有三个引号的注释将转换为文本块。
文本块支持[Markdown格式][1],例如:
- 标题
- 超链接
- **粗体**和*斜体*
- 数学公式:$f(x)=x^2$
- 超链接
[1]: https://commonmark.org/help/
### 超链接设置方法:
"""
# [超链接][1]
# 第1个[ ]里面填写超链接的文本,例如标题或说明。
# 第2个[ ]里面填写超链接的序号。
# 然后写下超链接的地址,格式如下:[1]: https://commonmark.org/help/
"""
注意,以上的超链接的具体地址不会在转换后的讲义中显示,
但是单击超链接的文本,将打开网页链接。
"""
"""
## 添加文本和变量
使用与Python的print()相同的方式输出文本:
"""
for index in range(3):
doc.add_text(f'循环3次,现在是第{index + 1}次。')
doc.show()
"""
效果和print()是一样的。输出如下:
"""
"""
## 添加 Matplotlib 图像
在handout展示matplotlib的绘图结果:
"""
fig, ax = plt.subplots(figsize=(4, 3))
ax.plot(np.arange(100))
fig.tight_layout()
doc.add_figure(fig)
doc.show() # 在此行代码下面展示绘图结果
"""
设置输出的图像的宽度以并排显示多个图形:
"""
for iteration in range(3):
fig, ax = plt.subplots(figsize=(3, 2))
ax.plot(np.sin(np.linspace(0, 20 / (iteration + 1), 100)))
doc.add_figure(fig, width=0.33)
doc.show()
"""
## 添加图像和视频
这个功能需要安装 imageio 模块
"""
image_a = np.random.uniform(0, 255, (200, 400, 3)).astype(np.uint8)
image_b = np.random.uniform(0, 255, (100, 200, 1)).astype(np.uint8)
doc.add_image(image_a, 'png', width=0.4)
doc.add_image(image_b, 'jpg', width=0.4)
doc.show()
video = np.random.uniform(0, 255, (100, 64, 128, 3)).astype(np.uint8)
doc.add_video(video, 'gif', fps=30, width=0.4)
doc.add_video(video, 'mp4', fps=30, width=0.4)
doc.show()
"""
## 隐藏代码
隐藏单行代码不予展示
在代码后面添加:# handout: exclude 即可隐藏掉代码。
"""
# 下面一行代码,不会被展示出来:
# value = 13 # handout: exclude 这行代码被隐藏掉了。
value = 13 # handout: exclude
"""
隐藏多行代码不予展示
开始处,使用语句: # handout: begin-exclude
结束处,使用语句: # # handout: end-exclude
"""
"""
## 查看讲义
当你运行'doc.show()'时,讲义将会自动保存。
使用浏览器打开文件夹'输出目录/示例'里面的 index.html 文件,即可查看转换后的讲义。
当python文件作了修改,并且重新运行后,只需在浏览器里刷新一下,即可查看修改后的导出内容。
(完)
"""
(完)