This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH] Documentation markup fixes


This proposed patch tries to improve the documentation markup a bit.

The changes are:

* Use DocBook stylesheet absolute URL instead of plain file
This also makes DOCBOOK_XSL_DIR and the xsltproc search path parameter
unnecessary.  Note that if DocBook is properly installed, there is still
no network access necessary.

$ xmlcatalog \
    /etc/xml/catalog \
    http://docbook.sourceforge.net/release/xsl/current/epub3/chunk.xsl
file:/usr/share/xml/docbook/stylesheet/docbook-xsl/epub3/chunk.xsl

* Replace generated DocBook 4.2 declaration with 4.5
Some of the <inlineequation> markup generated by Texinfo requires
DocBook 4.5.  Probably Texinfo should declare DocBook 4.5 directly.

* Fix small </a> typo in scm2java.html

* A number of kawa.texi markup changes

    * Provide @stxlit for DocBook without bold formatting, because
<literal> does not support it

    * Avoid @var in @deffn, because it seems that Texinfo already
handles this, and would result in <replaceable> twice, which is invalid

    * Remove empty @subsection Array literals

    * Some @table fixes

    * Add empty paragraph in Index for DocBook, because it requires more
content than the index

With these changes kawa.xml now validates.

$ xmllint --valid --noout kawa.xml

Ron
Index: doc/Makefile.am
===================================================================
--- doc/Makefile.am	(revision 8899)
+++ doc/Makefile.am	(working copy)
@@ -65,6 +65,7 @@
 	$(MAKEINFO) -I=$(srcdir) --docbook $(srcdir)/kawa.texi -o - | \
 	sed \
 	-e 's|_002d|-|g' \
+	-e 's|"-//OASIS//DTD DocBook XML V4.2//EN" "http://www.oasis-open.org/docbook/xml/4.2/docbookx.dtd";|"-//OASIS//DTD DocBook XML V4.5//EN" "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd";|' \
 	-e 's|<book id="-" lang="en">|<book id="book" lang="en"><?dbhtml filename="toc.html"?>|' \
 	-e 's|<chapter label="" id="Top">|<chapter label="Top" id="Top"><?dbhtml filename="index.html"?>|' \
 	-e 's|id="Tutorial">|\0<?dbhtml filename="tutorial/index.html"?>|' \
@@ -84,11 +85,9 @@
 
 XSLT = xsltproc
 HTML_TARGET_DIRECTORY = $(builddir)/web
-# Either override this, or set up a symlink to the DocBook XSL stylesheets.
-DOCBOOK_XSL_DIR = ../../docbook-xsl
 
 $(HTML_TARGET_DIRECTORY)/index.html: kawa.xml Makefile
-	$(XSLT) --path $(DOCBOOK_XSL_DIR)/html$(pathsep)$(srcdir)/style \
+	$(XSLT) \
 	  --stringparam base.dir $(HTML_TARGET_DIRECTORY)  \
 	  --stringparam chunker.output.doctype-public "-//W3C//DTD HTML 4.01 Transitional//EN" \
 	  --stringparam chunker.output.encoding UTF-8 \
@@ -105,7 +104,7 @@
 	  --stringparam toc.section.depth 3 \
 	  --stringparam chunk.separate.lots 1 \
 	  --stringparam chunk.tocs.and.lots 1 \
-	  kawa.xsl kawa.xml
+	  style/kawa.xsl kawa.xml
 	mkdir -p $(HTML_TARGET_DIRECTORY)/style
 	cp $(srcdir)/style/kawa-logo.png $(srcdir)/style/*.css \
 	  $(HTML_TARGET_DIRECTORY)/style
@@ -117,7 +116,7 @@
 	  -e 's|<?dbhtml filename="tutorial/\([^".]*\)\.html|<?dbhtml filename="tutorial-\1.xhtml|'\
 	  -e 's|<?dbhtml filename="\([^"]*\)\.html|<?dbhtml filename="\1.xhtml|'\
 	  < $< | \
-	$(XSLT) --path $(DOCBOOK_XSL_DIR)/epub3$(pathsep)$(srcdir)/style \
+	$(XSLT) \
 	  --stringparam base.dir ebook/OEBPS/ \
 	  --stringparam html.script kawa-ebook.js \
 	  --stringparam html.stylesheet kawa.css \
@@ -136,7 +135,7 @@
 	  --stringparam toc.section.depth 3 \
 	  --stringparam chunk.separate.lots 1 \
 	  --stringparam chunk.tocs.and.lots 1 \
-	  kawa-epub.xsl -
+	  style/kawa-epub.xsl -
 	cp style/kawa-ebook.css ebook/OEBPS/kawa.css
 	cp style/kawa-ebook.js ebook/OEBPS/kawa-ebook.js
 	cp with-frames.html ebook/OEBPS/with-frames.html
Index: doc/kawa.texi
===================================================================
--- doc/kawa.texi	(revision 8899)
+++ doc/kawa.texi	(working copy)
@@ -47,9 +47,16 @@
 @end macro
 @end iftex
 
+@ifdocbook
 @macro stxlit{TEXT}
+@code{\TEXT\}
+@end macro
+@end ifdocbook
+@ifnotdocbook
+@macro stxlit{TEXT}
 @code{@b{\TEXT\}}
 @end macro
+@end ifnotdocbook
 
 @macro arbno{THING}
 \THING\@sup{*}
@@ -3998,15 +4005,15 @@
 
 The follow named constructor forms are supported:
 
-@table @asis
+@itemize
 @item @stxlit{#,(path} @var{path}@stxlit{)}
 @item @stxlit{#,(filepath} @var{path}@stxlit{)}
 @item @stxlit{#,(URI} @var{path}@stxlit{)}
 @item @stxlit{#,(symbol} @var{local-name} [@var{uri} [@var{prefix}]]@stxlit{)}
-@itemx @stxlit{#,(symbol} @var{local-name} @var{namespace}@stxlit{)}
+@item @stxlit{#,(symbol} @var{local-name} @var{namespace}@stxlit{)}
 @item @stxlit{#,(namespace} @var{uri} [@var{prefix}]@stxlit{)}
 @item @stxlit{#,(duration} @var{duration}@stxlit{)}
-@end table
+@end itemize
 
 @node Primitive expression syntax
 @section Primitive expression syntax
@@ -4864,7 +4871,7 @@
 
 @subsection Identifier predicates
 
-@deffn Procedure {identifier?} @var{obj}
+@deffn Procedure {identifier?} obj
 Return @true{} if @var{obj} is an identifier, i.e., a syntax object
 representing an identifier, and @false{} otherwise.
 
@@ -4899,7 +4906,7 @@
 compare identifiers according to their @emph{intended use} as free
 references or bound identifiers in a given context.
 
-@deffn Procedure {bound-identifier=?} @vari{id} @varii{id}
+@deffn Procedure {bound-identifier=?} id id
 @vari{id} and @varii{id} must be identifiers.
 
 The procedure @func{bound-identifier=?} returns @true{} if a binding for
@@ -4917,7 +4924,7 @@
 identifiers.
 @end deffn
 
-@deffn Procedure {free-identifier=?} @vari{id} @varii{id}
+@deffn Procedure {free-identifier=?} id id
 @vari{id} and @varii{id} must be identifiers.
 
 The @func{free-identifier=?} procedure returns @true{} if and only if
@@ -5040,8 +5047,8 @@
 
 @subsection Syntax-object and datum conversions
 
-@deffn Procedure {syntax->datum} @var{syntax-object}
-@deffnx {Deprecated procedure} {syntax-object->datum} @var{syntax-object}
+@deffn Procedure {syntax->datum} syntax-object
+@deffnx {Deprecated procedure} {syntax-object->datum} syntax-object
 Strip all syntactic information from a syntax object and returns the
 corresponding Scheme datum.
 
@@ -5057,8 +5064,8 @@
 @end example
 @end deffn
 
-@deffn Procedure {datum->syntax} @var{template-id} @var{datum} [@var{srcloc}]
-@deffnx {Deprecated procedure} {datum->syntax-object} @var{template-id} @var{datum}
+@deffn Procedure {datum->syntax} template-id datum [srcloc]
+@deffnx {Deprecated procedure} {datum->syntax-object} template-id datum
 @var{template-id} must be a template identifier and @var{datum} should
 be a datum value.
 
@@ -5259,7 +5266,7 @@
 
 @subsection Convenience forms
 
-@deffn Syntax with-syntax ((@var{pattern} @stxref{expression}) @dots{}) @stxref{body}
+@deffn Syntax with-syntax ((pattern @stxref{expression}) @dots{}) @stxref{body}
 The @func{with-syntax} form is used to bind pattern variables, just as
 @func{let} is used to bind variables.  This allows a transformer to
 construct its output in separate pieces, then put the pieces together.
@@ -5317,7 +5324,7 @@
 @end example
 @end deffn
 
-@deffn Syntax quasisyntax @var{template}
+@deffn Syntax quasisyntax template
 @deffnx {Auxiliary Syntax} unsyntax
 @deffnx {Auxiliary Syntax} unsyntax-splicing
 The @func{quasisyntax} form is similar to @func{syntax}, but it allows
@@ -5609,7 +5616,7 @@
 @end deffn
 
 @deffn Syntax cond @atleastone{@stxref{cond-clause}}
-@deffnx Syntax cond @arbno{@stxref{cond-clause}} @stxlit{(else} @meta{expression}@dots{}@stxlit{)} 
+@deffnx Syntax cond @arbno{@stxref{cond-clause}} @stxlit{(else} expression@dots{}@stxlit{)} 
 
 @display
 @stxdef{cond-clause} @stxlit{(}@stxref{test-expression} @arbno{@stxref{expression}}@stxlit{)}
@@ -6463,7 +6470,7 @@
 @end example
 @end deffn
 
-@deffn Syntax guard @var{variable} @atleastone{@stxref{cond-clause}} @stxref{body}
+@deffn Syntax guard variable @atleastone{@stxref{cond-clause}} @stxref{body}
 The @meta{body} is evaluated with an exception handler that binds
 the raised object to @var{variable} and, within the scope of that binding,
 evaluates the clauses as if they were the clauses of a @code{cond} expression.
@@ -6649,8 +6656,8 @@
 
 The procedure @code{string-cursor-for-each} is documented under @ref{String Cursor API}.
 
-@deffn Procedure map @var{proc} sequence@sub{1} sequence@sub{2} ...
-@deffnx Procedure for-each @var{proc} sequence@sub{1} sequence@sub{2} ...
+@deffn Procedure map proc sequence@sub{1} sequence@sub{2} ...
+@deffnx Procedure for-each proc sequence@sub{1} sequence@sub{2} ...
 The @code{map} procedure applies @var{proc} element-wise to the elements
 of the @var{sequence}s and returns a list of the results, in order.
 The dynamic order in which @var{proc} is applied to
@@ -6736,7 +6743,7 @@
 inline the iteration code.
 @end deffn
 
-@deffn Procedure vector-map @var{proc} @vari{sequence} @varii{sequence} @dots{}
+@deffn Procedure vector-map proc sequence sequence @dots{}
 Same as the @code{map} procedure, except the result is a vector.
 (Traditionally, these arguments were restricted to vectors,
 but Kawa allows sequences, including lists, Java arrays, and strings.)
@@ -6762,7 +6769,7 @@
 @end example
 @end deffn
 
-@deffn Procedure vector-for-each @var{proc} @vari{vector} @varii{vector} @dots{}
+@deffn Procedure vector-for-each proc vector vector @dots{}
 Mostly the same as @code{for-each},
 however the arguments should be generalized vectors.
 Specifically, they should implement @code{java.util.List}
@@ -6928,7 +6935,7 @@
 @func{equal?}) if and only if their names are spelled the same way.  A
 symbol literal is formed using @func{quote}.
 
-@deffn Procedure {symbol?} @var{obj}
+@deffn Procedure {symbol?} obj
 Return @true{} if @var{obj} is a symbol, @false{} otherwise.
 
 @example
@@ -6941,7 +6948,7 @@
 @end example
 @end deffn
 
-@deffn Procedure {symbol->string} @var{symbol}
+@deffn Procedure {symbol->string} symbol
 Return the name of @var{symbol} as an immutable string.
 
 @example
@@ -6951,7 +6958,7 @@
 @end example
 @end deffn
 
-@deffn Procedure {string->symbol} @var{string}
+@deffn Procedure {string->symbol} string
 Return the symbol whose name is @var{string}.
 
 @example
@@ -7094,7 +7101,7 @@
 Returns @code{#!null} if the symbol is uninterned.
 @end deffn
 
-@deffn Procedure {symbol=?} @vari{symbol} @varii{symbol} @variii{symbol} @dots{}
+@deffn Procedure {symbol=?} symbol symbol symbol @dots{}
 Return @true{} if the symbols are equivalent as symbols,
 i.e., if their local-names and namespace-uris are the same.
 They may have different values of @code{symbol-prefix} and @code{symbol-namespace}.
@@ -7894,9 +7901,9 @@
 @node Arithmetic operations
 @section Arithmetic operations
 
-@deffn Procedure {real-valued?} @var{obj}
-@deffnx Procedure {rational-valued?} @var{obj}
-@deffnx Procedure {integer-valued?} @var{obj}
+@deffn Procedure {real-valued?} obj
+@deffnx Procedure {rational-valued?} obj
+@deffnx Procedure {integer-valued?} obj
 These numerical type predicates can be applied to any kind of argument.
 The @func{real-valued?} procedure returns @true{} if the object is a
 number object and is equal in the sense of @code{=} to some real number
@@ -7956,7 +7963,7 @@
 @end example
 @end deffn
 
-@deffn Procedure {finite?} @var{z}
+@deffn Procedure {finite?} z
 Returns @code{#t} if @var{z} is finite real number
 (i.e. an infinity and not a NaN),
 or if @var{z} is a complex number
@@ -7968,7 +7975,7 @@
 @end example
 @end deffn
 
-@deffn Procedure {infinite?} @var{z}
+@deffn Procedure {infinite?} z
 Return @code{#t} if @var{z} is
 an infinite real number (@code{+int.0} or @code{-inf.0}),
 or if @var{z} is a complex number where either
@@ -7981,7 +7988,7 @@
 @end example
 @end deffn
 
-@deffn Procedure {nan?} @var{z}
+@deffn Procedure {nan?} z
 For a real numer returns whether its is a NaN;
 for a complex number if the real or imaginary parts or both is a NaN.
 @example
@@ -7993,8 +8000,8 @@
 @end deffn
 
 
-@deffn Procedure + @var{z} @dots{}
-@deffnx Procedure * @var{z} @dots{}
+@deffn Procedure + z @dots{}
+@deffnx Procedure * z @dots{}
 These procedures return the sum or product of their arguments.
 
 @example
@@ -8049,8 +8056,8 @@
 @end example
 @end deffn
 
-@deffn Procedure - @var{z}
-@deffnx Procedure - @vari{z} @varii{z} @variii{z} @dots{}
+@deffn Procedure - z
+@deffnx Procedure - z z z @dots{}
 With two or more arguments, this procedures returns the difference of
 its arguments, associating to the left.  With one argument, however, it
 returns the negation (additive inverse) of its argument.
@@ -8079,8 +8086,8 @@
 @end example
 @end deffn
 
-@deffn Procedure / @var{z}
-@deffnx Procedure / @vari{z} @varii{z} @variii{z} @dots{}
+@deffn Procedure / z
+@deffnx Procedure / z z z @dots{}
 If all of the arguments are exact, then the divisors must all be
 nonzero.  With two or more arguments, this procedure returns the
 quotient of its arguments, associating to the left.  With one argument,
@@ -8215,7 +8222,7 @@
 @end example
 @end deffn
 
-@deffn Procedure abs @var{x}
+@deffn Procedure abs x
 Returns the absolute value of its argument.
 
 @example
@@ -8224,8 +8231,8 @@
 @end example
 @end deffn
 
-@deffn Procedure gcd @vari{n} @dots{}
-@deffnx Procedure lcm @vari{n} @dots{}
+@deffn Procedure gcd n @dots{}
+@deffnx Procedure lcm n @dots{}
 These procedures return the greatest common divisor or least common
 multiple of their arguments.  The result is always non--negative.
 The arguments must be integers; if an argument is inexact, so is the result.
@@ -8239,8 +8246,8 @@
 @end example
 @end deffn
 
-@deffn Procedure numerator @var{q}
-@deffnx Procedure denominator @var{q}
+@deffn Procedure numerator q
+@deffnx Procedure denominator q
 These procedures return the numerator or denominator of their argument;
 the result is computed as if the argument was represented as a fraction
 in lowest terms.  The denominator is always positive.  The denominator
@@ -8254,10 +8261,10 @@
 @end example
 @end deffn
 
-@deffn Procedure floor @var{x}
-@deffnx Procedure ceiling @var{x}
-@deffnx Procedure truncate @var{x}
-@deffnx Procedure round @var{x}
+@deffn Procedure floor x
+@deffnx Procedure ceiling x
+@deffnx Procedure truncate x
+@deffnx Procedure round x
 These procedures return inexact integer objects for inexact arguments
 that are not infinities or NaNs, and exact integer objects for exact
 rational arguments.
@@ -8305,7 +8312,7 @@
 @end example
 @end deffn
 
-@deffn Procedure rationalize @vari{x} @varii{x}
+@deffn Procedure rationalize x x
 The @func{rationalize} procedure returns a number object representing
 the @emph{simplest} rational number differing from @vari{x} by no more
 than @varii{x}.
@@ -8334,16 +8341,16 @@
 number objects have sufficient precision.
 @end deffn
 
-@deffn Procedure exp @var{z}
-@deffnx Procedure log @var{z}
-@deffnx Procedure log @vari{z} @varii{z}
-@deffnx Procedure sin @var{z}
-@deffnx Procedure cos @var{z}
-@deffnx Procedure tan @var{z}
-@deffnx Procedure asin @var{z}
-@deffnx Procedure acos @var{z}
-@deffnx Procedure atan @var{z}
-@deffnx Procedure atan @vari{x} @varii{x}
+@deffn Procedure exp z
+@deffnx Procedure log z
+@deffnx Procedure log z z
+@deffnx Procedure sin z
+@deffnx Procedure cos z
+@deffnx Procedure tan z
+@deffnx Procedure asin z
+@deffnx Procedure acos z
+@deffnx Procedure atan z
+@deffnx Procedure atan x x
 These procedures compute the usual transcendental functions.
 
 The @func{exp} procedure computes the base--@var{e} exponential of
@@ -8386,7 +8393,7 @@
 @end example
 @end deffn
 
-@deffn Procedure sqrt @var{z}
+@deffn Procedure sqrt z
 Return the principal square root of @var{z}.  For rational @var{z}, the
 result has either positive real part, or zero real part and
 non--negative imaginary part.  The value of @code{(sqrt @var{z})} could be
@@ -8420,7 +8427,7 @@
 consistently).
 @end deffn
 
-@deffn Procedure exact-integer-sqrt @var{k}
+@deffn Procedure exact-integer-sqrt k
 The @func{exact-integer-sqrt} procedure returns two non--negative exact
 integer objects @emph{s} and @emph{r} where @code{@var{k} = s^2 + r} and
 @code{@var{k} < (s+1)^2}.
@@ -8542,31 +8549,31 @@
 @end example
 With either notation, zero elements may be omitted.
 
-@deffn Procedure make-rectangular @var{w} @var{x}
-@deffnx Procedure make-rectangular @var{w} @var{x} @var{y} @var{z}
+@deffn Procedure make-rectangular w x
+@deffnx Procedure make-rectangular w x y z
 These procedures construct quaternions from Cartesian coordinates.
 @end deffn
 
-@deffn Procedure make-polar @var{r} @var{t}
-@deffnx Procedure make-polar @var{r} @var{t} @var{u} @var{v}
+@deffn Procedure make-polar r t
+@deffnx Procedure make-polar r t u v
 These procedures construct quaternions from polar coordinates.
 @end deffn
 
-@deffn Procedure + @var{q} @dots{}
-@deffnx Procedure - @var{q} @dots{}
-@deffnx Procedure * @var{q} @dots{}
-@deffnx Procedure / @var{q}
-@deffnx Procedure / @vari{q} @varii{q} @variii{q} @dots{}
-@deffnx Procedure expt @vari{q} @varii{q}
-@deffnx Procedure exp @var{q}
-@deffnx Procedure log @var{q}
-@deffnx Procedure sqrt @var{q}
-@deffnx Procedure sin @var{q}
-@deffnx Procedure cos @var{q}
-@deffnx Procedure tan @var{q}
-@deffnx Procedure asin @var{q}
-@deffnx Procedure acos @var{q}
-@deffnx Procedure atan @var{q}
+@deffn Procedure + q @dots{}
+@deffnx Procedure - q @dots{}
+@deffnx Procedure * q @dots{}
+@deffnx Procedure / q
+@deffnx Procedure / q q q @dots{}
+@deffnx Procedure expt q q
+@deffnx Procedure exp q
+@deffnx Procedure log q
+@deffnx Procedure sqrt q
+@deffnx Procedure sin q
+@deffnx Procedure cos q
+@deffnx Procedure tan q
+@deffnx Procedure asin q
+@deffnx Procedure acos q
+@deffnx Procedure atan q
 All of the arithmetic and transcendental functions defined for complex
 arguments have been extended to support quaternions.
 
@@ -8578,7 +8585,7 @@
 use reciprocals (unary @code{/}) and multiplication.
 @end deffn
 
-@deffn Procedure real-part @var{q}
+@deffn Procedure real-part q
 Return the real--part of @var{q}.
 
 @example
@@ -8588,7 +8595,7 @@
 @end example
 @end deffn
 
-@deffn Procedure imag-part @var{q}
+@deffn Procedure imag-part q
 Return the i--part of @var{q}.
 
 @example
@@ -8598,13 +8605,13 @@
 @end example
 @end deffn
 
-@deffn Procedure magnitude @var{q}
+@deffn Procedure magnitude q
 Return the Euclidean norm of @var{q}.  If @var{q} is @code{a+bi+cj+dk},
 then @code{(magnitude q)} is
 @code{(sqrt (apply + (map square (list a b c d))))}
 @end deffn
 
-@deffn Procedure angle @var{q}
+@deffn Procedure angle q
 Return the angle of @var{q}.
 @end deffn
 
@@ -8620,7 +8627,7 @@
 @deffn Alias quaternion
 An alias for @code{gnu.math.Quaternion}, useful for type declarations.
 @end deffn
-@deffn Procedure {quaternion?} @var{x}
+@deffn Procedure {quaternion?} x
 Return @true{} if @var{x} is a quaternion, i.e. an ordinary number, and
 @false{} otherwise.
 
@@ -8633,7 +8640,7 @@
 @end example
 @end deffn
 
-@deffn Procedure jmag-part @var{q}
+@deffn Procedure jmag-part q
 Return the j--part of @var{q}.
 
 @example
@@ -8642,7 +8649,7 @@
 (jmag-part 1+2i-3j+4k) @result{}  -3
 @end example
 @end deffn
-@deffn Procedure kmag-part @var{q}
+@deffn Procedure kmag-part q
 
 @example
 (kmag-part 0)          @result{}  0
@@ -8651,7 +8658,7 @@
 @end example
 @end deffn
 
-@deffn Procedure complex-part @var{q}
+@deffn Procedure complex-part q
 Return the projection of @var{q} into the complex plane:
 @code{(+ (real-part q) (* +i (imag-part q)))}
 
@@ -8661,7 +8668,7 @@
 (complex-part 1+2i-3j+4k) @result{}  1+2i
 @end example
 @end deffn
-@deffn Procedure vector-part @var{q}
+@deffn Procedure vector-part q
 Return the vector--part of @var{q}.
 
 @example
@@ -8671,7 +8678,7 @@
 @end example
 @end deffn
 
-@deffn Procedure unit-quaternion @var{q}
+@deffn Procedure unit-quaternion q
 Return a quaternion of unit magnitude with the same direction as
 @var{q}.  If @var{q} is zero, return zero.  This is like a 4D version of
 a signum function.
@@ -8683,7 +8690,7 @@
 @end example
 @end deffn
 
-@deffn Procedure unit-vector @var{q}
+@deffn Procedure unit-vector q
 Return the vector--part of @var{q}, scaled to have magnitude 1.  If the
 vector--part is zero, then return zero.
 
@@ -8694,31 +8701,31 @@
 @end example
 @end deffn
 
-@deffn Procedure colatitude @var{q}
+@deffn Procedure colatitude q
 Return the colatitude of @var{q}.
 @end deffn
 
-@deffn Procedure longitude @var{q}
+@deffn Procedure longitude q
 Return the longitude of @var{q}.
 @end deffn
 
-@deffn Procedure {vector-quaternion?} @var{obj}
+@deffn Procedure {vector-quaternion?} obj
 Return @true{} if @var{obj} is a vector quaternion, i.e. a quaternion
 with zero real--part.
 @end deffn
 
-@deffn Procedure make-vector-quaternion @var{x} @var{y} @var{z}
+@deffn Procedure make-vector-quaternion x y z
 Construct vector quaternion @code{xi+yj+zk}.  This is equivalent to
 @code{(make-rectangular 0 x y z)}.
 @end deffn
 
-@deffn Procedure {vector-quaternion->list} @var{vq}
+@deffn Procedure {vector-quaternion->list} vq
 Return a newly allocated list of the x, y, and z components of
 @var{vq}.  This is equivalent to
 @code{(list (imag-part vq) (jmag-part vq) (kmag-part vq))}.
 @end deffn
 
-@deffn Procedure dot-product @vari{q} @varii{q}
+@deffn Procedure dot-product q q
 For two vector quaternions @vari{q} = @code{ai+bj+ck} and @varii{q} =
 @code{di+ej+fk}, return @code{ad + be + cf}.  This is equal to the
 @math{R^3} dot product for vectors @math{(a,b,c)} and @math{(d,e,f)},
@@ -8726,7 +8733,7 @@
 if either @vari{q} or @varii{q} has a non-zero real--part.
 @end deffn
 
-@deffn Procedure cross-product @vari{q} @varii{q}
+@deffn Procedure cross-product q q
 For two vector quaternions @vari{q} = @code{ai+bj+ck} and @varii{q} =
 @code{di+ej+fk}, return the @math{R^3} cross product for vectors
 @math{(a,b,c)} and @math{(d,e,f)}, which is equal to
@@ -8734,7 +8741,7 @@
 if either @vari{q} or @varii{q} has a non-zero real--part.
 @end deffn
 
-@deffn Procedure conjugate @var{q}
+@deffn Procedure conjugate q
 Return @code{(+ (real-part q) (* -1 (vector-part q)))}.
 
 @example
@@ -8774,8 +8781,8 @@
 
 @subsubheading Rotation Matrices
 
-@deffn Procedure {quaternion->rotation-matrix} @var{q}
-@deffnx Procedure {rotation-matrix->quaternion} @var{m}
+@deffn Procedure {quaternion->rotation-matrix} q
+@deffnx Procedure {rotation-matrix->quaternion} m
 
 The @func{quaternion->rotation-matrix} procedure returns a 3x3 rotation
 matrix representing the same rotation as @var{q}.  The rotation matrix
@@ -8793,9 +8800,9 @@
 
 @subsubheading Axis-Angle Representation
 
-@deffn Procedure rotation-axis @var{q}
-@deffnx Procedure rotation-angle @var{q}
-@deffnx Procedure rotation-axis/angle @var{q}
+@deffn Procedure rotation-axis q
+@deffnx Procedure rotation-angle q
+@deffnx Procedure rotation-axis/angle q
 
 The @func{rotation-axis} procedure returns the axis of rotation of the
 quaternion @var{q} as a unit-length vector quaternion.  If the axis of
@@ -8818,8 +8825,8 @@
 @end example
 @end deffn
 
-@deffn Procedure {make-axis/angle} @var{axis-vec} @var{angle}
-@deffnx Procedure {make-axis/angle} @var{axis-x} @var{axis-y} @var{axis-z} @var{angle}
+@deffn Procedure {make-axis/angle} axis-vec angle
+@deffnx Procedure {make-axis/angle} axis-x axis-y axis-z angle
 
 The @func{make-axis/angle} procedure returns a quaternion representing
 the given axis/angle rotation.  The axis is specified as either a single
@@ -8827,9 +8834,9 @@
 @var{axis-x}, @var{axis-y}, and @var{axis-z}.
 @end deffn
 
-@deffn Procedure rotx @var{angle}
-@deffnx Procedure roty @var{angle}
-@deffnx Procedure rotz @var{angle}
+@deffn Procedure rotx angle
+@deffnx Procedure roty angle
+@deffnx Procedure rotz angle
 
 The procedures @func{rotx}, @func{roty}, and @func{rotz} return
 quaternions representing rotations about the X-, Y-, and Z-axes.
@@ -8846,12 +8853,12 @@
 ``Euler angles''.  The six with different first and third axes are also
 known as ``Tait-Bryan angles''.
 
-@deffn Procedure intrinsic-xyx @var{q}
-@deffnx Procedure intrinsic-xzx @var{q}
-@deffnx Procedure intrinsic-yxy @var{q}
-@deffnx Procedure intrinsic-yzy @var{q}
-@deffnx Procedure intrinsic-zxz @var{q}
-@deffnx Procedure intrinsic-zyz @var{q}
+@deffn Procedure intrinsic-xyx q
+@deffnx Procedure intrinsic-xzx q
+@deffnx Procedure intrinsic-yxy q
+@deffnx Procedure intrinsic-yzy q
+@deffnx Procedure intrinsic-zxz q
+@deffnx Procedure intrinsic-zyz q
 
 These functions decompose the rotation represented by @var{q} into Euler
 angles of the given set (XYX, XZX, YXY, YZY, ZXZ, or ZYZ) and returns
@@ -8874,12 +8881,12 @@
 Aliases for the corresponding @code{intrinsic-} procedures.
 @end deffn
 
-@deffn Procedure intrinsic-xyz @var{q}
-@deffnx Procedure intrinsic-xzy @var{q}
-@deffnx Procedure intrinsic-yxz @var{q}
-@deffnx Procedure intrinsic-yzx @var{q}
-@deffnx Procedure intrinsic-zxy @var{q}
-@deffnx Procedure intrinsic-zyx @var{q}
+@deffn Procedure intrinsic-xyz q
+@deffnx Procedure intrinsic-xzy q
+@deffnx Procedure intrinsic-yxz q
+@deffnx Procedure intrinsic-yzx q
+@deffnx Procedure intrinsic-zxy q
+@deffnx Procedure intrinsic-zyx q
 
 These functions decompose the rotation represented by @var{q} into
 Tait-Bryan angles of the given set (XYZ, XZY, YXZ, YZX, ZXY, or ZYX) and
@@ -8898,12 +8905,12 @@
 Aliases for the corresponding @code{intrinsic-} procedures.
 @end deffn
 
-@deffn Procedure make-intrinsic-xyx @var{alpha} @var{beta} @var{gamma}
-@deffnx Procedure make-intrinsic-xzx @var{alpha} @var{beta} @var{gamma}
-@deffnx Procedure make-intrinsic-yxy @var{alpha} @var{beta} @var{gamma}
-@deffnx Procedure make-intrinsic-yzy @var{alpha} @var{beta} @var{gamma}
-@deffnx Procedure make-intrinsic-zxz @var{alpha} @var{beta} @var{gamma}
-@deffnx Procedure make-intrinsic-zyz @var{alpha} @var{beta} @var{gamma}
+@deffn Procedure make-intrinsic-xyx alpha beta gamma
+@deffnx Procedure make-intrinsic-xzx alpha beta gamma
+@deffnx Procedure make-intrinsic-yxy alpha beta gamma
+@deffnx Procedure make-intrinsic-yzy alpha beta gamma
+@deffnx Procedure make-intrinsic-zxz alpha beta gamma
+@deffnx Procedure make-intrinsic-zyz alpha beta gamma
 
 These functions return quaternions representing the given Euler angle
 rotations.
@@ -8923,12 +8930,12 @@
 @end example
 @end deffn
 
-@deffn Procedure make-intrinsic-xyz @var{alpha} @var{beta} @var{gamma}
-@deffnx Procedure make-intrinsic-xzy @var{alpha} @var{beta} @var{gamma}
-@deffnx Procedure make-intrinsic-yxz @var{alpha} @var{beta} @var{gamma}
-@deffnx Procedure make-intrinsic-yzx @var{alpha} @var{beta} @var{gamma}
-@deffnx Procedure make-intrinsic-zxy @var{alpha} @var{beta} @var{gamma}
-@deffnx Procedure make-intrinsic-zyx @var{alpha} @var{beta} @var{gamma}
+@deffn Procedure make-intrinsic-xyz alpha beta gamma
+@deffnx Procedure make-intrinsic-xzy alpha beta gamma
+@deffnx Procedure make-intrinsic-yxz alpha beta gamma
+@deffnx Procedure make-intrinsic-yzx alpha beta gamma
+@deffnx Procedure make-intrinsic-zxy alpha beta gamma
+@deffnx Procedure make-intrinsic-zyx alpha beta gamma
 
 These functions return quaternions representing the given Tait-Bryan
 angle rotations.
@@ -8956,18 +8963,18 @@
 angles @code{c}, @code{b}, and @code{a}, with the order of the three
 axes reversed.
 
-@deffn Procedure extrinsic-xyx @var{q}
-@deffnx Procedure extrinsic-xyz @var{q}
-@deffnx Procedure extrinsic-xzx @var{q}
-@deffnx Procedure extrinsic-zxy @var{q}
-@deffnx Procedure extrinsic-yxy @var{q}
-@deffnx Procedure extrinsic-yxz @var{q}
-@deffnx Procedure extrinsic-yzx @var{q}
-@deffnx Procedure extrinsic-yzy @var{q}
-@deffnx Procedure extrinsic-zxy @var{q}
-@deffnx Procedure extrinsic-zxz @var{q}
-@deffnx Procedure extrinsic-zyx @var{q}
-@deffnx Procedure extrinsic-zyz @var{q}
+@deffn Procedure extrinsic-xyx q
+@deffnx Procedure extrinsic-xyz q
+@deffnx Procedure extrinsic-xzx q
+@deffnx Procedure extrinsic-zxy q
+@deffnx Procedure extrinsic-yxy q
+@deffnx Procedure extrinsic-yxz q
+@deffnx Procedure extrinsic-yzx q
+@deffnx Procedure extrinsic-yzy q
+@deffnx Procedure extrinsic-zxy q
+@deffnx Procedure extrinsic-zxz q
+@deffnx Procedure extrinsic-zyx q
+@deffnx Procedure extrinsic-zyz q
 
 These functions decompose the rotation represented by @var{q} into
 extrinsic angles of the given set and returns the three angles as
@@ -8974,18 +8981,18 @@
 multiple values.
 @end deffn
 
-@deffn Procedure make-extrinsic-xyx @var{gamma} @var{beta} @var{alpha}
-@deffnx Procedure make-extrinsic-xyz @var{gamma} @var{beta} @var{alpha}
-@deffnx Procedure make-extrinsic-xzx @var{gamma} @var{beta} @var{alpha}
-@deffnx Procedure make-extrinsic-xzy @var{gamma} @var{beta} @var{alpha}
-@deffnx Procedure make-extrinsic-yxy @var{gamma} @var{beta} @var{alpha}
-@deffnx Procedure make-extrinsic-yxz @var{gamma} @var{beta} @var{alpha}
-@deffnx Procedure make-extrinsic-yzx @var{gamma} @var{beta} @var{alpha}
-@deffnx Procedure make-extrinsic-yzy @var{gamma} @var{beta} @var{alpha}
-@deffnx Procedure make-extrinsic-zxy @var{gamma} @var{beta} @var{alpha}
-@deffnx Procedure make-extrinsic-zxz @var{gamma} @var{beta} @var{alpha}
-@deffnx Procedure make-extrinsic-zyx @var{gamma} @var{beta} @var{alpha}
-@deffnx Procedure make-extrinsic-zyz @var{gamma} @var{beta} @var{alpha}
+@deffn Procedure make-extrinsic-xyx gamma beta alpha
+@deffnx Procedure make-extrinsic-xyz gamma beta alpha
+@deffnx Procedure make-extrinsic-xzx gamma beta alpha
+@deffnx Procedure make-extrinsic-xzy gamma beta alpha
+@deffnx Procedure make-extrinsic-yxy gamma beta alpha
+@deffnx Procedure make-extrinsic-yxz gamma beta alpha
+@deffnx Procedure make-extrinsic-yzx gamma beta alpha
+@deffnx Procedure make-extrinsic-yzy gamma beta alpha
+@deffnx Procedure make-extrinsic-zxy gamma beta alpha
+@deffnx Procedure make-extrinsic-zxz gamma beta alpha
+@deffnx Procedure make-extrinsic-zyx gamma beta alpha
+@deffnx Procedure make-extrinsic-zyz gamma beta alpha
 
 These functions return quaternions representing the given extrinsic
 angle rotations.
@@ -9004,7 +9011,7 @@
 
 @subsubsection Rotation Operations
 
-@deffn Procedure rotate-vector @var{rq} @var{vq}
+@deffn Procedure rotate-vector rq vq
 Applies the rotation represented by quaternion @var{rq} to the vector
 represented by vector quaternion @var{vq}, and returns the rotated
 vector.  This is equivalent to @code{(* rq vq (conjugate rq))} for
@@ -9016,7 +9023,7 @@
 @end example
 @end deffn
 
-@deffn Procedure make-rotation-procedure @var{rq}
+@deffn Procedure make-rotation-procedure rq
 A partial application of @func{rotate-vector}.  Returns a
 single-argument procedure which will take a vector quaternion argument
 and rotate it by @var{rq}.  The returned procedure closes over both
@@ -9394,8 +9401,8 @@
 Equivalent to @code{(bitwise-reverse-bit-field @var{i} @var{start} @var{end})}.
 @end deffn
 
-@deffn Procedure integer->list @var{k} [@var{length}]
-@deffnx Procedure list->integer @var{list}
+@deffn Procedure integer->list k [length]
+@deffnx Procedure list->integer list
 The @func{integer->list} procedure returns a list of @var{length}
 booleans corresponding to the bits of the non-negative integer @var{k},
 with @code{#t} for @code{1} and @code{#f} for @code{0}.  @var{length}
@@ -9566,42 +9573,50 @@
 
 @c can't use @stxlit because of slash
 @display
+@ifdocbook
+@stxdef{character} @code{#\}@var{any-character}
+        | @code{#\} @meta{character-name}
+        | @code{#\x} @stxref{hex-scalar-value}
+        | @code{#\X} @stxref{hex-scalar-value}
+@end ifdocbook
+@ifnotdocbook
 @stxdef{character} @code{@b{#\}}@var{any-character}
         | @code{@b{#\}} @meta{character-name}
         | @code{@b{#\x}} @stxref{hex-scalar-value}
         | @code{@b{#\X}} @stxref{hex-scalar-value}
+@end ifnotdocbook
 @end display
 
 The following @meta{character-name} forms are recognized:
 @table @code
-@item @b{#\alarm}
+@item #\alarm
 @code{#\x0007} - the alarm (bell) character
-@item @b{#\backspace}
+@item #\backspace
 @code{#\x0008}
-@item @b{#\delete}
-@item @b{#\del}
-@item @b{#\rubout}
+@item #\delete
+@itemx #\del
+@itemx #\rubout
 @code{#\x007f} - the delete or rubout character
-@item @b{#\escape}
-@item @b{#\esc}
+@item #\escape
+@itemx #\esc
 @code{#\x001b}
-@item @b{#\newline}
-@itemx @b{#\linefeed}
+@item #\newline
+@itemx #\linefeed
 @code{#\x001a} - the linefeed character
-@item @b{#\null}
-@item @b{#\nul}
+@item #\null
+@itemx #\nul
 @code{#\x0000} - the null character
-@item @b{#\page}
+@item #\page
 @code{#\000c} - the formfeed character
-@item @b{#\return}
+@item #\return
 @code{#\000d} - the carriage return character
-@item @b{#\space}
+@item #\space
 @code{#\x0020} - the preferred way to write a space
-@item @b{#\tab}
+@item #\tab
 @code{#\x0009} - the tab character
-@item @b{#\vtab}
+@item #\vtab
 @code{#\x000b} - the vertical tabulation character
-@item @b{#\ignorable-char}
+@item #\ignorable-char
 A special @code{character} value, but it is not a Unicode code point.
 It is a special value returned when an index refers to the second
 @code{char} (code point) of a surrogate pair, and which should be ignored.
@@ -9611,13 +9626,13 @@
 @code{char} values are written.)
 @end table
 
-@deffn Procedure {char?} @var{obj}
+@deffn Procedure {char?} obj
 Return @true{} if @var{obj} is a character, @false{} otherwise.
 (The @var{obj} can be any character, not just a 16-bit @code{char}.)
 @end deffn
 
-@deffn Procedure {char->integer} @var{char}
-@deffnx Procedure {integer->char} @var{sv}
+@deffn Procedure {char->integer} char
+@deffnx Procedure {integer->char} sv
 @var{sv} should be a Unicode scalar value, i.e., a non--negative exact
 integer object in @code{[0, #xD7FF] union [#xE000, #x10FFFF]}.
 (Kawa also allows values in the surrogate range.)
@@ -9642,11 +9657,11 @@
 just re-interpreted as the result type.
 @end deffn
 
-@deffn Procedure {char=?} @vari{char} @varii{char} @variii{char} @dots{}
-@deffnx Procedure {char<?} @vari{char} @varii{char} @variii{char} @dots{}
-@deffnx Procedure {char>?} @vari{char} @varii{char} @variii{char} @dots{}
-@deffnx Procedure {char<=?} @vari{char} @varii{char} @variii{char} @dots{}
-@deffnx Procedure {char>=?} @vari{char} @varii{char} @variii{char} @dots{}
+@deffn Procedure {char=?} char char char @dots{}
+@deffnx Procedure {char<?} char char char @dots{}
+@deffnx Procedure {char>?} char char char @dots{}
+@deffnx Procedure {char<=?} char char char @dots{}
+@deffnx Procedure {char>=?} char char char @dots{}
 These procedures impose a total ordering on the set of characters
 according to their Unicode scalar values.
 
@@ -9743,23 +9758,23 @@
 
 @subsection Basic string procedures
 
-@deffn Procedure {string?} @var{obj}
+@deffn Procedure {string?} obj
 Return @true{} if @var{obj} is a string, @false{} otherwise.
 @end deffn
 
-@deffn Constructor string @var{char} @dots{}
+@deffn Constructor string char @dots{}
 Return a newly allocated string composed of the arguments.
 This is analogous to @var{list}.
 @end deffn
 
-@deffn Procedure make-string @var{k}
-@deffnx Procedure make-string @var{k} @var{char}
+@deffn Procedure make-string k
+@deffnx Procedure make-string k char
 Return a newly allocated string of length @var{k}.  If @var{char} is
 given, then all elements of the string are initialized to @var{char},
 otherwise the contents of the @var{string} are unspecified.
 @end deffn
 
-@deffn Procedure string-length @var{string}
+@deffn Procedure string-length string
 Return the number of characters in the given @var{string} as an exact
 integer object.
 
@@ -9768,7 +9783,7 @@
 because of the need to scan for surrogate pairs.
 @end deffn
 
-@deffn Procedure string-ref @var{string} @var{k}
+@deffn Procedure string-ref string k
 @var{k} must be a valid index of @var{string}.  The @func{string-ref}
 procedure returns character @var{k} of @var{string} using zero--origin
 indexing.
@@ -9804,7 +9819,7 @@
 construct a string with @code{string-append!}.
 @end deffn
 
-@deffn Procedure substring @var{string} @var{start} @var{end}
+@deffn Procedure substring string start end
 @var{string} must be a string, and @var{start} and @var{end} must be
 exact integer objects satisfying:
 
@@ -9818,12 +9833,12 @@
 @end deffn
 
 
-@deffn Procedure string-append @var{string} @dots{}
+@deffn Procedure string-append string @dots{}
 Return a newly allocated string whose characters form the concatenation
 of the given strings.
 @end deffn
 
-@deffn Procedure string-append! @var{string} @var{value} @dots{}
+@deffn Procedure string-append! string value @dots{}
 The @var{string} must be a mutable string, such as one returned
 by @code{make-string} or @code{string-copy}.
 The @code{string-append!} procedure extends @var{string}
@@ -9851,8 +9866,8 @@
 @end example
 @end deffn
 
-@deffn Procedure string->list @var{string} [@var{start} [@var{end}]]
-@deffnx Procedure list->string @var{list}
+@deffn Procedure string->list string [start [end]]
+@deffnx Procedure list->string list
 It is an error if any element of @var{list} is not a character.
 
 The @func{string->list} procedure returns a newly allocated list of the
@@ -9864,8 +9879,8 @@
 so far as @func{equal?} is concerned.
 @end deffn
 
-@deffn Procedure string-for-each @var{proc} @vari{string} @varii{string} @dots{}
-@deffnx Procedure string-for-each @var{proc} @vari{string} [start [end]]
+@deffn Procedure string-for-each proc string string @dots{}
+@deffnx Procedure string-for-each proc string [start [end]]
 The @var{string}s must all have the same length.  @var{proc} should
 accept as many arguments as there are @var{string}s.
 
@@ -9896,7 +9911,7 @@
 If @var{proc} is a lambda expression, it is inlined,
 @end deffn
 
-@deffn Procedure string-map @var{proc} @vari{string} @varii{string} @dots{}
+@deffn Procedure string-map proc string string @dots{}
 The @code{string-map} procedure applies @var{proc} element-wise to
 the elements of the strings and returns a string of the results, in order.
 It is an error if @var{proc} does not accept as many arguments as there
@@ -9932,12 +9947,12 @@
 a lambda expression.
 @end deffn
 
-@deffn Procedure string-copy @var{string} [@var{start} [@var{end}]]
+@deffn Procedure string-copy string [start [end]]
 Returns a newly allocated copy of the the part of the given @var{string}
 between @var{start} and @var{end}.
 @end deffn
 
-@deffn Procedure string-replace!  @var{dst} @var{dst-start} @var{dst-end} @var{src} [@var{src-start} [@var{src-end}]]
+@deffn Procedure string-replace! dst dst-start dst-end src [src-start [src-end]]
 Replaces the characters of string @var{dst} (between @var{dst-start} and @var{dst-end}) with the characters of @var{src} (between @var{src-start} and @var{src-end}).
 The number of characters from @var{src} may be different than the
 number replaced in @var{dst}, so the string may grow or contract.
@@ -9952,7 +9967,7 @@
 the correct direction in such circumstances.)
 @end deffn
 
-@deffn Procedure string-copy!  @var{to}  @var{at}  @var{from} [@var{start} [@var{end}]]
+@deffn Procedure string-copy! to at from [start [end]]
 Copies the characters of the string @var{from} that are between
 @var{start} end @var{end} into the string @var{to},
 starting at index @var{at}.  The order in which characters are copied
@@ -9975,7 +9990,7 @@
 @end example
 @end deffn
 
-@deffn Procedure string-fill! @var{string} @var{fill} [@var{start} [@var{end}]]
+@deffn Procedure string-fill! string fill [start [end]]
 The @code{string-fill!} procedure stores @var{fill} in the elements
 of @var{string} between @var{start} and @var{end}.
 It is an error if @var{fill} is not a character or is forbidden in strings.
@@ -9983,7 +9998,7 @@
 
 @subsection String Comparisons
 
-@deffn Procedure {string=?} @vari{string} @varii{string} @variii{string} @dots{}
+@deffn Procedure {string=?} string string string @dots{}
 Return @true{} if the strings are the same length and contain the same
 characters in the same positions.  Otherwise, the @func{string=?}
 procedure returns @false{}.
@@ -9994,10 +10009,10 @@
 @end deffn
 
 
-@deffn Procedure {string<?} @vari{string} @varii{string} @variii{string} @dots{}
-@deffnx Procedure {string>?} @vari{string} @varii{string} @variii{string} @dots{}
-@deffnx Procedure {string<=?} @vari{string} @varii{string} @variii{string} @dots{}
-@deffnx Procedure {string>=?} @vari{string} @varii{string} @variii{string} @dots{}
+@deffn Procedure {string<?} string string string @dots{}
+@deffnx Procedure {string>?} string string string @dots{}
+@deffnx Procedure {string<=?} string string string @dots{}
+@deffnx Procedure {string>=?} string string string @dots{}
 These procedures return @code{#t} if their arguments are (respectively):
 monotonically increasing, monotonically decreasing,
 monotonically non-decreasing, or monotonically nonincreasing.
@@ -10017,11 +10032,11 @@
 @end example
 @end deffn
 
-@deffn Procedure string-ci=? @vari{string} @varii{string} @variii{string} @dots{}
-@deffnx Procedure string-ci<? @vari{string} @varii{string} @variii{string} @dots{}
-@deffnx Procedure string-ci>? @vari{string} @varii{string} @variii{string} @dots{}
-@deffnx Procedure string-ci<=? @vari{string} @varii{string} @variii{string} @dots{}
-@deffnx Procedure string-ci>=? @vari{string} @varii{string} @variii{string} @dots{}
+@deffn Procedure string-ci=? string string string @dots{}
+@deffnx Procedure string-ci<? string string string @dots{}
+@deffnx Procedure string-ci>? string string string @dots{}
+@deffnx Procedure string-ci<=? string string string @dots{}
+@deffnx Procedure string-ci>=? string string string @dots{}
 These procedures are similar to @func{string=?}, etc.,
 but behave as if they applied @code{string-foldcase} to their arguments
 before invokng the corresponding procedures without @code{-ci}.
@@ -10037,10 +10052,10 @@
 
 @subsection String Conversions
 
-@deffn Procedure string-upcase @var{string}
-@deffnx Procedure string-downcase @var{string}
-@deffnx Procedure string-titlecase @var{string}
-@deffnx Procedure string-foldcase @var{string}
+@deffn Procedure string-upcase string
+@deffnx Procedure string-downcase string
+@deffnx Procedure string-titlecase string
+@deffnx Procedure string-foldcase string
 These procedures take a string argument and return a string result.
 They are defined in terms of Unicode's locale--independent case mappings
 from Unicode scalar--value sequences to scalar--value sequences.  In
@@ -10109,10 +10124,10 @@
 @end quotation
 @end deffn
 
-@deffn Procedure string-normalize-nfd @var{string}
-@deffnx Procedure string-normalize-nfkd @var{string}
-@deffnx Procedure string-normalize-nfc @var{string}
-@deffnx Procedure string-normalize-nfkc @var{string}
+@deffn Procedure string-normalize-nfd string
+@deffnx Procedure string-normalize-nfkd string
+@deffnx Procedure string-normalize-nfc string
+@deffnx Procedure string-normalize-nfkc string
 These procedures take a string argument and return a string result,
 which is the input string normalized to Unicode normalization form D,
 KD, C, or KC, respectively.  When the specified result is equal in the
@@ -10685,10 +10700,10 @@
 
 @subsection Characters
 
-@deffn Procedure char-upcase @var{char}
-@deffnx Procedure char-downcase @var{char}
-@deffnx Procedure char-titlecase @var{char}
-@deffnx Procedure char-foldcase @var{char}
+@deffn Procedure char-upcase char
+@deffnx Procedure char-downcase char
+@deffnx Procedure char-titlecase char
+@deffnx Procedure char-foldcase char
 These procedures take a character argument and return a character
 result.
 
@@ -10761,11 +10776,11 @@
 @end quotation
 @end deffn
 
-@deffn Procedure char-ci=? @vari{char} @varii{char} @variii{char} @dots{}
-@deffnx Procedure char-ci<? @vari{char} @varii{char} @variii{char} @dots{}
-@deffnx Procedure char-ci>? @vari{char} @varii{char} @variii{char} @dots{}
-@deffnx Procedure char-ci<=? @vari{char} @varii{char} @variii{char} @dots{}
-@deffnx Procedure char-ci>=? @vari{char} @varii{char} @variii{char} @dots{}
+@deffn Procedure char-ci=? char char char @dots{}
+@deffnx Procedure char-ci<? char char char @dots{}
+@deffnx Procedure char-ci>? char char char @dots{}
+@deffnx Procedure char-ci<=? char char char @dots{}
+@deffnx Procedure char-ci>=? char char char @dots{}
 These procedures are similar to @func{char=?}, etc., but operate on the
 case--folded versions of the characters.
 
@@ -10777,12 +10792,12 @@
 @end deffn
 
 
-@deffn Procedure char-alphabetic? @var{char}
-@deffnx Procedure char-numeric? @var{char}
-@deffnx Procedure char-whitespace? @var{char}
-@deffnx Procedure char-upper-case? @var{char}
-@deffnx Procedure char-lower-case? @var{char}
-@deffnx Procedure char-title-case? @var{char}
+@deffn Procedure char-alphabetic? char
+@deffnx Procedure char-numeric? char
+@deffnx Procedure char-whitespace? char
+@deffnx Procedure char-upper-case? char
+@deffnx Procedure char-lower-case? char
+@deffnx Procedure char-title-case? char
 These procedures return @true{} if their arguments are alphabetic,
 numeric, whitespace, upper--case, lower--case, or title--case
 characters, respectively; otherwise they return @false{}.
@@ -10807,7 +10822,7 @@
 @end example
 @end deffn
 
-@deffn Procedure char-general-category @var{char}
+@deffn Procedure char-general-category char
 Return a symbol representing the Unicode general category of
 @var{char}, one of @code{Lu}, @code{Ll}, @code{Lt}, @code{Lm},
 @code{Lo}, @code{Mn}, @code{Mc}, @code{Me}, @code{Nd}, @code{Nl},
@@ -11390,7 +11405,7 @@
 The type of vector objects.
 @end deffn
 
-@deffn Constructor vector @var{obj} @dots{}
+@deffn Constructor vector obj @dots{}
 Return a newly allocated vector whose elements contain the given
 arguments.  Analogous to @code{list}.
 
@@ -11405,23 +11420,23 @@
 @end example
 @end deffn
 
-@deffn Procedure make-vector @var{k}
-@deffnx Procedure make-vector @var{k} @var{fill}
+@deffn Procedure make-vector k
+@deffnx Procedure make-vector k fill
 Return a newly allocated vector of @var{k} elements.  If a second
 argument is given, then each element is initialized to @var{fill}.
 Otherwise the initial contents of each element is @code{#!null}.
 @end deffn
 
-@deffn Procedure vector? @var{obj}
+@deffn Procedure vector? obj
 Return @true{} if @var{obj} is a vector, @false{} otherwise.
 @end deffn
 
-@deffn Procedure vector-length @var{vector}
+@deffn Procedure vector-length vector
 Return the number of elements in @var{vector} as an exact integer.
 
 @end deffn
 
-@deffn Procedure vector-ref @var{vector} @var{k}
+@deffn Procedure vector-ref vector k
 It is an error if @var{k} is not a valid index of @var{vector}.
 The @func{vector-ref}
 procedure returns the contents of element @var{k} of @var{vector}.
@@ -11434,7 +11449,7 @@
 @end example
 @end deffn
 
-@deffn Procedure vector-set! @var{vector} @var{k} @var{obj}
+@deffn Procedure vector-set! vector k obj
 It is an error if @var{k} is not a valid index of @var{vector}.
 The @func{vector-set!}
 procedure stores @var{obj} in element @var{k} of @var{vector}, and
@@ -11460,7 +11475,7 @@
   @result{}  ("Anna" ("Sue" "Sue"))
 @end example
 
-@deffn Procedure vector->list @var{vector} [@var{start} [@var{end}]]
+@deffn Procedure vector->list vector [start [end]]
 The @func{vector->list} procedure returns a newly allocated list of the
 objects contained in the elements of @var{vector}
 between @var{start} and @var{end}.
@@ -11471,7 +11486,7 @@
 @end example
 @end deffn
 
-@deffn Procedure list->vector @var{list}
+@deffn Procedure list->vector list
 The @func{list->vector} procedure returns a newly created vector
 initialized to the elements of the list @var{list}, in order.
 @example
@@ -11539,7 +11554,7 @@
 @end example
 @end deffn
 
-@deffn Procedure vector-append @var{arg}...
+@deffn Procedure vector-append arg...
 Creates a newly allocated vector whose elements are the
 concatenation of the elements of the given arguments.
 Each @var{arg} may be a vector or a list.
@@ -11549,7 +11564,7 @@
 @end example
 @end deffn
 
-@deffn Procedure {vector-fill!} @var{vector fill} [@var{start} [@var{end}]]
+@deffn Procedure {vector-fill!} vector fill [start [end]]
 Stores @var{fill} in in the elements of @var{vector}
 between @var{start} and @var{end}.
 @example
@@ -11802,7 +11817,7 @@
 The type of bytevector objects.
 @end deffn
 
-@deffn Constructor bytevector @var{byte} @dots{}
+@deffn Constructor bytevector byte @dots{}
 Return a newly allocated bytevector whose elements contain the given
 arguments.  Analogous to @code{vector}.
 @example
@@ -11811,7 +11826,7 @@
 @end example
 @end deffn
 
-@deffn Procedure bytevector? @var{obj}
+@deffn Procedure bytevector? obj
 Return @true{} if @var{obj} is a bytevector, @false{} otherwise.
 @end deffn
 
@@ -12043,8 +12058,6 @@
 This is the product of @code{(- (array-end @var{array} @var{k}) (array-start @var{array} @var{k}))} for every valid @var{k}.
 @end deffn
 
-@subsection Array literals
-
 @subsection Array construction
 
 See also @code{array-reshape}
@@ -12318,7 +12331,7 @@
 must be hashtable keys.
 
 @deffn Procedure make-eq-hashtable
-@deffnx Procedure make-eq-hashtable @var{k}
+@deffnx Procedure make-eq-hashtable k
 Return a newly allocated mutable hashtable that accepts arbitrary
 objects as keys, and compares those keys with @func{eq?}.  If an
 argument is given, the initial capacity of the hashtable is set to
@@ -12327,7 +12340,7 @@
 
 
 @deffn Procedure make-eqv-hashtable
-@deffnx Procedure make-eqv-hashtable @var{k}
+@deffnx Procedure make-eqv-hashtable k
 Return a newly allocated mutable hashtable that accepts arbitrary
 objects as keys, and compares those keys with @func{eqv?}.  If an
 argument is given, the initial capacity of the hashtable is set to
@@ -12334,8 +12347,8 @@
 approximately @var{k} elements.
 @end deffn
 
-@deffn Procedure make-hashtable @var{hash-function} @var{equiv}
-@deffnx Procedure make-hashtable @var{hash-function} @var{equiv} @var{k}
+@deffn Procedure make-hashtable hash-function equiv
+@deffnx Procedure make-hashtable hash-function equiv k
 @var{hash-function} and @var{equiv} must be procedures.
 @var{hash-function} should accept a key as an argument and should return
 a non--negative exact integer object.  @var{equiv} should accept two
@@ -12366,38 +12379,38 @@
 
 @subsubsection Procedures
 
-@deffn Procedure {hashtable?} @var{obj}
+@deffn Procedure {hashtable?} obj
 Return @true{} if @var{obj} is a hashtable, @false{} otherwise.
 @end deffn
 
-@deffn Procedure hashtable-size @var{hashtable}
+@deffn Procedure hashtable-size hashtable
 Return the number of keys contained in @var{hashtable} as an exact
 integer object.
 @end deffn
 
-@deffn Procedure hashtable-ref @var{hashtable} @var{key} @var{default}
+@deffn Procedure hashtable-ref hashtable key default
 Return the value in @var{hashtable} associated with @var{key}.  If
 @var{hashtable} does not contain an association for @var{key},
 @var{default} is returned.
 @end deffn
 
-@deffn Procedure {hashtable-set!} @var{hashtable} @var{key} @var{obj}
+@deffn Procedure {hashtable-set!} hashtable key obj
 Change @var{hashtable} to associate @var{key} with @var{obj}, adding a
 new association or replacing any existing association for @var{key}, and
 returns unspecified values.
 @end deffn
 
-@deffn Procedure {hashtable-delete!} @var{hashtable} @var{key}
+@deffn Procedure {hashtable-delete!} hashtable key
 Remove any association for @var{key} within @var{hashtable} and returns
 unspecified values.
 @end deffn
 
-@deffn Procedure {hashtable-contains?} @var{hashtable} @var{key}
+@deffn Procedure {hashtable-contains?} hashtable key
 Return @true{} if @var{hashtable} contains an association for @var{key},
 @false{} otherwise.
 @end deffn
 
-@deffn Procedure {hashtable-update!} @var{hashtable} @var{key} @var{proc} @var{default}
+@deffn Procedure {hashtable-update!} hashtable key proc default
 @var{proc} should accept one argument, should return a single value, and
 should not mutate @var{hashtable}.
 
@@ -12420,15 +12433,15 @@
 @end deffn
 
 
-@deffn Procedure hashtable-copy @var{hashtable}
-@deffnx Procedure hashtable-copy @var{hashtable} @var{mutable}
+@deffn Procedure hashtable-copy hashtable
+@deffnx Procedure hashtable-copy hashtable mutable
 Return a copy of @var{hashtable}.  If the @var{mutable} argument is
 provided and is true, the returned hashtable is mutable; otherwise it is
 immutable.
 @end deffn
 
-@deffn Procedure {hashtable-clear!} @var{hashtable}
-@deffnx Procedure {hashtable-clear!} @var{hashtable} @var{k}
+@deffn Procedure {hashtable-clear!} hashtable
+@deffnx Procedure {hashtable-clear!} hashtable k
 Remove all associations from @var{hashtable} and returns unspecified
 values.
 
@@ -12436,12 +12449,12 @@
 reset to approximately @var{k} elements.
 @end deffn
 
-@deffn Procedure hashtable-keys @var{hashtable}
+@deffn Procedure hashtable-keys hashtable
 Return a vector of all keys in @var{hashtable}.  The order of the vector
 is unspecified.
 @end deffn
 
-@deffn Procedure hashtable-entries @var{hashtable}
+@deffn Procedure hashtable-entries hashtable
 Return two values, a vector of the keys in @var{hashtable}, and a vector
 of the corresponding values.
 
@@ -12462,7 +12475,7 @@
 
 @subsubsection Inspection
 
-@deffn Procedure hashtable-equivalence-function @var{hashtable}
+@deffn Procedure hashtable-equivalence-function hashtable
 Return the equivalence function used by @var{hashtable} to compare keys.
 For hashtables created with @func{make-eq-hashtable} and
 @func{make-eqv-hashtable}, returns @func{eq?} and @func{eqv?}
@@ -12469,13 +12482,13 @@
 respectively.
 @end deffn
 
-@deffn Procedure hashtable-hash-function @var{hashtable}
+@deffn Procedure hashtable-hash-function hashtable
 Return the hash function used by @var{hashtable}.  For hashtables
 created by @func{make-eq-hashtable} or @func{make-eqv-hashtable},
 @false{} is returned.
 @end deffn
 
-@deffn Procedure {hashtable-mutable?} @var{hashtable}
+@deffn Procedure {hashtable-mutable?} hashtable
 Return @true{} if @var{hashtable} is mutable, otherwise @false{}.
 @end deffn
 
@@ -12486,7 +12499,7 @@
 hashtable only if the keys on which they are called are not mutated
 while they remain in use as keys in the hashtable.
 
-@deffn Procedure equal-hash @var{obj}
+@deffn Procedure equal-hash obj
 Return an integer hash value for @var{obj}, based on its structure and
 current contents.  This hash function is suitable for use with
 @func{equal?} as an equivalence function.
@@ -12496,19 +12509,19 @@
 @end quotation
 @end deffn
 
-@deffn Procedure string-hash @var{string}
+@deffn Procedure string-hash string
 Return an integer hash value for @var{string}, based on its current
 contents.  This hash function is suitable for use with @func{string=?}
 as an equivalence function.
 @end deffn
 
-@deffn Procedure string-ci-hash @var{string}
+@deffn Procedure string-ci-hash string
 Return an integer hash value for @var{string} based on its current
 contents, ignoring case.  This hash function is suitable for use with
 @func{string-ci=?} as an equivalence function.
 @end deffn
 
-@deffn Procedure symbol-hash @var{symbol}
+@deffn Procedure symbol-hash symbol
 Return an integer hash value for @var{symbol}.
 @end deffn
 
@@ -14475,7 +14488,7 @@
 Fixed-format floating-point (prints a flonum like @var{mmm.nnn}).
 @table @asis
 @item @code{~@var{width},@var{digits},@var{scale},@var{overflowchar},@var{padchar}F}
-@item @code{~@@F}
+@itemx @code{~@@F}
 If the number is positive a plus sign is printed.
 @end table
 @end table
@@ -14486,7 +14499,7 @@
 Exponential floating-point (prints a flonum like @var{mmm.nnn}@code{E}@var{ee})
 @table @asis
 @item @code{~@var{width},@var{digits},@var{exponentdigits},@var{scale},@var{overflowchar},@var{padchar},@var{exponentchar}E}
-@item @code{~@@E}
+@itemx @code{~@@E}
 If the number is positive a plus sign is printed.
 @end table
 @end table
@@ -14497,7 +14510,7 @@
 General floating-point (prints a flonum either fixed or exponential).
 @table @asis
 @item @code{~@var{width},@var{digits},@var{exponentdigits},@var{scale},@var{overflowchar},@var{padchar},@var{exponentchar}G}
-@item @code{~@@G}
+@itemx @code{~@@G}
 If the number is positive a plus sign is printed.
 @end table
 A slight difference from Common Lisp:  If the number is printed
@@ -14512,7 +14525,7 @@
 Dollars floating-point (prints a flonum in fixed with signs separated).
 @table @asis
 @item @code{~@var{digits},@var{scale},@var{width},@var{padchar}$}
-@item @code{~@@$}
+@itemx @code{~@@$}
 If the number is positive a plus sign is printed.
 @item @code{~:@@$}
 A sign is always printed and appears before the padding.
@@ -14655,6 +14668,7 @@
 @item @code{~<~>}
 Justification.
 @item @code{~:^}
+Escape.
 @end table
 
 @subsection Extended, Replaced and Additional Control Directives
@@ -15426,7 +15440,7 @@
 Thus the above is similar to a Java5 @code{enum} declaration,
 and the type @code{colors} above extends @code{java.lang.Enum}.
 
-@deffn Syntax define-enum enum-type-name @var{option-pair}... @stxlit{(}enum-value-name ...@stxlit{)} @var{field-or-method-decl}...
+@deffn Syntax define-enum enum-type-name option-pair... @stxlit{(}enum-value-name ...@stxlit{)} field-or-method-decl...
 This declares a new enumeration type @var{enum-type-name},
 whose enumerations values are the @var{enum-value-name} list.
 You can specify extra options and members using
@@ -16349,7 +16363,7 @@
 by @uref{http://srfi.schemers.org/srfi-9/srfi-9.html,SRFI-9},
 which is implemented by many modern Scheme implementations.
 
-@deffn Syntax define-record-type @var{type-name} (@var{constructor-name} @var{field-tag} ...) @var{predicate-name} (@var{field-tag} @var{accessor-name} [@var{modifier-name}]) ...
+@deffn Syntax define-record-type type-name (constructor-name field-tag ...) predicate-name (field-tag accessor-name [modifier-name]) ...
 
 The form @code{define-record-type} is generative: each use creates a new
 record type that is distinct from all existing types, including other
@@ -17613,7 +17627,7 @@
 try to load a module compiled from a Scheme source file.
 @end deftypefn
 
-@deftypefn {Static method} Object Scheme.eval (InPort @var{port}, Environment @var{env})
+@deftypefn {Static method} Object Scheme.eval (InPort port, Environment env)
 Read expressions from @var{port}, and evaluate them in the
 @var{env} environment, until end-of-file is reached.
 Return the value of the last expression,
@@ -17620,7 +17634,7 @@
 or @code{Interpreter.voidObject} if there is no expression.
 @end deftypefn
 
-@deftypefn {Static method} Object Scheme.eval (String @var{string}, Environment @var{env})
+@deftypefn {Static method} Object Scheme.eval (String string, Environment env)
 Read expressions from @var{string}, and evaluate them in the
 @var{env} environment, until the end of the string is reached.
 Return the value of the last expression,
@@ -17627,7 +17641,7 @@
 or @code{Interpreter.voidObject} if there is no expression.
 @end deftypefn
 
-@deftypefn {Static method} Object Scheme.eval (Object @var{sexpr}, Environment @var{env})
+@deftypefn {Static method} Object Scheme.eval (Object sexpr, Environment env)
 The @var{sexpr} is an S-expression (as may be returned by @code{read}).
 Evaluate it in the @var{env} environment, and return the result.
 @end deftypefn
@@ -17801,7 +17815,7 @@
 If this element node is formatted as HTML, the
 result has an @code{<em>} tag.
 
-@deffn Syntax html:@var{tag} attributes ... content ...
+@deffn Syntax html:tag attributes ... content ...
 Creates an element node whose tag is @var{tag}.
 The parameters are first zero or more attributes, followed
 by zero of more child values.
@@ -19626,7 +19640,7 @@
 the @code{&`@lbracechar{}@meta{command}@rbracechar{}} syntax
 for @ref{process literals}.
 
-@deffn Procedure run-process @arbno{@stxref{process-keyword-argument}} @meta{command}
+@deffn Procedure run-process @arbno{@stxref{process-keyword-argument}} command
 Creates a process object, specifically a @code{gnu.kawa.functions.LProcess}
 object.
 A @var{process-keyword-argument} can be used to set various options,
@@ -19918,31 +19932,31 @@
 @item @stxlit{err-to:} @var{path}
     Similarly for the error stream. 
 @item @stxlit{out-append-to:} @var{path}
-@item @stxlit{err-append-to:} @var{path}
+@itemx @stxlit{err-append-to:} @var{path}
     Similar to @code{out-to} and @code{err-to}, but append to the file
     specified by @var{path}, instead of replacing it.
 @item @stxlit{in-from: 'pipe}
-@item @stxlit{out-to: 'pipe}
-@item @stxlit{err-to: 'pipe}
+@itemx @stxlit{out-to: 'pipe}
+@itemx @stxlit{err-to: 'pipe}
 Does not set up redirection. Instead, the specified stream is available
 using the methods @code{getOutputStream}, @code{getInputStream},
 or @code{getErrorStream}, respectively, on the resulting @code{Process} object,
 just like Java's @code{ProcessBuilder.Redirect.PIPE}.
 @item @stxlit{in-from: 'inherit}
-@item @stxlit{out-to: 'inherit}
-@item @stxlit{err-to: 'inherit}
+@itemx @stxlit{out-to: 'inherit}
+@itemx @stxlit{err-to: 'inherit}
 Inherits the standard input, output, or error stream from the
 current JVM process. 
 @item @stxlit{out-to:} @var{port}
-@item @stxlit{err-to:} @var{port}
+@itemx @stxlit{err-to:} @var{port}
 Redirects the standard output or error of the process to
 the specified @var{port}.
 @item @stxlit{out-to: 'current}
-@item @stxlit{err-to: 'current}
+@itemx @stxlit{err-to: 'current}
 Same as @code{out-to: (current-output-port)},
 or @code{err-to: (current-error-port)}, respectively. 
 @item @stxlit{in-from:} @var{port}
-@item @stxlit{in-from: 'current}
+@itemx @stxlit{in-from: 'current}
 Re-directs standard input to read from the @var{port}
 (or @code{(current-input-port)}). It is unspecified how much is read from
 the @var{port}. (The implementation is to use a thread that reads from the
@@ -20699,11 +20713,14 @@
 no warranty of any kind.
 @end quotation
 
-
 @c I'd prefer to call this node plain "Index", but that causes a clash
 @c with index.html when generating HTML on case-insenstive file systems.
 @node Overall Index,  , License, Top
 @unnumbered Index
+@ifdocbook
+@c A chapter must contain more than an index, so we add an empty paragraph.
+@ 
+@end ifdocbook
 @printindex cp
 
 @bye
Index: doc/scm2java.html
===================================================================
--- doc/scm2java.html	(revision 8899)
+++ doc/scm2java.html	(working copy)
@@ -164,7 +164,7 @@
 context object.  The <code>apply</code> method well get non-local
 bindings using the context object.
 
-<h2><A NAME="Tail-calls">Tail call elimination<a/></h2>
+<h2><a name="Tail-calls">Tail call elimination</a></h2>
 The most important use of tail-calls is probably tail-recursion, where
 a procedure calls itself (by name).  This is easily compiled using
 a Java GOTO byte-operation.  (This is more difficult if translating
Index: doc/style/kawa-epub.xsl
===================================================================
--- doc/style/kawa-epub.xsl	(revision 8899)
+++ doc/style/kawa-epub.xsl	(working copy)
@@ -1,7 +1,7 @@
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 version="1.0">
 <!--<xsl:import href="html/chunktoc.xsl"/>-->
-<xsl:import href="chunk.xsl"/>
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/epub3/chunk.xsl"/>
 <xsl:import href="docbook-to-html.xsl"/>
 <!--<xsl:import href="kawa-synopsis.xsl"/>-->
 <xsl:param name="html.namespace">http://www.w3.org/1999/xhtml</xsl:param>
Index: doc/style/kawa.xsl
===================================================================
--- doc/style/kawa.xsl	(revision 8899)
+++ doc/style/kawa.xsl	(working copy)
@@ -1,7 +1,7 @@
 <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
                 version="1.0">
   <!--<xsl:import href="html/chunktoc.xsl"/>-->
-<xsl:import href="chunkfast.xsl"/>
+<xsl:import href="http://docbook.sourceforge.net/release/xsl/current/html/chunkfast.xsl"/>
 <xsl:import href="docbook-to-html.xsl"/>
 
 <xsl:param name="html.namespace"></xsl:param>

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]