基于轻量级标记语言(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.  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 用于代码块语法着色
标记转换
markdown 用于 Markdown
docutils 用于 reStructured Text
textile 用于 Textile
可选
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.md 或 darkslide 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会将foo和bar类添加到相应的幻灯片<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.js和powerpoint.js文件。
注意: CSS和JS文件的路径必须相对于您运行darkslide命令的目录。
在线发布您的演示文稿
对于在线发布,使用--embed选项生成一个无依赖项的独立HTML文件
$ darkslide slides.md --embed
主题变量
base.html必须是一个Jinja2模板文件,您可以在其中使用以下模板变量
css:样式表内容,通过两个键提供,即print和screen,两者都有
一个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
变更日志
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.css和theme.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)