Richard,

Nice work!  Here's my 2 cents worth.  I leave final decisions to you.

1.  Theres a Jr after my name.
2.  P. 2 middle: Earlier definitions of X.flags, lpr.flags, lp.flags,
    pr.flags might flow better.
3.  P. 2 line 7 from bottom: data in the data frame -> type of data in
    the data frame
4.  Bottom line: footnote for page command:
    S-Plus (StatSci, Inc) users have a special built-in function
    called page which we suggest renaming page.something.
5.  P. 3 after "fonts, geometry, and color": One particularly useful
    public-domain X-window pager is "xless", available from ...
6.  P. 3 before An alternate usage (of Vars): add after "to the
    display": "since it was not assigned to another object. Example
    output might be:
> d <-  data.frame(x=1:2, y=factor(c("a","b")), 
+                  q=structure(3:4, label="Z"))
> Vars(d)
  Label  Class Levels
q Z           
x             
y       factor a b

7.  P 4 - replace 3 lines of code with
    form.page <- structure(c(1,1,1,1,...), names=names(my.data.frame),
      form.dir="Study.R93.124")
8.  P 5, top: Are you thinking of different pages of the form being
    in separate files within a directory for that form?  It might be
    better to have multiple files within a directory, and use
    sep="." instead of sep="/"
    After the function definition add:
    This example assumes the image is in text format.  If for example
    JPEG, GIF, or other image formats commonly used by scanners was
    used, you can replace page(file=....) with
    unix(paste("xli",attr(form.page.arg,"form.dir"),".",form.page....,
        "&")) to use the xli displayer.
    ("form.dir" -> "form.root" if not use directory)

    Instead of form(12) use
    form(12)   # display form page containing 12th variable
    form("cholesterol") #display form page containing cholesterol
    and add "Here file Study.R92.124.2" is displayed.
9.  First reference: add your name - don't forget that I need to
    give Mike Meyer a new version of vars to reflect your changes.

Another model for the form page attribute is to attach the attribute
to each variable separately.  Then form(cholesterol) would work, and
if you add variables, the attributes will still point to the right
place (with NULL for new variables).  A utility function could take
input like c(1,1,1,1,1,...) and piece it out to the variables in
my.data.frame.