用黑客的方式制作幻灯片

January 03 2014 , Category: Racket

忘掉类似微软PowerPoint和Apple Keynote这样时髦的软件,忘掉类似impress.js及reveal.js这样酷炫的前端技术,在此,我将会给大家介绍一种特别的方式来制作幻灯片。

我们将要使用的是 – 铛铛铛铛 – Racket.

如果你是一名程序语言爱好者,那么对Racket这个名词一定不会陌生。(我当然不会介绍一下Racket这门语言,然后再梳理一下整个Lisp语言的族谱,要是你无比厌烦Lisp那「Lots of Irritating Superfluous Parentheses」,那么恐怕你可以直接Ctrl or CMD + W了。)

幻灯片

首先要介绍一下使用的编程环境:DrRacket(无论是在Mac OS X还是Linux甚至是Windows环境中都可以直接安装官网上的包)。要选择Racket中的幻灯片「语言」:#lang slideshow 这样我们就可以在DrRacket中开始制作幻灯片了。

Hello world

在DrRacket中键入如下代码:

#lang slideshow
(slide
	#:title "Say Hello to the world!"
	(t "Hello World!"))

再点击右上角的Run即可运行看到我们制作的第一张幻灯片了。

这里值得注意的几点是:

下面会介绍一些幻灯片中的基本元素:标题,段落,列表等内容。

标题

在上述例子中我们已经可以看到在slide函数中可以设置整页幻灯片的标题。那么使用titlet函数就可以给段落添加标题了:

#lang slideshow
(slide
	(titlet "Title")
	(t "Test")
	(t "TEST"))

段落

虽然使用t函数也可以起到创建段落的作用,但是如果你尝试过的话,会发现t函数是默认居中的(当然这并不是关键),而且从语义上来讲,创建段落更应当使用para函数(就像现在在Web上推行Web语义化一样):

#lang slideshow
(slide
	(titlet "Title")
	(para "This is a paragraph"))

列表

简单的列表在幻灯片中易于叙事、陈述观点。当然这在Racket中也是简单的一笔:

#lang slideshow
(slide
	#:title "Slide"
	(item "First item")
	(item "Second item")
	(item "Third item"))

字体

如果你想要用(bt (it "string"))的方法来让字体又粗又斜恐怕是不行的了(会报错,因为bt这类函数只能接受字符串参数,而不能用函数作为参数)。

加入动画

'next,顾名思义,可以让后面的内容在点击或按下控制下一页的按钮之后显示,也是幻灯片中最常见的转场动画效果。

#lang slideshow
(slide
	#:title "Example"
	(t "First")
	'next
	(t "Second")
	'next
	(t "Third"))

接在'alts之后的必须是由list组成的list,而后一个list会替换前一个list出现在幻灯片中。

#lang slideshow
(slide
	#:title "Example"
	(t "First")
	'next
	'alts
	(list (list (item "t1")
				(item "t2")
				(item "t3"))
		  (list (item "t4")
		  		(item "t5"))))

to be continue…

参考

有兴趣的同学可以看看这篇Utah大学的文章:Slideshow: functional Presentations

–EOF–

支持作者 | Article licensed under CC BY-NC-SA 4.0