diff --git a/doc/VERSIONS b/doc/VERSIONS
index 84dc3dfdd5344dc83f2f758e8a200c412918fa7a..c4b1a3e7616989e82127f1abb1d4a0fcb6951e06 100644
--- a/doc/VERSIONS
+++ b/doc/VERSIONS
@@ -1,7 +1,7 @@
-$Id: VERSIONS,v 1.141 2003-04-19 04:17:09 geuzaine Exp $
+$Id: VERSIONS,v 1.142 2003-04-21 01:32:54 geuzaine Exp $
 
 New in 1.44: new reference manual; added support for PNG output; fixed
-small configuration bugs;
+small configure script bugs;
 
 New in 1.43: fixed solver interface problem on Mac OS X; new option to
 specify the interactive rotation center (default is now the pseudo
diff --git a/doc/texinfo/command_line.texi b/doc/texinfo/command_line.texi
index 8d9f9e763de1380f4c0f4abda47edbe68c5843aa..acbc0209d395cfe1ad2d550de6fe8e41b46039f5 100644
--- a/doc/texinfo/command_line.texi
+++ b/doc/texinfo/command_line.texi
@@ -5,7 +5,10 @@
 parse input files, output unrolled geometry, and exit
 @end ftable
 
+@sp 1 
+
 @noindent Mesh options:
+
 @ftable @code
 @item -1, -2, -3
 perform batch 1D, 2D and 3D mesh generation
@@ -41,7 +44,10 @@ recombine meshes from old extrusion mesh generator
 display 2D mesh construction interactively
 @end ftable
 
+@sp 1 
+
 @noindent Post-processing options:
+
 @ftable @code
 @item -dl
 enable display lists
@@ -55,7 +61,10 @@ smooth views
 convert an ascii view into a binary one
 @end ftable
 
+@sp 1 
+
 @noindent Display options:
+
 @ftable @code
 @item -nodb
 disable double buffering
@@ -73,7 +82,10 @@ specify display
 set projection mode to perspective
 @end ftable
 
+@sp 1
+
 @noindent Other options:
+
 @ftable @code
 @item -a, -g, -m, -s, -p
 start in automatic, geometry, mesh, solver or post-processing mode (default:
diff --git a/doc/texinfo/gmsh.texi b/doc/texinfo/gmsh.texi
index c53c9e024f4726d9eb0881945dfc16d624a84f73..8aef36fa4e61287e60553a8cde12faa703dd9bd9 100644
--- a/doc/texinfo/gmsh.texi
+++ b/doc/texinfo/gmsh.texi
@@ -1,5 +1,5 @@
 \input texinfo.tex @c -*-texinfo-*-
-@c $Id: gmsh.texi,v 1.34 2003-04-19 22:11:42 geuzaine Exp $
+@c $Id: gmsh.texi,v 1.35 2003-04-21 01:32:54 geuzaine Exp $
 @c
 @c Copyright (C) 1997-2003 C. Geuzaine, J.-F. Remacle
 @c
@@ -478,7 +478,7 @@ control the size of the elements in the final mesh: through interpolation
 from geometrical point characteristic lengths or geometrical attractors, or
 from user-defined background meshes (@pxref{Mesh commands});
 @item
-create simple extruded geometries and meshes (see @ref{Geometry commands}
+create simple extruded geometries and meshes (see @ref{Geometry commands},
 and @ref{Mesh commands});
 @item
 interact with external solvers. Gmsh provides C/C++ and Perl interfaces, and
@@ -1573,7 +1573,7 @@ volume.
 
 Lines, surfaces and volumes can also be created through extrusion of points,
 lines and surfaces, respectively. Here is the syntax of the geometrical
-extrusion commands (go to @ref{Structured grids} to see how these commands
+extrusion commands (go to @ref{Structured grids}, to see how these commands
 can be extended in order to also extrude the mesh):
 
 @ftable @code
@@ -1709,7 +1709,7 @@ the signification of the `Saved in:' field in the following list, see
 @cindex Mesh, module
 @cindex Module, Mesh
 
-Gmsh's mesh module regroups several 1D, 2D and 3D mesh generators, all
+Gmsh's mesh module regroups several 1D, 2D and 3D mesh algorithms, all
 producing grids conforming in the sense of finite elements (@pxref{Mesh}).
 
 @menu
@@ -1725,27 +1725,24 @@ producing grids conforming in the sense of finite elements (@pxref{Mesh}).
 @node Elementary vs physical entities, Mesh commands, Mesh module, Mesh module
 @section Elementary vs. physical entities
 
-The input to all Gmsh's mesh algorithms is a geometry described in the
-geometry module (@pxref{Geometry module}). 
-
-If only elementary geometrical entities are defined (or if the option
-@code{Mesh.SaveAll} is set; see @ref{Mesh options}), the grid produced by
-the mesh module will be saved ``as is''. That is, all the elements in the
-grid will be saved to disk using the identification number of the elementary
-region they discretize as their region number (@pxref{Gmsh mesh file
-format}). However, this can sometimes be impractical or even insufficient:
+If only elementary geometrical entities are defined (or if the
+@code{Mesh.SaveAll} option is set; see @ref{Mesh options}), the grid
+produced by the mesh module will be saved ``as is''. That is, all the
+elements in the grid will be saved to disk using the identification number
+of the elementary entities they discretize as their region number
+(@pxref{Gmsh mesh file format}). This can sometimes be impractical:
 
 @itemize @bullet
 @item
-mesh elements can only appear once in the mesh file;
+mesh elements cannot be duplicated;
 @item 
 the orientation of the mesh elements (the ordering of their nodes) is
 determined entirely by the orientation of their ``parent'' elementary
-entity, and cannot be modified;
+entities, and cannot be modified;
 @item
-it is impossible to group multiple elementary entities into larger groups
-carrying some common characteristic (e.g.@: `Left wing', `Metal', `Dirichlet
-boundary condition', @dots{}).
+elements belonging to differents elementary entities cannot be linked as
+being part of a larger group having a physical or mathematical meaning (like
+`Left wing', `Metallic part', `Dirichlet boundary condition', @dots{}).
 @end itemize
 
 To remedy these problems, the geometry module introduces the notion of
@@ -1772,9 +1769,8 @@ The mesh module commands mostly permit to modify the characteristic lengths
 and specify structured grid parameters. The actual mesh ``actions'' (i.e.,
 ``mesh the lines'', ``mesh the surfaces'' and ``mesh the volumes'') cannot
 be specified in the input ASCII text input files. They have to be given
-either in the GUI (using the `Mesh->1D|2D|3D' buttons; see @ref{Running
-Gmsh}) or on the command line (with the @code{-1}, @code{-2} or @code{-3}
-options; see @ref{Running Gmsh} and @ref{Command-line options}).
+either in the GUI or on the command line (see @ref{Running Gmsh}, and
+@ref{Command-line options}).
 
 @menu
 * Characteristic lengths::      
@@ -1795,8 +1791,10 @@ options; see @ref{Running Gmsh} and @ref{Command-line options}).
 @cindex Mesh, background
 @cindex Background mesh
 
-There are three main ways to specify the size of the mesh elements for a
-given geometry:
+The `size' of a mesh element is defined as the length of the segment for a
+line segment, the radius of the circumscribed circle for a triangle and the
+radius of the circumscribed sphere for a tetrahedron. There are three main
+ways to specify the size of the mesh elements for a given geometry:
 
 @enumerate
 @item
@@ -1805,32 +1803,36 @@ model (with the @code{Point} command: see @ref{Points}). The actual size of
 the mesh elements will be computed by linearly interpolating these
 characteristic lengths on the initial mesh (see @ref{Mesh}). This might
 sometimes lead to over-refinement in some areas, so that you may have to add
-some ``dummy'' geometrical points in the model in order to get the desired
+``dummy'' geometrical entities in the model in order to get the desired
 element sizes.
 
-This method works with all the algorithms implemented in the mesh module,
-but is constrained by the structured algorithms for which the element size
-is explicitly specified (e.g.@: transfinite and extrusion grids: see
-@ref{Structured grids}).
+This method works with all the algorithms implemented in the mesh
+module. The final element sizes are of course constrained by the structured
+algorithms for which the element sizes are explicitly specified (e.g.@:
+transfinite and extruded grids: see @ref{Structured grids}).
 @item
-You can use geometrical ``attractors'', an elaborated version of the
-previous solution: see the @code{Attractor} commands below.
+You can use geometrical ``attractors'', an elaborate version of the method
+described in the preceding item: see the definition of the @code{Attractor}
+command below.
 
-Attractors currently only work with the 2D anisotropic algorithm (see
-@code{Mesh.Algorithm} in @ref{Mesh options}).
+Attractors currently only work with the 2D anisotropic algorithm (see the
+@code{Mesh.Algorithm} option in @ref{Mesh options}).
 @item
-You can give Gmsh an explicit background mesh (in the form of a scalar
-post-processing view; see @ref{Post-processing commands} and @ref{File
+You can give Gmsh an explicit background mesh in the form of a scalar
+post-processing view (see @ref{Post-processing commands}, and @ref{File
 formats}) in which the nodal values are the target element sizes.  This
 method is very general but it requires a first (usually rough) mesh and a
 way to compute the target sizes on this mesh (usually through an error
-estimation procedure, in an iterative process of mesh adaptation).
-
-This method only works with the isotropic 1D, 2D and 3D algorithm, and is not
-currently available with the Triangle algorithm (see @code{Mesh.Algorithm}
-in @ref{Mesh options}). To load a background mesh, use the @code{-bgm}
-command-line option (@pxref{Command-line options}) or select `Apply as
-background mesh' in the post-processing view option menu.
+estimation procedure, in an iterative process of mesh adaptation). Note that
+the target element sizes can be constrained by the characteristic lengths
+defined in the geometrical model if the
+@code{Mesh.ConstrainedBackgroundMesh} option is set.
+
+This method only works with the isotropic 1D, 2D and 3D algorithm, and is
+not currently available with the Triangle algorithm. To load a background
+mesh, use the @code{-bgm} command-line option (@pxref{Command-line options})
+or select `Apply as background mesh' in the post-processing view option
+menu.
 @end enumerate
 
 Here are the mesh commands that are related to the specification of
@@ -1842,8 +1844,8 @@ Specifies a characteristic length attractor. The @var{expression-list}
 should contain the identification numbers of the elementary points or lines
 to serve as attractors; the two first @w{@var{expression}s} prescribe
 refinement factors in a coordinate system local to the entities, and the
-last @var{expression} a decay factor. this feature is still experimental,
-and only work with the 2D anisotropic algorithm (see @code{Mesh.Algorithm}
+last @var{expression} a decay factor. This feature is still experimental,
+and only works with the 2D anisotropic algorithm (see @code{Mesh.Algorithm}
 in @ref{Mesh options}).  An example of the use of attractors is given in
 @ref{t7.geo}.
 
@@ -1876,8 +1878,10 @@ extruded and has the following syntax:
 
 @example
 @var{layers}:
+@group
   Layer @{ @{ @var{expression-list} @}, @{ @var{expression-list} @}, @{ @var{expression-list} @} @}; |
   Recombine;
+@end group
 @end example
 
 The first @var{expression-list} defines how many elements should be created
@@ -1887,10 +1891,10 @@ height of each layer (the list should contain a sequence of @var{n} numbers
 0 < @var{h1} < @var{h2} < @dots{} < @var{hn} <= 1). See @ref{t3.geo}, for an
 example.
 
-For line extrusions, the @code{Recombine} option will recombine (as many as
-possible) triangles into quadrangles.  For surface extrusions, the
-@code{Recombine} option will recombine (as many as possible) tetrahedra
-into prisms, hexahedra or pyramids.
+For line extrusions, the @code{Recombine} option will recombine as many as
+possible triangles into quadrangles.  For surface extrusions, the
+@code{Recombine} option will recombine as many as possible tetrahedra into
+prisms, hexahedra or pyramids.
 
 @item Extrude Point | Line | Surface @{ @var{expression}, @{ @var{expression-list} @}, @{ @var{expression-list} @}, @var{expression} @} @{ @var{layers}; @dots{} @};
 Extrudes both the geometry and the mesh using a rotation
@@ -1904,23 +1908,30 @@ above.
 @item Transfinite Line @{ @var{expression-list} @} = @var{expression} < Using Progression | Bump @var{expression} >
 Selects the lines in @var{expression-list} to be meshed with the 1D
 transfinite algorithm. The @var{expression} on the right hand side gives the
-number of points to be used (this overrides any characteristic length
-prescription---see @ref{Characteristic lengths}). The optional argument
-`@code{Using Progression @var{expression}}' instructs the transfinite
-algorithm to distribute the points following a geometric progression
-(@code{Progression 2} means that each line element in the series will be
-twice as long as the preceding one). The optional argument `@code{Using Bump
-@var{expression}}' instructs the transfinite algorithm to distribute the
-with a refinement at both ends of the line.  (A deprecated synonym for
-@code{Progression} is @code{Power}.)
+number of nodes that will be created on the line (this overrides any
+characteristic length prescription---see @ref{Characteristic lengths}). The
+optional argument `@code{Using Progression @var{expression}}' instructs the
+transfinite algorithm to distribute the nodes following a geometric
+progression (@code{Progression 2} meaning for example that each line element
+in the series will be twice as long as the preceding one). The optional
+argument `@code{Using Bump @var{expression}}' instructs the transfinite
+algorithm to distribute the nodes with a refinement at both ends of the
+line.  (A deprecated synonym for @code{Progression} is @code{Power}.)
 
 @item Transfinite Surface @{ @var{expression} @} = @{ @var{expression-list} @};
 Selects the surface @var{expression} to be meshed with the 2D transfinite
-algorithm. The @var{expression-list} ...
+algorithm. The @var{expression-list} should contain the identification
+numbers of the points on the boundary of the surface. The ordering of these
+point numbers defines the ordering and orientation of the mesh
+elements. Note that a transfinite surface can only have three or four sides.
 
 @item Transfinite Volume @{ @var{expression} @} = @{ @var{expression-list} @};
 Selects the volume @var{expression} to be meshed with the 3D transfinite
-algorithm.
+algorithm.  The @var{expression-list} should contain the identification
+numbers of the points on the boundary of the volume. The ordering of these
+point numbers defines the ordering and orientation of the mesh
+elements. Note that a transfinite volume can only have six or eight
+faces.
 @end ftable
 
 @c .........................................................................
@@ -1940,10 +1951,11 @@ Sets the mesh color of the entities listed in @var{expression-list} to @var{colo
 Deletes all currently loaded meshes.
 
 @item Recombine Surface @{ @var{expression-list} @} < = @var{expression} >;
-Recombines the triangular meshes of the surfaces @var{expression-list} into
-a mixed triangular/quadrangular mesh. The optional @var{expression} on the
-right hand side specifies the maximum recombination angle allowed (a large
-@var{expression} leading to more triangle recombinations).
+Recombines the triangular meshes of the surfaces listed in
+@var{expression-list} into mixed triangular/quadrangular meshes. The
+optional @var{expression} on the right hand side specifies the maximum
+recombination angle allowed (a large @var{expression} leading to more
+triangle recombinations).
 
 @item Save @var{char-expression};
 Saves the mesh in a file named @var{char-expression}, using the current
@@ -1990,11 +2002,11 @@ If you want the solver to interact with Gmsh (for error messages, option
 definitions, post-processing, etc.), you need to link your solver with the
 @file{GmshClient.c} file and add the appropriate function calls inside your
 program. You can then proceed as in the previous case, but this time you
-should set the client-server option to 1 (e.g.@: @code{Solver.ClientServer0 =
-1}), so that Gmsh and the solver can communicate through a Unix socket. See
-@ref{Solver example} for an example of how to interface a C solver. Bindings
-for solvers written in other languages (e.g.@: Perl) are available on
-@value{GMSH-WEB}.
+should set the client-server option to 1 (e.g.@: @code{Solver.ClientServer0
+= 1}), so that Gmsh and the solver can communicate through a Unix
+socket. See @ref{Solver example}, for an example of how to interface a C
+solver. Bindings for solvers written in other languages (e.g.@: Perl) are
+available on @value{GMSH-WEB}.
 
 @menu
 * Solver options::              
@@ -2062,11 +2074,12 @@ Gmsh's jargon, each data set is called a ``view'', and can arbitrarily mix
 all types of elements and fields. Each view is given a name, and can be
 manipulated either individually (each view has its own button in the GUI and
 can be referred to by its index in the scripting language) or globally (see
-the @code{PostProcessing.LinkView} option below).
+the @code{PostProcessing.LinkView} option in @ref{Post-processing
+options}).
 
-Though most of any visualization process is inherently interactive, Gmsh
-exposes all post-processing commands and options to the user to permit a
-complete scripting of the full post-processing process (see
+Although visualization is usually mostly an interactive task, Gmsh exposes
+all the post-processing commands and options to the user in its scripting
+language to permit a complete automation of the post-processing process (see
 e.g.@: @ref{t8.geo}, and @ref{t9.geo}).
 
 The two following sections summarize all available post-processing commands
@@ -2089,8 +2102,8 @@ and options.
 
 @ftable @code
 @item Delete View[@var{expression}];
-Deletes (removes) the @var{expression}-th post-processing view. The first
-view is given the number zero, the second the number one, and so on.
+Deletes (removes) the @var{expression}-th post-processing view. Note that
+post-processing view numbers start at 0.
 
 @item Duplicata View[@var{expression}];
 Duplicates the @var{expression}-th post-processing view.
@@ -2108,12 +2121,13 @@ example.
 Creates a new post-processing view, named @code{"@var{string}"}. This is the
 easiest way to create a post-processing view, but also the least efficient
 (the view is read through Gmsh's script parser, which can become quite slow
-if the view is large---e.g.@: with more than 100000 elements).  Though, this
-``parsed'' post-processing format (explained in detail in @ref{Gmsh parsed
-post-processing file format}) is very powerful for testing proposes, since
-all the values are @var{expressions}. Two other formats, better adapted for
-large data sets, are available described in @ref{Gmsh ASCII post-processing
-file format} and @ref{Gmsh binary post-processing file format}.
+if the view is large---e.g.@: with more than 100,000 elements).  Though,
+this ``parsed'' post-processing format (explained in detail in @ref{Gmsh
+parsed post-processing file format}) is very powerful for testing proposes,
+since all the values are @var{expressions}. Two other formats, better
+adapted for large data sets, are described in @ref{Gmsh ASCII
+post-processing file format} and @ref{Gmsh binary post-processing file
+format}.
 @end ftable
 
 @c -------------------------------------------------------------------------
@@ -2127,18 +2141,18 @@ file format} and @ref{Gmsh binary post-processing file format}.
 @cindex Options, post-processing
 
 General post-processing option names have the form
-@code{PostProcessing.@var{string}}. Options peculiar to post-processing
+`@code{PostProcessing.@var{string}}'. Options peculiar to post-processing
 views take two forms:
 
 @enumerate
 @item options that should apply to all views can be set through
-@code{View.@var{string}}, @emph{before any view is loaded};
+`@code{View.@var{string}}', @emph{before any view is loaded};
 @item options that should apply only to the @var{n}-th
-view take the form @code{View[@var{n}].@var{string}} (@var{n} = 0, 1, 2,
+view take the form `@code{View[@var{n}].@var{string}}' (@var{n} = 0, 1, 2,
 @dots{}), @emph{after the @var{n}-th view is loaded}.
 @end enumerate
 
-See @ref{t9.geo} for some examples.
+See @ref{t8.geo}, and @ref{t9.geo}, for some examples.
 
 @include opt_post.texi
 
@@ -2159,13 +2173,15 @@ See @ref{t9.geo} for some examples.
 @cindex Examples
 @cindex Tutorial
 
-Here are the examples in the Gmsh tutorial. These examples are commented and
-should introduce new features gradually, starting with @file{t1.geo}. The
-files corresponding to these examples are available in the @file{tutorial}
-directory of the Gmsh distribution.
+These nine following examples are commented and should introduce new
+features gradually, starting with @file{t1.geo}. The files corresponding to
+these examples are available in the @file{tutorial} directory of the Gmsh
+distribution.
+
+This tutorial does not explain the mesh and post-processing file formats:
+see @ref{File formats}, for this.
 
-This tutorial does not explain the mesh and post-processing file
-formats. See @ref{File formats} for this.
+To learn how to run Gmsh on your computer, see @ref{Running Gmsh}.
 
 @menu
 * t1.geo::                      
@@ -2287,12 +2303,11 @@ formats. See @ref{File formats} for this.
 @cindex Interactive mode
 @cindex Non-interactive mode
 
-There are several different ways to actually run Gmsh on your
-computer@footnote{Note that these operation modes can slightly vary
-depending on the operating system and/or shell you use.} The first working
-mode of Gmsh is the interactive graphical mode. To launch Gmsh in
-interactive mode, just click or double-click on the Gmsh icon (Windows and
-Mac), or type
+There are several ways to actually run Gmsh on your computer@footnote{Note
+that these operation modes can slightly vary depending on your operating
+system and/or command shell.}. The first working mode of Gmsh is the
+interactive graphical mode. To launch Gmsh in interactive mode, just click
+or double-click on the Gmsh icon (Windows and Mac), or type
 
 @example
 > gmsh
@@ -2315,7 +2330,7 @@ is based on the name of the first input file on the command line (or
 extension depending on the mesh format.
 
 Note that nearly all the interactive commands have shortcuts: see
-@ref{Keyboard shortcuts} or select `Help->Shortcuts' in the menu bar to
+@ref{Keyboard shortcuts}, or select `Help->Shortcuts' in the menu bar to
 learn about these.
 
 Instead of opening the tutorial with the `File->Open' menu, it is
@@ -2327,22 +2342,22 @@ example with:
 @end example
 
 Note that, even if it is often handy to define the variables and the points
-directly in the input files (you may use any text editor for this purpose,
-e.g.@: Wordpad on Windows, or Emacs on Unix), it is almost always more simple
-to define the lines, the surfaces and the volumes interactively. To do so,
-just follow the context dependent buttons in the Geometry module. For
+directly in the ASCII input files (you can use any text editor for this
+purpose, e.g.@: Wordpad on Windows, or Emacs on Unix), it is almost always
+simpler to define the lines, the surfaces and the volumes interactively. To
+do so, just follow the context dependent buttons in the Geometry module. For
 example, to create a spline, select `Geometry' in the module menu, and then
 select `Elementary, Add, New, Spline'. You will then be asked (in the status
-bar of the graphic window) to select a list of points, and to type @kbd{e} to
-finish the selection (or @kbd{q} to abort it). Once the interactive command is
-completed, a string is automatically added at the end of the currently
-opened project file.
+bar of the graphic window) to select a list of points, and to type @kbd{e}
+to finish the selection (or @kbd{q} to abort it). Once the interactive
+command is completed, a string is automatically added at the end of the
+currently opened project file.
 
-The second operating mode for Gmsh is the non-interactive mode. In this
-mode, there is no graphical user interface, and all operations are performed
+Gmsh's second operating mode is the non-interactive mode. In this mode,
+there is no graphical user interface, and all operations are performed
 without any user interaction@footnote{If you compile Gmsh without the
 graphical user interface, i.e.@: with @code{./configure --disable-gui}, this
-is the only mode you;ll have access to.}. To mesh the first tutorial in
+is the only mode you have access to.}. To mesh the first tutorial in
 non-interactive mode, just type:
 
 @example
@@ -2360,7 +2375,7 @@ You should read the notes in the file @file{bgmesh.pos} if you intend to use
 background meshes.
 
 Several files can be loaded simultaneously in Gmsh. The first one defines
-the project, while the others are appended (merged) to this project. You
+the project, while the others are appended (`merged') to this project. You
 can merge such files with the `File->Merge' menu, or by directly specifying
 the names of the files on the command line. This is most useful for
 post-processing purposes. For example, to merge the post-processing views
@@ -2371,9 +2386,9 @@ the first tutorial @file{t1.geo}, you can type the following command:
 > gmsh t1.geo view1.pos view2.pos
 @end example
 
-In the Post-Processing module (select `Post_Processing' in the module
-menu), two view buttons will appear, respectively labeled "a scalar
-map" and "a vector map". A mouse click on the name will toggle the
+In the Post-Processing module (select `Post-Processing' in the module
+menu), two view buttons will appear, respectively labeled `a scalar
+map' and `a vector map'. A mouse click on the name will toggle the
 visibility of the selected view, while a click on the arrow button on
 the right will provide access to the view's options. If you want the
 modifications made to one view to affect also all the other views,
@@ -2477,11 +2492,11 @@ pop up menu on post-processing view button
 @cindex File formats
 
 This chapter describes the file formats that cannot be modified by the
-user. These format have a version number (currently 1.2), independent of the
+user. These formats have a version number (currently 1.2), independent of the
 Gmsh version number (currently @value{GMSH-VERSION}).
 
 All non-parsed file formats have sections enclosed between @code{$KEY} and
-@code{$ENDKEY} symbol pairs.
+@code{$ENDKEY} tags.
 
 @menu
 * Gmsh mesh file format::       
@@ -2503,8 +2518,8 @@ All non-parsed file formats have sections enclosed between @code{$KEY} and
 @cindex @file{.msh} file
 
 The @file{.msh} file format is Gmsh's native mesh file format. The file is
-divided into two sections, defining the nodes (@code{NOD}-@code{ENDNOD}) and
-the elements (@code{ELM}-@code{ENDELM}) in the mesh:
+divided in two sections, defining the nodes (@code{NOD}-@code{ENDNOD}) and
+the elements (@code{$ELM}-@code{$ENDELM}) in the mesh:
 
 @example
 $NOD
@@ -2514,7 +2529,7 @@ $NOD
 $ENDNOD
 $ELM
 @var{number-of-elements}
-@var{elm-number} @var{elm-type} @var{reg-phys} @var{reg-elemem} @var{number-of-nodes} @var{node-number-list}
+@var{elm-number} @var{elm-type} @var{reg-phys} @var{reg-elem} @var{number-of-nodes} @var{node-number-list}
 @dots{}
 $ENDELM
 @end example
@@ -2526,26 +2541,24 @@ where
 is the number of nodes in the mesh
 
 @item @var{node-number}
-is the number (index) of the n-th node in the mesh. Note that the
-@w{@var{node-number}s} should not necessarily given in a consecutive (or
-even an ordered) way.
+is the number (index) of the @var{n}-th node in the mesh. Note that the
+@w{@var{node-number}s} do not have to be given in a consecutive (or even an
+ordered) way.
 
-@item @var{x-coord}
-@item @var{y-coord}
-@item @var{z-coord}
-are the floating point values giving the X, Y and Z coordinate of the n-th
-node.
+@item @var{x-coord} @var{y-coord} @var{z-coord}
+are the floating point values giving the X, Y and Z coordinate of the
+@var{n}-th node.
 
 @item @var{number-of-elements}
 is the number of elements in the mesh
 
 @item @var{elm-number}
-is the number (index) of the n-th element in the mesh. Note that the
-@w{@var{elm-number}s} should not necessarily given in a consecutive (or even
-an ordered) way.
+is the number (index) of the @var{n}-th element in the mesh. Note that the
+@w{@var{elm-number}s} do not have to be given in a consecutive (or even an
+ordered) way.
 
 @item @var{elm-type}
-defines the geometrical type for the n-th element:
+defines the geometrical type of the @var{n}-th element:
 @table @code
 @item 1
 Line (2 nodes, 1 edge).
@@ -2572,14 +2585,14 @@ is the number of the physical entity to which the element belongs.
 is the number of the elementary entity to which the element belongs.
 
 @item @var{number-of-nodes}
-is the number of nodes for the n-th element. This is redundant, but kept for
-backward compatibility reasons. The redundancy may disappear in the future
+is the number of nodes for the @var{n}-th element. This is redundant, but
+kept for backward compatibility. The redundancy may disappear in the future
 if higher order elements are implemented using the same @w{@var{elm-type}s}
 as the current ones.
 
 @item @var{node-number-list}
-is a list of @var{number-of-nodes} node numbers (separated by white space,
-without commas).
+is the list of the @var{number-of-nodes} node numbers of the @var{n}-th
+element (separated by white space, without commas).
 @end table
 
 @c -------------------------------------------------------------------------
@@ -2594,9 +2607,9 @@ without commas).
 @cindex @file{.pos} file
 
 The ASCII post-processing file is divided in several sections: one format
-section, enclosed between @code{$PostFormat}-@code{$EndPostFormat}, and one
-or more post-processing views, enclosed between @code{$View}-@code{$EndView}
-tags:
+section, enclosed between @code{$PostFormat}-@code{$EndPostFormat} tags, and
+one or more post-processing views, enclosed between
+@code{$View}-@code{$EndView} tags:
 
 @example
 $PostFormat
@@ -2651,13 +2664,13 @@ is an integer equal to 0 in the ASCII file format.
 
 @item @var{data-size}
 is an integer equal to the size of the floating point numbers used in the
-file (usually, data-size == sizeof(double)).
+file (usually, data-size = sizeof(double)).
 
 @item @var{view-name}
-is a string containing the name of the view (max. 256 characters)
+is a string containing the name of the view (max. 256 characters).
 
-@item @var{nb-time-step}
-is an integer giving the number of time steps in the view
+@item @var{nb-time-steps}
+is an integer giving the number of time steps in the view.
 
 @item @var{nb-scalar-points}
 @item @var{nb-vector-points}
@@ -2675,8 +2688,8 @@ view.
 are integers giving the total number of characters in the 2D and 3D strings.
 
 @item @var{time-step-values}
-is a list of nb-time-steps double precision numbers giving the value of the
-time (or any other variable) for which an evolution was saved.
+is a list of @var{nb-time-steps} double precision numbers giving the value
+of the time (or any other variable) for which an evolution was saved.
 
 @item @var{scalar-point-value}
 @item @var{vector-point-value}
@@ -2711,9 +2724,8 @@ starting index of the string in @var{text2d-chars} and @var{style} is
 currently unused.
 
 @item @var{text2d-chars}
-is a list of @item @var{nb-text2d-chars} characters. Substrings are
-separated with the @code{^} character (which is a forbidden character in
-regular strings).
+is a list of @var{nb-text2d-chars} characters. Substrings are separated with
+the `@code{^}' character (which is a forbidden character in regular strings).
 
 @item @var{text3d}
 is a list of 5 double precision numbers
@@ -2727,7 +2739,7 @@ the leftmost element of the 3D string in model (real world) coordinates,
 
 @item @var{text3d-chars}
 is a list of @var{nb-text3d-chars} chars. Substrings are separated with the
-@code{^} characted.
+`@code{^}' characted.
 @end table
 
 @c -------------------------------------------------------------------------
@@ -2752,9 +2764,9 @@ all lists of floating point numbers and characters are written in binary
 format
 @item
 there is an additional integer, of value 1, written before
-time-step-values. This integer is used for detecting if the computer on
-which the binary file was written and the computer on which the file is read
-are of the same type (little or big endian).
+@var{time-step-values}. This integer is used for detecting if the computer
+on which the binary file was written and the computer on which the file is
+read are of the same type (little or big endian).
 @end enumerate
 
 Here is a pseudo C code to write the beginning of a post-processing
@@ -2810,56 +2822,62 @@ the same for all other kinds of values.
 @cindex @file{.pos} file
 
 For relatively small data sets Gmsh provides an additional post-processing
-format, which is parsed by the same grammar analyzer as the Gmsh script
-language. You can thus, for example, embed small post-processing views
-directly into your geometrical descriptions (see e.g.@: @ref{t4.geo}). This
-format is also useful for testing purposes: its syntax is very permissive,
-and you can easily generate it by hand or on the fly. The format of the
-parsed post-processing file is the following:
+format, which is read by Gmsh's script parser. You can thus, for example,
+embed small post-processing views directly into your geometrical
+descriptions (see e.g.@: @ref{t4.geo}). This format is also useful for
+testing purposes: its syntax is very permissive, and you can easily generate
+it by hand or on the fly. The format of the parsed post-processing file is
+the following:
 
 @example
+@group
 View "@var{string}" @{
   @var{type} ( @var{list-of-coords} ) @{ @var{list-of-values} @};
   @dots{}
 @};
+@end group
 @end example
 
-The same 26 base objects can be displayed as in the ASCII or binary
+The 26 objects that can be displayed are the same as in the ASCII or binary
 post-processing file formats:
 
+@sp 1 
+
 @example
+@group
                     @var{type}  #@var{list-of-coords}  #@var{list-of-values}
 ------------------------------------------------------------
-scalar point        SP    3            1  * @var{nb-time-step}
-vector point        VP    3            3  * @var{nb-time-step}
-tensor point        TP    3            9  * @var{nb-time-step}
-scalar line         SL    6            2  * @var{nb-time-step}
-vector line         VL    6            6  * @var{nb-time-step}
-tensor line         TL    6            18 * @var{nb-time-step}
-scalar triangle     ST    9            3  * @var{nb-time-step}
-vector triangle     VT    9            9  * @var{nb-time-step}
-tensor triangle     TT    9            27 * @var{nb-time-step}
-scalar quadrangle   SQ    12           4  * @var{nb-time-step}
-vector quadrangle   VQ    12           12 * @var{nb-time-step}
-tensor quadrangle   TQ    12           36 * @var{nb-time-step}
-scalar tetrahedron  SS    12           4  * @var{nb-time-step}
-vector tetrahedron  VS    12           12 * @var{nb-time-step}
-tensor tetrahedron  TS    12           36 * @var{nb-time-step}
-scalar hexahedron   SH    24           8  * @var{nb-time-step}
-vector hexahedron   VH    24           24 * @var{nb-time-step}
-tensor hexahedron   TH    24           72 * @var{nb-time-step}
-scalar prism        SI    18           6  * @var{nb-time-step}
-vector prism        VI    18           18 * @var{nb-time-step}
-tensor prism        TI    18           54 * @var{nb-time-step}
-scalar pyramid      SY    15           5  * @var{nb-time-step}
-vector pyramid      VY    15           15 * @var{nb-time-step}
-tensor pyramid      TY    15           45 * @var{nb-time-step}
+scalar point        SP    3            1  * @var{nb-time-steps}
+vector point        VP    3            3  * @var{nb-time-steps}
+tensor point        TP    3            9  * @var{nb-time-steps}
+scalar line         SL    6            2  * @var{nb-time-steps}
+vector line         VL    6            6  * @var{nb-time-steps}
+tensor line         TL    6            18 * @var{nb-time-steps}
+scalar triangle     ST    9            3  * @var{nb-time-steps}
+vector triangle     VT    9            9  * @var{nb-time-steps}
+tensor triangle     TT    9            27 * @var{nb-time-steps}
+scalar quadrangle   SQ    12           4  * @var{nb-time-steps}
+vector quadrangle   VQ    12           12 * @var{nb-time-steps}
+tensor quadrangle   TQ    12           36 * @var{nb-time-steps}
+scalar tetrahedron  SS    12           4  * @var{nb-time-steps}
+vector tetrahedron  VS    12           12 * @var{nb-time-steps}
+tensor tetrahedron  TS    12           36 * @var{nb-time-steps}
+scalar hexahedron   SH    24           8  * @var{nb-time-steps}
+vector hexahedron   VH    24           24 * @var{nb-time-steps}
+tensor hexahedron   TH    24           72 * @var{nb-time-steps}
+scalar prism        SI    18           6  * @var{nb-time-steps}
+vector prism        VI    18           18 * @var{nb-time-steps}
+tensor prism        TI    18           54 * @var{nb-time-steps}
+scalar pyramid      SY    15           5  * @var{nb-time-steps}
+vector pyramid      VY    15           15 * @var{nb-time-steps}
+tensor pyramid      TY    15           45 * @var{nb-time-steps}
 text 2d             T2    4            arbitrary
 text 3d             T3    5            arbitrary
+@end group
 @end example
 
-But, for historical reasons, contrary to the ASCII and binary
-post-processing file formats, the coordinates are given by node, i.e.:
+For historical reasons, contrary to the ASCII and binary post-processing
+file formats, the coordinates are given `by node', i.e.:
 
 @itemize @bullet
 @item
@@ -2891,18 +2909,21 @@ post-processing file formats.
 For all mesh and post-processing file formats, the reference elements are
 defined as follows.
 
-Point:
 @example
+@group
+Point:
         v                            
         |                            
         |                            
    -----1-----u  
         |                            
         |                            
+@end group
 @end example
 
-Line:
 @example
+@group
+Line:
                   edge 1: nodes 1 -> 2  
         v                            
         |                            
@@ -2910,10 +2931,12 @@ Line:
    --1-----2--u  
         |                            
         |                            
+@end group
 @end example
 
-Triangle:
 @example
+@group
+Triangle:
                   edge 1: nodes 1 -> 2         
    v                   2:       1 -> 3                  
    |                   3:       2 -> 3                  
@@ -2924,10 +2947,12 @@ Triangle:
    |__\___u                    
    1   2                       
 
+@end group
 @end example
 
-Quadrangle:
 @example
+@group
+Quadrangle:
                   edge 1: nodes 1 -> 2 
         v              2:       1 -> 4                    
         |              3:       2 -> 3                    
@@ -2938,10 +2963,12 @@ Quadrangle:
      1--|--2      
         |         
 
+@end group
 @end example
 
-Tetrahedron:
 @example
+@group
+Tetrahedron:
                   edge 1: nodes 1 -> 2                
    v                   2:       1 -> 3                                            
    |                   3:       1 -> 4                
@@ -2955,10 +2982,12 @@ Tetrahedron:
      \4                4:        4 -5  6        2 3 4
       \          
        w         
+@end group
 @end example
 
-Hexahedron
 @example
+@group
+Hexahedron:
                   edge 1: nodes 1 -> 2
         v              2:       1 -> 4
         |              3:       1 -> 5
@@ -2979,10 +3008,12 @@ Hexahedron
                        5:        6 -7  8 -12         3 4 8 7
                        6:        9 -10 11 12         5 6 7 8
 
+@end group
 @end example
 
-Prism:
 @example
+@group
+Prism:
                   edge 1: nodes 1 -> 2
       v                2:       1 -> 3
     3 |                3:       1 -> 4
@@ -2998,10 +3029,12 @@ Prism:
            w           3:       -2  3 -6  8           1 4 6 3 
                        4:        4 -5  6 -9           2 3 6 5 
                        5:        7 -8  9              4 5 6   
+@end group
 @end example
 
-Pyramid:
 @example
+@group
+Pyramid:
                   edge 1: nodes 1 -> 2
         v              2:       1 -> 4 
         |              3:       1 -> 5
@@ -3016,7 +3049,8 @@ Pyramid:
              w         3:        3 -8 -2             1 5 4  
                        4:        4  7 -5             2 3 5  
                        5:        6  8 -7             3 4 5  
- @end example
+@end group
+@end example
 
 @c =========================================================================
 @c Programming notes
@@ -3029,8 +3063,8 @@ Pyramid:
 
 Gmsh was originally written in C, and later enhanced with various C++
 additions. The resulting code is a hybrid C/C++ beast, hopefully not too
-badly structured... The scripting language is parsed using lex and yacc
-(actually, flex and bison), while the GUI relies on OpenGL for the 3D
+badly structured... The scripting language is parsed using Lex and Yacc
+(actually, Flex and Bison), while the GUI relies on OpenGL for the 3D
 graphics and FLTK for the widget set. See @uref{http://www.opengl.org},
 @uref{http://www.mesa3d.org} and @uref{http://www.fltk.org} for more
 information.
@@ -3102,9 +3136,9 @@ with @file{utils/untabify}).
 If you think you have found a bug in Gmsh, you can report it by electronic
 mail to the Gmsh mailing list at @email{gmsh@@geuz.org}.  Please send as
 precise a description of the problem as you can, including sample input
-files that produce the bug (problem definition and mesh files). Don't forget
-to mention both the version of Gmsh and the version of your operation
-system (@pxref{Running Gmsh} to see how to get this information).
+files that produce the bug. Don't forget to mention both the version of Gmsh
+and the version of your operation system (@pxref{Command-line options} to
+see how to get this information).
 
 See the @file{TODO} file in the distribution to check the problems we
 already know about.
@@ -3151,12 +3185,18 @@ already know about.
 @itemize @bullet
 @item
 Install the `info' version of this user's guide! On your (Unix) system, this
-can be achieved by 1) copying all gmsh.info* files to the place where your
-info files live (usually /usr/info), and 2) issuing the command
-`install-info /usr/info/gmsh.info /usr/info/dir'. You will then be able to
-access the documentation with the command `info gmsh'. Note that particular
-sections ("nodes") can be accessed directly. For example, `info gmsh
-surfaces' or `info gmsh surf' will take you directly to @ref{Surfaces}.
+can be achieved by
+@enumerate
+@item
+copying all @file{gmsh.info*} files to the place where your info files live
+(usually @file{/usr/info}), and
+@item
+issuing the command @code{install-info /usr/info/gmsh.info /usr/info/dir}.
+@end enumerate
+You will then be able to access the documentation with the command
+@code{info gmsh}. Note that particular sections (`nodes') can be accessed
+directly. For example, @code{info gmsh surfaces} or @code{info gmsh surf}
+will take you directly to @ref{Surfaces}.
 @item
 Use emacs to edit your files, and load the C++ mode! This permits automatic
 syntax highlighting and easy indentation. Automatic loading of the C++ mode
diff --git a/doc/texinfo/shortcuts.texi b/doc/texinfo/shortcuts.texi
index fc9d8cc720e883fbb55efd82d4966ac50669c3ea..1f60e779203d71d5507e35bae8f4a865932e8c8c 100644
--- a/doc/texinfo/shortcuts.texi
+++ b/doc/texinfo/shortcuts.texi
@@ -48,7 +48,7 @@ save file as
 
 @end table
 
-
+@sp 1
 
 Other shortcuts:
 
diff --git a/tutorial/bgmesh.pos b/tutorial/bgmesh.pos
index 7125b2ba2d5575f95f1f17d0fc85eabf3a9ab75e..92c1c67a2c509a7d0c67fa1864b328d0f1cb23f3 100644
--- a/tutorial/bgmesh.pos
+++ b/tutorial/bgmesh.pos
@@ -1,14 +1,14 @@
 /********************************************************************* 
  *
- *  Gmsh tutorial 1 - appendix 3
+ *  Gmsh tutorial 1 - appendix 0
  * 
  *  2D background mesh
  *
  *********************************************************************/
 
 // This post-processing view contains scalar triangles. The values
-// represent the target characteristic mesh sizes to be applied to the
-// first tutorial, t1.geo.
+// represent the target characteristic mesh element sizes to be
+// applied to the first tutorial, t1.geo.
 //
 // There are two ways to use this view as a background mesh:
 //
diff --git a/tutorial/t1.geo b/tutorial/t1.geo
index 889bc181061ed3bab6adddcb3595d33e3afe345d..3e009c7fb0900e9c52b6b00c34c1d9570be2e15f 100644
--- a/tutorial/t1.geo
+++ b/tutorial/t1.geo
@@ -2,58 +2,46 @@
  *
  *  Gmsh tutorial 1
  * 
- *  Variables, Elementary entities (Points, Lines, Surfaces), Physical
- *  entities (Points, Lines, Surfaces), Background mesh
+ *  Variables, elementary entities (points, lines, surfaces), physical
+ *  entities (points, lines, surfaces), background mesh
  *
  *********************************************************************/
 
-// All geometry description in Gmsh is made by means of a special
-// language (looking somewhat similar to C). The simplest construction
-// of this language is the 'affectation'. 
+// The simplest construction of Gmsh's scripting language is the
+// `affectation'. The following command defines a new variable `lc':
 
-// The following command (all commands end with a semi colon) defines
-// a variable called 'lc' and affects the value 0.007 to 'lc':
+lc = 0.007;
 
-lc = 0.007 ;
+// This variable can then for example be used in the definition of
+// Gmsh's simplest elementary entity, a `Point'. A Point is defined by
+// a list of four numbers: its three coordinates (X, Y and Z), and a
+// characteristic length which sets the target element size at the
+// point:
 
-// This newly created variable can be used to define the first Gmsh
-// elementary entity, a 'Point'. A Point is defined by a list of four
-// numbers: its three coordinates (x, y and z), and a characteristic
-// length which sets the target mesh size at the point:
+Point(1) = {0, 0, 0, 9.e-1 * lc};
 
-Point(1) = {0,  0,  0, 9.e-1 * lc} ;
-
-// The mesh size is defined as the length of the segments for lines,
-// the radii of the circumscribed circles for triangles and the radii
-// of the circumscribed spheres for tetrahedra, respectively. The
-// actual distribution of the mesh sizes is obtained by interpolation
-// of the characteristic lengths prescribed at the points. There are
-// also other possibilities to specify characteristic lengths:
-// attractors (see t7.geo) and background meshes (see bgmesh.pos).
+// The actual distribution of the mesh element sizes is then obtained
+// by interpolation of these characteristic lengths throughout the
+// geometry. There are also other possibilities to specify
+// characteristic lengths: attractors (see `t7.geo') and background
+// meshes (see `bgmesh.pos').
 
 // As can be seen in the previous definition, more complex expressions
-// can be constructed from variables. Here, the product of the
-// variable 'lc' by the constant 9.e-1 is given as the fourth argument
-// of the list defining the point.
-//
-// The following general syntax rule is applied for the definition of
-// all geometrical entities:
-//
-//    "If a number defines a new entity, it is enclosed between
-//    parentheses. If a number refers to a previously defined entity,
-//    it is enclosed between braces."
-//
-// Three additional points are then defined:
+// can be constructed from variables and floating point
+// constants. Here, the product of the variable `lc' by the constant
+// 9.e-1 is given as the fourth argument of the list defining the
+// point.
+
+// We can then define some additional points as well as our first
+// curve.  Curves are Gmsh's second type of elementery entities, and,
+// amongst curves, straight lines are the simplest. A straight line is
+// defined by a list of point numbers. In the commands below, for
+// example, the line 1 starts at point 1 and ends at point 2:
 
 Point(2) = {.1, 0,  0, lc} ;
 Point(3) = {.1, .3, 0, lc} ;
 Point(4) = {0,  .3, 0, lc} ;
 
-// The second elementary geometrical entity in Gmsh is the
-// curve. Amongst curves, straight lines are the simplest. A straight
-// line is defined by a list of point numbers. For example, line 1
-// starts at point 1 and ends at point 2:
-
 Line(1) = {1,2} ;
 Line(2) = {3,2} ;
 Line(3) = {3,4} ;
@@ -63,26 +51,27 @@ Line(4) = {4,1} ;
 // simple rectangular surface from the four lines defined above, a
 // line loop has first to be defined. A line loop is a list of
 // connected lines, a sign being associated with each line (depending
-// on the orientation of the line).
+// on the orientation of the line):
 
 Line Loop(5) = {4,1,-2,3} ;
 
-// The surface is then defined as a list of line loops (only one
-// here):
+// We can then define the surface as a list of line loops (only one
+// here, since there are no holes--see `t4.geo'):
 
 Plane Surface(6) = {5} ;
 
 // At this level, Gmsh knows everything to display the rectangular
 // surface 6 and to mesh it. But a supplementary step is needed in
 // order to assign region numbers to the various elements in the mesh
-// (the points, the lines and the triangles discretizing points 1 to
-// 4, lines 1 to 4 and surface 6). This is achieved by the definition
-// of Physical entities. Physical entities will group elements
-// belonging to several elementary entities by giving them a common
-// number (a region number), and specifying their orientation.
-//
-// For example, the two points 1 and 2 can be grouped into the
-// physical entity 1:
+// (i.e. to the points, the line segments and the triangles
+// discretizing points 1 to 4, lines 1 to 4 and surface 6,
+// respectively). This is achieved by the definition of `physical
+// entities'. Physical entities will group elements belonging to
+// several elementary entities by giving them a common number (a
+// region number), and specifying their orientation.
+
+// We can for example group the points 1 and 2 into the physical
+// entity 1:
 
 Physical Point(1) = {1,2} ;
 
@@ -91,14 +80,16 @@ Physical Point(1) = {1,2} ;
 // for line or surface elements:
 
 Physical Line(10) = {1,2,4} ;
+
 MySurface = 100;
 Physical Surface(MySurface) = {6} ;
 
-// All the line elements which will be created during the mesh of
-// lines 1, 2 and 4 will be saved in the output file with the region
-// number 10; and all the triangular elements resulting from the
-// discretization of surface 6 will be given the region number 100.
-//
-// If no physical groups are defined, all the elements in the mesh are
-// directly saved with their default orientation and with a region
-// number equal to their elementary region number.
+// All the line elements created during the meshing of lines 1, 2 and
+// 4 will be saved in the output file with the region number 10; and
+// all the triangular elements resulting from the discretization of
+// surface 6 will be given the region number 100.
+
+// Note that, if no physical entities are defined, all the elements in
+// the mesh will be directly saved with their default orientation and
+// with a region number equal to the number of the elementary entity
+// they discretize.
diff --git a/tutorial/t2.geo b/tutorial/t2.geo
index 875125a24ba523a0bd11c633f35107385b560abb..3b0ea96d60cbc6af372c6696b518420b5f3e7f71 100644
--- a/tutorial/t2.geo
+++ b/tutorial/t2.geo
@@ -2,63 +2,60 @@
  *
  *  Gmsh tutorial 2
  * 
- *  Includes, Geometrical transformations, Extruded geometries,
- *  Elementary entities (Volumes), Physical entities (Volumes)
+ *  Includes, geometrical transformations, extruded geometries,
+ *  elementary entities (volumes), physical entities (volumes)
  *
  *********************************************************************/
 
-// The first tutorial file will serve as a basis to construct this
-// one. It can be included with:
+// We first include the previous tutorial file, in order to use it as
+// a basis for this one:
 
-Include "t1.geo" ;
+Include "t1.geo";
 
-// There are several possibilities to build a more complex geometry
-// from the one previously defined in 't1.geo'.
-//
-// New points, lines and surfaces can first be directly defined in the
-// same way as in 't1.geo':
+// We can then add new points and lines and surfaces in the same way
+// as we did in `t1.geo':
 
-Point(5) = {0, .4, 0, lc} ;
-Line(5) = {4, 5} ;
+Point(5) = {0, .4, 0, lc};
+Line(5) = {4, 5};
 
-// But Gmsh also provides geometrical transformation mechanisms to
-// move (translate, rotate, ...), add (translate, rotate, ...) or
-// extrude (translate, rotate) elementary geometrical entities. For
-// example, the point 3 can be moved by 0.05 units on the left with:
+// But Gmsh also provides tools to tranform (translate, rotate, etc.)
+// elementary entities or copies of elementary entities. For example,
+// the point 3 can be moved by 0.05 units on the left with:
 
-Translate {-0.05,0,0} { Point{3} ; }
+Translate {-0.05,0,0} { Point{3}; }
 
 // The resulting point can also be duplicated and translated by 0.1
 // along the y axis:
 
-Translate {0,0.1,0} { Duplicata{ Point{3} ; } }
+Translate {0,0.1,0} { Duplicata{ Point{3}; } }
 
-// Of course, translation, rotation and extrusion commands not only
-// apply to points, but also to lines and surfaces. The following
-// command extrudes surface 6 defined in 't1.geo', as well as a new
-// surface 11, along the z axis by 'h':
+// Of course, these transformation commands not only apply to points,
+// but also to lines and surfaces. The following command extrudes the
+// surface 6 defined in `t1.geo', as well as a new surface 11, along
+// the z axis:
 
-h = 0.12 ;
-Extrude Surface { 6, {0, 0, h} } ;
+h = 0.12;
+Extrude Surface { 6, {0, 0, h} };
 
-Line(7) = {3, 6} ; Line(8) = {6,5} ; Line Loop(10) = {5,-8,-7,3};
+Line(7) = {3, 6};
+Line(8) = {6,5};
 
+Line Loop(10) = {5,-8,-7,3};
 Plane Surface(11) = {10};
 
-Extrude Surface { 11, {0, 0, h} } ;
+Extrude Surface { 11, {0, 0, h} };
 
 // All these geometrical transformations automatically generate new
-// elementary entities. The following commands permit to specify
-// manually a characteristic length for some of the automatically
-// created points:
+// elementary entities. The following command permits to specify
+// manually a characteristic length for some of the new points:
 
-Characteristic Length{6,22,2,3,16,12} = lc * 2 ;
+Characteristic Length {6, 22, 2, 3, 16, 12} = lc * 2;
 
-// If the transformation tools are handy to create complex geometries,
-// it is sometimes useful to generate the flat geometry, consisting
-// only of the explicit list elementary entities. This can be achieved
-// by selecting the 'File->Save as->Gmsh unrolled geometry' menu or by
-// typing
+// Note that, if the transformation tools are handy to create complex
+// geometries, it is also sometimes useful to generate the `flat'
+// geometry, with an explicit list of all elementary entities. This
+// can be achieved by selecting the `File->Save as->Gmsh unrolled
+// geometry' menu or by typing
 //
 // > gmsh t2.geo -0
 //
@@ -66,9 +63,9 @@ Characteristic Length{6,22,2,3,16,12} = lc * 2 ;
 
 // Volumes are the fourth type of elementary entities in Gmsh. In the
 // same way one defines line loops to build surfaces, one has to
-// define surface loops to build volumes. The following volumes are
-// very simple, without holes (and thus consist of only one surface
-// loop):
+// define surface loops (i.e. `shells') to build volumes. The
+// following volumes don't have holes and thus consist of single
+// surface loops:
 
 Surface Loop(145) = {121,11,131,135,139,144};
 Volume(146) = {145};
@@ -76,11 +73,8 @@ Volume(146) = {145};
 Surface Loop(146) = {121,6,109,113,117,122};
 Volume(147) = {146};
 
-// To save all volumic (tetrahedral) elements of volume 146 and 147
-// with the associate region number 1, a Physical Volume must be
-// defined:
-
-Physical Volume (1) = {146,147} ;
+// To save all the tetrahedra discretizing the volumes 146 and 147
+// with a common region number, we finally define a physical
+// volume:
 
-// Congratulations! You've created your first fully unstructured
-// tetrahedral 3D mesh!
+Physical Volume (1) = {146,147};
diff --git a/tutorial/t3.geo b/tutorial/t3.geo
index 4931c957e4dc2c1df40099d25c2af98b1a1a4c57..38953e93a8983da037198093cbe9b057868c8498 100644
--- a/tutorial/t3.geo
+++ b/tutorial/t3.geo
@@ -1,54 +1,56 @@
-/********************************************************************* 
+/*********************************************************************
  *
  *  Gmsh tutorial 3
  * 
- *  Extruded meshes, Options
+ *  Extruded meshes, options
  *
  *********************************************************************/
 
-// Again, the first tutorial example is included:
+// Again, we start by including the first tutorial:
 
-Include "t1.geo" ;
+Include "t1.geo";
 
-// As in 't2.geo', an extrusion along the z axis will be performed:
+// As in `t2.geo', we plan to perform an extrusion along the z axis.
+// But here, instead of only extruding the geometry, we also want to
+// extrude the 2D mesh. This is done with the same `Extrude' command,
+// but by specifying the number of layers (4 in this case, with 8, 4,
+// 2 and 1 subdivisions, respectively), with volume numbers 9000 to
+// 9003 and respective heights equal to h/4:
 
-h = 0.1 ;
-
-// But contrary to 't2.geo', not only the geometry will be extruded,
-// but also the 2D mesh. This is done with the same Extrude command,
-// but by specifying the number of layers (here, there will be four
-// layers, of respectively 8, 4, 2 and 1 elements in depth), with
-// volume numbers 9000 to 9003 and respective heights equal to h/4:
+h = 0.1;
 
 Extrude Surface { 6, {0,0,h} } { 
-  Layers { {8,4,2,1}, {9000:9003}, {0.25,0.5,0.75,1} } ; 
-} ;
+  Layers { {8,4,2,1}, {9000:9003}, {0.25,0.5,0.75,1} }; 
+};
 
-// The extrusion can also performed with a rotation instead of a
+// The extrusion can also be performed with a rotation instead of a
 // translation, and the resulting mesh can be recombined into prisms
-// (wedges) if the surface elements are triangles, or hexahedra if the
-// surface elements are quadrangles. All rotations are specified by an
-// axis direction ({0,1,0}), an axis point ({-0.1,0,0.1}) and a
-// rotation angle (-Pi/2):
+// (wedges). All rotations are specified by an axis direction
+// ({0,1,0}), an axis point ({-0.1,0,0.1}) and a rotation angle
+// (-Pi/2):
 
 Extrude Surface { 122, {0,1,0} , {-0.1,0,0.1} , -Pi/2 } { 
-  Recombine ; Layers { 7, 9004, 1 } ; 
+  Recombine; Layers { 7, 9004, 1 }; 
 };
 
-// A translation ({-2*h,0,0}) and a rotation ({1,0,0} , {0,0.15,0.25},
-// Pi/2) can be combined:
+// Note that a translation ({-2*h,0,0}) and a rotation ({1,0,0},
+// {0,0.15,0.25}, Pi/2) can also be combined:
 
 Extrude Surface {news-1, {-2*h,0,0}, {1,0,0} , {0,0.15,0.25} , Pi/2}{ 
   Layers {10,9004,1}; Recombine; 
 };
 
+// We finally define a new physical volume to save all the tetrahedra
+// with a common region number (101):
+
 Physical Volume(101) = {9000:9004};
 
-// All interactive options can also be set directly in the input file.
-// For example, the following lines define a global characteristic
-// length factor, redefine some background colors, disable the display
-// of the axes, and select an initial viewpoint in XYZ mode (disabling
-// the interactive trackball-like rotation mode):
+// Let us now change some options... Since all interactive options are
+// accessible in Gmsh's scripting language, we can for example define
+// a global characteristic length factor, redefine some background
+// colors, disable the display of the axes, and select an initial
+// viewpoint in XYZ mode (disabling the interactive trackball-like
+// rotation mode) directly in the input file:
 
 Mesh.CharacteristicLengthFactor = 4;
 General.Color.Background = {120,120,120};
@@ -65,19 +67,18 @@ General.RotationX = 10;
 General.RotationY = 70;
 General.TranslationX = -0.2;
 
-// Note: all colors can be defined literally or numerically, i.e.
-// 'General.Color.Background = Red' is equivalent to
-// 'General.Color.Background = {255,0,0}'. As with user-defined
-// variables, the options can be used either as right hand or left
-// hand sides, so that
+// Note that all colors can be defined literally or numerically, i.e.
+// `General.Color.Background = Red' is equivalent to
+// `General.Color.Background = {255,0,0}'; and that, as with
+// user-defined variables, the options can be used either as right or
+// left hand sides, so that the following command will set the
+// surface color to the same color as the points:
 
 Geometry.Color.Surfaces = Geometry.Color.Points;
 
-// will assign the color of the surfaces in the geometry to the same
-// color as the points.
-
-// A click on the '?'  button in the status bar of the graphic window
-// will dump all current options to the terminal. To save all
-// available options to a file, use the 'File->Save as->Gmsh options'
+// You can click on the `?'  button in the status bar of the graphic
+// window to see the current values of all options. To save all the
+// options to a file, you can use the `File->Save as->Gmsh options'
 // menu. To save the current options as the default options for all
-// future Gmsh sessions, use the 'Tools->Options->Save' button.
+// future Gmsh sessions, you should use the `Tools->Options->Save'
+// button.
diff --git a/tutorial/t4.geo b/tutorial/t4.geo
index 78da214665b112fc484cfbfda95ef7618fdb7eef..85d2b0c23afa84b18ecc7b1d625b069df6b8650e 100644
--- a/tutorial/t4.geo
+++ b/tutorial/t4.geo
@@ -2,76 +2,26 @@
  *
  *  Gmsh tutorial 4
  * 
- *  Built-in functions, Holes, Strings, Mesh color
+ *  Built-in functions, holes, strings, mesh color
  *
  *********************************************************************/
 
-cm = 1e-02 ;
-
-e1 = 4.5*cm ; e2 = 6*cm / 2 ; e3 =  5*cm / 2 ;
-
-h1 = 5*cm ; h2 = 10*cm ; h3 = 5*cm ; h4 = 2*cm ; h5 = 4.5*cm ;
-
-R1 = 1*cm ; R2 = 1.5*cm ; r = 1*cm ;
-
-ccos = ( -h5*R1 + e2 * Hypot(h5,Hypot(e2,R1)) ) / (h5^2 + e2^2) ;
-ssin = Sqrt(1-ccos^2) ;
-
-Lc1 = 0.01 ;
-Lc2 = 0.003 ;
-
-// A whole set of operators can be used, which can be combined in all
-// the expressions. These operators are defined in a similar way to
-// their C or C++ equivalents (with the exception of '^'):
-//
-//   '-' (in both unary and binary versions, i.e. as in '-1' and '1-2')
-//   '!' (the negation)
-//   '+'
-//   '*'
-//   '/'
-//   '%' (the rest of the integer division)
-//   '<'
-//   '>'
-//   '<='
-//   '>='
-//   '=='
-//   '!='
-//   '&&' (and)
-//   '||' (or)
-//   '||' (or)
-//   '^' (power)
-//   '?' ':' (the ternary operator)
-//
-// Grouping is done, as usual, with parentheses.
-//
-// In addition to these operators, all C mathematical functions can
-// also be used (note the first capital letter), i.e.
-// 
-//   Exp(x)
-//   Log(x)
-//   Log10(x)
-//   Sqrt(x)
-//   Sin(x)
-//   Asin(x)
-//   Cos(x)
-//   Acos(x)
-//   Tan(x)
-//   Atan(x)
-//   Atan2(x,y)
-//   Sinh(x)
-//   Cosh(x)
-//   Tanh(x)
-//   Fabs(x)
-//   Floor(x)
-//   Ceil(x)
-//   Fmod(x,y)
-// 
-// as well as a series of other functions:
-//
-//   Hypot(x,y)   computes Sqrt(x^2+y^2)
-//   Rand(x)      generates a random number in [0,x]
-//
-// The only predefined constant in Gmsh is Pi.
+// As usual, we start by defining some variables, some points and some
+// lines:
+
+cm = 1e-02;
+
+e1 = 4.5*cm; e2 = 6*cm / 2; e3 =  5*cm / 2;
+
+h1 = 5*cm; h2 = 10*cm; h3 = 5*cm; h4 = 2*cm; h5 = 4.5*cm;
+
+R1 = 1*cm; R2 = 1.5*cm; r = 1*cm;
+
+ccos = ( -h5*R1 + e2 * Hypot(h5,Hypot(e2,R1)) ) / (h5^2 + e2^2);
+ssin = Sqrt(1-ccos^2);
+
+Lc1 = 0.01;
+Lc2 = 0.003;
 
 Point(1) = { -e1-e2, 0.0  , 0.0 , Lc1};
 Point(2) = { -e1-e2, h1   , 0.0 , Lc1};
@@ -105,15 +55,18 @@ Point(25)= {  0 , h1+h3-R2,    0.0 , Lc2};
 Line(1)  = {1 ,17};
 Line(2)  = {17,16};
 
-// All curves are not straight lines... Circles are defined by a list
-// of three point numbers, which represent the starting point, the
-// center and the end point, respectively. All circles have to be
-// defined in the trigonometric (counter-clockwise) sense.  Note that
-// the 3 points should not be aligned (otherwise the plane in which
-// the circle lies has to be defined, by 'Circle(num) =
-// {start,center,end} Plane {nx,ny,nz}').
+// Since not all curves are straight lines, Gmsh provides many other
+// curve primitives: splines, B-splines, circle arcs, ellipse arcs,
+// etc. Here we define a new circle arc, starting at point 14 and
+// ending at point 16, and with the circle's center being the point
+// 15:
 
 Circle(3) = {14,15,16};
+ 
+// Note that, in Gmsh, circle arcs should always be stricly smaller
+// than Pi. We can then define additional lines and circles, as well
+// as a new surface:
+
 Line(4)  = {14,13};
 Line(5)  = {13,12};
 Line(6)  = {12,11};
@@ -135,34 +88,30 @@ Line(20) = {21,22};
 Line Loop(21) = {17,-15,18,19,-20,16};
 Plane Surface(22) = {21};
 
-// The surface is made of two line loops, i.e. it has one hole:
+// But we still need to define the exterior surface. Since it has a
+// hole, its definition now requires two lines loops:
 
 Line Loop(23) = {11,-12,13,14,1,2,-3,4,5,6,7,-8,9,10};
 Plane Surface(24) = {23,21};
 
-Physical Surface(1) = {22};
-Physical Surface(2) = {24};
-
-// You can add some comments by simply embedding a post-processing
-// view with some strings...
+// Finally, we can add some comments by simply embedding a
+// post-processing view containg some strings, and change the color of
+// some mesh entities:
 
 View "comments" {
+  // 10 pixels from the left and 15 pixels from the top of the graphic
+  // window:
   T2(10,15,0){"File created on Fri Oct 18 23:50:20 2002"};
+
+  // 10 pixels from the left and 10 pixels from the bottom of the
+  // graphic window:
   T2(10,-10,0){"Copyright (C) My Company"};
+
+  // in the model, at (X,Y,Z) = (0.0,0.11,0.0):
   T3(0,0.11,0,0){"Hole"};
 };
 
-// This will put the strings
-// - "File ..." 10 pixels from the left and 15 pixels from the top of
-//   the graphic window;
-// - "Copyright ..." 10 pixels from the left and 10 pixels from the
-//   bottom of the graphic window; and
-// - "Hole" in your model, at (x,y,z)=(0.0,0.11,0.0).
-
-// You can also change the color of the mesh entities for each
-// curve/surface:
-
-Color White{ Surface{ 22 } ; }
-Color Purple{ Surface{ 24 } ; }
-Color Red{ Line{ 1:14 } ; }
-Color Yellow{ Line{ 15:20 } ; }
+Color White{ Surface{ 22 }; }
+Color Purple{ Surface{ 24 }; }
+Color Red{ Line{ 1:14 }; }
+Color Yellow{ Line{ 15:20 }; }
diff --git a/tutorial/t5.geo b/tutorial/t5.geo
index f5521ab8a9abb7733a5652a0afbe656b393e5580..e23dff7086a2ac0238095276caf32660f80faef1 100644
--- a/tutorial/t5.geo
+++ b/tutorial/t5.geo
@@ -2,35 +2,35 @@
  *
  *  Gmsh tutorial 5
  * 
- *  Characteristic lengths, Arrays of variables, Functions, Loops
+ *  Characteristic lengths, arrays of variables, functions, loops
  *
  *********************************************************************/
 
-// This defines some characteristic lengths:
+// Again, we start be defining some characteristic lengths:
 
 lcar1 = .1;
 lcar2 = .0005;
 lcar3 = .055;
 
-// In order to change these lengths globally (without changing the
-// file), a global scaling factor for all characteristic lengths can
-// be specified on the command line with the option '-clscale' (or
-// with the option Mesh.CharacteristicLengthFactor). For example,
-// with:
+// If we wanted to change these lengths globally (without changing the
+// above definitions), we could give a global scaling factor for all
+// characteristic lengths on the command line with the `-clscale'
+// option (or with `Mesh.CharacteristicLengthFactor' in an option
+// file). For example, with:
 //
 // > gmsh t5 -clscale 1
 //
-// this example produces a mesh of approximately 2000 nodes and
-// 10,000 tetrahedra (in 3 seconds on an alpha workstation running at
-// 666MHz). With 
+// this input file produces a mesh of approximately 2,000 nodes and
+// 10,000 tetrahedra (in 3 seconds on a 666MHz alpha
+// workstation). With
 //
 // > gmsh t5 -clscale 0.2
 //
 // (i.e. with all characteristic lengths divided by 5), the mesh
-// counts approximately 170,000 nodes and one million tetrahedra
-// (and the computation takes 16 minutes on the same machine :-( So
-// there is still a lot of work to do to achieve decent performance
-// with Gmsh...)
+// counts approximately 170,000 nodes and one million tetrahedra.
+
+// Let us proceed by defining some elementary entities, describing a
+// truncated cube:
 
 Point(1) = {0.5,0.5,0.5,lcar2}; Point(2) = {0.5,0.5,0,lcar1};
 Point(3) = {0,0.5,0.5,lcar1};   Point(4) = {0,0,0.5,lcar1}; 
@@ -58,18 +58,19 @@ Line Loop(34) = {7,3,8,9};           Plane Surface(35) = {34};
 Line Loop(36) = {10,-18,16,20,-4,8}; Plane Surface(37) = {36};
 Line Loop(38) = {-14,-13,-12,19};    Plane Surface(39) = {38};
 
-// Instead of using included files, one can also define functions. In
-// the following function, the reserved variable 'newp' is used, which
-// automatically selects a new point number. This number is chosen as
-// the highest current point number, plus one. Analogously to 'newp',
-// there exists a variable 'newreg' which selects the highest number
-// of all entities other than points, plus one.
-
-// Note: there are no local variables. This will be changed in a
-// future version of Gmsh.
+// Instead of using included files, let us now use a user-defined
+// function in order to carve some holes in the cube:
 
 Function CheeseHole 
 
+  // In the following commands we use the reserved variable name
+  // `newp', which automatically selects a new point number. This
+  // number is chosen as the highest current point number, plus
+  // one. (Note that, analogously to `newp', there also exists
+  // variables `newc', `news', `newv' and `newreg' which select the
+  // highest number of amongst curves, surfaces, volumes or
+  // any entities other than points, respectively.)
+
   p1 = newp; Point(p1) = {x,  y,  z,  lcar3} ;
   p2 = newp; Point(p2) = {x+r,y,  z,  lcar3} ;
   p3 = newp; Point(p3) = {x,  y+r,z,  lcar3} ;
@@ -91,8 +92,9 @@ Function CheeseHole
   c11 = newreg; Circle(c11) = {p4,p1,p6};
   c12 = newreg; Circle(c12) = {p6,p1,p7};
 
-// All surfaces are not plane... Here is the way to define ruled
-// surfaces (which have 3 or 4 borders):
+  // We need non-plane surfaces to define the spherical cheese
+  // holes. Here we use ruled surfaces, which can have 3 or 4
+  // borders:
 
   l1 = newreg; Line Loop(l1) = {c5,c10,c4};   Ruled Surface(newreg) = {l1};
   l2 = newreg; Line Loop(l2) = {c9,-c5,c1};   Ruled Surface(newreg) = {l2};
@@ -103,15 +105,14 @@ Function CheeseHole
   l7 = newreg; Line Loop(l7) = {c2,c7,c12};   Ruled Surface(newreg) = {l7};
   l8 = newreg; Line Loop(l8) = {-c6,-c9,c2};  Ruled Surface(newreg) = {l8};
 
-// Warning: surface meshes are generated by projecting a 2D mesh in
-// the mean plane of the surface. This gives nice results only if the
-// surface curvature is small enough. Otherwise you will have to cut
-// the surface in pieces.
+  // Please note that all surface meshes are generated by projecting a
+  // 2D planar mesh onto the surface, and that this method gives nice
+  // results only if the surface's curvature is relatively enough.
+  // If not, you will have to cut the surface in pieces. 
 
-// Arrays of variables can be manipulated in the same way as classical
-// variables. Warning: accessing an uninitialized element in an array
-// will produce an unpredictable result. Note that whole arrays can
-// also be instantly initialized (e.g. l[]={1,2,7} is valid).
+  // We then use an array of variables to store the surface loop's
+  // identification numbers for later reference (we will need these to
+  // define the final volume):
 
   theloops[t] = newreg ; 
 
@@ -123,55 +124,47 @@ Function CheeseHole
 
 Return
 
+// We can use a `For' loop to generate five holes in the cube:
 
 x = 0 ; y = 0.75 ; z = 0 ; r = 0.09 ;
 
-// A For loop is used to generate five holes in the cube:
-
 For t In {1:5}
 
   x += 0.166 ; 
   z += 0.166 ; 
 
-// This command calls the function CheeseHole. Note that, instead of
-// defining a function, we could have defined a file containing the
-// same code, and used the Include command to include this file.
-
   Call CheeseHole ;
 
-// A physical volume is defined for each cheese hole
+  // We define a physical volume for each cheese hole:
 
   Physical Volume (t) = thehole ;
  
-// The Printf function permits to print the value of variables on the
-// terminal, in a way similar to the 'printf' C function:
+  // We also print some variables on the terminal (note that, since
+  // all variables are treated internally as floating point numbers,
+  // the format string should only contain valid floating point format
+  // specifiers):
 
   Printf("Hole %g (center = {%g,%g,%g}, radius = %g) has number %g!",
 	 t, x, y, z, r, thehole) ;
 
-// Note: All Gmsh variables are treated internally as double precision
-// numbers. The format string should thus only contain valid double
-// precision number format specifiers (see the C or C++ language
-// reference for more details).
-
 EndFor
 
-// This is the surface loop for the exterior surface of the cube:
+// We can then define the surface loop for the exterior surface of the
+// cube:
 
 theloops[0] = newreg ;
 
 Surface Loop(theloops[0]) = {35,31,29,37,33,23,39,25,27} ;
 
-// The volume of the cube, without the 5 cheese holes, is defined by 6
-// surface loops (the exterior surface and the five interior loops).
-// To reference an array of variables, its identifier is followed by
-// '[]':
+// The volume of the cube, without the 5 cheese holes, is now defined
+// by 6 surface loops (the exterior surface and the five interior
+// loops).  To reference an array of variables, its identifier is
+// followed by '[]':
 
 Volume(186) = {theloops[]} ;
 
-// This physical volume assigns the region number 10 to the tetrahedra
-// paving the cube (but not the holes, whose elements were tagged from
-// 1 to 5 in the 'For' loop)
+// We finally define a physical volume for the elements discretizing
+// the cube, without the holes (whose elements were already tagged
+// with numbers 1 to 5 in the `For' loop):
 
 Physical Volume (10) = 186 ;
-
diff --git a/tutorial/t6.geo b/tutorial/t6.geo
index 7982117d9c5eb37a4e69631cc554599127752717..2f98fcb22be630aae0d9d3d33240008951594b46 100644
--- a/tutorial/t6.geo
+++ b/tutorial/t6.geo
@@ -6,6 +6,9 @@
  *
  *********************************************************************/
 
+// We start by defining a more complex geometry, using the same
+// commands as in the previous examples:
+
 r_int  = 0.05 ;
 r_ext  = 0.051 ;
 r_far  = 0.125 ;
@@ -129,9 +132,12 @@ Volume(143) = {142}; // inf b
 Surface Loop(144) = {89,-119,71,103,115};
 Volume(145) = {144}; // inf h
 
-// Transfinite line commands explicitly specify the number of points
-// and their distribution. 'Progression 2' means that each line
-// element in the series will be twice as long as the preceding one.
+// Once the geometry is defined, we then add transfinite mesh commands
+// in order to explicitly define a structured mesh.
+
+// 1. Transfinite line commands specify the number of points on the
+// curves and their distribution (`Progression 2' means that each line
+// element in the series will be twice as long as the preceding one):
 
 Transfinite Line{35,21,22,23,24,38,17,18,19,20} = nbpt_phi ;
 Transfinite Line{31,26,48,44,42} = nbpt_int Using Progression 0.88;
@@ -141,9 +147,10 @@ Transfinite Line{32,27,49,45,43} = nbpt_shell ;
 Transfinite Line{33,28,46,50,52} = nbpt_far Using Progression 1.2 ;
 Transfinite Line{34,29,51,47,53} = nbpt_inf Using Progression 1.05;
 
-// 2D transfinite entities are defined in respect to points. The
-// ordering of the points defines the ordering of the mesh elements.
-// A transfinite surface can have either 3 or 4 sides.
+// 2. Transfinite surfaces are defined by an ordered list of their
+// vertices (the ordering of these vertices defines the ordering of
+// the mesh elements). Note that a transfinite surface can only have 3
+// or 4 sides:
 
 Transfinite Surface{55} = {1,14,16,18};
 Transfinite Surface{57} = {14,2,19,16};
@@ -183,16 +190,9 @@ Transfinite Surface{103} = {24,23,25,26};
 Transfinite Surface{119} = {9,26,25};
 Transfinite Surface{117} = {13,5,25,26};
 
-// As with Extruded meshes, the Recombine command tells Gmsh to
-// recombine the simplices into quadrangles, prisms or hexahedra when
-// possible. A colon in a list acts as in the 'For' loop: all surfaces
-// having numbers between 55 and 127 are considered.
-
-Recombine Surface {55:127};
-
-// 3D transfinite entities are defined in respect to points. The
-// ordering of the points defines the ordering of the mesh elements.
-// A transfinite volume can have either 6 or 8 faces.
+// 3. Transfinite volumes are also defined by an ordered list of their
+// vertices (the ordering defines the ordering of the mesh elements).
+// A transfinite volume can only have 6 or 8 faces:
 
 Transfinite Volume{129} = {1,14,15,18,16,17};
 Transfinite Volume{131} = {17,16,14,15,20,19,2,10};
@@ -204,27 +204,30 @@ Transfinite Volume{141} = {7,22,21,8,24,23};
 Transfinite Volume{143} = {12,4,5,13,24,23,25,26};
 Transfinite Volume{145} = {8,24,23,9,26,25};
 
+// As with Extruded meshes, the `Recombine' command tells Gmsh to
+// recombine the simplices into quadrangles, prisms or hexahedra when
+// possible:
+
+Recombine Surface {55:127};
+
+// We finish by defing some physical entities:
+
 VolInt           = 1000 ;
-SurfIntPhi0      = 1001 ;
-SurfIntPhi1      = 1002 ;
+SurfIntPhi0      = 1001 ;  SurfIntPhi1      = 1002 ;
 SurfIntZ0        = 1003 ;
 
 VolShell         = 2000 ;
-SurfShellInt     = 2001 ;
-SurfShellExt     = 2002 ;
-SurfShellPhi0    = 2003 ;
-SurfShellPhi1    = 2004 ;
+SurfShellInt     = 2001 ;  SurfShellExt     = 2002 ;
+SurfShellPhi0    = 2003 ;  SurfShellPhi1    = 2004 ;
 SurfShellZ0      = 2005 ;
 LineShellIntPhi0 = 2006 ;
-LineShellIntPhi1 = 2007 ;
-LineShellIntZ0   = 2008 ;
+LineShellIntPhi1 = 2007 ;  LineShellIntZ0   = 2008 ;
 PointShellInt    = 2009 ;
 
 VolExt           = 3000 ;
 VolInf           = 3001 ;
 SurfInf          = 3002 ;
-SurfExtInfPhi0   = 3003 ;
-SurfExtInfPhi1   = 3004 ;
+SurfExtInfPhi0   = 3003 ;  SurfExtInfPhi1   = 3004 ;
 SurfExtInfZ0     = 3005 ;
 SurfInfRight     = 3006 ;
 SurfInfTop       = 3007 ;
diff --git a/tutorial/t7.geo b/tutorial/t7.geo
index e48517df39feefb6cb42eb7131a710fa2feb9d87..54fdfc739599e00efb2b0f52043ee00d3acb99b9 100644
--- a/tutorial/t7.geo
+++ b/tutorial/t7.geo
@@ -2,7 +2,7 @@
  *
  *  Gmsh tutorial 7
  * 
- *  Anisotropic meshes, Attractors
+ *  Anisotropic meshes, attractors
  *
  *********************************************************************/
 
diff --git a/tutorial/t8.geo b/tutorial/t8.geo
index f0d02a63686ab4086cb0c0b0d730de5b848f1f00..7765b8802e68d16d25da15fc03b4a17f3ca9c605 100644
--- a/tutorial/t8.geo
+++ b/tutorial/t8.geo
@@ -2,21 +2,18 @@
  *
  *  Gmsh tutorial 8
  * 
- *  Post-Processing, Scripting, Animations, Options
+ *  Post-processing, scripting, animations, options
  *
  *********************************************************************/
 
-// The first example is included, as well as some post-processing maps:
+// We first include `t1.geo' as well as some post-processing views:
 
 Include "t1.geo" ;
 Include "view1.pos" ;
 Include "view1.pos" ;
 Include "view4.pos" ;
 
-// Some general options are set (all the options specified
-// interactively can be directly specified in the ascii input
-// files. The current options can be saved into a file by selecting
-// 'File->Save as->Gmsh options').
+// We then set some general options:
 
 General.Trackball = 0 ;
 General.RotationX = 0 ;
@@ -29,7 +26,7 @@ General.Orthographic = 0 ;
 General.Axes = 0 ;
 General.SmallAxes = 0 ;
 
-// Some options are also specified for each post-processing view:
+// We also set some options for each post-processing view:
 
 v0 = PostProcessing.NbViews-4;
 v1 = v0+1;
@@ -71,10 +68,10 @@ View[v3].PositionY = View[v2].PositionY;
 View[v3].Width = View[v2].Width;
 View[v3].Height = View[v2].Height;
 
-// We loop from 1 to 255 with a step of 1 (to use a step different
-// from 1, just add a third argument in the list. For example, 'For
-// num In {0.5:1.5:0.1}' would increment num from 0.5 to 1.5 with a
-// step of 0.1).
+// We then loop from 1 to 255 with a step of 1. (To use a step
+// different from 1, just add a third argument in the list. For
+// example, `For num In {0.5:1.5:0.1}' would increment num from 0.5 to
+// 1.5 with a step of 0.1.)
 
 t = 0 ;
 
@@ -90,7 +87,7 @@ For num In {1:255}
   View[v0].RaiseZ += 0.01*t ;
 
   If (num == 3)
-    // We want to create 320x240 frames when num==3:
+    // We want to create 320x240 frames when num == 3:
     General.GraphicsWidth = 320 ; 
     General.GraphicsHeight = 240 ;
   EndIf
@@ -106,10 +103,8 @@ For num In {1:255}
     Draw; // draw the scene
 
     If ((num == 3) && (num2 < 10))
-      // The Sprintf function permits to create complex strings using
-      // variables (since all Gmsh variables are treated internally as
-      // double precision numbers, the format should only contain valid
-      // double precision number format specifiers):
+      // The `Print' command saves the graphical window; the `Sprintf'
+      // function permits to create the file names on the fly:
       Print Sprintf("t8-0%g.gif", num2);
       Print Sprintf("t8-0%g.jpg", num2);
     EndIf
@@ -122,9 +117,9 @@ For num In {1:255}
   EndFor
 
   If(num == 3)
-    // We could make a system call to generate the mpeg (uncomment the
-    // following of mpeg_encode is installed on your computer)
-
+    // We could make a system call here to generate the mpeg animation
+    // (uncomment the following of mpeg_encode is installed on your
+    // computer):
     // System "mpeg_encode t8.par" ;
   EndIf
 
diff --git a/tutorial/t9.geo b/tutorial/t9.geo
index ea7d7b535ee992860e887d69e8f2248f123940a8..6031af81f3d7a087646b084558e380f59b448e77 100644
--- a/tutorial/t9.geo
+++ b/tutorial/t9.geo
@@ -2,7 +2,7 @@
  *
  *  Gmsh tutorial 9
  * 
- *  Post-Processing, Plugins
+ *  Post-processing, plugins
  *
  *********************************************************************/
 
@@ -11,22 +11,23 @@
 // view, or create a new view based on previously loaded
 // views. Several default plugins are statically linked into Gmsh,
 // e.g. CutMap, CutPlane, CutSphere, Skin, Transform or Smooth.
+// Plugins can be controlled in the same way as other options: either
+// from the graphical interface (right click on the view button, then
+// `Plugins'), or from the command file.
 
-// Let's load a three-dimensional scalar view
+// Let us for include a three-dimensional scalar view:
 
 Include "view3.pos" ;
 
-// Plugins can be controlled in the same way as other options in
-// Gmsh. For example, the CutMap plugin (which extracts an isovalue
-// surface from a 3D scalar view) can either be called from the
-// graphical interface (right click on the view button, then
-// Plugins->CutMap), or from the command file:
+// We then set some options for the `CutMap' plugin (which extracts an
+// isovalue surface from a 3D scalar view) and run it:
 
 Plugin(CutMap).A = 0.67 ; // iso-value level
 Plugin(CutMap).iView = 0 ; // source view is View[0]
 Plugin(CutMap).Run ; 
 
-// The following runs the CutPlane plugin:
+// We also set some options for the `CutPlane' plugin (which computes
+// a section of a 3D view) and run it:
 
 Plugin(CutPlane).A = 0 ; 
 Plugin(CutPlane).B = 0.2 ; 
@@ -34,6 +35,8 @@ Plugin(CutPlane).C = 1 ;
 Plugin(CutPlane).D = 0 ; 
 Plugin(CutPlane).Run ; 
 
+// We finish by setting some view options and redrawing the scene:
+
 View[0].Light = 1;
 View[0].IntervalsType = 2;
 View[0].NbIso = 6;
@@ -42,4 +45,5 @@ View[0].SmoothNormals = 1;
 View[1].IntervalsType = 2;
 
 View[2].IntervalsType = 2;
+
 Draw;
diff --git a/tutorial/view1.pos b/tutorial/view1.pos
index d6562bebb9fc5033b80c1f2ee9721aecd5c7f697..2405437a554c3b9f5c900e30e6cb55b823e454ac 100644
--- a/tutorial/view1.pos
+++ b/tutorial/view1.pos
@@ -2,12 +2,12 @@
  *
  *  Gmsh tutorial 1 - appendix 1
  * 
- *  Scalar view
+ *  Scalar post-processing view
  *
  *********************************************************************/
 
-// In this view, there are only scalar triangles. There are 5 time
-// steps -> 3*5 = 15 values for each triangle.
+// This view contains scalar triangles. There are 5 time steps,
+// i.e. 3*5 = 15 values for each triangle.
 
 View "a scalar map" {
 ST(0.079090117,0.19794942,0,0.06966854,0.20076802,0,0.071449289,0.19423207,0){1206859.6,1570520.4,1594804.6,-2368529.7,-3162888.4,-3019964.8,1073015.3,1636334.6,1103926.4,1335740.9,1503948.1,2033518.7,-2359414.1,-3161601.9,-2921575.1};
diff --git a/tutorial/view2.pos b/tutorial/view2.pos
index 0cd798d2b422b223ef0f5dd2069970edfc6f3f5e..ad4f7e3c7d8459c04b2e8185b006ac2a4477f730 100644
--- a/tutorial/view2.pos
+++ b/tutorial/view2.pos
@@ -2,7 +2,7 @@
  *
  *  Gmsh tutorial 1 - appendix 2
  * 
- *  Vector view
+ *  Vector post-processing view
  *
  *********************************************************************/
 
diff --git a/tutorial/view3.pos b/tutorial/view3.pos
index e044f81e2df03f52badc57edc5908ed5387edc4d..8ab003f4fd04e5c6c49016412e393e4eab2fe148 100644
--- a/tutorial/view3.pos
+++ b/tutorial/view3.pos
@@ -1,3 +1,11 @@
+/********************************************************************* 
+ *
+ *  Gmsh tutorial 1 - appendix 3
+ * 
+ *  Scalar 3D post-processing view
+ *
+ *********************************************************************/
+
 View "a 3D scalar map" {
 SS(-1,-1,-0.25,-0.86742481,-0.86548068,-0.14483364,-1,-0.70523324,-0.21165758,-1,-0.77608598,0.00064487429){2.0422973,1.5085891,1.5222776,1.5844414};
 SS(0.13402468,0.11673163,-0.1460819,0,0,-0.25,0.29173763,0,-0.20843742,0.22032809,0,-9.1119885e-05){0.039337265,0.044304329,0.1134179,0.027339551};
diff --git a/tutorial/view4.pos b/tutorial/view4.pos
index aa36d9452a8698f6949ef5b9f8fd4b0df747b5c2..340cfffb892b028d573634410dad4f34bb838edb 100644
--- a/tutorial/view4.pos
+++ b/tutorial/view4.pos
@@ -1,3 +1,11 @@
+/********************************************************************* 
+ *
+ *  Gmsh tutorial 1 - appendix 4
+ * 
+ *  2D graphs, text annotations
+ *
+ *********************************************************************/
+
 View "e" {
 SP(0.05,0,0){3878262,3878766.4,3880412.5,3882811.2,3885521.1};
 SP(0.05,0.003,0){3881437.5,3877557.5,3870436.7,3859692,3844885.1};