slideml

From ConformalOpenSource
Jump to: navigation, search

Contents

Introduction

slideml (Slide Meta-Language) is a simple to use meta-language to generate presentation slides that can be viewed in a web browser. The idea was to use ASCII-chat like tags that are translated into XHTML. Joel Sing <joel@sing.id.au> wrote the perl code that translates the meta-language into XHTML. The JS, XSS & XHTML pieces were borrowed from Dave Raggett's <dsr@w3.org> HTML Slidy.

Meta-Language Specification

Slideml is a meta-language to aid in writing presentations in simple to read text. This text is then translated into XHTML and can be presented using a standard web browser.

Meta-data

All meta-data tags must be at the start of the line and prefixed with @. The meta-data is either a flag or a "value equals pair". When the meta-data tags are used before the first new slide designator the values are global defaults.

The currently supported meta-data tags are: The title of the presentation use the @title tag. For example:

@title=My fancy presentation

The background color of the presentation uses the @background tag. For example:

@background=#12abff

The foreground color of the text uses the @foreground tag. For example:

@foreground=#abcd00

There are 2 types of slides

  • Introduction slide (intro), the introduction slide has centered large text for typically 1 or 2 lines for the presentation name and author.
  • Regular slide (normal), this is a slide with a header, content and footer.

For example

@type=intro

or

@type=normal

If required one can use a picture as the background for the presentation using the @picture tag. For example:

@picture=example.png

The default font can be changed using the @font tag. For example:

@font=mysnazyfont

Slides

All slide tags and section designators must be at the start of the line.

A slide consists of 5 sections:

  • New slide designator
  • Slide specific meta-data
  • Slide header
  • Slide content
  • Slide footer

Expressed in slideml:

---
@metadata
<this is the header>
This is the slide content.
!this is the footer!

Slide meta-data

See section 1.2. Only difference being that the meta-data only applies to the current slide.

Slide header

The title of a slide is designated between <>. This title is a large font and is rendered on top of the page. For example:

<This is my title>

The title attribute must be the first character on the line so that something like a < b renders as text.

To center the title on the slide use >< instead. For example:

>centered title< 

Slide content

This is where the meat of the presentation goes. See section 1.3.6 for text and other tags.

Slide footer

The footer of a slide is designated between !!. This footer is a small font and is rendered bottom of the page.For example:

!This is my footer!

The footer attribute must be the first character on the line so that something like hi!! renders as text.

New slide designator

The new slide designator --- designates the start of a new slide.

Text

The text tags are wrappers of meta-characters surrounding a piece of text.

The supported tags are:

  • Bold. Bold is text wrapped in ** for example *this is bold*
  • Italic. Italic is text wrapped in // for example /this text is italic/
  • Underline. Underline is text wrapped in __ for example _this text is underline_
  • Bigger font size. Bigger font size is text wrapped in ^^ for example: ^bigger font^. Multiple ^ can be used to indicate ^^even bigger font^^. Up to two ^ can be used.
  • Bullets. The graphical representation of bullets is determined by which character is used. The characters that can be used are * (large bullet) - (dash bullet) . (small bullet) and > (arrow bullet). The physical indentation, expressed in number of tabs, determines the indentation depth on the slides.
  • Pictures. [img=I [size=P | width=W height=H] [xpos=X ypos=Y | align=A]] Where: I is a link to, or a picture. P is a percentage of the orignal size of an image. W & H are width and heigh in pixels X & Y are pixel locations A is align keyword such as left or top.


Generating an HTML presentation

Example sml file:

# $slideml: slides.sml,v 1.12 2010/03/13 08:28:20 jsing Exp $
# example presentation

# comment
@title=My Fancy Presentation
@background=#aaaaaa
@foreground=#000044
#@backimage=moo.jpg
---
@type=title
<My Name Goes Here>
[img src=http://www.openbsd.org/art/sublow.jpg size=40% align=center]
A ^presentation^ on ^^thingy^^ stuff
---
@background=#284360
@backimage=http://www.openbsd.org/images/tshirt-23.gif
@backimagepos=center
@backimagerpt=no
---
@background=#000000
@foreground=#0000aa
<My presentation>
* Welcome to my bullet
	- yes it is this easy
* Lets *bold* it
* And /italic/
* Now lets _underscore_
	- this is so *awesome*
Include some text with_underscores_inline and *asterisks*inline!
Include some text with_formatted\_underscores\_inline and \*asterisks\*inline!
!copyright in the footer!
---
<Title on slide>
* is this cool or what?
* now for some picture action
[img src=http://www.openbsd.org/art/puffy/puf300X258.gif width=300 height=258 align=center]
* puffy is awesome
!my footer!
---
@background=#ffffff
@foreground=#333333
>One more slide<
1 number list
	1 indented number
2 yeah
3 three!
[img src=http://www.openbsd.org/art/puffy/puf300X258.gif size=20% align=right]
---
>A slide with a table<
||L Heading A ||C Heading B ||R Heading C |
| 1 | 2 | 3 |
| _logical_ *OR* | \|\| | or |
|2R /foo/ |L _blah_ |
---
>Another example<
==
This is preformated
  text
    & should _not_ be
      <changed>
==
This text is <not> preformated & should be processed!

Generating an HTML presentation is as simple as:

$ ./slideml.pl examples/slides.sml > example.html

The resulting presentation can be seen here.

slideml.pl depends on p5-Image-Size.

SlideML Resources

SlideML License

slidy.css and slidy.js is distributed under the following license:

W3C Software Notice and License

This work (and included software, documentation such as READMEs, or other
related items) is being provided by the copyright holders under the following
license.  License

By obtaining, using and/or copying this work, you (the licensee) agree that you
have read, understood, and will comply with the following terms and conditions.

Permission to copy, modify, and distribute this software and its documentation,
with or without modification, for any purpose and without fee or royalty is
hereby granted, provided that you include the following on ALL copies of the
software and documentation or portions thereof, including modifications:

        * The full text of this NOTICE in a location viewable to users of the
          redistributed or derivative work.

        * Any pre-existing intellectual property disclaimers, notices, or terms
          and conditions. If none exist, the W3C Software Short Notice should
          be included (hypertext is preferred, text is permitted) within the
          body of any redistributed or derivative code.

        * Notice of any changes or modifications to the files, including the
          date changes were made. (We recommend you provide URIs to the
          location from which the code is derived.)

Disclaimers

THIS SOFTWARE AND DOCUMENTATION IS PROVIDED "AS IS," AND COPYRIGHT HOLDERS MAKE
NO REPRESENTATIONS OR WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
TO, WARRANTIES OF MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR PURPOSE OR THAT
THE USE OF THE SOFTWARE OR DOCUMENTATION WILL NOT INFRINGE ANY THIRD PARTY
PATENTS, COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS.

COPYRIGHT HOLDERS WILL NOT BE LIABLE FOR ANY DIRECT, INDIRECT, SPECIAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF ANY USE OF THE SOFTWARE OR DOCUMENTATION.

The name and trademarks of copyright holders may NOT be used in advertising or
publicity pertaining to the software without specific, written prior
permission. Title to copyright in this software and any associated
documentation will at all times remain with copyright holders.

Notes

This version:
http://www.w3.org/Consortium/Legal/2002/copyright-software-20021231

This formulation of W3C's notice and license became active on December 31 2002.
This version removes the copyright ownership notice such that this license can
be used with materials other than those owned by the W3C, reflects that ERCIM
is now a host of the W3C, includes references to this specific dated version of
the license, and removes the ambiguous grant of "use". Otherwise, this version
is the same as the previous version and is written so as to preserve the Free
Software Foundation's assessment of GPL compatibility and OSI's certification
under the Open Source Definition.

slideml.pl is distributed under the following license:

/*
 * Copyright (c) 2010 Joel Sing (joel@sing.id.au)
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

The meta language format has the following license:

/*
 * Copyright (c) 2010 Joel Sing (joel@sing.id.au)
 * Copyright (c) 2010 Marco Peereboom <marco@peereboom.us>
 *
 * Permission to use, copy, modify, and distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */