Hey André,

thanks for the interesting contribution! Have a look at the patch
I hopefully don’t forget to append.

···<date: 2012-12-13, Thursday>···<from: Andre Caldas>···

> Well.... since Raw Steps did not work with mkiv, I tried making a very
> very simple module for a "beamer-like" behaviour.
> 
> I don't really know how to write a module... but here is what I did:
> https://bitbucket.org/andrecaldas/math-video-classes/src/9116599821fc246cb54d3e6d7b8e6304649eaffb/lib?at=default
> 
> I use \startbuffer and \stopbuffer, and also Lua. As I said, I don't
> really know how to write a module... comments are very welcome.

Honestly, it doesn’t work, but that’s a minor flaw! If you want
to use buffers with indirection you have to take care of the
argument delimiters. \grabbufferdata is excellent for that.

I did some rewriting: stray globals and rough namespacing,
mostly. On the practice of calling TeX macros from Lua, the cld
manual can give you a boost:

    http://www.pragma-ade.com/general/manuals/cld-mkiv.pdf

This explains how to properly use the context.*() namespace
instead of tex.print and the likes.

I could not figure out how exactly the section block thingy is
supposed to work. It does not create the \startframe macro at all
-- is this something custom? I infer it’s about the slide title
so I have \startframe call \section but that should be taken as a
placeholder at most. In my own slide module I use
\{start,stop}section with the option placehead=no and rely on the
page header to display the slide title (i.e. current section
running head). That was the laziest way I could imagine :P

Some remarks:

  - you should rename simplesteps.mkiv to t-simplesteps.mkiv,
    indicating that it is a thirdparty module
  - if you plan on expanding the code you eventually will come to
    love this bit: http://wiki.contextgarden.net/System_Macros
  - Context has a namespacing system which you might consider
    switching to in the long term:
      http://tex.stackexchange.com/q/58654
    but it’s arguably an advanced method
  - maybe switch to mkvi as named parameters make rewriting
    macros a breeze

> Is it ok if I send a PDF sample to the list?

For uploading docs and such to the “downloads” section on
bitbucket is great. Then just post a link.

Happy TeXing!
Philipp

diff -r 9116599821fc lib/simplesteps.lua
--- a/lib/simplesteps.lua       Thu Dec 13 20:49:38 2012 -0200
+++ b/lib/simplesteps.lua       Fri Dec 14 01:59:00 2012 +0100
@@ -7,10 +7,12 @@
     license   = "GPL version 3.0 or any later version"
 }
 
-simplesteps = simplesteps or {}
+thirddata               = thirddata or {}
+thirddata.simplesteps   = thirddata.simplesteps or {}
+local simplesteps       = thirddata.simplesteps
 
-local stepcounter = 0
-local maxstepcount = 1
+local stepcounter   = 0
+local maxstepcount  = 1
 
 
 function simplesteps.distance_to_step(str)
@@ -51,7 +53,7 @@
 function simplesteps.update_maxstepcount(steps)
   for i=1,#steps
   do
-    step = steps[i]
+    local step = steps[i]
     if maxstepcount < step
     then
       maxstepcount = step
diff -r 9116599821fc lib/simplesteps.mkiv
--- a/lib/simplesteps.mkiv      Thu Dec 13 20:49:38 2012 -0200
+++ b/lib/simplesteps.mkiv      Fri Dec 14 01:59:00 2012 +0100
@@ -18,7 +18,7 @@
 \unprotect
 
 %D \macros
-%D   {simplesteps}
+%D   {startframe,stopframe}
 %D
 %D \startframe[Slide 1]
 %D   \startitemize
@@ -31,49 +31,53 @@
 
 \unexpanded\def\uncover[#1]%
   {\ctxlua{
-     distance = simplesteps.distance_to_step("#1")
+     local distance = thirddata.simplesteps.distance_to_step("#1")
      if 0 == distance
       then
       elseif 1 == distance
       then
-        tex.sprint('\\simplestepscoverednext')
+        context.simplestepscoverednext()
       elseif 2 == distance
       then
-        tex.sprint('\\simplestepscoveredfar')
+        context.simplestepscoveredfar()
       else
-        tex.sprint('\\simplestepscoveredveryfar')
+        context.simplestepscoveredveryfar()
       end
   }}
 
 \unexpanded\def\only[#1]%
   {\ctxlua{
-      if not simplesteps.instep("#1")
+      if not thirddata.simplesteps.instep("#1")
       then
-        tex.sprint('\\simplestepshidden')
+        context.simplestepshidden()
       end
   }}
 
 \unexpanded\def\simplestepsplaybuffer%
-  {\ctxlua{simplesteps.playbuffer()}}
+  {\ctxlua{thirddata.simplesteps.playbuffer()}}
 
-\definecolor[hidden1][s=0.75]
-\definecolor[hidden2][s=0.90]
-\definecolor[hidden3][s=0.95]
+\definecolor[simplesteps:hidden1][s=0.75]
+\definecolor[simplesteps:hidden2][s=0.90]
+\definecolor[simplesteps:hidden3][s=0.95]
 
 \unexpanded\def\simplestepshidden#1{}
-\unexpanded\def\simplestepscoverednext#1{\color[hidden1]{#1}}
-\unexpanded\def\simplestepscoveredfar#1{\color[hidden2]{#1}}
-\unexpanded\def\simplestepscoveredveryfar#1{\color[hidden3]{#1}}
+\unexpanded\def\simplestepscoverednext#1{\color[simplesteps:hidden1]{#1}}
+\unexpanded\def\simplestepscoveredfar#1{\color[simplesteps:hidden2]{#1}}
+\unexpanded\def\simplestepscoveredveryfar#1{\color[simplesteps:hidden3]{#1}}
+
+
+\unexpanded\def\startframe{\dosingleempty\frame_start}
+
+\def\frame_start[#1]{%
+  \iffirstargument
+    \section{#1}%% solution needed here!
+  \fi
+  \begingroup
+  \grabbufferdata[simplesteps][startframe][stopframe]%
+}
+
+\let\stopframe\simplestepsplaybuffer
 
 \protect
 
-
-\setupsectionblock
-  [frame]
-  [before=\initframe,after=\endframe]
-
-\def\initframe{\startbuffer[simplesteps]}
-\def\endframe{\stopbuffer\simplestepsplaybuffer}
-
-
 \endinput

Attachment: pgpIhkHjYIl2k.pgp
Description: PGP signature

___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://tex.aanhet.net
archive  : http://foundry.supelec.fr/projects/contextrev/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to