在为演示文稿创建幻灯片时,有很多选择。有直接的方法,直接从Jupyter生成幻灯片不是其中之一。但我从来都不是一个以简单的方式做事的人。我也有很高的期望,没有其他幻灯片生成软件能完全满足。

为什么要从幻灯片过渡到 Jupyter?

我想要演示软件中的四个功能:

  1. 可以运行源代码检查错误的环境

  2. 一种包含演讲者备注但在演示过程中隐藏的方法

  3. 为与会者提供有用的阅读讲义

  4. 为参加者提供有用的探索性学习讲义

更多精彩内容

  • 免费在线课程:RHEL 技术概述

  • 学习高级 Linux 命令

  • 下载备忘单

  • 寻找开源替代品

  • 阅读顶部 Linux 内容

  • 查看开源资源

演讲没有什么比让听众中有人指出我的一张幻灯片上的编码错误更让人不舒服的了。通常,它是拼写错误的单词,忘记了 return 语句,或者在我离开我的开发环境时做一些不可见的事情,我在其中运行一个 linter来捕捉这些错误。

在经历了太多这样的时刻之后,我决定找到一种方法来直接从我的幻灯片编辑器中运行代码,以确保它是正确的。在我的解决方案中,我需要考虑三个“陷阱”:

  • 很多代码很无聊。没有人关心价值import声明的三张幻灯片,而我模拟socket模块的技巧分散了我的观点。但重要的是我可以在不造成网络中断的情况下测试代码。

  • 包含样板代码_几乎_就像听我直接从幻灯片上读单词一样无聊。我们都听过(甚至给出过)包含三个要点的演讲,演讲者会逐字阅读。我试图通过使用演讲者笔记来避免这种行为。

  • 当演讲的参考资料没有任何演讲者的笔记时,没有什么比这更让听众恼火的了。所以我想生成一个漂亮的讲义,其中包含我所有的笔记和来自同一来源的幻灯片。更好的是,我不想在一份讲义上放幻灯片,也不想在一个单独的 GitHub 存储库中存放源代码。

通常情况下,为了解决这个问题,我发现自己使用JupyterLab及其笔记本管理功能。

使用 Jupyter Notebooks 进行演示

我在 Jupyter Notebook 中使用 Markdown 和代码块开始我的演示,就像我在 JupyterLab 中做其他任何事情一样。我使用单独的 Markdown 部分来写我的演示文稿,用于我想在幻灯片上显示的文本和演讲者的笔记。正如您所期望的那样,代码片段进入它们自己的块。

因为您可以给单元格添加“标签”,所以我将任何具有“无聊”代码的单元格标记为no_markdown

在 Jupyter Notebook 中使用标签

图片来源:

(Moshe Zadka,CC BY-SA 4.0)

然后我将我的笔记本转换为 Markdown:

$ jupyter nbconvert presentation.ipynb --to markdown --TagRemovePreprocessor.remove_cell_tags='{"no_markdown"}'  --output build/presentation.md

有一些方法可以将 Markdown 转换为幻灯片](https://opensource.com/article/18/5/markdown-slide-generators)——但我不知道如何使用它们,更没有学习的欲望。另外,我已经有了我最喜欢的演示文稿创建工具:Beamer。

但是 Beamer 需要自定义 LaTeX,并且通常不会在您将 Markdown 转换为 LaTeX 时生成。值得庆幸的是,一个 Markdown 实现——Pandoc Markdown——有一个功能可以让我做我想做的事。它的raw_attribute扩展允许在 Markdown 中包含目标格式的“原始”位。

这意味着如果我在包含raw_attributeLaTeX 位的笔记本的 Markdown 导出上运行pandoc,我可以尽可能多地控制 LaTeX:

$ pandoc --listings -o build/presentation.tex build/presentation.md

--listings使pandoc使用 LaTeX 的listings包,这使得代码看起来更漂亮。将这两部分放在一起,我可以从笔记本生成 LaTeX。

通过一系列转换步骤,我能够使用以下方法隐藏我想要隐藏的部分:

  • LaTeXraw_attribute bits 在 Jupyter Notebook 的 Markdown 单元格中

  • 将无聊的单元格标记为no_markdown

  • Jupyter的“nbconvert”将notebook转换为Markdown

  • Pandoc 在插入raw_attribute位时将 Markdown 转换为 LaTeX

  • Beamer 将 Pandoc 输出转换为 PDF 幻灯片

  • Beamer的Beamer文章模式

所有这些都与一点点胶带相结合,以 UNIX shell 脚本的形式,生成幻灯片创建软件。最终,这条管道对我有用。使用这些工具或类似工具以及一些轻量级的 UNIX 脚本,您可以制作自己的自定义幻灯片创建管道,并根据您的需求和偏好进行优化。

您用来构建幻灯片的最复杂的管道是什么?让我知道它——以及你是否会再次使用它——在评论中。

Logo

Python社区为您提供最前沿的新闻资讯和知识内容

更多推荐