RFC: Direction thoughts

[email protected] ((Jochen Stenzel)) Sat, 17 Mar 2001 13:28:06 +0100
Newsgroups perl.perlpoint
Message-ID <[email protected]>
Hello,

while preparing our workshop talk about PerlPoint, we began to talk
with Mark Overmeer who wrote PPresenter about a PerlPoint -> PPresenter
connection, that is, making it possible to present PerlPoint slides
with PPresenter. We met on the workshop and had a brainstorming with
him and Johan Vromans, and various ideas came up. So after the
workshop, I continued to think about ways for this integration.

The special thing about PPresenter is that this is the first projector
software in focus which supports dynamic elements. This does not
necessarily mean animations but includes things like hiding a line
or point till the speaker decides to show it. HTML, on the other hand,
is very static instead (and so of course are Latex and SDF), so there
was no need of integrating such things till now. Nevertheless, pp2html
could for example emulate the mentioned line/point feature by making
several slides instead of one, each of them containing just one more
point. Or something like that.

I think of PPresenter as a prototype of projectors supporting such
showtime features, for example the future Open Office Presenter will
probably be another one. So what we need in my opinion is a general way
to integrate direction directives into PerlPoint while keeping its easy
to use form.

This includes two parts. One is to place direction elements within a
PerlPoint document. The other one is to provide these informations in
the stream. I'm thinking about both, but today I want to focus on the
PerlPoint language extensions.

So below you'll find a description of what I suggest so far. I think
this topic is interesting for both PerlPoint document authors *and*
translator developers, so please have a look if you like. Comments,
suggestions, extensions, questions, ideas, everything is appreciated.
There's still no code (but I'm not sure how long I can delay myself
;-). Because this is a long term issue and related to various other
internal modifications, I'm planning to build in this not necessarily
into the next package release but into a forthcoming 0.40 version.
There should be time enough to make this work a good way.

-------------

The proposal:

* Existing documents should not be affected.

* Direction directives should be abstract. The parser is intended to be
  very general. Any special behaviour is built into *translators*.

* As I see so far, we need *regions* to mark what a directive is
  addressing. A region might be something within a paragraph, or
  include several paragraphs. Regions may overlap, but they never
  extend their startup slide/chapter.

* To address regions they need to be named. Alternatively, they
  could be shaped by named marks.

* To mark a region within a paragraph, a special (reserved) tag
  seems to be appropriate.

   Bla bla \REGION{name="region 1"}<blu> bla bla

  The body of REGION tags has to be mandatory.

* To set marks between paragraphs we need a new type of paragraph.
  That's the PerlPoint way, no problem:

   // start a region
   ^ mark 1

   * my next point

   // complete region
   ^ mark 2


  The text following the opening character represents the
  markers name.

* By default, there's always a special region named "slide",
  obviously containing the whole chapter.

* Another new special and reserved tag could be used to direct.

   // emphasize "region 1"
   \DIRECT{region="region 1" cmd=EMPHASIZE by=rotating}

   // fade in "my next point"
   \DIRECT{regionFrom="mark 1" regionTo="mark 2" cmd="FADEIN"}

* The tag option "cmd" would be mandatory. Naming a region would
  be mandatory, either by a region name or by providing a start
  and a completion mark. More options are command specific and
  optional.

* Because the commands are very abstract, there need to be
  common conventions about them, so that a certain command can
  be realized similarly by various projectors, regardless of the
  way they really do/emulate/skip it.

* Directing tags could be placed everywhere, but only where the
  region / marks are already known. This means, it could be a good
  convention to place them at the end of a chapter / slide
  description together. To visualize such a special area, another
  paragraph could be introduced, starting by "|" and being completed
  by the end of the line (like a comment):

    * the final statement on this slide

    // ------------------
    // direct this slide
    |
    | \DIRECT{...}
    | \DIRECT{...}
    | \DIRECT{...}
    | \DIRECT{...}
    |
    // ------------------


Ok. What I do not really like here is the distinction in describing a
region. There are two ways in this proposal, either by a region or by
marks, which may not be as handy as it could possibly be. On the other
hand, why making a region tag more difficult by splitting it up into a
startup and a completion tag? Or why making things more complicated by
requiring opening and completion marks for certain regions? So, the
poposed way is currently the best solution I found. Every suggestion is
appreciated.

Finally: as a PerlPoint user, could you imagine to read / write
documents this extended way? As an (even potential) PerlPoint
translator author: does this seem to be sufficient and powerful enough?
Both: does it look to be as abstract as necessary? But still simple and
like PerlPoint?

Thanks for your attention, and for all your comments in advance!

                Jochen