Generated: November 20, 2003, 10:38:47Copyright ©2003, Kurt NørmarkThe local LAML software home page

Reference Manual of the LENO Lecture Note System

Kurt Nørmark ©    normark@cs.auc.dk    Department of Computer Science    Aalborg University    Denmark    

Source file: styles/lecture-notes/lecture-notes.scm
LAML Version 22.00 (October 29, 2003, alpha-3)

This is the reference manual of the original LENO Lecture Note System. The current version of LENO is XML-in-LAML LENO. Although the LENO software, documented here, is very much alive, this manual is obsolete.

This manual - the manual of the original LENO system - is not maintained any more. However, the underlying Scheme program of LENO, styles/lecture-notes/lecture-notes.scm, is maintained because it still makes up the kernel of LENO - indenpendent of its interface.

Using LENO it is possible to make web-based teaching material. The collection is structured in chapters. Each chapter is used in a separate lecture. LENO supports a comprehensive linking of slides within a chapter, and linking between the chapters. Overview pages are generated for each chapter, and lecture wide for all chapters. LENO also supports an alphabetic index with links to slides given selected index words, concepts, and slide titles.

LENO supports three different views on the slide: Slide view, annotated slide view, and a more book-like view. In slide view, the main text of the slides are shown in using a relatively large font. In the annotated slide view, the slide is shown to the left, and the annotations are shown to the right. In the book-like view, the slide contents and the annotations are mixed into a single, long text with marginal comments. All three views can be seen from any Internet browser, because it is translated to simple and plain HTML.

LENO is implemented by means of LAML, which means 'Lisp Abstracted Markup Language'. In LAML a number of Scheme expressions are executed with the purpose to generate HTML counterparts.

This document is the reference manual of LENO. It documents the primary user level 'markup' functions, which act as special purpose slide markup functions. Furthermore, it documents a number of preamble clauses, through which it is possible to set set of lecture notes, Finally a number of utility functions are described.

There exists a separate overview of the CSS support for LENO.

If you want to see examples of material constructed via LENO you can consult the slides to the talk Using Lisp as a Markup Language - the LAML approach, the Lecture Notes on Object-oriented programming (in Danish - the most substantial example until now), and a meta material Using LAML for WWW Authoring (where each of the major markup elements in LENO is demonstrated in a very concrete fashion). You should also pay attention to the very simple (and somewhat artificial) introductory LENO examples provided with this software.

Table of Contents:
1. Overall organization4. Clauses of the note-page form7. Cross Reference Support
2. Preamble stuff5. LENO Emacs Support8. Show and speak functionality
3. Top level functions6. Useful templates9. Some relevant functions from the LENO implementation

Alphabetic index:
additional-showing-timeadditional-showing-timeAn additional number of seconds added to the showing times of each show-and-speak page.
answer(answer possible-answer correctness-point clarification)Define a single answering possibility side by side with other possible answers
answers(answers . answer-list)Define a number of possible answers of a quiz clause
applet-program(applet-program class-file codebase explanation width height)Defines and inserts a Java applet
author-home-urlauthor-home-urlA variable the value of which must the URL of the author home page.
begin-notes(begin-notes)This form marks the ending of the preamble and the beginning of the note page definition part.
book-url(slide-url lecture-id . slide-id)Return a URL of particular aggregated lecture.
comment(comment comment-text)Present an internal comment.
concept(concept concept-name concept-definition concept-explanation)Defines a concept in terms of its name, a concept definition, and a concept explanation.
concept-list(concept-list . concepts)Defines a number of concepts.
copy-image-files?copy-image-files?A variable which controls whether to copy image icons from the software directory to the note source directory.
copy-note-graphics?copy-note-graphics?A variable which controls whether to copy author defined graphics from the software graphics directory to the HTML destination directory.
course-dircourse-dirA variable which defines the course directory, in which the course plan files resides.
course-home-urlcourse-home-urlA variable the value of which must be the URL of the course home page (a string).
cross-reference-location-hints(cross-reference-location-hints location-hints)A function which may return a hint of the location of a cross reference.
cross-references(cross-references reference-list)Define a number of cross references to other material.
current-lecturecurrent-lectureAn integer variable defining the chapter number of the last lecture to be generated.
default-showing-timedefault-showing-timeThe number of seconds to show a slide page with show-and-speak.
elucidate(elucidate description url target)Insert a link to an elucidator (accompanied with an eluciator icon) which explains a program.
end-notes(end-notes)States the ending of this lecture note file.
example(example example-text about-the-example)Defines an example which is shown in all views.
exclude-front-index(exclude-front-index)Arrange that no index of chapters is generated.
exclude-word-index(exclude-word-index)Arrange that no index of keywords will be generated.
exercise(exercise exercise-id exercise-title exercise-formulation . exercise-solution)Defines an exercise in terms of an id, a title, a formulation and an optional solution.
exercise-formulation-url(exercise-formulation-url lecture-id page-id presentation-kind exercise-number)Return a URL to an exercise formulation in a given lecture, and on a given page.
exercise-formulation-url-given-id(exercise-formulation-url-given-id lecture-id exercise-id . presentation-kind)Return a URL to an exercise formulation identified with exercise-id, located in a particular lecture.
exercise-model(exercise-model model)Set the exercise model to model.
exercise-solution-url(exercise-solution-url lecture-id page-id exercise-number)Return a URL to an exercise solution in a particular lecture, on a particular page.
formulation(formulation exercise-formulation-text)Defines the exercise formulation text
generating-system(generating-system)A parameter less function which is supposed to return a string describing the system, which has generated these notes.
image(image filename explanation formatter)Inserts a gif image from an external file.
image-series(image-series series-title image-descriptions how-to-show)Defines a series of images, which may define a number of steps.
image-series-part(image-series-part number time-list)Define an image-series part of the surrounding show and speak clause.
include-front-index(include-front-index)Arrange that an index of all chapters are generated.
include-word-index(include-word-index)Arrange that an index of distinquished keywords will be generated with links to the slides, where the words occur.
index-words(index-words . words)Defines a number of index words of this page.
informal-reference(informal-reference anchor-text reference-text . location-hints)Defines a reference to an off line resource, such that a paper or a book
internet-reference(internet-reference anchor-text url . location-hints)Defines a reference to an Internet resource
item(item primary-text secondary-text sub-items)Describes a single item.
items(items . item-list)Defines one of more items, to be presented as a bullet list
java-scriptingjava-scriptingA boolean valued variable telling whether or not to use Javascript scripts.
javascript-loadingjavascript-loadingA variable which determines how Javascript scripts are loaded.
lecture-intro(lecture-intro title author-list . abstract)Defines the title, authors and the abstract of this lecture note
lecture-note-verbose-modelecture-note-verbose-modeA booelan Scheme variable that determines whether some feedback on progress etc is written out while the LENO system processes a LAML file.
lecture-sectionslecture-sectionsA variable which keep track of the names and titles of all lecture chapters in these lecture notes.
lecture-title-page?lecture-title-page?A variable that controls the generation of a title page and an abstract page.
lecturer-photos(lecturer-photos start-photo-number number-of-photos)Present a number of lecturer photos on the current note page
lecturer-photos-and-logo(lecturer-photos-and-logo start-photo-number)Show two lecturer photos and a logo.
long-slide(long-slide)Declares that this slide is a long.
meta-tag-clauses(meta-tag-clauses)Returns meta information about these notes in terms of a list of list.
mouse-advancementmouse-advancementIt is possible to advance from one slide to the next via either single or double click.
note-abtractnote-abtractA variable the value of which is the overall abstract of the lecture notes (top level, covering all chapters).
note-download-urlnote-download-urlA variable the value of which must the URL of page, from which download of the lecture notes is possible.
note-page(note-page page-id . note-page-elements)The outer level description of a page.
note-reference(note-reference anchor-text section-id slide-id . location-hints)Describes a reference to another part (possibly in another section) of the current lecture notes
note-source-directorynote-source-directoryA mandatory variable the value of which must be a string holding the full path of the directory, in which the LAML note files are located.
note-specific-image-filesnote-specific-image-filesThis optional variable is a list of image file names (without path, with extension such a gif) used specifically in these notes.
note-text(note-text text)Defines a text clause to appear in note page view and annotated slide view only.
note-url(note-url lecture-id slide-id)Return a URL of particular note page in a particular lecture
notes-titlenotes-titleA variable which holds the title of the lecture notes (a string).
opposing(opposing . item-list)Presents a number of opposing items.
point(point primary-point secondary-point)A point is a distinguished observation which is presented with special emphasis in all views.
preferred-maximum-filename-lengthpreferred-maximum-filename-lengthThe preferred maximum length of file names.
program-part(program-part number time)Define a program-part of the surrounding show and speak clause.
question(question question-formulation)Defines the question of a quiz clause
quiz(quiz question answer-list)Define a contribution to a quiz about the current lecture.
quotation(quotation quotation-text quotation-comment)Defines a quotation, which is presented within quote characters.
relative-source-html-destination-path-fragment(relative-source-html-destination-path-fragment)A non-argument function which returns the difference between the note-source-directory and the note destination HTML directory.
section-title(section-title title-string)Defines the title of a section of slides.
set-language(set-language language)Defines which language to use in the LENO defined text of the lecture note system.
set-lecture-name(set-lecture-name name)Define the internal name of a chapter of the lecture notes (the chapter on the current file).
set-lecture-number(set-lecture-number n)Defines the chapter number of the current chapter.
show-and-speak(show-and-speak . show-speak-clauses)Define a number of 'show and speak' clause of the surrounding note page.
show-and-speak?show-and-speak?A boolean variable that controls the generation of an automatic progressing slide show with speaker sound, briefly referred to as 'show-and-speak'.
side-track(side-track title track-lecture-id track-explanation)Define a side track.
slide-header?slide-header?Define the style of headers to use in slide style.
slide-image(slide-image filename)Show a gif image in slide view and in the annotated slide view.
slide-part(slide-part number time)Define a slide-part of a surrounding show and speak clause.
slide-text(slide-text text)Defines a text clause to appear in slides views only.
slide-url(slide-url lecture-id slide-id)Return a URL of particular slide page in a particular lecture
solution(formulation exercise-solution-text)Defines the exercise solution text
solution-passwordssolution-passwordsA variable the of which is to define a number of password for exercise solution files.
source-program(source-program filename region-marks decorations how-to-show comment)Shows a source program (or a similar text of an artificial language) in 'verbatim style'.
speak-file-prefixspeak-file-prefixThe file prefix to the speaker sound.
speak-url-prefixspeak-url-prefixThe prefix of the URL to speaker sounds.
splice-page-with(splice-page-with tag-list lecture-id page-id [id])Splice the elements of another page from a specified lecture-id including certain kinds of elements.
splice-page-without(splice-page-without tag-list lecture-id page-id)Splice the elements of another page from a specified lecture-id excluding certain types of elements.
style(style which-style)States the style of this LAML document.
synopsis(synopsis . synopsis-item-list)Defines a synopsis in terms of a list of synopsis item elements.
synopsis-item(synopsis-item synopsis-text synopsis-comment)Defines a single item in a synopsis clause
syntax(syntax syntax-rule syntax-explanation)Defines a syntax description in terms of a syntax rule and an explanation
tabular(tabular border column-widths table-contents table-explanation)Defines a tabular presentation of table-contents.
text(text primary-text secondary-text)Defines a text clause of a note page.
title(title title-string title-comment)Defines the title of a note-page
trail-of-lecture?trail-of-lecture?A boolean variable which controls whether to make a parallel trail of the lecture.

 

1.   OVERALL ORGANIZATION
We start with a description of the overall organization of a set of lecture notes.

A set of lecture notes, say n chapters, reside on n laml files in a single directory. An laml file has extension 'laml'.

There is a single file, which provides common description of the set of chapters in a lecture note document. The name of this file is typicaly notes.scm, and it should reside in the same directory as all the laml files. The notes.scm file is loaded before the LENO software. It is often convenient, in addition to notes.scm, to load a file after the LENO software. Such a file, which may be called post-notes.scm, can be used to redefine LENO default values. It is intended that the notes.scm and post-notes.scm files contain information which is common to a number of lecture notes file (information which we will avoid being replicated in a number of lecture note files). Notes.scm contain a list, lecture-sections, which describes the identity and the titles of all chapters in the set of lectures notes. We refer to an annotated example of a notes.scm files later in this manual. Notice that notes.scm must be loaded explicitly by each laml lecture note file, just before the style clause (which loads the LENO software). If a post-notes file is used, it must be loaded explicitly just after the style clause.

Here follows the subdirectory structure of the directory with LENO lecture notes:

notes
  html
    graphics
      small
    images
    javascript
    applets
    external-html
  graphics
    small
  images
  includes
  internal
  latex
All of the names above are directory names.

The notes directory contains the laml files (one laml file per chapter in the notes), notes.scm, and post-notes.scm.

The graphics directory in notes contains the sources of the user defined graphics used in the notes. The small subdirectory contains manually reduced copies. If the variable copy-note-graphics? is #t, the graphics file from notes/graphics are copied to the html/graphics. If this variable is #f (false) you are supposed to put the graphics file into the html/graphics directory yourselves. Similarly, the notes/graphics/small files are copied to html/graphics/small.

The html directory contais all the generated html files, and as can be seen, it contains a number of sub-directories. This organization is handy, because you can pack the html directory in order to obtain a total, complete and self contained set of information at HTML level. In other words, the contents of the html directory is enough to use the material in an Internet browser. The javascript directory contains a tiny amount of javascript stuff used by Lene. When LAML processing a note file, this directory is populated automatically.

It is possible to organize that the html directory is placed outside the notes directory. In order to do that you should redefine the function relative-source-html-destination-path-fragment, which defines the path 'difference' between the note source directory and the HTML destination directory. In the default case, this function just returns "html/".

The notes/graphics directory contains gif files for all the figures of the notes. The author of the notes is responsible for the population of this directory, as well as the subdirectory called small. If f.gif is a file in html/graphics, f.fig must in addition be found in html/graphics/small. The idea is to reduce the figure in f, and to place the reduced figure in the small directory. This turns out to be necessary, because a browser makes very rough and poor reductions of pictures. The variable copy-note-graphics? controls the copying of files from notes/graphics to html/graphics.

The images directory contains note-specific icons that are used throughout the LENO systems. (The LENO software support its own images, which are organized in the LAML directories). When we run LENO (thus generating the HTML version of the slides etc) the relevant image icons are copied from the notes/images directoy to the html/images directory. Therefore we do not need to copy the images into this directory on beforehand.

In the applets directory you should place java class files with applets.

The directory external-html is intended to contain html files, which are considered an integrated part of a set of lecture notes, but being outside the LAML domain. In other words, here you can put html files, which somehow are relevant for the lecture notes.

The internal directory contains helping files in Lisp format with extensions aux, crs, exc, and idx. Most users of LENO do not need to care about these files. They are generated when a lecture on an LAML file is processsed. The aux file contains the name of the lecture together with an 'record' for each page in the lecture. The crs file contains information about all cross references found in a lecture. The exc file contains information about all the exercises of a lecture. And finally, an idx file contains all contributions to the index file from a given section.

The includes directory can be used to material which is included (copied into) the notes. In other words, the material in the include directory is source material, which is addressed from the LAML note files. Such included material can also come from other places in your file system.

The latex directory is intended to contain a latex version of the lecture notes, generated by means of the style "lecture-notes/lecture-notes-latex".



 

2.   PREAMBLE STUFF
Here we describe the various declarations which are possible to include before the (begin-notes) clause. Many of the declarations are carried out as (re)definition of Scheme variables.

The notes.scm files, introduced above, is an integral part of the preamble stuff. Notice that the contents of the notes.scm can be included inline in the preamble. This is, however, only recommended for single chapter lecture notes. For all the clauses of the preamble we will state whether to place the clause in the notes.scm, or in the laml chapter file. Most useful, perhaps, we have an example template of a lecture note laml file, where you can see a typical preamble.


style


Form
(style which-style)

Description
States the style of this LAML document. According to the organization of the LAML software, which-style should be the string "lecture-notes/lecture-notes". (meaning the lecture-notes.scm file in the lecture-note directory in the styles directory). This causes loading of the LENO Scheme software.


include-front-index


Form
(include-front-index)

Description
Arrange that an index of all chapters are generated. This is the absolute top-level index in a set LENO lecture notes. Include-front-index is the default in case neither include-front-index nor exclude-front-index is called

See also
Related clausesexclude-front-index    

Note
Internally, sets the boolean variable front-index?


exclude-front-index


Form
(exclude-front-index)

Description
Arrange that no index of chapters is generated. This is moste often used in case there is only one chapter. Include-front-index is the default in case neither include-front-index nor exclude-front-index is called.

See also
Related clausesinclude-front-index    

Note
Internally, sets the boolean variable front-index?


include-word-index


Form
(include-word-index)

Description
Arrange that an index of distinquished keywords will be generated with links to the slides, where the words occur. More detailed LENO makes it possible to put words into the index explictly via the form (word-index ...). Concept names and slide titles also go the index

See also
Related clausesexclude-word-index    index-words    

Note
Internally, sets the boolean variable word-index?


exclude-word-index


Form
(exclude-word-index)

Description
Arrange that no index of keywords will be generated. This may be useful during the development in order to save a little processing time

See also
Related clausesinclude-word-index    index-words    

Note
Internally, sets the boolean variable word-index?


exercise-model


Form
(exercise-model model)

Description
Set the exercise model to model. This controls the indexing and support of exercises in a particular lecture in a set of notes.

Parameters
modelWhich exercise model to use. The value must be a symbol.

none: No exercises at all in this chapter. make-indexes: Make exercise indexes in this chapter.

make-indexes-and-solutions-per-lecture: Make exercise indexes and lecture-specific solution indexes.

make-indexes-and-solutions-lecture-wide: Make exercise indexes, lecture-specific solution indexes, and a global solution index.

synchronous-exercises: Make exercise indexes, solution indexes at a/after a certain point in time, plus framed exercises with room for the exercise manager.

asynchronous-exercises: Make exercise indexes, NO solution indexes all, plus framed exercises with room for the asynchronous distance education tool.


See also
See alsoexercise    

Note
This procedure assigns a number of variables, which control the various aspects of exercise handling in LENO. These variables are exercise-indes?, exercise-manager-support?, distance-education-support?, reveal-exercise-solutions?, reveal-all-solutions?. Use exercise-model after the style clause but before (begin-notes).


set-lecture-name


Form
(set-lecture-name name)

Description
Define the internal name of a chapter of the lecture notes (the chapter on the current file). This name is used to identify a chapter in relation to other chapters. The name is part of thefile names, where the slides will be represented in HTML. This name should be the same as the name of the laml file, disregarding file extension. In some Scheme systems (SCM) it is possible to use the name of the file instad of using the set-lecture-name clause. However, we recomment the use of set-lecture-name even if it is a bit redundant.

Preconditions
Must be placed before the begin-notes clause

Parameters
namea string defining the name intenal of the lecture notes.

Note
Internally, sets the variable lecture-id


set-lecture-number


Form
(set-lecture-number n)

Description
Defines the chapter number of the current chapter. As the default, chapter numbers are not used. Only if the lecture number is set to an integer, the chapter will be numbered.

Parameters
nthe chapter number

Note
Internally, sets the variable lecture-number. Lecture-number is a boolean variable, the initial value of which is #f (false)


note-abtract


Form
note-abtract

Description
A variable the value of which is the overall abstract of the lecture notes (top level, covering all chapters). You must define this variable, or the sytem will break. The value must be defined before the style clause. A good place to define note-abstract is the first item in the notes.scm file. In case you do not want an abstract, define note-abstract to be the empty string

Note
Use the Scheme define form to define the value of the variable: (define note-abstract ...)


note-source-directory


Form
note-source-directory

Description
A mandatory variable the value of which must be a string holding the full path of the directory, in which the LAML note files are located. Again, this may seem a bit redundant, but it is not possible in all Scheme systems to extract this information automatically. This variable must be define before the style clause, typically in notes.scm. Ends in a '/'.

Note
Use the Scheme define form to define the value of the variable: (define note-source-directory ...)


note-specific-image-files


Form
note-specific-image-files

Description
This optional variable is a list of image file names (without path, with extension such a gif) used specifically in these notes. The images must reside in the images directory of note-source-directory. This list of files is copied automatically to the html directory during processing together with a set of general images files, defined together with the LENO software. In simple notes, just define this variable to the empty list: '()

Note
Use a define form to set this variable. Define it post-notes.scm if you need it. If not, the default value is the empty list.


notes-title


Form
notes-title

Description
A variable which holds the title of the lecture notes (a string). You must define this variable before the style clause.

Note
Use the Scheme define form to define the value of the variable: (define notes-title ...)


lecture-sections


Form
lecture-sections

Description
A variable which keep track of the names and titles of all lecture chapters in these lecture notes. As such, this variable holds very important bookkeeping information. The value of the variable must be a list of list. In other words, it must be a list of lecture-chapter descriptions. A lecture chapter description is, in turn, a list of two strings: a lecture-name and a lecture-title. This variable must always be defined. In case there is only one chapter in the notes, define this variable to be a list of one lecture-chapter description.

Note
Use the Scheme define form to define the value of the variable: (define lecture-sections ...)


current-lecture


Form
current-lecture

Description
An integer variable defining the chapter number of the last lecture to be generated. The number is relative to the lecture-sections list (see above). If current-lecture is 1, only the first lecture-chapter is taken into consideration. This variable is useful if the collection consist of, say. 10 chapters, but we currently working at chapter 3. In that case, the value of current-lecture is 3. Lecuture 4 - 10 are not processed

Note
Use the Scheme define form to define the value of the variable: (define current-lecture ...)


course-home-url


Form
course-home-url

Description
A variable the value of which must be the URL of the course home page (a string). You must define this variable before the style clause

Note
Use the Scheme define form to define the value of the variable: (define course-home-url ...)


author-home-url


Form
author-home-url

Description
A variable the value of which must the URL of the author home page. This variable must be defined before the style clause

Note
Use the Scheme define form to define the value of the variable: (define author-home-url ...)


note-download-url


Form
note-download-url

Description
A variable the value of which must the URL of page, from which download of the lecture notes is possible. This variable must be defined before the style clause. In case you do not want to support download, define this variable to to the empty string

Note
Use the Scheme define form to define the value of the variable: (define note-download-url ...)


set-language


Form
(set-language language)

Description
Defines which language to use in the LENO defined text of the lecture note system. Currently Danish and English is supported. The default language is Danish.

Parameters
languagea symbol, either 'danish or 'english

Note
Internally, sets the variable lecture-note-language-preference to the symbol


lecture-note-verbose-mode


Form
lecture-note-verbose-mode

Description
A booelan Scheme variable that determines whether some feedback on progress etc is written out while the LENO system processes a LAML file. Default value is #t

Note
Use the Scheme define form to define the value of the variable: (define lecture-note-verbose-mode ...)


cross-reference-location-hints


Form
(cross-reference-location-hints location-hints)

Description
A function which may return a hint of the location of a cross reference. The parameter is a list of symbols. This function must be defined in notes.scm. It is legal always to return the empty string from this function, in which case no location hints will be given.

Parameters
location-lista list of symbols which depends on the lectures notes as such, not on LENO


meta-tag-clauses


Form
(meta-tag-clauses)

Description
Returns meta information about these notes in terms of a list of list. In other words, this function is required to return a list of list. Each inner list must be an even length list of key (symbol) value (string) pairs. Each list generates a single HTML meta tag. It is intended that this function returns the general meta information, such as the charset used, the generator applied, the language used, etc. Page specific meta information can be supplied as parameters to functions such as html:page. This function is, in fact, called by html:page and by html:page-with-keypress-script in the html-v1 library

Note
Must be defined in notes.scm


java-scripting


Form
java-scripting

Description
A boolean valued variable telling whether or not to use Javascript scripts. If the value is #f, no Javascripts are generated in the lecture notes. If the value is #t java scripts can be applied. Currently, we only use Javascripts for keyboard navigation shortcuts, and it only works in IE4. The default value is #t


javascript-loading


Form
javascript-loading

Description
A variable which determines how Javascript scripts are loaded. The value must be one of the symbols 'static or 'dynamic. If static, the javascript is included inline into the generated HTML page. if dynamic, the javascript is loaded from the javascript sub-directory of the html directory. In this case the javascript navigation file (lenonavigate.js) is copied from the software directory to the notes directory. The copying takes place in the end-notes function. This variable is only relevant if java-scripting is #t

See also
See alsoend-notes    


copy-image-files?


Form
copy-image-files?

Description
A variable which controls whether to copy image icons from the software directory to the note source directory. The copying is done in the end-notes function. The value of the variable must be of type boolean. The default value is true.

See also
See alsoend-notes    

Note
Use the Scheme define form to define the value of the variable: (define copy-image-files? ...)


copy-note-graphics?


Form
copy-note-graphics?

Description
A variable which controls whether to copy author defined graphics from the software graphics directory to the HTML destination directory. The copying is done in the end-notes function. The value of the variable must be of type boolean. The default value is true.

See also
See alsoend-notes    

Note
Use the Scheme define form to define the value of the variable: (define copy-image-files? ...)


preferred-maximum-filename-length


Form
preferred-maximum-filename-length

Description
The preferred maximum length of file names. The length includes the including extension, but excludes the initial path. This size may be important for CD file systems. A warning is issed if the preferred maxiumum length is exceeded. The type is integer. The default value is 64.

Note
Use the Scheme define form to change the value of the variable: (define preferred-maximum-filename-length ...)


generating-system


Form
(generating-system)

Description
A parameter less function which is supposed to return a string describing the system, which has generated these notes. This information is useful of you use LENO on more than one machine in slightly different contexts. The default implementation returns the empty string (no information)

Note
If needed, define this function in post-notes.scm


course-dir


Form
course-dir

Description
A variable which defines the course directory, in which the course plan files resides.

Note
Define this variable using a Scheme define form.


solution-passwords


Form
solution-passwords

Description
A variable the of which is to define a number of password for exercise solution files. We do not want users to be able to guess the names of solution files. Therefore we can add a component to solution file names, which cannot be guessed: a password component. Such a component is defined pr. lecture. The value of the variable is a list of password entries. A password entry is a cons pair (lecture-id-symbol . password-string). The default value is an empty list, meaning that no passwords are mixed into the solution files.

Note
Define this variable via a Scheme define form in the post-notes.scm


slide-header?


Form
slide-header?

Description
Define the style of headers to use in slide style. The value must be one of the symbols normal, none, or minimal. Normal implies a range of navigation icons, none means nothing, and minal means an informative text including lecture and page numbers. Use minimal if you want maximum screen real estate for slide contents, and if you use keyboard navigation

Note
Define this variabel via a Scheme define form in the individual LAML files.


trail-of-lecture?


Form
trail-of-lecture?

Description
A boolean variable which controls whether to make a parallel trail of the lecture. This may be useful if you want to take advantage of the convenient return to the original slide after having followed cross references from a slide. Turning this variable to true makes a frameset for each slide, cause many more files in the html directory. Consider to set slide-header? to either none or minimal if trail-of-lecture? is true.

See also
Related clauseslide-header?    

Note
Define this variabel via a Scheme define form in the individual LAML files.


relative-source-html-destination-path-fragment


Form
(relative-source-html-destination-path-fragment)

Description
A non-argument function which returns the difference between the note-source-directory and the note destination HTML directory. The default value is "html/". Redefine this function in post-notes.scm in case you wish another placement of the destination HTML directory


lecture-title-page?


Form
lecture-title-page?

Description
A variable that controls the generation of a title page and an abstract page.

Note
Use the Scheme define form to change the value of the variable: (define lecture-title-page? ...)


mouse-advancement


Form
mouse-advancement

Description
It is possible to advance from one slide to the next via either single or double click. The value of this variable determines whether to use single or double click for page advancement. Possible values are single-press or double-press (Scheme symbols). The value double-press is default and recommended. If you use single page advancement this collides with text selection.

Note
Use the Scheme define form to change the value of the variable: (define lecture-title-page? ...)


show-and-speak?


Form
show-and-speak?

Description
A boolean variable that controls the generation of an automatic progressing slide show with speaker sound, briefly referred to as 'show-and-speak'. The value #t calls for such a show.

Note
Set this variable with the Scheme define form.


default-showing-time


Form
default-showing-time

Description
The number of seconds to show a slide page with show-and-speak. This variable is used in the situation where show-and-speak? is #t, but no show-and-speak clause is specified on a note page.

See also
Related definitionsshow-and-speak?    show-and-speak    

Note
Set this variable with the Scheme define form.


additional-showing-time


Form
additional-showing-time

Description
An additional number of seconds added to the showing times of each show-and-speak page.

See also
Related definitionsdefault-showing-time    show-and-speak    

Note


speak-url-prefix


Form
speak-url-prefix

Description
The prefix of the URL to speaker sounds. Must be ended with a forward slash character. Similar to speak-file-prefix. This variable is used to address the sound files.

See also
similar definitionspeak-file-prefix    

Note
Set this variable with the Scheme define form.


speak-file-prefix


Form
speak-file-prefix

Description
The file prefix to the speaker sound. Similar to speak-url-prefix. This variable is used to check the existence of sound files.

See also
similar definitionspeak-url-prefix    


 

3.   TOP LEVEL FUNCTIONS
Besides the preamble stuff there is only a few top level function. The most import of these is note-page . Each note-page describes the contents of a slide, together with possible annotations. There are Emacs commands of the form insert-f for each function f described in this section.


begin-notes


Form
(begin-notes)

Description
This form marks the ending of the preamble and the beginning of the note page definition part. It must be matched by exactly one (end-notes)

Preconditions
Must occur before lecture-intro and before the first note-page form

See also
Related clausesend-notes    


end-notes


Form
(end-notes)

Description
States the ending of this lecture note file. This form matches the (begin-notes) form. The end-note form must be the last clause in a lecture note file.

Preconditions
Must occur after the last note-page in this lecture file.

See also
Related clausesbegin-notes    


lecture-intro


Form
(lecture-intro title author-list . abstract)

Description
Defines the title, authors and the abstract of this lecture note

Preconditions
Should occur right after the (begin-notes) form

Parameters
titlethe string defining the title of this chapter of the lecture notes
author-lista list of strings, the first of which must be the author name. The rests can be affiliation information
abstractthe string with the abstract (optional)
datethe date (a string) at which this material is published (optional)


note-page


Form
(note-page page-id . note-page-elements)

Description
The outer level description of a page. A page corresponds to a slide in slide view. The ordering of note-page-elements is significant for all elements appart from title, section-title, long-slide. The mutual ordering determines the sequence of element presentations in all views.

Preconditions
Must be a top level form

Parameters
page-idA symbol which in a unique way identifies this note page in the notes defined in the current file
note-page-elementsA list of one or more of the LENO forms documented in this manual

See also
Reference toslide-url    note-url    book-url    

Note
Must at least contain a title or a section-title form. The Emacs commands insert-notepage and insert-notesection insert templates of this form.


 

4.   CLAUSES OF THE NOTE-PAGE FORM
In this section follows all the possible note-page clauses. All of these must appear within a note-page form. Some of the clauses must appear at the top level within a note-page form. Others must be further nested. Please consult the preconditions of the clauses for information about this


title


Form
(title title-string title-comment)

Description
Defines the title of a note-page

Preconditions
Must be a constituent of a note-page form

Parameters
title-stringthe title itself
title-commentremarks to the title which are used on the annotated slides and in the lecture notes, but not in the slide view

See also
Meta exampleexample with access to the underlying note-page form
Related clausessection-title    


section-title


Form
(section-title title-string)

Description
Defines the title of a section of slides. In the lecture note view this can be thought of as a starting a new section in a chapter. In this context, a chapter is a single collection oflecture notes

Preconditions
Must be a constituent of a note-page form. Also, this clause should be the only clause of the enclosing note-page form

Parameters
title-stringThe title of the section

See also
Meta exampleexample with access to the underlying note-page form
Related clausestitle    


text


Form
(text primary-text secondary-text)

Description
Defines a text clause of a note page. The primary text is shown in all views, whereas the secondary text is shown in the annotated slides and in the note page views only. The secondary text is used for additional comments to the primary text. The second parameter is optional

Preconditions
Must be a constituent of a note-page form

Parameters
primary-textThe text to be shown in slide views (of type string)
secondary-textThe additional comments to the primary text (of type string)

See also
Meta exampleexample with access to the underlying note-page form
Related clausesnote-text    slide-text    items    


slide-text


Form
(slide-text text)

Description
Defines a text clause to appear in slides views only. Does not affect slide annotations nor note page views at all

Preconditions
Must be a constituent of a note-page form

Parameters
textthe text to appear in slide view

See also
Meta exampleexample with access to the underlying note-page form
Related clausesnote-text    text    


note-text


Form
(note-text text)

Description
Defines a text clause to appear in note page view and annotated slide view only. Does not affect slide view at all

Preconditions
Must be a constituent of a note-page form

Parameters
textthe text to appear in annotated slide and note page view

See also
Meta exampleexample with access to the underlying note-page form
Related clausesslide-text    text    


items


Form
(items . item-list)

Description
Defines one of more items, to be presented as a bullet list

Preconditions
Must be a constituent of a note-page form

Parameters
item-lista list of item forms or strings

See also
Meta exampleexample with access to the underlying note-page form
Related clausesConstituent form    item    


item


Form
(item primary-text secondary-text sub-items)

Description
Describes a single item. Secondary-text and sub-items are optional parameters

Preconditions
Must be a constituent of an items form

Parameters
primary-textThe item text to be shown in all views (a string)
secondary-textThe item text to be shown in the annotated slide view and the note page views (a string)
sub-itemsItems which act as subitems (an items form, recursively)

See also
Enclosing formitems    

Note
An item-form with only one parameter corresponds to the parameter

Secondary-text parameters of an item is only taken into consideration at level one and two in an items form



point


Form
(point primary-point secondary-point)

Description
A point is a distinguished observation which is presented with special emphasis in all views. The second parameter is optional

Preconditions
Must be a constituent of a note-page form

Parameters
primary-pointThe observation presented in slide view (a string)
secondary-pointActs as a comment to the primary-point (a string). Is only shown in the annonated slide view and in note page view

See also
Meta exampleexample with access to the underlying note-page form


example


Form
(example example-text about-the-example)

Description
Defines an example which is shown in all views. The second parameter is optional

Preconditions
Must be a constituent of a note-page form

Parameters
example-textthe example itself (a string)
about-the-examplean explanation of the example (a string)

See also
Meta exampleexample with access to the underlying note-page form
Related clausetext    

Internal remark
It is doubtful whether this clause is worthwhile, although of course, it defines a semantic difference between an example and a more general text clause


opposing


Form
(opposing . item-list)

Description
Presents a number of opposing items. A two column presentation is used.

Preconditions
Must be a constituent of a note-page form

Parameters
item-lista list of item forms

See also
Meta exampleexample with access to the underlying note-page form
Constituent formsitem    

Note
Each item form in an opposing clause must have exactly two textual parameters. No sub-items are allowed

Internal remark
We should probably not use item as constituent form, but rather a new form called opposing-items, or something similar


comment


Form
(comment comment-text)

Description
Present an internal comment. A comment is only intended as a remark, which should be removed in the final version

Preconditions
Must be a constituent of a note-page form

Parameters
comment-textThe comment itself (a string)

See also
Meta exampleexample with access to the underlying note-page form

Internal remark
As an idea, comments could be suppressed by a boolean flag


long-slide


Form
(long-slide)

Description
Declares that this slide is a long. Long slides have a bottom navigation bar similar to the top nativation bar. This clause may appear anywhere in the list of elements of a note-page

Preconditions
Must be a constituent of a note-page form

See also
Meta exampleexample with access to the underlying note-page form


index-words


Form
(index-words . words)

Description
Defines a number of index words of this page. The index words are added to the central lecture note index with a link to the enclosing note page. This clause leaves no trace in any of the views. The index-words clause may be given at an arbitrary position within a note-page form

Preconditions
Must be a constituent of a note-page form

Parameters
wordsthe list of words, each of which are strings

See also
Meta exampleexample with access to the underlying note-page form
Related clauseconcept    


concept-list


Form
(concept-list . concepts)

Description
Defines a number of concepts. Each concept is defined via a separate concept clause

Preconditions
Must be a constituent of a note-page form

Parameters
conceptsa list of concept forms

See also
Meta exampleexample with access to the underlying note-page form
Constituent formconcept    


concept


Form
(concept concept-name concept-definition concept-explanation)

Description
Defines a concept in terms of its name, a concept definition, and a concept explanation. The concept name goes into the index. The concept definition is shown in slide view. The concept explanation is, together with the concept definition, shown in the two other views

Preconditions
Must be a constituent of a concept-list form

Parameters
concept-namethe name of the concept (a string)
concept-definitionthe primary description and definition of the concept (a string)
concept-explanationan explanation of the concept, typically explained broader and less formal than in the concept definition

See also
Enclosing formconcept    
Related clauseindex-words    
Meta exampleexample with access to the underlying note-page form


quotation


Form
(quotation quotation-text quotation-comment)

Description
Defines a quotation, which is presented within quote characters. The second parameter is optional

Preconditions
Must be a constituent of a note-page form

Parameters
quotation-textthe text to be quoted (a string)
quotation-commentcomments to the quotation text (a string). This parameter is only used in the annotated slide view and in the note page view

See also
Meta exampleexample with access to the underlying note-page form


image


Form
(image filename explanation formatter)

Description
Inserts a gif image from an external file. The last two parameters are optional.

Preconditions
Must be a constituent of a note-page form

Parameters
filenamethe name of the file in the graphics and the graphics/small directories. The file name must include the file extension (.gif), but not directory information. The type of filename is string.
explanationa textual explanation of the image (a string)
formattera list which defines how the image and the explanation are formatted relative to each other in slide view. This parameter is a list of symbols. The following forms are supported:
'(vertical picture)                 just show picture          DEFAULT
'(vertical text)                    just show text
'(vertical picture text)            show picuture above text
'(vertical text picture)            show picture below text 
'(horizontal text picture)          show picture to the right of text
'(horizontal picture text)          show picture to the left of text

See also
Meta exampleexample with access to the underlying note-page form
Related clauseimage-series    

Note
All images must be stored in a directory named graphics which is a subdirectory of the catalogue in which the generated html files reside. The graphics directory, in turn, must have a sub directory called small in which a smaller version of all images reside. This is in order to ensure good reduction of images in the annotated slide view and in the lecture note view


slide-image


Form
(slide-image filename)

Description
Show a gif image in slide view and in the annotated slide view. The note page view is not affected. This clause is useful to duplicate an already shown picture in a slide. The first occurence of the picture is shown via the image clause

Preconditions
Must be a constituent of a note-page form

Parameters
filenamethe filename where the gif image is stored. See the manual entry of image for further explanations of filename

Note
This clause is much simpler, and less important than image. It's sole purpose is duplication of already shown images


image-series


Form
(image-series series-title image-descriptions how-to-show)

Description
Defines a series of images, which may define a number of steps. Each step can be explained separately via the second parameter. Via the last parameter it is possible to control how the images are presented in the three different views

Preconditions
Must be a constituent of a note-page form

Parameters
series-titlea text describing the series as such (a string)
image-descriptiona list of individual image-descriptors. An image-descriptor is, in turn, a list of the form (filename image-explanation) . filename plays the same role as the filename parameter in the image clause. image-explanation is a string which explains an individual image in the series. In summary, this parameter is of the type list of lists
how-to-showa list of length two, which describes how the image series is presented in the various views. The following possibilities exist:
'(slide-external book-inline)      Link to material on slides and annotated,
                                   but inline material in the note page view
'(slide-inline book-inline)        Inline material in all views
'(slide-external book-external)    Link to material in all views
'(slide-inline book-external)      Inline material on the slide and annotated slides,
                                   but link to material in the note page view
The type of the parameter is list of symbols.

See also
Meta exampleexample with access to the underlying note-page form
Related clauseimage    

Note
The most useful configuration of how-to-show is '(slide-external book-inline) because we in that way use minimal space on slides. In this configuration, the full image series is shown inline in the note-page view


cross-references


Form
(cross-references reference-list)

Description
Define a number of cross references to other material. The references may be to Internet stuff (urls), to other places in the current collection of lecture notes, or to off line paper material

Preconditions
Must be a constituent of a note-page form

Parameters
reference-lista list of reference clauses. The reference clauses can be note-reference, internet-reference or informal-reference forms. Each of these are documented elsewhere in this manual

See also
Constituent clausesnote-reference    internet-reference    informal-reference    
See alsoslide-url    note-url    book-url    exercise-formulation-url    exercise-formulation-url-given-id    exercise-solution-url    


note-reference


Form
(note-reference anchor-text section-id slide-id . location-hints)

Description
Describes a reference to another part (possibly in another section) of the current lecture notes

Preconditions
Must be a constituent of a cross-references form

Parameters
anchor-textthe textual description used as anchor text to this reference (a string)
section-idthe symbol which identifies the section of this reference (a symbol)
slide-idthe symbol which identifies the slide within a section of this reference (a symbol)
location-hintshints on where and how to find the reference (a list of symbols, not defined in LENO)

See also
Meta exampleexample with access to the underlying note-page form
Enclosing clausecross-references    
Related clausesinternet-reference    informal-reference    


internet-reference


Form
(internet-reference anchor-text url . location-hints)

Description
Defines a reference to an Internet resource

Preconditions
Must be a constituent of a cross-references form

Parameters
anchor-textthe textual description used as anchor text to this reference (a string)
urlthe WWW url of the reference (a string)
location-hintshints on where and how to find the reference (a list of symbols, not defined in LENO)

See also
Meta exampleexample with access to the underlying note-page form
Enclosing clausecross-references    
Related clausesnote-reference    informal-reference    

Note
It is often very useful to generate urls via Scheme functions. This is the case if several references are made to information located at the same server and/or directory. In that way only the function needs redefintion in case we want a set of internet references to be moved


informal-reference


Form
(informal-reference anchor-text reference-text . location-hints)

Description
Defines a reference to an off line resource, such that a paper or a book

Preconditions
Must be a constituent of a cross-references form

Parameters
anchor-textthe textual description used as anchor text to this reference (a string)
reference-textdetails about the reference material
location-hintshints on where and how to find the reference (a list of symbols, not defined in LENO)

See also
Meta exampleexample with access to the underlying note-page form
Enclosing clausecross-references    
Related clausesnote-reference    internet-reference    

Note
It would be useful to define Scheme functions which produce the reference text form from structurede, bibliographic information


syntax


Form
(syntax syntax-rule syntax-explanation)

Description
Defines a syntax description in terms of a syntax rule and an explanation

Preconditions
Must be a constituent of a note-page form

Parameters
syntax-rulethe sytax rule, such as a grammar production (or it's right hand side). White space and line shifts are significant in this string. The type is a string.
syntax-explanationthe intuitive explanation of the syntax-rule and it's constituents (a string)

See also
Meta exampleexample with access to the underlying note-page form

Note
It is often most convenient to read the syntax-rule string from an external file. The meta example referred to above shows an example. The function read-text-file-between-marks is useful for reading a substring from an external file. In order to decorate the syntax-rule with fonting and coloring the function colorize-substrings is useful.


source-program


Form
(source-program filename region-marks decorations how-to-show comment)

Description
Shows a source program (or a similar text of an artificial language) in 'verbatim style'. The source program text is taken from an external file. It is possible to extract a substring from the external file via the region-marks parameter. Substrings of the extracted source program (part) can be decorated with colors and font-faces. The first four parameters are mandatory. The comment parameter is optional.

Preconditions
Must be a constituent of a note-page form

Parameters
filenamethe name of the file where the source program is located. The name is relative to the directory, in which the LENO laml source file is located. The name may, alternatively, be a full file path. The type is string
region-marksdescribes the substring of the source file to include. If it is the empty string, all of the source file is included. If it is a list, it must be of length two, and the elements must both be strings. In that case the first string determines the starting point of the sub-string and the second string determines the ending points of the sub-string (both ends are included). In summary the type is either a string (empty) or a list of strings (of length two)
decorationsdescribes the colors and fonts of substrings of the included source program. decorations is a list of decorator lists. A decorator list is of the form
(from-delimiter to-delimiter color font-face repeat-count)
where the first three elements are mandatory.
  • The from-delimiter and to-delimiter designate the substring to docorate (both parts are included). These two parameters are strings.
  • The color parameter is a list of rgb colors, such as '(255 255 255) for white.
  • The font-face is one of the symbols italic , bold , typewriter , underlined , or plain . Plain is the default.
  • repeat-count is a number which makes it possible to instruct colorizing and fontifying further occurences of the desingnated substring.
how-to-showa list of list of two symbols, which describes how show the source program on the note page. Possible values are:
'(slide-external book-inline)      Link to material on slides and annotated,
                                   but inline material in the note page view
'(slide-inline book-inline)        Inline material in all views
'(slide-external book-external)    Link to material in all views
'(slide-inline book-external)      Inline material on the slide and annotated slides,
                                   but link to material in the note page view
commenta textual comment (of type string) which explains the details of the source program

See also
Meta exampleexample with access to the underlying note-page form

Note
It will be very useful to consult the meta examples regarding the source-program clause. The meta examples show how portions of the laml source file can be included in its own html presentation. This is an advanced application, but illustrative and useful


exercise


Form
(exercise exercise-id exercise-title exercise-formulation . exercise-solution)

Description
Defines an exercise in terms of an id, a title, a formulation and an optional solution. A link will be provided to a separate page where the title and formulation appear. The exercise-solution parameter is optional

Preconditions
Must be a constituent of a note-page form

Parameters
exercise-ida symbol identifying the exercise for reference purposes
exercise-titlethe title of the exercise (a string)
exercise-formulationthe text formulating the exercise in terms of a formulation clause
exercise-solutionthe text formulating the exercise solution in terms of a solution clause

See also
Constituent formsformulation    solution    
References toexercise-formulation-url    exercise-formulation-url-given-id    exercise-solution-url    
See alsoexercise-model    
Meta exampleexample with access to the underlying note-page form


formulation


Form
(formulation exercise-formulation-text)

Description
Defines the exercise formulation text

Preconditions
Must occur as part of an exercise form

Parameters
exercise-formulation-textA string defining the exercise formulation

See also
Enclosing formexercise    
Meta exampleexample with access to the underlying note-page form
Reference toexercise-formulation-url    exercise-formulation-url-given-id    


solution


Form
(formulation exercise-solution-text)

Description
Defines the exercise solution text

Preconditions
Must occur as part of an exercise form

Parameters
exercise-solution-textA string defining the exercise solution

See also
Enclosing formexercise    
Meta exampleexample with access to the underlying note-page form
Reference toexercise-solution-url    


tabular


Form
(tabular border column-widths table-contents table-explanation)

Description
Defines a tabular presentation of table-contents. The last parameter is optional.

Preconditions
Must be a constituent of a note-page form

Parameters
borderan integer designating the frame width of the table. 0 means no frame.
column-widthsa list of integers or strings which determine the widths of the table columns. Integers measure points. Strings are either html-link percent measueres or a html-link star character
table-contentsa list of lists. The inner lists are table rows. Each of the inner lists must be of equal length, and this length must be the same as the length of column-widths
table-explanation an intuitive explanation of the of the tabular information

See also
Meta exampleexample with access to the underlying note-page form

Note
This clause resemble the set of Scheme table functions, on which much of the LAML formatting work is based


applet-program


Form
(applet-program class-file codebase explanation width height)

Description
Defines and inserts a Java applet

Preconditions
Must be a constituent of a note-page form

Parameters
class-filethe name of the file where the applet is located. Must include the class file extension. The location of the file is relative to codebase (the next parameter). The type of this parameter is string
code-basethe directory or url in which the class file is located. The code base is taken relative to the directory in which the generated html files reside
explanationthe textual explanation of the applet (a string)
widthan integer describing the width of the applet (integer, in pixels)
heightan integer describing the height of the applet (integer, in pixels)

See also
Meta exampleexample with access to the underlying note-page form


synopsis


Form
(synopsis . synopsis-item-list)

Description
Defines a synopsis in terms of a list of synopsis item elements. A synopsis is useful to summarize a number of points in a graphically distinguished manner

Preconditions
Must be a constituent of a note-page form

Parameters
synopsis-item-lista list of synopsis-item forms

See also
Meta exampleexample with access to the underlying note-page form
Constituent clausesynopsis-item    


synopsis-item


Form
(synopsis-item synopsis-text synopsis-comment)

Description
Defines a single item in a synopsis clause

Preconditions
Must be a constituent of a synopsis form

Parameters
synopsis-textthe text of an synopsis item, which goes into all views (a string)
synopsis-commentan additional comment to the synopsis text. Goes into the annotated side view and the note page view

See also
Meta exampleexample with access to the underlying note-page form
Enclosing clausesynopsis    


quiz


Form
(quiz question answer-list)

Description
Define a contribution to a quiz about the current lecture. Quizzes are managed by a separate side server program, which is not part of the LAML distribution. As of now, the quiz facility can only be used at www.cs.auc.dk because it depends on additional software, including server side checking software.

Parameters
questionA question clause with a formulation of the question
answer-listAn answer-list clause with individual answering possibilities

See also
Constituent clausesquestion    answers    answer    


question


Form
(question question-formulation)

Description
Defines the question of a quiz clause

Parameters
question-formulationThe question string

See also
Surrounding clausequiz    
Sibling clauseanswers    


answers


Form
(answers . answer-list)

Description
Define a number of possible answers of a quiz clause

Parameters
answer-listA list of answer clauses

See also
Surrounding clausequiz    
Sibling clausequestion    


answer


Form
(answer possible-answer correctness-point clarification)

Description
Define a single answering possibility side by side with other possible answers

Parameters
possible-answerA possible answer presented for the user (a string).
correctness-pointA measure of correctness. A number between 0 and 100. 0 means wrong, 100 means correct. Numbers in between 0 and 100 means partially correct.
clarificationAn explanation of why - or why not - the answer possibility is right or wrong.

See also
Surrounding clausesanswers    quiz    


show-and-speak


Form
(show-and-speak . show-speak-clauses)

Description
Define a number of 'show and speak' clause of the surrounding note page. A show and speak clause controls the speaker's sound and the sequencing in an automatically progressing slide show.

Parameters
show-and-speak-clausesSlide-part, program-part, and image-series-part clauses

See also
Constituent clausesslide-part    program-part    image-series-part    
About show and speakSECTION8    


slide-part


Form
(slide-part number time)

Description
Define a slide-part of a surrounding show and speak clause. A slide-part asks for presentation of the slide for a certain amount of time.

Parameters
numberA slide page can be show a number of time an an automatically progressing slide show. Each time there will be a different speaker sound related to the slide. This parameter defines the number associated with this presentation.
timeThe number of seconds (an integer) to show this page

See also
Sibling clausesprogram-part    image-series-part    
Surrounding clauseshow-and-speak    


program-part


Form
(program-part number time)

Description
Define a program-part of the surrounding show and speak clause. A program-part presents one of the external source programs on this page.

Parameters
numberWhich program to show. The programs are numbered on each note page, starting from 1, in presentation order.
timeThe number of seconds (an integer) to show this page

See also
Sibling clausesslide-part    image-series-part    
Surrounding clauseshow-and-speak    


image-series-part


Form
(image-series-part number time-list)

Description
Define an image-series part of the surrounding show and speak clause. An image-series-part presents one of the image-series on this page.

Parameters
numberWhich image series to show. The images are numbered on each note page, starting from 1, in presentation order.
time-listThe number of seconds (an integer) to each image in the series. A list of integers.

See also
Sibling clausesslide-part    program-part    
Surrounding clauseshow-and-speak    


lecturer-photos


Form
(lecturer-photos start-photo-number number-of-photos)

Description
Present a number of lecturer photos on the current note page

Preconditions
Depends on the list lecturer-photo-list, which must enumerate the available photos. Defined it in post-notes. The lecturer photos must be organized in the sub-directory lecturer-photos in the lecture note source directory (the directory in which your lecture laml files are found). The photos will be copied to the html destination directory as part of LENO processing.

Parameters
start-photo-numberRefers to the first photo to show (an integer).
number-of-photosTells how many photos to show (an integer)

See also
Related clauselecturer-photos-and-logo    


lecturer-photos-and-logo


Form
(lecturer-photos-and-logo start-photo-number)

Description
Show two lecturer photos and a logo. The parameter determines which photos to show.

Parameters
start-photo-numberRefers to the first photo to show (an integer). This quantity is automatically normalized to an appropriate range.

See also
Related clause with necessary informationlecturer-photos    

Note
The logo is a gif file organized together with the other images which are important for LENO. You should define your logo in the images directory of your lecture note directory (the note specific images files). The Aalborg University logo comes together with LENO, however, so it is automatically there. The logo image must have the name 'logo.gif'. In case you want to link from the logo, define the variable logo-url to an appropriate WWW address.


elucidate


Form
(elucidate description url target)

Description
Insert a link to an elucidator (accompanied with an eluciator icon) which explains a program. Only available for Schem and Java.

Parameters
descriptionThe description of the elucidator. The first sentence is rendered after the elucidator icon.
urlThe url with the WWW address of the top level elucidator page.
targetAn optional parameter which gives the anchor target. Defaults to the value of elucidator-default-target.


splice-page-with


Form
(splice-page-with tag-list lecture-id page-id [id])

Description
Splice the elements of another page from a specified lecture-id including certain kinds of elements. With this, it is possible to include selected elements from another page without copying its elements. Only the type of elements mentioned in tag-list are included. If the optional id parameter is supplied, only include an element (of the given type) with the given id. In practice, this implies that only a single element is included (because ids of subclauses have to be unique in a note page). In case a certain kind of element appears more than once, all occurrences are included. Only pages from the current lecture or a sibling lecture can be include. In other words, you cannot address pages in lectures located in other directories.

Parameters
tag-listA list of LENO element tag names (a list of symbols)
lecture-idThe lecture id of the lecture from which to splice a page - a symbol
page-idThe page id of the page from which to splice
idThe id of an element on the specified note page (optional parameter)

See also
Related clausesplice-page-without    

Note
The internal lsp representation of the lecture contains the splice-page-with and splice-page-without clauses in contrast to the spliced elements. It is not possible to splice (part of) a page into itself recursively (you get an error). Mutual splicing of two pages into each other should be avoided - the result is undefined and it will break LENO. (We could easily support mutual recursive splicing by a very minial change in the information saved on the -.lsp file, but it would cause confusing results - ever expanding pages - which are not interesting for practical purposes).


splice-page-without


Form
(splice-page-without tag-list lecture-id page-id)

Description
Splice the elements of another page from a specified lecture-id excluding certain types of elements. With this, it is possible to include selected elements from another page without copying its elements. The type of elements mentioned in tag-list are not included; All others than the tags in tag-list are incuded. Only pages from the current lecture or a sibling lecture can be include. In other words, you cannot address pages in lectures located in other directories.

Parameters
tag-listA list of LENO element tag names (a list of symbols)
lecture-idThe lecture id of the lecture from which to splice a page - a symbol
page-idThe page id of the page from which to splice

See also
Related clausesplice-page-with    
See also note ofsplice-page-with    


side-track


Form
(side-track title track-lecture-id track-explanation)

Description
Define a side track. A side track is meant to explain a given topic in some additional detail. In LENO terminology, a side track is a lecture of its own. This lecture is dedicated to the side track.

Parameters
titleThe main text of the side track - its title (a string)
track-lecture-idThe lecture id of the lecture that make up the side track (a symbol)
track-exaplanationSome further explanation of the role of this side track (a string)


 

5.   LENO EMACS SUPPORT
There is a number of useful Emacs commands that make it easy and conveninent to author LENO material. Most important, perhaps, is the function which help initiate a new set of slides (a single lecture only). This command is called make-lecture-notes.

The table below lists the other LENO specific Emacs Lisp commands. These will all be available if you have installed the LAML system appropriately.

CommandKey bindingEffect
make-lecture-notesnonemake the directory structure of a LENO set of slides. You are prompted for directory and the name of slides. You are adviced to organize each single-chaper slide set in a new directory.
leno-insert-notepagenoneinsert a note-page form in a set of slides
leno-insert-notesectionnoneinsert a note-page form in a set of slides
leno-insert-titlenoneinsert a title form in a note page
leno-insert-itemsnoneinsert an item form in a note page. This command prompts for the number of items at top level, and the number of subitems of each item. A very useful function if you use many items on your slides.
leno-insert-opposingnoneinsert an opposing form in a note page. This command prompts for the number of opposing items.
leno-insert-concept-listnoneinsert a concept-list form in a note page. This command prompts for the number of concepts to define.
leno-insert-synopsisnoneinsert a synopsis form in a note page. This command promps for the number of synopsis items.
leno-insert-titlenoneinsert a title form in a note page
leno-insert-textnoneinsert a text form in a note page
leno-insert-pointnoneinsert a point form in a note page
leno-insert-source-programnoneinsert a source-program form in a note page
leno-insert-imagenoneinsert a title form in a note page
leno-insert-examplenoneinsert an example form in a note page
leno-insert-syntaxnoneinsert a syntax form in a note page
leno-insert-slide-spacenoneinsert a slide-space form in a note page
leno-insert-tabularnoneinsert a tabular form in a note page
leno-insert-note-textnoneinsert a note-text form in a note page
leno-insert-slide-textnoneinsert a slide-text form in a note page
leno-insert-cross-referencesnoneinsert a cross-references form in a note page
leno-insert-internet-referencenoneinsert an internet-reference form in a cross-references form
leno-insert-inforal-referencenoneinsert an informal-reference form in a cross-references form
leno-insert-note-referencenoneinsert a note-reference form in a cross-references form
leno-insert-exercisenoneinsert an exercise form in note page
leno-insert-long-slidenoneinsert a long-slide form in note page
leno-insert-index-wordsnoneinsert an index-words form in note page
leno-insert-image-seriesnoneinsert an image-series form in note page
leno-insert-section-titlenoneinsert a section-titel form in note section page
leno-insert-slide-imagenoneinsert a slide-image form in note page page
leno-insert-applet-programnoneinsert an applet-program form in note page page
leno-insert-quotationnoneinsert a quotation form in note page page

The emacs lisp variable laml-pp-helpful (of type boolean) controls the detailed working of most of the leno-insert-... functions from above. If the value of laml-pp-helpful is t (for true) it shows the roles of the individual constituents. If nil (for false) just empty string placeholders are presented.

The leno-insert-... commands are found in the LENO section of the LAML menu in Emacs.

The variable leno-version controls which version of LENO to use. As the default, the value is xml-in-laml (a symbol). The old version of LENO is supported by the value original (a symbol). You can change leno-version via LAML customization.

Please also notice the following generally useful LAML Emacs commands:

CommandKey bindingEffect
embedC-x C-eEmbeds the current selection into a Lisp form. Handles the necessary string splitting and surrounding concatenation. The variables laml-single-string-approach, smart-word-determination, concatenate-form controls the behavior of the embed command
unembedC-x C-rThe opposite command of embed
splitC-x C-qSplit a string in two pieces
unsplitC-x C-aJoin two strings - the opposite of split.
nestC-x C-nNest a lisp form into another. A generic and generally useful Lisp programming primitive
unnestC-x C-mThe opposite command of nest


 

6.   USEFUL TEMPLATES
This section is obsolete with respect to single chapter lecture notes. Use the Emacs command make-lecture-notes, as described in the previous section. If, however, you are going to initiate a multi chapter material, this section may still be a good starting point.

Here we show a LENO lecture note source file of a chapter, which is supposed to be part of a set of chapters in a material. Notice that the notes.scm file is loaded. The capitalized words need to be filled in by the author of the material. Most of the variables and functions seen in the template are documented above.

                                         ; Start of preamble section
(load (string-append laml-dir "laml.scm"))

(load "notes.scm")                       ; Load the common set up for all chapters from notes.scm
(style "lecture-notes/lecture-notes")    ; Causes loadning the LENO software
(load "post-notes.scm")                  ; Loads the post part of the common set up

(define front-index? #t)                 ; Set LENO up to make a top-level front index 
(define word-index? #t)                  ; Set LENO up make word, cross reference index

(set-lecture-name "LECTURE-NAME")        ; Define the name of this lecture, normally the same as the file name
(set-lecture-number N)                   ; Define the chapter number (a number)

(exercise-model 'make-indexes)           ; One of the symbols none, make-indexes, make-indexes-and-solutions-per-lecture,
                                         ; make-indexes-and-solutions-lecture-wide, synchronous-exercises, asynchronous-exercises

(define slide-header? 'normal)           ; one of the symbols normal, none, or minimal


(lecture-intro "TITLE"                   ; Define the title, author, affiliation, and the abstract
  (list 
    (copyright-owner "AUTHOR")
    "AFFILIATION-1"
    "AFFILIATION-2"
    )
  "ABSTRACT"
)

(begin-notes)                            ; End of preamble section, start of note page section


(note-page 'ID-OF-FIRST-SLIDE
  (section-title "SECTION-TITLE")
)

; A NUMBER OF SUBSEQUENT NOTE PAGES


(end-notes)                              ; End of note page section

Next, we give a template of the notes.scm file, which contains the common stuff in a multi-chapter set of lecture notes.

(define note-abstract
  "ABSTRACT AT TOP LEVEL")


; The directory in which this file is located.
; Must be ended with a slash
(define note-source-directory "DIRECTORY")             ; The directory where the note sources are located. 
                                                       ; Full, absolute path. Must be terminated by a slash.

(define notes-title "NOTE TITLE")                      ; The top level title of these notes.
 
(define current-lecture N)                             ; The number of the last section processed


(define lecture-sections                               ; A list with one entry per lecture section
  (list
    (list  "CHAPTER-1-ID"   "CHAPTER ONE TITLE")
    (list  "CHAPTER-2-ID"   "CHAPTER TWO TITLE")
    ...
   )
)
                                                       ; A parameter-less function returns a list of meta-tag contribution                                     
(define (meta-tag-clauses)
   (list (list 'HTTP-EQUIV "Content-Type" 'content "text/html; charset = ISO-8859-1")  
         (list 'name "Generator" 'content "laml")
         (list 'name "description" 
                     'lang (meta-language language-preference)
                     'content "CONTENTS DESCRIPTION")
   )
)


(define course-home-url "URL")                       ; The full course home URL.

(define author-home-url "URL")                       ; The full author's home URL.

(define note-download-url "URL")                     ; The url from which to download the set of notes. If empty string no download

(define (cross-reference-location-hints location-list)  ; No location hints 
  "")


; --------------------------------------------------------------------------------------------------------

; Here it is possible to define useful scheme functions,
; for instance functions which abbreviate URL's to outside
; material. Such functions are highly recommended.

Here is a template of the post-notes.scm file, which is loaded after the LENO software:

;; This is the portion of the notes.scm file which must
;; be loaded after the lecture notes style has been loaded.

;; In the long run, all the material in notes.scm should go here.
;; But there are some technical difficulties which must be overcome before
;; it can happen.

; On which system have we generated LENO. The variable computer-system may be defined
; in laml.scm at the basic LAML level.
(define (generating-system)
  (con (text-choice "Genereret for: " "on the system ") (as-string computer-system)))

; A list of lecture specific passwords. A list of pairs. See the manual
(define solution-passwords
  (list
    (cons  'CHAPTER-1-ID  "CRYPTIC-STRING-1")
    (cons  'CHAPTER-2-ID  "CRYPTIC-STRING-2")
  ))

(set-language 'english)    ; set the language of the fixed texts in LENO. 'danish og 'english

Finally, we give a template of a single chapter lecture note. In this template we have inlined the notes.scm file and the post-notes.scm file, and as a consequence no such file is needed in this case.

(load (string-append laml-dir "laml.scm"))       
                                                       ; Start of preamble section


(define note-source-directory "DIRECTORY")          ;  The directory where the note sources are located. 
                                                       ; Full, absolute path. Must be terminated by a slash.

(define current-lecture 1)

(define lecture-sections
  (list
    (list  "CHAPTER-ID" "CHAPTER TITLE")              ; The id and title of the one and only chapter.
   )
)

(define notes-title (cadr (car lecture-sections)))   ; Set the notes title to the chapter title, defined above.

(define course-home-url "URL")                       ; The full course home URL.

(define author-home-url "URL")                       ; The full author's home URL.

(define note-download-url "URL")                     ; The url from which to download the set of notes. If empty string no download

(define (cross-reference-location-hints location-list)  ; No location hints 
  "")

                                                       ; A parameter-less function returns A list of meta-tag contribution       
(define (meta-tag-clauses)
   (list (list 'HTTP-EQUIV "Content-Type" 'content "text/html; charset = ISO-8859-1")  
         (list 'name "Generator" 'content "LAML")
         (list 'name "description" 
                     'lang (meta-language language-preference)
                     'content "CONTENTS DESCRIPTION")
   )
)


(style "lecture-notes/lecture-notes")

(define front-index? #f)                               ; No front index; not needed because there is only one chaper.

(set-language 'english)                                 ; The fixed, system defined text are in English

(set-lecture-name (car (car lecture-sections)))         ; Define the name of this lecture to the chapter-id of lecture-sections (def. earlier)
(set-lecture-number 1)                                  ; Define the lecture numerb

(lecture-intro "TITLE"                                  ; Define the title, author, affiliation, and the abstract
  (list 
    (copyright-owner "AUTHOR")
    "AFFILIATION-1"
    "AFFILIATION-2"
    )
  "ABSTRACT"
)

(begin-notes)                                          ; End of preamble section, start of note page section


(note-page 'ID-OF-FIRST-SLIDE
  (section-title "SECTION-TITLE")
)

(end-notes)












The templates from above are all found in the zip files, which represents the LENO directory structure. The zip file is discussed below.

For templates of note pages, please consult the meta examples referred under the individual note page forms.

We have made a template of the LENO directory structure (zip file) This is a very useful starting point of a new set of lectures. Enjoy!



 

7.   CROSS REFERENCE SUPPORT
It is often useful and necessary to refer from one piece of LENO information to another. In this section we will document the various cross reference facilities supported by LENO. The functions in this section return URLs to other pages generated by LENO.

Recall the cross-references clause of LENO, the purpose of which is to define cross references to other note pages, or to external material. The cross-references clause is a constituent of a note-page.


slide-url


Form
(slide-url lecture-id slide-id)

Description
Return a URL of particular slide page in a particular lecture

Parameters
lecture-idA symbol which identifies a lecture
slide-idA symbol which identifies a note pages in the lecture - corresponds to the first parameter of note-page

Note
Use this form in an anchor tag, such as the LAML a-tag


note-url


Form
(note-url lecture-id slide-id)

Description
Return a URL of particular note page in a particular lecture

Parameters
lecture-idA symbol which identifies a lecture
slide-idA symbol which identifies a note pages in the lecture - corresponds to the first parameter of note-page

Note
Use this form in an anchor tag, such as the LAML a-tag


book-url


Form
(slide-url lecture-id . slide-id)

Description
Return a URL of particular aggregated lecture. The slide-id parameter is optional. If it is supplied, return a URL to a particular place in the aggregated lecture

Parameters
lecture-idA symbol which identifies a lecture
slide-idA symbol which identifies a note pages in the lecture - corresponds to the first parameter of note-page

Note
Use this form in an anchor tag, such as the first parameter of an LAML a-tag


exercise-formulation-url


Form
(exercise-formulation-url lecture-id page-id presentation-kind exercise-number)

Description
Return a URL to an exercise formulation in a given lecture, and on a given page. It is possible to return a URL to either the slide formulation or the note formulation of the exercise (depending on the presentation-kind parameter). Exercise-number refers to a particular exercise number on the page. If there is only one exercise on this page, exercise-number will be 1. Notice that this function does not use the exercise-id parameter; Rather it identifies the exercise by means of the lecture, page (slide-id) and which number of exercise on the page.

Parameters
lecture-idA symbol which identifies the lecture
page-idA symbol which identifies a page in a lecture - corresponds to the first parameter of note-page
presentation-kindOne of the symbols 'slide or 'note, giving the kind of presentation addressed by the URL
exercise-numberAn integer giving the number of the exericise to address with the resulting URL

See also
Relevant LENO clausesexercise    formulation    
Similar functionexercise-formulation-url-given-id    

Note
Use this form in an anchor tag, such as the first parameter of an LAML a-tag


exercise-formulation-url-given-id


Form
(exercise-formulation-url-given-id lecture-id exercise-id . presentation-kind)

Description
Return a URL to an exercise formulation identified with exercise-id, located in a particular lecture. Presentation-kind determines the kind of presentation addressed by the URL (optional parameter which defaults to note). This function finds the page and the exercise-number on the page via the internally generated -.exc files. Thus, this function assumes that the -.exc file of lecture-id exists. If not, this function returns "???" and issues a warning.

Preconditions

Parameters
lecture-idA symbol which identifies the lecture
exercise-idA symbol identifying the lecture - correspond to the first parameter of the exercise clause
presentation-kindOne of the symbols 'slide or 'note, giving the kind of presentation addressed by the URL

See also
Relevant LENO clausesexercise    formulation    
Similar functionexercise-formulation-url    

Note
Use this form in an anchor tag, such as the first parameter of an LAML a-tag


exercise-solution-url


Form
(exercise-solution-url lecture-id page-id exercise-number)

Description
Return a URL to an exercise solution in a particular lecture, on a particular page. The URL always addresses a note-size solution - there is no slide style solution page generated. The parameter exericse-number addresses a particular exercise on a note page. If there is only one exercise on the page, exercise-number will be one

Parameters
lecture-idA symbol which identifies the lecture
page-idA symbol which identifies a page in a lecture - corresponds to the first parameter of note-page
exercise-numberAn integer giving the number of the exericise to address with the resulting URL

See also
Relevant LENO clausesexercise    solution    

Note
Use this form in an anchor tag, such as the first parameter of an LAML a-tag


 

8.   SHOW AND SPEAK FUNCTIONALITY
In this section we describe the show and speak functionality of LENO. This facility provides for an automatically progressing lectures with the lecturer's speaker sound.

The LENO clauses related to the facility is described elsewhere. Here we will focus on the practical procedure for recording and arranging the sound clips in reation to a LENO material.

At the overall level, we can observe that the show and speak facility is based on the following:

  1. To each note page there is one or more corresponding sound clips
  2. On each note page we specify the sequencing and timing of the sound clips using a show-and-speak clause
  3. The sound clips are brought to the appropriate sound files by means of a LENO utility tool, found in the LENO source program directory's util brach.
  4. A number of variables control the show and speak facility: show-and-speak?, default-showing-time, sound-source, default-show-and-speak-clause, speak-url-prefix, and speak-file-prefix.

The practical procedure for making and arranging a set of sound files is the following:

  1. Record the sounds, preferably on files 1.wav, 2.wav, etc.
  2. Specify the sounds in the leno source, using (show-and-speak ...) clauses
  3. Be sure that (define show-and-speak? #t)
  4. Process the leno file, thus defining the internal/<lecture-id>.spk file.
  5. Arrange that the sound clips are properly named. This is done by running a copying program on the sound clips which implements the naming conventions. An example of the program is found in the util directory in the leno directory of LAML.
  6. Process the leno file again.

As another practical information, the processing of a LENO laml file with show-and-speak clauses (and with show-and-speak? set to #t) generates a -.spk file in the internal directory. This file holds all the book keeping information about the show-and-speak clauses in a LENO laml file.


 

9.   SOME RELEVANT FUNCTIONS FROM THE LENO IMPLEMENTATION
In the rest of this document we describe a number of useful functions from the LENO implementation, including a number of practical utility functions. This portion of the manual has been extracted automatically from the Scheme source file of the LENO implementation by means of the Schemedoc tool.


Generated: November 20, 2003, 10:38:48