跳转到主要内容

基于轻量级标记语言(Markdown、ReST或Textile)的html5幻灯片生成器。从landslide派生。

项目描述

概述

轻量级标记语言(Markdown、ReST或Textile)幻灯片生成器。从landslide派生。

演示: http://ionelmc.github.io/python-darkslide/

# Darkslide

---

# Overview

Generate HTML5 slideshows from markdown, ReST, or textile.

![python](http://i.imgur.com/bc2xk.png)

Darkslide is primarily written in Python, but it's themes use:

- HTML5
- Javascript
- CSS

---

# Code Sample

Darkslide supports code snippets

    !python
    def log(self, message, level='notice'):
        if self.logger and not callable(self.logger):
            raise ValueError(u"Invalid logger set, must be a callable")

        if self.verbose and self.logger:
            self.logger(message, level)

需求

python 和以下模块

  • jinja2

  • pygments 用于代码块语法着色

标记转换

可选

  • watchdog 用于监视/自动恢复,带有 -w 标志

安装

使用 Python 包管理器(如 pip)安装 Darkslide 的最新稳定版本

$ pip install darkslide

如果您想保持最新

$ git clone https://github.com/ionelmc/python-darkslide.git
$ cd python-darkslide
$ python setup.py build
$ sudo python setup.py install

格式化

Markdown

  • 您的 Markdown 源文件必须以 .md.markdn.mdwn.mdown.markdown 结尾

  • 要创建标题幻灯片,渲染单个 h1 元素(例如,# 我的标题

  • 使用水平线(Markdown 中的 ---)分隔幻灯片,除了 md 文件末尾外

  • 您的其他幻灯片应该有一个渲染为 h1 元素的标题

  • 要突出显示代码块,将 !lang(其中 lang 是 pygment 支持的语言标识符)作为第一行缩进放置

ReStructuredText

  • 您的 ReST 源文件必须以 .rst.rest 结尾(``.txt`` 不受支持

  • 使用标题作为幻灯片标题

  • 使用水平线(RST 中的 ----)分隔幻灯片,除了 RST 文件末尾外

Textile

  • 使用 --- 分隔幻灯片,就像在 Markdown 中一样

渲染

  • 运行 darkslide slides.mddarkslide slides.rst

  • 享受您新创建的 presentation.html

查看

  • h 切换显示帮助

  • 左箭头右箭头 导航

  • t 切换显示幻灯片目录表。幻灯片标题是链接

  • ESC 显示幻灯片概览(Exposé)

  • n 切换幻灯片编号的可见性

  • b 切换屏幕熄灭

  • c 切换双幻灯片显示(当前和下一张幻灯片)

  • S 切换显示每个幻灯片的源文件链接

  • 按 '2' 切换显示幻灯片中的备注(使用 .notes 宏指定)

  • 不支持浏览器缩放

命令行选项

用法

darkslide [options] input.md ...
选项
--version

显示程序版本号并退出

-h--help

显示此帮助信息并退出

-b--debug

将任何异常跟踪显示到 stdout。

-d FILE--destination=FILE

目标 html 文件的路径。默认:presentation.html。

-e ENCODING--encoding=ENCODING

文件的编码。默认:utf8。

-i--embed

嵌入样式表和 JavaScript 内容,base64 编码的图像和对象到演示文稿中,使其成为一个独立文档。

-l LINENOS--linenos=LINENOS

如何输出源代码中的行号。有三个选项可用:no(无行号);inline(在 <pre> 标签内);table(行号在另一个单元格中,方便复制粘贴)。

-m LEVEL--max-toc-level=LEVEL

限制 TOC 生成到特定级别。

-M--mod=MOD

指定一个主题修改器名称。可用:wide16x9。

-o, --direct-output

将生成的HTML代码打印到标准输出。

-P, --no-presenter-notes

输出时不包括演讲者备注。

-q, --quiet

不会将任何内容写入标准输出(静音模式)。

-r, --relative

使演示文稿的资产链接相对于当前工作目录;如果您打算将HTML演示文稿发布到网上,这可能很有用。

-t THEME, --theme=THEME

主题名称,或深色幻灯片主题目录的路径

-v, --verbose

将信息性消息写入标准输出(默认启用)。

-x EXTENSIONS, --extensions=EXTENSIONS

Markdown的扩展名列表,以逗号分隔。

-w, --watch

监视源目录中的更改并重新生成幻灯片。

演示文稿配置

深色幻灯片允许您使用cfg配置文件来配置演示文稿,因此可以简化源目录的聚合以及在不同演示文稿中重复使用它们。深色幻灯片配置文件使用cfg语法。如果您熟悉ini文件,那么您就能理解了。下面是一个示例配置文件

[darkslide]
; the old [landslide] is still supported
theme  = /path/to/my/beautiful/theme
source = 0_my_first_slides.md
         a_directory
         another_directory
         now_a_slide.markdown
         another_one.rst
destination = myWonderfulPresentation.html
css =    my_first_stylesheet.css
         my_other_stylesheet.css
js =     jquery.js
         my_fancy_javascript.js
relative = True
linenos = inline

别忘了声明[darkslide]部分。所有配置文件都必须以.cfg扩展名结尾。

要按配置生成演示文稿,只需运行

$ cd /path/to/my/presentation/sources
$ darkslide config.cfg

您可以使用宏来增强您的演示文稿

备注

使用.notes:关键字向您的幻灯片添加备注,例如。

# My Slide Title

.notes: These are my notes, hidden by default

My visible content goes here

您可以通过按2键来切换备注的显示。

默认情况下还有一些其他宏可用:.fx: foo bar会将foobar类添加到相应的幻灯片<div>元素,从而简化使用CSS进行演示文稿样式的设置。

二维码

使用.qr关键字向您的演示文稿添加二维码

.qr: 450|https://github.com/ionelmc/python-darkslide

脚注

向当前和所有后续演示文稿添加脚注

.footnote: Slides available at https://blog.ionelmc.ro/presentations/

演讲者备注

您还可以通过在幻灯片内容后跟一个标题为“演讲者备注”的标题来为每个幻灯片添加演讲者备注。按‘p’键可以打开演讲者视图。

注册宏

宏用于转换幻灯片的HTML内容。

您可以通过创建darkslide.macro.Macro派生类来注册自己的宏,实现一个process(content, source=None)方法,并返回一个包含修改后的内容和您可能想要添加到您的幻灯片<div>元素中的CSS类的元组。例如

!python
import darkslide

class MyMacro(darkslide.Macro):
  def process(self, content, source=None):
    return content + '<p>plop</p>', ['plopped_slide']

g = darkslide.generator.Generator(source='toto.md')
g.register_macro(MyMacro)
print g.render()

这将渲染任何幻灯片如下所示

!html
<div class="slide plopped_slide">
  <header><h2>foo</h2></header>
  <section>
    <p>my slide contents</p>
    <p>plop</p>
  </section>
</div>

高级用法

设置自定义目标文件

$ darkslide slides.md -d ~/MyPresentations/presentation.html

处理目录

$ darkslide slides/

处理直接输出

$ darkslide slides.md -o | tidy

使用备用深色幻灯片主题

$ darkslide slides.md -t mytheme
$ darkslide slides.md -t /path/to/theme/dir

嵌入Base-64编码的图像

$ darkslide slides.md -i

启用Markdown扩展

有关可用的Markdown扩展的文档,请参阅此处

$ darkslide slides.md -x abbr

主题化

深色幻灯片主题是一个遵循以下简单结构的目录

mytheme/
|-- base.html
|-- css
|   |-- print.css
|   `-- screen.css
`-- js
    `-- slides.js

如果主题没有提供HTML和JS文件,则将从默认主题中使用的文件。CSS不是可选的。

宽屏16x9

您可以使用--mod=wide16x9选项创建宽屏16x9幻灯片。

注意:--mod=wide16x9选项会在应用所选主题(如果有)之前覆盖Darkslide的themes/wide16x9/目录中的文件,以Darkslide的themes/default/目录中的相应文件。

用户样式表和JavaScript

如果您不想麻烦自己制作主题,可以将自己的用户CSS和JS文件包含到生成的演示文稿中。

此功能仅在您使用Darkslide配置文件的情况下可用,通过设置css和/或js标志

[darkslide]
; the old [landslide] is still supported
theme  = /path/to/my/beautiful/theme
source = slides.mdown
css =    custom.css
js =     jquery.js
         powerpoint.js

这些将链接到custom.css样式表以及位于演示文稿HTML文件<head>部分的jquery.jspowerpoint.js文件。

注意: CSS和JS文件的路径必须相对于您运行darkslide命令的目录。

在线发布您的演示文稿

对于在线发布,使用--embed选项生成一个无依赖项的独立HTML文件

$ darkslide slides.md --embed

主题变量

base.html必须是一个Jinja2模板文件,您可以在其中使用以下模板变量

  • css:样式表内容,通过两个键提供,即printscreen,两者都有

  • 一个path_url键,存储资产文件路径的URL

  • 一个contents键,存储资产内容

  • js:JavaScript内容,具有

  • 一个path_url键,存储资产文件路径的URL

  • 一个contents键,存储资产内容

  • slides:幻灯片列表,每个幻灯片都有以下属性

  • header:幻灯片标题

  • content:幻灯片内容

  • number:幻灯片编号

  • embed:当前文档是一个独立的文档吗?

  • num_slides:当前演示文稿中的幻灯片数量

  • toc:目录,列出文档的章节。每个章节都有以下属性可用

  • title:章节标题

  • number:章节的幻灯片编号

  • sub:子章节,如果有的话

样式作用域

  • 要更改HTML5演示文稿的样式,调整主题附带css/screen.css样式表

  • 对于打印,修改css/print.css

作者

该项目最初命名为Landslide,由Adam Zapletal(adamzap@gmail.com)和Nicolas Perriault(nperriault@gmail.com)创建

幻灯片代码基于html5-slides。

更多信息:https://github.com/ionelmc/python-darkslide/contributors

变更日志

Darkslide v6.0.0(2020-07-24)

  • 删除了--copy-theme选项(向后不兼容)。

  • 添加了对主题修改(--mod选项)的支持,并重构了资产管理内部结构。

  • 添加了一个宽16:9的主题修改。由Eric Moyer在#19中贡献。

Darkslide v5.1.0(2020-01-13)

  • 添加了对嵌入网络字体的支持。由Emmanuel Ohayon在#17中贡献。

  • 重构了用户CSS和JS路径处理代码。

  • 将用户CSS和JS路径相对于配置目录(如果有配置文件则为当前工作目录)进行归一化。

Darkslide v5.0.2(2019-12-07)

  • 修复了图像嵌入功能中的一个小错误(CSS文件中的图像检测可能会失败)。

Darkslide v5.0.1(2019-10-01)

  • 用户CSS的固定媒体始终为 all。之前如果嵌入则为 screen, projection

Darkslide v5.0.0 (2019-09-29)

  • 移除了PDF导出支持。您应该直接使用Google Chrome的PDF导出(它比替代方案要好得多)。

  • 修复了演示模式中的过渡问题。

  • 添加了对上下箭头导航的支持。由Heiko Schlittermann在 #13 贡献。

  • 添加了对Markdown 3.0+和Textile 2.3+的支持。

  • 将损坏的 .notes: 宏更改为输出演示者备注。

Darkslide v4.0.1 (2017-10-19)

  • 稍微修复了打印CSS。

  • 修复了在概述模式下更改幻灯片时缺少滚动到当前幻灯片的问题。

Darkslide v4.0.0 (2017-10-17)

  • 移除MathJax支持。维护的东西更少(此外,与 --embed 一起使用时未按预期工作)。需要此功能的使用者应直接使用 user_js 选项。或自定义主题。

  • 将主题更改为使用空格调整的Alegreya Sans作为后备。

Darkslide v3.2.0 (2017-10-17)

  • 将主题更改为使用Rosario作为后备。好坏参半,它更小,并且与Candara宽度相同。

Darkslide v3.1.0 (2017-10-17)

  • 将主题更改为嵌入Candara后备网络字体(Alegreya Sans)。它略微窄一些,但看起来比其他替代方案更好,更好地匹配Candara的宽度(Acme、Galdeano)。它甚至有连字符。

Darkslide v3.0.1 (2017-10-15)

  • 修复了稍微损坏的幻灯片类更改。

  • 使暴露模式滚动到当前幻灯片。

  • 在没有目标的情况下运行演示模式不再会中断,如果目标窗口已消失。

  • 修复了演示者备注的显示。

Darkslide v3.0.0 (2017-10-05)

  • 移除了“扩展模式”。它太不稳定了,并且实际上没有真正的作用。

  • 将“显示上下文”更改为“显示下一张幻灯片”(因此一次显示两张幻灯片)。这比显示下一张和上一张幻灯片的一小部分要更有用。

  • 修复了Python 3上的 --direct

  • 修复了TOC/帮助打开时的故障。

  • 使在TOC/帮助/概述打开时切换幻灯片成为可能。

Darkslide v2.3.3 (2016-05-15)

  • 修复了QR svg元素的身高。

Darkslide v2.3.2 (2016-04-12)

  • 修复了页脚中链接的底部下划线遮挡阴影。

  • 修复了在备注模式下未设置 presenter_notes 类的问题。

Darkslide v2.3.1 (2016-02-08)

  • MathJax在HTTPS上加载。

Darkslide v2.3.0 (2016-02-07)

  • 在帮助侧边栏中显示Darkslide版本。

Darkslide v2.2.1 (2015-10-06)

  • 修复了math_output的配置文件解析。

Darkslide v2.2.0 (2015-10-06)

  • 现在,如果宏失败,将终止渲染。以前,它只会记录一条您可能不会注意到的消息。

  • 修复了处理CSS/JS在cfg文件中的损坏。

  • 允许在cfg文件中设置math_output选项。

  • 修复了QR宏中的编码问题。

  • 恢复了带有完全黑色背景的旧主题(作为“void”)。

  • 调整了模拟下划线以看起来更好。

Darkslide v2.1.0 (2015-10-05)

  • 添加了演示链接。

  • 修复了选项处理。如果使用cfg文件,则现在将实际使用命令行中的选项。

  • 更正了相对路径处理

    • 源中的路径现在相对于cfg文件(以前它们相对于当前工作目录)。

    • 当目标文件不在当前工作目录中时,相对选项现在正确地工作。

  • 修复了具有许多标题的幻灯片的布局(不再为标题添加填充,所有根元素都均匀分布)。

  • 修复了TOC的糟糕样式(以及侧边栏中的其他一些东西)。

  • 修复了TOC链接(由Cyrille Pontvieux贡献)。

Darkslide v2.0.4 (2015-09-09)

  • 改进了对具有非ASCII字符的文件名的处理。

Darkslide v2.0.3 (2015-09-08)

  • 修复了处理包含非ASCII字符的文件名的问题。

Darkslide v2.0.2 (2015-07-20)

  • 在abyss主题中添加了颜色类。

  • 修复了演讲者笔记中的链接下划线。

Darkslide v2.0.1 (2015-07-19)

  • 不要在base.css中使用Monaco - 它比Consolas和其他字体大得多。Consolas已经足够好了。

Darkslide v2.0.0 (2015-07-17)

  • 修复了RST图像目标链接的显示。

  • 添加了打印版本号的命令行选项。

  • 重写了默认主题(solarized颜色)。

  • 彻底改写了abyss主题,改善了着色。

  • 移除了所有其他主题(它们又丑又破)(向后不兼容)。

  • 修复了打印CSS的问题。

  • 添加了对两个新的CSS文件的支持:base.csstheme.css。这使得在主题和显示类型(打印/屏幕)之间重用样式变得更加容易。

  • 扩展模式现在是默认启用的。

  • 将宏更改为使用编译正则表达式。

  • 添加了脚注宏。

  • 将QR宏更改为使用qrcode库。现在它被渲染为SVG。已移除大小(向后不兼容)。

Darkslide v1.2.2 (2015-05-22)

  • 修复了生成PDF时出现的空白页问题(通过Chrome的PDF打印机)。

Darkslide v1.2.1 (2015-05-21)

  • 对abyss主题进行了一些小的改进。

Darkslide v1.2.0 (2015-05-19)

  • 修饰键标志没有被正确清除(在alt-tab等之后键盘快捷键不再工作);现在它在可见性更改和失去焦点时被清除。

  • 将扩展模式更改为自动隐藏上下文。

  • 修复了窗口大小调整时的闪烁(每次大小调整事件都会切换扩展标志)。

  • 在演讲者视图中禁用了上下文隐藏。

  • 其他小的样式改进。

  • 添加了“abyss”主题。

Landslide v1.1.3

  • 通过编号类(#171)标识每个幻灯片(dkg)

  • 修复了主题图像嵌入正则表达式以抓取所有图像(#170)

  • 修复了rst中的引用块字体大小(#161)

  • 修复了rst图像目标链接的显示(#87)

  • 修复了相对路径生成(#147)

  • 添加了打印版本的命令行选项(#135)

  • 将使用“-”作为幻灯片分隔符添加到textile文件中(#163)

  • README改进(#88和#101)

  • 改进了图像路径正则表达式和替换(#177)

Landslide v1.1.2

  • 添加了对Python 3的支持

  • 允许在CFG文件中支持copy_theme参数(#139)(syscomet)

  • 改进了Markdown文件的MathJax渲染

  • 支持数学输出(#144)(davidedelvento)

  • 允许在RST文件中没有标题的幻灯片中添加演讲者笔记(#141)(regebro)

  • 等等...

Landslide v1.1.1

修复

  • 不要意外地要求watchdog(#134)

Landslide v1.1.0

主要增强

  • 添加CHANGELOG

  • 添加了来自“shower”演示工具的“ribbon”主题(#129)(durden)

  • 添加-w标志以监视/自动重新生成演示文稿(#71,#120)(jondkoon)

小增强

  • 抑制reST渲染错误

  • CSS预处理增强(#91)(roktas)

  • 添加了一个使用演讲者笔记的示例(#106)(netantho)

  • 在标题上运行宏,以嵌入图像(#74)(godfat)

  • 允许PHP代码片段不需要<?php(#127)(akrabat)

  • 允许reStructuredText中使用行号和强调(#97)(copelco)

  • 添加了一个从输出中删除演讲者笔记的选项(#107)(aaugustin)

修复

  • Firefox在下一张幻灯片上的偏移量错误(#73)

  • 修复了base64编码问题(#109)(ackdesha)

  • 修复了在CSS中嵌入图像的定义(#126)(akrabat)

  • 其他小的文档修复(#119,#131)(durden,spin6lock)

  • 在读取所有嵌入文件时使用配置的编码(#125)(iguananaut)

  • 允许包含特殊字符的pygments词法分析器名称(#123)(shreyankg)

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分发

darkslide-6.0.0.tar.gz (1.5 MB 查看哈希值)

上传时间 源代码

构建分发

darkslide-6.0.0-py2.py3-none-any.whl (1.5 MB 查看哈希值)

上传时间 Python 2 Python 3

由以下支持