texlive[68193] Master/texmf-dist: numerica-tables (6sep23)

commits+karl at tug.org commits+karl at tug.org
Wed Sep 6 22:15:38 CEST 2023


Revision: 68193
          http://tug.org/svn/texlive?view=revision&revision=68193
Author:   karl
Date:     2023-09-06 22:15:38 +0200 (Wed, 06 Sep 2023)
Log Message:
-----------
numerica-tables (6sep23)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/numerica-tables/README.txt
    trunk/Master/texmf-dist/doc/latex/numerica-tables/numerica-tables.pdf
    trunk/Master/texmf-dist/doc/latex/numerica-tables/numerica-tables.tex
    trunk/Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty

Modified: trunk/Master/texmf-dist/doc/latex/numerica-tables/README.txt
===================================================================
--- trunk/Master/texmf-dist/doc/latex/numerica-tables/README.txt	2023-09-06 20:15:28 UTC (rev 68192)
+++ trunk/Master/texmf-dist/doc/latex/numerica-tables/README.txt	2023-09-06 20:15:38 UTC (rev 68193)
@@ -13,13 +13,12 @@
 tables of mathematical function values in a wide variety of 
 formats.
 
-Version 3.0.0 requires version 3 of numerica and the booktabs 
+Version 3.1.0 requires version 3 of numerica and the booktabs 
 package. numerica must be loaded  before numerica-tables. 
-Version 3.0.0 of numerica-tables allows non-uniformly stepped 
-row-variable values, and comma lists of numbers or expressions 
-to serve as row variable values. Table entries can now also be
-presented in fraction form. See numerica-tables.pdf for details 
-on how to use the package.
+Version 3.1.0 of numerica-tables adds an index to the docu-
+mentation and allows the rounding value to vary with row or 
+column (or both). See numerica-tables.pdf for details on how 
+to use the package.
 
 Manifest
 %%%%%%%%
@@ -29,4 +28,3 @@
 numerica-tables.pdf    documentation for numerica-tables.sty
 numerica-tables.tex    documentation source file
 
-        

Modified: trunk/Master/texmf-dist/doc/latex/numerica-tables/numerica-tables.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/numerica-tables/numerica-tables.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/numerica-tables/numerica-tables.tex	2023-09-06 20:15:28 UTC (rev 68192)
+++ trunk/Master/texmf-dist/doc/latex/numerica-tables/numerica-tables.tex	2023-09-06 20:15:38 UTC (rev 68193)
@@ -18,6 +18,8 @@
 \usepackage{url}
 \usepackage{multirow}
 \usepackage{amsmath}
+\usepackage{makeidx}
+\makeindex
 \usepackage[pdfusetitle,
  bookmarks=true,bookmarksnumbered=true,bookmarksopen=true,bookmarksopenlevel=2,
  breaklinks=false,pdfborder={0 0 1},backref=section,colorlinks=true]
@@ -52,6 +54,8 @@
 \DeclareMathOperator{\gd}{gd}
 \usepackage{upquote}
 \usepackage{xfrac}
+\usepackage[indentunit=1em,totoc,columnsep=1.5em,
+initsep=10.25pt plus 5pt minus 3pt]{idxlayout}
 \reuse{}
 
 \makeatother
@@ -58,7 +62,7 @@
 
 \begin{document}
 \title{\texttt{numerica-tables}~\\
-{\large version 3.0.0}}
+{\large version 3.1.0}}
 \author{Andrew Parsloe\\
 (\url{ajparsloe at gmail.com})}
 \maketitle
@@ -74,7 +78,7 @@
 \noindent\begin{minipage}[t]{1\columnwidth}%
 \begin{shaded}%
 \begin{itemize}
-\item This document applies to version 3.0.0 of \texttt{numerica-tables}.
+\item This document applies to version 3.1.0 of \texttt{numerica-tables}.
 \item Version 3 of \texttt{numerica} needs to be loaded before \texttt{numerica-tables};
 (\texttt{numerica} requires \texttt{amsmath}, \texttt{mathtools} and
 a reasonably recent \LaTeX{} system).
@@ -83,17 +87,24 @@
 Functions}, edited by Milton Abramowitz and Irene A. Stegun, Dover,
 1965, abbreviated to \emph{HMF}, and often followed by a reference,
 like Table 1.2, to a specific table.
+\item Version 3.1.0 of \texttt{numerica-tables}
+\begin{itemize}
+\item adds an index to the documentation;
+\item adds the ability to round table entries to different values depending
+on row or column (or both) in the table;
+\item fixes two minor presentation bugs.
+\end{itemize}
 \item Version 3.0.0 of \texttt{numerica-tables}
 \begin{itemize}
 \item adds the ability to use numbers or expressions from
 \begin{itemize}
-\item a comma list for row-variable values, either as values or verbatim;
-\item a macro containing a comma list for row-variable values, either as
+\item a comma list for row variable values, either as values or verbatim;
+\item a macro containing a comma list for row variable values, either as
 values or verbatim;
-\item a file for row-variable values, either as values or verbatim;
+\item a file for row variable values, either as values or verbatim;
 \end{itemize}
 \item adds the ability to use functions of a stepped variable to generate
-varyingly stepped row-variable values;
+varyingly stepped row variable values;
 \item adds the ability to suppress the header row;
 \item is compatible with the additional features of \texttt{numerica} version
 3.0.0,
@@ -126,20 +137,21 @@
 \texttt{numerica-tables}. It is \emph{essential} that the version
 of \texttt{numerica} loaded is version 3. 
 
-All tables are `formal tables' in the sense of the \texttt{booktabs}
+All tables are `formal tables' in the sense of the \texttt{booktabs}\index{booktabs@\texttt{booktabs}}
 package, which is loaded automatically. Such tables have no vertical
-rules and few horizontal rules.
+rules\index{rules} and few horizontal rules.
 
 \section{Table structure}
 
-I take as my source of models of mathematical tables those presented
-in \emph{Handbook of Mathematical Functions}, edited by Milton Abramowitz
-and Irene A. Stegun, Dover, 1965, not because the typesetting is elegant
-(it often isn't) but because \emph{HMF} displays a wide variety of
-table styles. The editors of that volume were faced with a host of
-different problems requiring a host of different solutions. The \verb`\nmcTabulate`
-command of \texttt{numerica-tables} aims to reproduce most of those
-different solutions, within \verb`booktabs` elegance.
+I\index{table structure} take as my source of models of mathematical
+tables those presented in \emph{Handbook of Mathematical Functions},
+edited by Milton Abramowitz and Irene A. Stegun, Dover, 1965, not
+because the typesetting is elegant (it often isn't) but because \emph{HMF}
+displays a wide variety of table styles. The editors of that volume
+were faced with a host of different problems requiring a host of different
+solutions. The \verb`\nmcTabulate` command of \texttt{numerica-tables}
+aims to reproduce most of those different solutions, within \texttt{booktabs}
+\index{booktabs@\texttt{booktabs}} elegance.
 
 To create a table we need to specify a function or functions to tabulate.
 The values a function takes will generally depend on a primary parameter
@@ -154,30 +166,30 @@
 rather than a second parameter, a second, third, \ldots{} function
 of the first parameter is tabulated in the successive columns. 
 
-In this document the first parameter is called the \emph{row variable}
+In this document the first parameter is called the \emph{row variable}\index{row variable}
 \textendash{} its value determines which row we are in; the second
-parameter, if present, is called the \emph{column variable \textendash{}
-}its value determines which column we are in. A table generally (but
-not always) presents the values of the row variable in the first column,
-the \emph{row-variable column}, sometimes in distinctive type (e.g.
-bolded). The values of the column variable are presented in a \emph{header
-row} above the table body of function values. Above the header row
-there may be a \emph{title row} and perhaps a \emph{subtitle row}
-where other explanatory material can be displayed. Sometimes there
-is a \emph{footer row} beneath the table body. Vertical rules are
-absent, horizontal rules used sparingly \textendash{} for example,
-at the top and bottom of the table, or under the header row, but not
-in the body of the table.
+parameter, if present, is called the \emph{column variable\index{column variable}}
+\emph{\textendash{} }its value determines which column we are in.
+A table generally (but not always) presents the values of the row
+variable in the first column, the \emph{row variable column}, sometimes
+in distinctive type (e.g. bolded). The values of the column variable
+are presented in a \emph{header row} above the table body of function
+values. Above the header row there may be a \emph{title row} and perhaps
+a \emph{subtitle row} where other explanatory material can be displayed.
+Sometimes there is a \emph{footer row} beneath the table body. Vertical
+rules are absent, horizontal rules used sparingly \textendash{} for
+example, at the top and bottom of the table, or under the header row,
+but not in the body of the table.
 
 \section{Shared syntax}
 
-The \verb`\nmcTabulate` command (short-name form \verb`\tabulate`)
+The \verb`\nmcTabulate`\index{nmcTabulate@\texttt{\textbackslash nmcTabulate}}
+command (short-name form \verb`\tabulate`\index{tabulate@\texttt{\textbackslash tabulate}|see{\texttt{\textbackslash nmcTabulate}}})
 shares the syntax of \verb`\nmcEvaluate` (see \texttt{numerica.pdf}).
 When all options are used the command looks like 
 \begin{verbatim}
     \nmcTabulate*[settings]{expr.}[vv-list][num. format]
 \end{verbatim}
-\selectlanguage{english}%
 \begin{enumerate}
 \item \verb`*` optional switch; if present ensures a single number output
 with no formatting, or an appropriate error message if the single
@@ -187,13 +199,13 @@
 see Chapter~\ref{chap:=00005CnmcTabulate-settings};
 \item \verb`{expr.}` mandatory argument specifying the mathematical expression
 or expressions in \LaTeX{} form to be tabulated;
-\item \verb`[vv-list]` comma-separated list (or semicolon-sepaprated list
+\item \verb`[vv-list]` comma-separated list (or semicolon-separated list
 if the \verb`comma` package option is used with \texttt{numerica})
 of \emph{variable=value }items, in particular containing the initial
 value of the row variable, and column variable if one is used; 
 \item \verb`[num. format]` optional format specification for presentation
 of the numerical results (rounding, padding with zeros, scientific
-notation, fraction-form output); see \xA7\ref{subsec:Trailing-optional-argument}.
+notation, fraction-form output); see \xA7\ref{subsec:Trailing-optional-argument}.\index{rounding value}
 \end{enumerate}
 Unlike \verb`\nmcEvaluate` (the main command in\texttt{ numerica}),
 for \verb`\nmcTabulate` the two apparently optional arguments straddling
@@ -204,15 +216,17 @@
 of function values.
 
 Should \texttt{numerica} be loaded with the \verb`comma` package
-option, numbers in tables will be displayed with a decimal comma.
-In this case items in the vv-list \emph{must} be separated by a semicolon
+option, numbers in tables will be displayed with a decimal comma\index{decimal comma}.
+In this case items in the vv-list\index{vv-list!and decimal comma}
+\emph{must} be separated by a semicolon\index{semicolon and decimal comma}
 since the decimal comma is likely to feature there. Similarly, $n$-ary
-functions \textendash{} \verb`\max`, \verb`\min` and \verb`\gcd`
+functions \textendash{} \verb`\max`, \verb`\min` and \verb`\gcd`\index{n-ary@$n$-ary functions}
 \textendash{} must use the semicolon as their argument separator.
 
 Math environments are significant for \verb`\nmcEvaluate`. They are
-essentially irrelevant for \verb`\nmcTabulate`, although an external
-environment may determine how a table is positioned on the page (\verb`\[ <table> \]`
+essentially irrelevant for \verb`\nmcTabulate`\index{nmcTabulate@\texttt{\textbackslash nmcTabulate}}\index{environments},
+although an external environment may determine how a table is positioned
+on the page\index{table placement!on the page} (\verb`\[ <table> \]`
 for instance will centre the table between the margins). Environments
 specified in the main argument (the formula) should be avoided. \verb`$ $`,
 \verb`\( \)` or \verb`\[ \]` will not cause error, but a \verb`\begin`\textendash \verb`\end`
@@ -229,8 +243,8 @@
 \label{chap:=00005CnmcTabulate-settings}In addition to the shared
 settings, \verb`\nmcTabulate` has many settings specific to it. They
 are discussed in groups in subsequent sections, some in more than
-one place. For the main discussion of row-variable settings, see \xA7\ref{sec:Row-variable-settings};
-for column-variable settings see \xA7\ref{sec:Column-variable-settings};
+one place. For the main discussion of row variable settings, see \xA7\ref{sec:Row-variable-settings};
+for column variable settings see \xA7\ref{sec:Column-variable-settings};
 for whole-of-table formatting see \xA7\ref{sec:Whole-of-table-formatting};
 for formatting the function values in table cells see \xA7\ref{sec:Function-value-formatting}.
 
@@ -257,18 +271,21 @@
 \end{tabular}
 \par\end{center}
 \end{table}
-Deciding on a function to tabulate (entered in the main or mandatory
-argument of \verb`\nmcTabulate`) will inevitably also mean deciding
-on the tabulation variable, the \emph{row} variable, \verb`rvar`,
-what value to start tabulating from \textendash{} \emph{that} is specified
-in the vv-list and so does not need a specific key \textendash{} what
-value to tabulate to, \verb`rstop`, and how fine-grained the tabulation
-is to be, the step size \verb`rstep`. In the uniform case (which
-makes up the overwhelming majority of cases in \emph{HMF} for instance)
-the step size is constant. It does not change as the value of the
-row variable changes. (The non-uniform case, available from version
-3.0.0 of \texttt{numerica-tables}, is discussed in \xA7\ref{subsec:Row-var-spec-nonuniform}
-below. Quite different keys are required.)
+Deciding\index{row variable!start, step, stop values|(} on a function
+to tabulate (entered in the main or mandatory argument of \verb`\nmcTabulate`)
+will inevitably also mean deciding on the tabulation variable, the
+\emph{row} variable, \verb`rvar`\index{rvar@\texttt{rvar}}, what
+value to start tabulating from \textendash{} \emph{that} is specified
+in the vv-list\index{vv-list!row/col. variable initial values}\index{row variable!initial value in vv-list}
+and so does not need a specific key \textendash{} what value to tabulate
+to, \verb`rstop`\index{rstop@\texttt{rstop}}, and how fine-grained
+the tabulation is to be, the step size \verb`rstep`\index{rstep@\texttt{rstep}}.
+In the uniform case (which makes up the overwhelming majority of cases
+in \emph{HMF} for instance) the step size is constant. It does not
+change as the value of the row variable changes. (The non-uniform
+case, available from version 3.0.0 of \texttt{numerica-tables}, is
+discussed in \xA7\ref{subsec:Row-var-spec-nonuniform} below. Quite different
+keys are required.)
 
 The two tables in the example below tabulate $\sin x$ and $\cos x$
 between $0$ and $1$ in increments of $0.2$. Note that the start
@@ -290,8 +307,9 @@
 variable.
 
 The difference in appearance of the two tables results from padding
-with zeros in the second (the asterisk in the trailing optional argument
-has the same effect in \verb`\nmcTabulate` as in \verb`\nmcEvaluate`).
+with zeros\index{function value formatting!padding with zeros}\index{padding with zeros}
+in the second (the asterisk in the trailing optional argument has
+the same effect in \verb`\nmcTabulate` as in \verb`\nmcEvaluate`).
 As you can see, padding applies not only to the values of the function
 but also to the values of the row variable, although that has been
 padded to only $1$ decimal place rather than the $6$ of the function
@@ -309,21 +327,21 @@
       { \cos x }[x=0][*]\medskip{}
 
 Sometimes (perhaps often) it may prove more convenient to specify
-the number of rows, \verb`rows`, to tabulate rather than a stop value.
-Only one of \verb`rows` and \verb`rstop` should be given, but if
-both (inadvertently) are present, it is the value of \verb`rows`
-that prevails. The first of the following three tables shows an example
-where \verb`rows` is specified.
+the number of rows, \verb`rows`\index{rows@\texttt{rows}}, to tabulate
+rather than a stop value. Only one of \verb`rows` and \verb`rstop`
+should be given, but if both (inadvertently) are present, it is the
+value of \verb`rows` that prevails. The first of the following three
+tables shows an example where \verb`rows` is specified.
 
-The second and third tables use an abbreviated form of the row-variable
-specification, \verb`rspec`. This is a three-element comma list,
-\verb`{rvar,rstep,rows}`. The second table gives a straightforward
-example. In the third table a \LaTeX{} expression has been inserted
-for \verb`rows` in the \verb`rspec` comma list. Like \verb`rstep`
-and \verb`rstop`, \verb`rows` can be a \LaTeX{} expression, but it
-is evaluated \emph{before} the vv-list and therefore, unlike \verb`rstep`
-and \verb`rstop`, cannot depend on quantites specified there like
-the initial row variable value.
+The second and third tables use an abbreviated form of the row variable
+specification, \verb`rspec`\index{rspec@\texttt{rspec}}. This is
+a three-element comma list, \verb`{rvar,rstep,rows}`. The second
+table gives a straightforward example. In the third table a \LaTeX{}
+expression has been inserted for \verb`rows` in the \verb`rspec`
+comma list. Like \verb`rstep` and \verb`rstop`, \verb`rows` can
+be a \LaTeX{} expression, but it is evaluated \emph{before} the vv-list
+and therefore, unlike \verb`rstep` and \verb`rstop`, cannot depend
+on quantites specified there like the initial row variable value.
 \begin{verbatim}
     \tabulate[rvar=x,rstep=0.2,rows=6]
       { \sin x/\cos x }[x=0][*] \qquad
@@ -337,7 +355,7 @@
     \tabulate[rspec={x,0.2,6}]
       { \tan x }[x=0][*] \qquad
     \tabulate[rspec={x,0.2,1+(1/0.2)}]
-      { \sqrt{\sec^2 x - 1} }[x=0][*]\medskip{}
+      { \sqrt{\sec^2 x - 1} }[x=0][*]\index{row variable!start, step, stop values|)}\medskip{}
 
 
 \subsection{Row variable specification: non-uniform case}
@@ -344,7 +362,7 @@
 
 \label{subsec:Row-var-spec-nonuniform}
 \begin{table}[b]
-\centering{}\caption{Non-uniform row-variable specification}
+\centering{}\caption{Non-uniform row variable specification}
 \begin{center}
 \begin{tabular}{ll>{\raggedright}p{4cm}>{\raggedright}p{3cm}}
 \toprule 
@@ -370,22 +388,24 @@
 determined, values.
 
 \texttt{numerica-tables} provides two means of specifying such row
-variables, either by means of a row-variable function (\verb`rfunc`),
-when the row-variable values change in a non-uniform but formulaic
-way, or by explicitly listing the row-variable values in a comma list
-(\verb`rdata`, \verb`rfile`). In this latter case, a setting \verb`rverb`
-enables the row-variable column to be displayed either as a sequence
+variables, either by means of a row variable function (\verb`rfunc`\index{rfunc@\texttt{rfunc}}),
+when the row variable values change in a non-uniform but formulaic
+way, or by explicitly listing the row variable values in a comma list
+(\verb`rdata`\index{rdata@\texttt{rdata}}, \verb`rfile`\index{rfile@\texttt{rfile}}).
+In this latter case, a setting \verb`rverb`\index{rverb@\texttt{rverb}}
+enables the row variable column to be displayed either as a sequence
 of \emph{values} or verbatim as a sequence of \emph{expressions} \textendash{}
 like fractions of $\pi$.
 
 \subsubsection{\texttt{rfunc}}
 
-Suppose \textendash{} perhaps with an interest in the distribution
-of prime numbers \textendash{} that we want to create a small table
-of values of $n/\ln n$ for, say, $n=10$, $100$, 1000, $10000$,
-$\ldots$ The prospective row variable $n$ is not increasing in constant
-steps, although clearly in a regular manner. We handle such cases
-with the \verb`rfunc` setting; in the present instance \verb`rfunc=10^n`
+\index{rfunc@\texttt{rfunc}|(}\index{row variable!variably stepped|(}Suppose
+\textendash{} perhaps with an interest in the distribution of prime
+numbers \textendash{} that we want to create a small table of values
+of $n/\ln n$ for, say, $n=10$, $100$, 1000, $10000$, $\ldots$
+The prospective row variable $n$ is not increasing in constant steps,
+although clearly in a regular manner. We handle such cases with the
+\verb`rfunc` setting; in the present instance \verb`rfunc=10^n`
 where now \verb`n` does increment by a constant amount:
 \begin{verbatim}
     \tabulate[rpos=1,rfunc=10^n,rvar=n,rstep=1,
@@ -406,22 +426,23 @@
 its start, step and stop values, but the list of keys to specify a
 table is already large. The `double usage' implemented, perhaps
 confusing initially, economizes on keys and is invisible to the reader
-of the table. The initial value \verb`n=1` in the vv-list applies
-to the row-variable function \verb`10^n`, not to the function being
-tabulated (so the error-producing expression \verb`1/\ln 1` does
-not arise).
+of the table. The initial value \verb`n=1`\index{vv-list!row/col. variable initial values}
+in the vv-list applies to the row variable function \verb`10^n`,
+not to the function being tabulated (so the error-producing expression
+\verb`1/\ln 1` does not arise).\index{rfunc@\texttt{rfunc}|)}\index{row variable!variably stepped|)}
 
-\subsubsection{\texttt{rdata}, \texttt{rfile}, \texttt{rverb}}
+\subsubsection{\texttt{rdata}, \texttt{rfile}, \texttt{rverb} }
 
-\label{subsec:rdata-rfile-rverb}One source of difficulty in reading
-the previous table is working out just how many zeros there are in
-the larger numbers in the left column. It would be more readable `at
-a glance' if we could write those in scientific notation. To do that
-we use the \verb`rdata` and \verb`rverb` keys. In the first of the
-examples below, \verb`rverb` is absent (corresponding to the default
-\verb`rverb=0`); in the second \verb`rverb=1`, the effect of which
-is to use verbatim the row-variable values provided in the \verb`rdata`
-comma list:
+\label{subsec:rdata-rfile-rverb}One\index{row variable!values from list, macro or file|(}
+source of difficulty in reading the previous table is working out
+just how many zeros there are in the larger numbers in the left column.
+It would be more readable `at a glance' if we could write those
+in scientific notation. To do that we use the \verb`rdata`\index{rdata@\texttt{rdata}|(}
+and \verb`rverb`\index{rverb@\texttt{rverb}|(} keys. In the first
+of the examples below, \verb`rverb` is absent (corresponding to the
+default \verb`rverb=0`); in the second \verb`rverb=1`, the effect
+of which is to use verbatim the row variable values provided in the
+\verb`rdata` comma list:\index{row variable!verbatim values|(}
 \begin{verbatim}
     \tabulate[rdata={10,100,1000,10^4,10^5,10^6,10^7},
         rvar=n,rround=0,ralign=l] 
@@ -453,32 +474,33 @@
     \def\mydatai{\tfrac12\pi,\tfrac13\pi,\tfrac23\pi,
                  \tfrac14\pi,\tfrac34\pi}
     \renewcommand\arraystretch{1.2}
-    \tabulate[rdata=\mydatai,rverb=1,rvar=k,header=0] 
+    \tabulate[rdata=\mydatai,rverb=1,rvar=k,headless=1] 
       { k }[6*]
     \renewcommand\arraystretch{1} \qquad
     \def\mydataii{\sfrac\pi2,\sfrac\pi3,\sfrac{2\pi}3,
                   \sfrac\pi4,\sfrac{3\pi}4}
-    \tabulate[rdata=\mydataii,rverb=1,rvar=k,header=0] 
+    \tabulate[rdata=\mydataii,rverb=1,rvar=k,headless=1] 
        { k }[6*] 
 \end{verbatim}
 $\Longrightarrow$     \renewcommand\arraystretch{1.2}
     \def\mydatai{\tfrac12\pi,\tfrac13\pi,
     \tfrac23\pi,\tfrac14\pi,\tfrac34\pi}
-    \tabulate[rdata=\mydatai,rverb=1,rvar=k,header=0 ] 
+    \tabulate[rdata=\mydatai,rverb=1,rvar=k,headless=1 ] 
      { k }[6*]
     \renewcommand\arraystretch{1} \qquad
     \def\mydataii{\sfrac\pi2,\sfrac\pi3,
     \sfrac{2\pi}3,\sfrac\pi4,\sfrac{3\pi}4}
-    \tabulate[rdata=\mydataii,rverb=1,rvar=k,header=0] 
+    \tabulate[rdata=\mydataii,rverb=1,rvar=k,headless=1] 
      { k }[6*]\medskip{}
 
-The setting \verb`header=0` (see \xA7\ref{subsec:Header-row-suppress})
+The setting \verb`headless=1`\index{headless@\texttt{headless}}
+(see \xA7\ref{subsec:Header-row-suppress})\index{header row|see{column variable header, \texttt{headless}, row variable header}}
 means the tables have no header row. To accommodate the tower of \verb`\tfrac`-s
-in the first column of the first table, \verb`\arraystretch` has
-been used to add more space between the rows (and re-set afterwards).
-Through the virtues of \verb`\sfrac` it is unnecessary in the second
-table which is neater and more readable to my eye. But even better
-is the example at \xA7\ref{subsec:rfracFraction-form-rvar}.
+in the first column of the first table, \verb`\arraystretch`\index{arraystretch@\texttt{\textbackslash arraystretch}}
+has been used to add more space between the rows (and re-set afterwards).
+Through the virtues of \verb`\sfrac` \index{sfrac@\texttt{\textbackslash sfrac}}
+it is unnecessary in the second table which is neater and more readable
+to my eye. But even better is the example at \xA7\ref{subsec:rfracFraction-form-rvar}.
 
 Note that the row variable can be chosen arbitrarily \textendash{}
 I earlier used \verb`n` and have used \verb`k` here but it could
@@ -488,30 +510,30 @@
 The identity function was appropriate for tables showing the decimal
 values of symbolic constants, as was the \verb`rverb=1` setting.
 The \verb`rverb` setting applies \emph{only} to the \verb`rdata`
-and \verb`rfile` keys. It has no effect otherwise.
+and \verb`rfile` keys. It has no effect otherwise.\index{row variable!verbatim values|)}\index{rverb@\texttt{rverb}|)}\index{rdata@\texttt{rdata}|)}
 
 In addition to a comma list or macro, data for the row variable can
 also be stored in a file of comma-separated values \textendash{} say
 \verb`mydata.txt`. If \verb`mydata.txt` is placed in the directory
-of the current document and \verb`rfile=mydata.txt` entered in the
-settings option of the \verb`\tabulate` command, the file will be
-found and the values used for the row variable. Alternatively, the
-file could be placed in your \verb`texmf` tree and your \TeX{} distro
-alerted to its presence (by refreshing the filename database). Again
-\verb`rfile=mydata.txt` in the settings option will ensure the file
-is found and the contents used for the row-variable values. Or, the
-file could be stored elsewhere and the \verb`rfile` key equated to
-the full path and filename \textendash{} something like \verb`rfile=e:/mydocs/mydatafiles/mydata.txt`.
+of the current document and \verb`rfile=mydata.txt`\index{rfile@\texttt{rfile}}
+entered in the settings option of the \verb`\tabulate` command, the
+file will be found and the values used for the row variable. Alternatively,
+the file could be placed in your \verb`texmf` tree and your \TeX{}
+distro alerted to its presence (by refreshing the filename database).
+Again \verb`rfile=mydata.txt` in the settings option will ensure
+the file is found and the contents used for the row variable values.
+Or, the file could be stored elsewhere and the \verb`rfile` key equated
+to the full path and filename \textendash{} something like \verb`rfile=e:/mydocs/mydatafiles/mydata.txt`.
 This ensures the file will be found and the contents used for the
 row variable values. Note that even in Windows systems (where file
 paths use backslashes) the path requires that forward slashes only
-be used. 
+be used. \index{row variable!values from list, macro or file|)}
 
-\subsection{Row-variable column formatting}
+\subsection{Formatting row variable values \& column}
 
 \label{subsec:Row-var-col-formatting}The padding option ({*}) of
-the trailing optional argument is one way of formatting the row-variable
-column, but to how many decimal places? Aligned left or right or centred?
+the trailing optional argument is one way of formatting the row variable
+values, but to how many decimal places? Aligned left or right or centred?
 Under what heading \textendash{} the example tables so far have simply
 used the row variable for the header? And should the row variable
 column be at the left of the table, or the right \textendash{} or
@@ -518,8 +540,8 @@
 both? These and related questions are answered by assigning values
 to the keys listed in Table~\ref{tab:Formatting-the-row-variable}.
 \begin{table}[tb]
-\centering{}\caption{\protect\label{tab:Formatting-the-row-variable}Formatting the row-variable
-column}
+\centering{}\caption{\protect\label{tab:Formatting-the-row-variable}Formatting the row
+variable column}
 \begin{center}
 \begin{tabular}{ll>{\raggedright}p{4cm}l}
 \toprule 
@@ -526,12 +548,12 @@
 {\small key} & {\small type} & {\small meaning} & {\small initial}\tabularnewline
 \midrule
 {\small\texttt{rround}} & {\small int} & {\small rounding} & {\small\texttt{1}}\tabularnewline
+{\small\texttt{rfont}} & {\small chars} & {\small font (}{\small\verb`\math<chars>`}{\small )} & \tabularnewline
 {\small\texttt{ralign}} & {\small char (}{\small\texttt{r/c/l}}{\small )} & {\small horizontal alignment} & {\small\texttt{r}}\tabularnewline
-{\small\texttt{rfont}} & {\small chars} & {\small font (}{\small\verb`\math<chars>`}{\small )} & \tabularnewline
 {\small\texttt{rhead}} & {\small tokens} & {\small header} & {\small\texttt{rvar}}\tabularnewline
 {\small\texttt{rhnudge}} & int & {\small nudge header }{\small{\small\verb`<int>`}}{\small{} mu} & {\small\texttt{0}}\tabularnewline
-{\small\texttt{rpos}} & {\small int (}{\small\texttt{0}}{\small\ldots}{\small\texttt{4}}{\small )} & {\small column position(s) } & {\small\texttt{1}}\tabularnewline
-{\small\texttt{rvar'}} & {\small tokens} & {\small 2nd row-variable col. spec. } & {\small\texttt{rvar}}\tabularnewline
+{\small\texttt{rpos}} & {\small int (}{\small\texttt{0}}{\small\ldots}{\small\texttt{4}}{\small )} & {\small column placement} & {\small\texttt{1}}\tabularnewline
+{\small\texttt{rvar'}} & {\small tokens} & {\small 2nd row variable col. spec. } & {\small\texttt{rvar}}\tabularnewline
 {\small\texttt{rhead'}} & {\small tokens} & {\small header of 2nd rv col. (if it exists)} & {\small\texttt{rvar'}}\tabularnewline
 {\small\texttt{rhnudge'}} & int & {\small nudge 2nd rv col. header }{\small{\small\verb`<int>`}}{\small{}
 mu} & {\small\texttt{0}}\tabularnewline
@@ -544,8 +566,9 @@
 
 \subsubsection{Rounding: \texttt{rround}}
 
-After studying some of the previous tables, we might decide to adjust
-the step size, say from $0.2$ to $0.25$. But changing \verb`rstep`
+After\index{rounding value!row variable|(}\index{rround@\texttt{rround}|(}\index{formatting!row variable values|(}
+studying some of the previous tables, we might decide to adjust the
+step size, say from $0.2$ to $0.25$. But changing \verb`rstep`
 to the new value gives a disconcerting result. \texttt{numerica-tables}
 uses a default rounding value of $1$ for the row variable and has
 rounded $0.25$ down to $0.2$, then $0.2+0.25=0.45$ down to $0.4$,
@@ -552,8 +575,8 @@
 then $0.4+0.25=0.65$ down to $0.6$, then $0.6+0.25=0.85$ down to
 $0.8$, at which point it stops since $0.8+0.85>1$ which is the stopping
 value. The rounded-down values are the values used for caclulating
-the sines. The second table corrects matters by adjusting the row-variable
-rounding with \verb`rround=2`.
+the sines. The second table corrects matters by adjusting the row
+variable rounding with \verb`rround=2`.
 \begin{verbatim}
     \tabulate[rvar=x,rstep=0.25,rstop=1]
       { \sin x }[x=0][*] (Eh???) \quad
@@ -563,39 +586,42 @@
 $\Longrightarrow$     \tabulate[rvar=x,rstep=0.25,rstop=1]
       { \sin x }[x=0][*](Eh???) \quad
     \tabulate[rvar=x,rstep=0.25,rstop=1,rround=2]
-      { \sin x }[x=0][*]
+      { \sin x }[x=0][*]\index{rround@\texttt{rround}|)}\index{rounding value!row variable|)}
 
-\subsubsection{Alignment: \texttt{ralign}}
+\subsubsection{Font: \texttt{rfont}}
 
-By default, the alignment of all columns is to the right, as in the
-previous examples. This lends itself to neat output when padding with
-zeros is activated (the \verb`*` in the trailing argument) and when
-some values are negative \textendash{}  minus signs can interfere
-with neat output in left or centred alignments. But in a case like
-the second table in the last example, you might prefer to centre the
-headers for both the row and function-value columns. These alignments
-are independently set. For the row-variable column the default alignment
-is to the right \verb`ralign=r`; \verb`ralign=l` (lowercase L) aligns
-entries in the row-variable column to the left, and \verb`ralign=c`
-centres entries in the row-variable column. The tables of the next
-example use a \verb`c` alignment to centre the row-variable column
-header. The third of those tables shows how minus signs spoil the
-effect.
+In\index{rfont@\texttt{rfont}} the second table below bolding by
+means of the setting \verb`rfont=bf` has been applied to emphasize
+the distinction between the row variable values and the function values.
+Possible values for this key are those characters that can be adjoined
+to \verb`\math` to give a meaningful result. Thus other valid values
+are \verb`it` (italic), \verb`sf` (sans serif), \verb`tt` (typewriter);
+\verb`frak` (Fraktur); also \verb`rm` (roman) is available, but
+that is the default.\index{formatting!row variable values|)}
 
-\subsubsection{Font: \texttt{rfont}}
+\subsubsection{Alignment: \texttt{ralign}}
 
-In the second table below bolding by means of the setting \verb`rfont=bf`
-has been applied to emphasize the distinction between the row-variable
-values and the function values. Possible values for this key are those
-characters that can be adjoined to \verb`\math` to give a meaningful
-result. Thus other valid values are \verb`it` (italic), \verb`sf`
-(sans serif), \verb`tt` (typewriter); \verb`frak` (Fraktur); also
-\verb`rm` (roman) is available, but that is the default.
+By\index{row variable column!alignment|(}\index{ralign@\texttt{ralign}}
+default, the alignment of all columns is to the right, as in previous
+examples. This lends itself to neat output when padding with zeros
+is activated (the \verb`*` in the trailing argument) and when some
+values are negative \textendash{} the minus signs  interfere with
+neat output in left or centred alignments.\index{function value formatting!sign handling}
+But in a case like the second table in the last example, you might
+prefer to centre the headers for both the row and function-value columns.
+These alignments are independently set. For the row variable column
+the default alignment is to the right \verb`ralign=r`; \verb`ralign=l`
+(lowercase L) aligns entries in the row variable column to the left,
+and \verb`ralign=c` centres entries in the row variable column. The
+tables of the next example use a \verb`c` alignment to centre the
+row variable column header. The third of those tables shows how minus
+signs spoil the effect.
 
 \subsubsection{Row-variable header: \texttt{rhead}}
 
-In the second and third tables, the header for the row-variable column
-has also been bolded. The default header is the row-variable symbol.
+In\index{rhead@\texttt{rhead}|(}\index{row variable header|(}\index{formatting!row variable header|(}
+the second and third tables, the header for the row variable column
+has also been bolded. The default header is the row variable symbol.
 That can be replaced by giving a value to the key \verb`rhead`. I
 have used \verb`rhead=\boldsymbol{x}` (rather than \verb`\mathbf{x}`)
 in order to get an italicized bold symbol. Note that you do not need
@@ -624,11 +650,11 @@
     \tabulate
       [rvar=x,rstep=0.25,rstop=0.5,rround=2,
         ralign=c,rfont=bf,rhead=\boldsymbol{x}]
-      { \sin x }[x=-0.5][*]\medskip{}
+      { \sin x }[x=-0.5][*]\index{rfont@\texttt{rfont}}\medskip{}
 
-In these tables the row-variable column has been given a centred alignment.
+In these tables the row variable column has been given a centred alignment.
 The third table shows what goes wrong when \emph{some} values in the
-row-variable column are negative. Better then is to use padding, a
+row variable column are negative. Better then is to use padding, a
 right alignment (the default), and to use a phantom in the header.
 The first table below does this. The second table incorporates kerning
 into the header to achieve the same effect:
@@ -652,17 +678,18 @@
 (To my eye, aligning the $\boldsymbol{x}$ above the first column
 of digits after the decimal point gives a better result than truly
 centring it in the column; compare these examples with the first two
-tables of the previous example.)
+tables of the previous example.)\index{rhead@\texttt{rhead}}\index{formatting!row variable header|)}
 
 \subsubsection{Nudging~the~header: \texttt{rhnudge}}
 
-However, you might prefer to avoid inserting positioning commands
-into the actual row-variable header, obscuring its true content. You
-can avoid doing this by setting the key \texttt{rhnudge}. 
+However\index{rhnudge@\texttt{rhnudge}|(}, you might prefer to avoid
+inserting positioning commands into the actual row variable header,
+obscuring its true content. You can avoid doing this by setting the
+key \verb`rhnudge`. 
 
 The first table below reverts to the default right alignment, avoids
-any positioning commands in the row-variable header, but instead nudges
-it into position with the setting \texttt{rhnudge=9}. For positive
+any positioning commands in the row variable header, but instead nudges
+it into position with the setting \verb`rhnudge=9`. For positive
 nudge values, nudging works in the \emph{opposite} sense to the alignment.
 The units for nudging are mu (math units, 18 to a quad), but only
 a number \textendash{} generally an integer \textendash{} should be
@@ -669,11 +696,11 @@
 specified; the `mu' is supplied by \verb`numerica-tables`.
 
 In the second table below the row variable takes single digit integer
-values, while the row-variable name now occupies more than one character.
+values, while the row variable name now occupies more than one character.
 With a right alignment the header would protrude out to the left.
-By giving \texttt{rhnudge} a \emph{negative} value (\texttt{rhnudge=-12}
-in the example) it is brought back to a centred position in the row-variable
-column. 
+By giving \verb`rhnudge` a \emph{negative} value (\verb`rhnudge=-12`
+in the example) it is brought back to a centred position in the row
+variable column. 
 \begin{verbatim}
     \tabulate[rvar=x,rstep=0.25,rstop=0.5,rround=2,
               rfont=bf,rhead=\boldsymbol{x},rhnudge=9]
@@ -691,35 +718,35 @@
       [rvar=x_{\text{int}},rstep=1,rstop=4,
         rround=0,rfont=bf,rhnudge=-12,
         rhead=\boldsymbol{x_{\text{int}}}]
-      { \sin x_{\text{int}} }[x_{\text{int}}=0][4*]
+      { \sin x_{\text{int}} }[x_{\text{int}}=0][4*]\index{row variable header|)}\index{rhnudge@\texttt{rhnudge}|)}
 
 \subsubsection{Position in the table: \texttt{rpos}}
 
-\label{subsec:Row-var-col-pos}By default, the row-variable column
-is the \emph{first} column of the table. Its position is determined
-by the value of the key \texttt{rpos}: 
+\label{subsec:Row-var-col-pos}\index{row variable column!position in table}\index{rpos@\texttt{rpos}}By
+default, the row variable column is the \emph{first} column of the
+table. Its position is determined by the value of the key \texttt{rpos}: 
 \begin{itemize}
-\item \texttt{rpos=0}, suppressed (no row-variable column); 
-\item \texttt{rpos=1}, first column (the default); 
-\item \texttt{rpos=2}, last column; 
-\item \texttt{rpos=3}, first and last columns;\texttt{ }
-\item \texttt{rpos=4}, first and last columns, with the values in the last
+\item \verb`rpos=0`, suppressed (no row variable column); 
+\item \verb`rpos=1`, first column (the default); 
+\item \verb`rpos=2`, last column; 
+\item \verb`rpos=3`, first and last columns;\texttt{ }
+\item \verb`rpos=4`, first and last columns, with the values in the last
 column a user-defined function of the first; see \xA7\ref{subsec:Second-row-var-col};
-\item Any other integer acts like \texttt{rpos=1}.
+\item Any other integer acts like \verb`rpos=1`.
 \end{itemize}
-An example with \texttt{rpos=3} is given shortly below, \xA7\ref{sec:Multiple-function-tables}. 
+An example with \verb`rpos=3` is given shortly below, \xA7\ref{sec:Multiple-function-tables}. 
 
 \subsubsection{\texttt{rvar'}, \texttt{rhead'}, \texttt{rhnudge'}}
 
-These settings become relevant only when \texttt{rpos=4}; see \xA7\ref{subsec:Second-row-var-col}.
+These settings become relevant only when \verb`rpos=4`; see \xA7\ref{subsec:Second-row-var-col}.
 
 \subsubsection{Fraction-form values: rfrac}
 
-\label{subsec:rfracFraction-form-rvar}By giving the setting \verb`rfrac`
-an integer value between $1$ and $5$ inclusive it is possible to
-render the row-variable values as fractions with no more than \verb`rround`
-digits in the denominator. Initially \verb`rfrac=0`, which gives
-decimal output.
+\label{subsec:rfracFraction-form-rvar}\index{row variable!fraction form|(}\index{fraction form!row variable values|(}
+By giving the setting \verb`rfrac` an integer value between $1$
+and $5$ inclusive it is possible to render the row variable values
+as fractions with no more than \verb`rround` digits in the denominator.
+Initially \verb`rfrac=0`, which gives decimal output.
 \begin{itemize}
 \item \verb`rfrac=1` produces a slash fraction like $2/3$;
 \item \verb`rfrac=2` produces a scalable \verb`\frac`-tion like $\frac{2}{3}$
@@ -727,14 +754,15 @@
 \item \verb`rfrac=3` produces a non-scalable \verb`\tfrac` like $\tfrac{2}{3}$;
 \item \verb`rfrac=4` produces a non-scalable \verb`\dfrac` like $\dfrac{2}{3}$;
 \item \verb`rfrac=5` produces a slash fraction like $\sfrac 23$ (by means
-of the \verb`\sfrac` command) in text- and displaystyles if the \texttt{xfrac}
-package is loaded and like $\scriptstyle 2/3$ if it isn't; when used
-as a super- or sub-script, the fractions reduce in size like $e^{\sfrac23}$
+of the \verb`\sfrac`\index{sfrac@\texttt{\textbackslash sfrac}}
+command) in text- and displaystyles if the \texttt{xfrac} package
+is loaded and like $\scriptstyle 2/3$ if it isn't; when used as a
+super- or sub-script, the fractions reduce in size like $e^{\sfrac23}$
 or $e^{{\scriptscriptstyle 2/3}}$.
 \end{itemize}
 The following table repeats an earlier table from \xA7\ref{subsec:rdata-rfile-rverb},
 but more neatly, through using \verb`\sfrac` (with the \verb`rfrac=5`
-call) instead of \verb`\tfrac`, and moving $\pi$ from the row-variable
+call) instead of \verb`\tfrac`, and moving $\pi$ from the row variable
 column into the formula:
 \begin{verbatim}
     \def\mydataii{1/2,1/3,2/3,1/4,3/4}
@@ -745,23 +773,25 @@
 $\Longrightarrow$     \def\mydataii{1/2,1/3,2/3,1/4,3/4}
     \tabulate[rdata=\mydataii,rpos=1, 
         rvar=k,rfrac=5,rhnudge=6,chnudge=18] 
-     { k\pi }[k=0][6*]
+     { k\pi }[k=0][6*]\index{fraction form!row variable values|)}\index{row variable!fraction form|)}
 
 \subsection{Adjoined multi-function tables}
 
-\label{subsec:Adjoining-tables}How might one tabulate multiple functions
-simultaneously? \emph{HMF} has many, many examples where multiple
-functions (like the trigonometric or the hyperbolic functions) are
-tabulated in separate columns of the same table. 
+\label{subsec:Adjoining-tables}\index{adjoined tables}\index{multi-function tables}
+How might one tabulate multiple functions simultaneously? \emph{HMF}
+has many, many examples where multiple functions (like the trigonometric
+or the hyperbolic functions) are tabulated in separate columns of
+the same table. 
 
 With the settings described so far, one way is to adjoin single column
 tables. In the tables below, which display as a single multi-columned
-table, I have used three different \texttt{rpos} settings (\texttt{rpos=1}
-is implicit in the first). This is one way to build a table that displays
-as multi-column. If you use this method, note that the \texttt{\%}
-comment characters are essential at the end of the last argument of
-the \verb`\tabulate` commands if you want the tables to abut exactly.
-Omitting them results in a space between the tables.
+table, I have used three different\index{rpos@\texttt{rpos}} \verb`rpos`
+settings (\verb`rpos=1` is implicit in the first). This is one way
+to build a table that displays as multi-column. If you use this method,
+note that the \verb`%` comment characters are essential at the end
+of the last argument of the \verb`\tabulate` commands if you want
+the tables to abut exactly. Omitting them results in a space between
+the tables.
 \begin{verbatim}
     \tabulate[rspec={x,0.2,6}]
       { \sin x }[x=0][*]%
@@ -796,7 +826,7 @@
 \toprule 
 {\small key} & {\small type} & {\small meaning} & {\small comment}\tabularnewline
 \midrule
-{\small\texttt{cvar}} & {\small token(s)} & {\small column-variable} & \tabularnewline
+{\small\texttt{cvar}} & {\small token(s)} & {\small column variable} & \tabularnewline
 {\small\texttt{cstep}} & {\small real num.} & {\small step size} & \tabularnewline
 {\small\texttt{cstop}} & {\small real num.} & {\small stop value} & {\small either }{\small\texttt{cstop}}\tabularnewline
 {\small\texttt{cols}} & {\small int} & {\small number of columns} & {\small or }{\small\texttt{cols}}\tabularnewline
@@ -811,19 +841,21 @@
 is to create and adjoin separate tables, one per parameter value,
 but that is clumsy. A more systematic procedure is to specify, in
 addition to the row variable, a \emph{column} variable and its start,
-step and stop values. 
+step and stop values\index{column variable!start, step, stop values|(}. 
 
-In the following example \verb`cvar=k` is the column variable. I
-have chosen a step size \verb`cstep=2` and a stop value \verb`cstop=9`.
-As with the row variable, the start value ({\ttfamily\verb`k=3`})
-of the column variable is specified in the vv-list. Although in the
-example these values are numbers, all three values could be \LaTeX{}
-expressions that evaluate to numbers. In particular, the expressions
-for step and stop values may include the row and column variables
-(in the example $x$ and $k$) which are assigned their initial vv-list
-values. Note also the setting for \verb`rhead` which shows the reader
-of the table that the numerical values displayed in the column headers
-are values of \verb`k`. This usage occurs throughout \emph{HMF}.
+In \index{cvar@\texttt{cvar}|(} the following example \verb`cvar=k`
+is the column variable. I have chosen a step size \verb`cstep=2`\index{cstep@\texttt{cstep}|(}
+and a stop value \verb`cstop=9`\index{cstop@\texttt{cstop}|(}. As
+with the row variable, the start value ({\ttfamily\verb`k=3`})
+of the column variable is specified in the vv-list\index{vv-list!row/col. variable initial values}\index{column variable!initial value in vv-list}.
+Although in the example these values are numbers, all three values
+could be \LaTeX{} expressions that evaluate to numbers. In particular,
+the expressions for step and stop values may include the row and column
+variables (in the example $x$ and $k$) which are assigned their
+initial vv-list values. Note also the setting for \verb`rhead`\index{rhead@\texttt{rhead}}
+which shows the reader of the table that the numerical values displayed
+in the column headers are values of \verb`k`. This usage occurs throughout
+\emph{HMF}.
 \begin{verbatim}
     \tabulate[rspec={x,0.2,6},rhead=x\backslash k,
               cvar=k,cstep=2,cstop=9]
@@ -836,11 +868,11 @@
 
 Again, as with the row variable, rather than using an explicit stop
 value\texttt{ }{\ttfamily\verb`cstop`}, you might prefer
-to specify the number of columns, \verb`cols`, explicitly. I could
-have replaced {\ttfamily\verb`cstop=9`} with \verb`cols=4`
-to get the same result. Note that the number of columns specified
-here is the number of \emph{function-value} columns; the row-variable
-column is ignored for this count.
+to specify the number of columns, \verb`cols`\index{cols@\texttt{cols}|(},
+explicitly. I could have replaced {\ttfamily\verb`cstop=9`}
+with \verb`cols=4` to get the same result. Note that the number of
+columns specified here is the number of \emph{function-value} columns;
+the row variable column is ignored for this count.
 
 It is worth pointing out explicitly that if \verb`cols` is specified,
 then it is possible to have a \emph{zero} step size, \verb`cstep=0`.
@@ -847,9 +879,9 @@
 (A similar comment applies to \verb`rows` and \verb`rstep`.)
 
 And again, as with the row variable, it is possible to condense the
-specification into a comma list with the key \verb`cspec`. This is
-a $3$-element comma list of the form \verb`{cvar,cstep,cols}`. Thus,
-for the preceding table I could also have written
+specification into a comma list with the key \verb`cspec`\index{cspec@\texttt{cspec}|(}.
+This is a $3$-element comma list of the form \verb`{cvar,cstep,cols}`.
+Thus, for the preceding table I could also have written
 \begin{verbatim}
     \tabulate[rspec={x,0.2,6},rhead=x\backslash k,
               cvar=k,cstep=2,cols=4]
@@ -867,15 +899,15 @@
 can all be \LaTeX{} expressions. Again like the row equivalents, the
 first two are evaluated \emph{after }the vv-list and so may depend
 not only on numbers and constants but also the initial values of the
-row and column variables, which are given those values in the vv-list.
+row and column variables, which are given those values in the vv-list.\index{vv-list!row/col. variable initial values}
 \verb`cols` is evaluated \emph{before }the vv-list; it may be a \LaTeX{}
-expression but cannot depend on the row or column variable.
+expression but cannot depend on the row or column variable.\index{cvar@\texttt{cvar}|)}\index{cstep@\texttt{cstep}|)}\index{cstop@\texttt{cstop}|)}\index{cols@\texttt{cols}|)}\index{cspec@\texttt{cspec}|)}\index{column variable!start, step, stop values|)}
 
 \subsection{Column header formatting}
 
-\label{subsec:Column-header-formatting}
+\label{subsec:Column-header-formatting}\index{formatting!column variable header|(}\index{column variable header|(}
 \begin{table}[b]
-\centering{}\caption{Formatting the column-variable header}
+\centering{}\caption{Formatting the column variable header}
 \begin{center}
 \begin{tabular}{ll>{\raggedright}p{4cm}l}
 \toprule 
@@ -883,27 +915,29 @@
 \midrule
 {\small\texttt{chstyle}} & {\small int (0\ldots 4)} & {\small header style} & {\small\texttt{0}}\tabularnewline
 {\small\texttt{ctitle}} & {\small tokens} & {\small single col. alt. header} & \tabularnewline
-{\small\texttt{chead}} & {\small tokens} & {\small user-defined header} & \tabularnewline
+{\small\texttt{chead}} & {\small tokens} & {\small user-defined header } & \tabularnewline
 {\small\texttt{calign}} & {\small char (r/c/l)} & {\small column alignment} & {\small\texttt{r}}\tabularnewline
 {\small\texttt{chnudge}} & {\small int} & {\small nudge header }{\small{\small\verb`int`}}{\small{} mu} & {\small\texttt{0}}\tabularnewline
-{\small\texttt{chround}} & {\small int} & {\small column header rounding} & {\small\texttt{0}}\tabularnewline
+{\small\texttt{chround}} & {\small int} & {\small{} rounding} & {\small\texttt{0}}\tabularnewline
 \bottomrule
 \end{tabular}
 \par\end{center}
 \end{table}
-There are four built-in style settings for the header to the column-variable
-(or function-value) columns (the `ch' prefix evoking `column header').
-If these don't meet your needs or otherwise satisfy, then it is possible
-to define your own header to the function value columns using the
-key \verb`chead`. First I discuss the built-in styles.
+There are four built-in style settings for the header to the column
+variable (or function-value) columns (the `ch' prefix evoking `column
+header'). If these don't meet your needs or otherwise satisfy, then
+it is possible to define your own header to the function value columns
+using the key \verb`chead`. First I discuss the built-in styles.
 
-\subsubsection{Header style: single-column case}
+\subsubsection{Single-column header}
 
-When there is only one column of function values, the function being
-tabulated is by default set as the header to the column. This corresponds
-to setting \texttt{ctitle={*}} (see \xA7\ref{subsec:Title:-ctitle-setting}
-below). You may want some other header. Then give \texttt{ctitle}
-some other value (although note that giving it the value \texttt{{*}{*}}
+When\index{column variable header!single column case} there is only
+one column of function values, the function being tabulated is by
+default set as the header to the column. This corresponds to setting
+\verb`ctitle=*`\index{ctitle@\texttt{ctitle}!* setting@\texttt{{*}} setting}
+(see \xA7\ref{subsec:Title:-ctitle-setting} below). You may want some
+other header. Then give \verb`ctitle`\index{ctitle@\texttt{ctitle}}
+some other value (although note that giving it the value \texttt{{*}{*}}\index{ctitle@\texttt{ctitle}!** setting@\texttt{{*}{*}} setting}
 will set both the function and the vv-list as the header; again see
 \xA7\ref{subsec:Title:-ctitle-setting}). Whatever value you set, it
 will be typeset between math delimiters (\verb`$` signs) and can
@@ -910,30 +944,30 @@
 be nudged (see \xA7\ref{subsec:Nudgingtheheaders:-chnudge}) left or
 right to fine-tune its position in the column. (If you want an asterisk
 as the header, you will need to place it between \emph{two} pairs
-of braces, \texttt{ctitle=\{\{{*}\}\}}, to prevent it being misinterpreted
+of braces, \verb`ctitle={{*}}`, to prevent it being misinterpreted
 as the default setting.)
 
 If you want some more complicated header, perhaps not constrained
-by the \verb`$` delimiters, then give \texttt{chead} a value. This
-key I discuss below in \xA7\ref{subsec:chead}. \texttt{chead} is entirely
-up to the user to specify, including any math delimiters and positioning
-(nudging) of elements. 
+by the \verb`$` delimiters, then give \verb`chead`\index{chead@\texttt{chead}}
+a value. This key I discuss below in \xA7\ref{subsec:chead}. \verb`chead`
+is entirely up to the user to specify, including any math delimiters
+and positioning (nudging) of elements. 
 
-If both \texttt{ctitle} and \texttt{chead} are given, the \texttt{chead}
+If both \verb`ctitle` and \verb`chead` are given, the \verb`chead`
 value prevails.
 
-\subsubsection{Header~style: multi-column case}
+\subsubsection{Multi-column header: \texttt{chstyle}}
 
-\label{subsec:Headerstyle:-multi-column-case}\texttt{chstyle=0} which
-is the default gives a header of the form displayed in the last example,
-with only the column-variable \emph{value} at the head of each column.
-This style generally requires the row-variable header to indicate
-what the values denote, as in the example above where \texttt{rhead=x\textbackslash backslash
-k}, the backslash separating row from column variable. \emph{HMF}
-contains a multitude of instances of this style; see Tables~9.7,
-17.5, 21.1, 24.3, 27.4, etc. for examples.
+\label{subsec:Headerstyle:-multi-column-case}\index{column variable header!multi-column case|(}\verb`chstyle=0`\index{chstyle@\texttt{chstyle}|(}\index{column variable header!multi-column case!chstyle@\texttt{chstyle}|(}
+which is the default gives a header of the form displayed in the last
+example, with only the column variable \emph{value} at the head of
+each column. This style generally requires the row variable header
+to indicate what the values denote, as in the example above where
+\verb`rhead=x\backslash k`, the backslash separating row from column
+variable. \emph{HMF} contains a multitude of instances of this style;
+see Tables~9.7, 17.5, 21.1, 24.3, 27.4, etc. for examples.
 
-\texttt{chstyle=1} changes the header of the \emph{first} function
+\verb`chstyle=1` changes the header of the \emph{first} function
 value column to the form \emph{variable=value} \textendash{} in the
 example below, to $k=1$. This may be an appropriate choice when a
 small rounding value is being used and the resulting columns are narrow.
@@ -940,8 +974,8 @@
 I can find only one real instance in \emph{HMF}, Table~26.7. In the
 example I have used the \verb`rdata` setting to collect an assortment
 of nonsense values and for some weird reason wish to tabulate the
-sines of multiples of these oddballs. Note that the row-variable setting
-\texttt{rhead} (producing $X\backslash k$) is no longer needed since
+sines of multiples of these oddballs. Note that the row variable setting
+\verb`rhead` (producing $X\backslash k$) is no longer needed since
 the column variable is now explicitly indicated. (But the table is
 lacking a title \textendash{} what on earth are we calculating with
 this strange group of numbers?)
@@ -954,11 +988,11 @@
               ^,rvar=X,rverb=1,cspec={k,1,3},chstyle=1]
       { \sin kX }[k=1][3*]\medskip{}
 
-\texttt{chstyle=2} changes the header of all function-value columns
+\verb`chstyle=2` changes the header of all function-value columns
 to the form \emph{variable=value}.\emph{ }In \emph{HMF} examples are
-Tables~7.4, 7.9, 10.10, 16.6, etc. Again, the row-variable setting
-\texttt{rhead} no longer needs the \texttt{\textbackslash backslash
-k} part since the column variable is now explicitly indicated.
+Tables~7.4, 7.9, 10.10, 16.6, etc. Again, the row variable setting
+\verb`rhead` no longer needs the \verb`\backslash k` part since
+the column variable is now explicitly indicated.
 \begin{verbatim}
     \tabulate[rspec={x,0.2,6},
               cspec={k,2,3},chstyle=2]
@@ -968,10 +1002,10 @@
               cspec={k,2,3},chstyle=2]
       { \sin kx }[k=3,x=0][3*]\medskip{}
 
-\texttt{chstyle=3} fills each column-variable header with the expression
+\verb`chstyle=3` fills each column variable header with the expression
 being tabulated but with the column variable replaced by its respective
 values. See \emph{HMF} Tables~5.4, 8.1, 9.1, 19.1, etc. for examples.
-Note that if the column-variable value is \verb`1`, the \verb`1`
+Note that if the column variable value is \verb`1`, the \verb`1`
 will be displayed:
 \begin{verbatim}
     \tabulate[rspec={x,0.2,6},
@@ -984,8 +1018,8 @@
       { \sin kx }[k=1,x=0][4*]\medskip{}
 
 In this last example you may not want the \verb`1` displayed. To
-achieve that effect put \texttt{chstyle=4}. This results in a header
-as for \texttt{chstyle=3} but if the column variable takes the value
+achieve that effect put \verb`chstyle=4`. This results in a header
+as for \verb`chstyle=3` but if the column variable takes the value
 \verb`1`, it has an empty replacement:
 \begin{verbatim}
     \tabulate[rspec={x,0.2,6},
@@ -995,20 +1029,21 @@
 $\Longrightarrow$     \tabulate
       [rspec={x,0.2,6},
          cspec={k,2,3},chstyle=4]
-      { \sin kx }[k=1,x=0][4*]
+      { \sin kx }[k=1,x=0][4*]\index{column variable header!multi-column case!chstyle@\texttt{chstyle}|)}\index{chstyle@\texttt{chstyle}|)}
 
 \subsubsection{User-defined header: \texttt{chead}}
 
-\label{subsec:chead}If the function in the last example were, for
-instance, $k+\sin kx$, then neither replacing $k$ by \verb`1` nor
-an empty replacement would be appropriate. In that case the only recourse
-is to use the \verb`chead` key. Users can assign whatever value they
-like to \verb`chead`. The assignment must contain the correct number
-of tab characters (\verb`&`) for the \emph{column-variable columns
-only}. It is a header only to the function-value columns. The user
-will need to insert \verb`$` signs or other math delimiters as appropriate.
-This differs from the practice for \verb`rhead`, but \verb`chead`
-is potentially far more complicated. Thus for $k+\sin kx$,
+\label{subsec:chead}\index{chead@\texttt{chead}|(}If the function
+in the last example were, for instance, $k+\sin kx$, then neither
+replacing $k$ by \verb`1` nor an empty replacement would be appropriate.
+In that case the only recourse is to use the \verb`chead` key. Users
+can assign whatever value they like to \verb`chead`. The assignment
+must contain the correct number of tab characters (\verb`&`) for
+the \emph{column variable columns only}. It is a header only to the
+function-value columns. The user will need to insert \verb`$` signs
+or other math delimiters as appropriate. This differs from the practice
+for \verb`rhead`, but \verb`chead` is potentially far more complicated.
+Thus for $k+\sin kx$,
 \begin{verbatim}
     \tabulate[rspec={x,0.2,6},cspec={k,2,3},
               chead=$1+\sin x$&$3+\sin3x$&$5+\sin 5x$]
@@ -1022,15 +1057,15 @@
 
 \noindent Non-empty content for the \verb`chead` key overrides any
 \verb`chstyle` setting and, in the case of a table with only a single
-function-value column, overrides any \verb`ctitle` setting.
+function-value column, overrides any \verb`ctitle` setting.\index{chead@\texttt{chead}|)}
 
 \subsubsection{Alignment: \texttt{calign}}
 
-The function-value columns are aligned right, \verb`calign=r`, by
-default. Also available are \verb`calign=c` for centred alignment
-and \verb`calign=l` (lowercase L) for left alignment. Using centred
-alignment with {\ttfamily\verb`chstyle=2`} in a previous
-example table gives
+The\index{calign@\texttt{calign}|(} function-value columns are aligned
+right, \verb`calign=r`, by default. Also available are \verb`calign=c`
+for centred alignment and \verb`calign=l` (lowercase L) for left
+alignment. Using centred alignment with {\ttfamily\verb`chstyle=2`}
+in a previous example table gives
 \begin{verbatim}
     \tabulate[rspec={x,0.2,6},ralign=c,
               cspec={k,2,3},chstyle=2,calign=c]
@@ -1043,19 +1078,20 @@
 
 \noindent The first column of function values looks better, but the
 minus signs spoil the effect in the others. Handling signs in tables
-is discussed below; see \xA7\ref{subsec:Signs}.
+is discussed below; see \xA7\ref{subsec:Signs}\index{calign@\texttt{calign}|)}.
 
-\subsubsection{Nudging~the~headers: \texttt{chnudge}}
+\subsubsection{Nudging header entries: \texttt{chnudge}}
 
-\label{subsec:Nudgingtheheaders:-chnudge}In left or right alignment
-it is possible to nudge the headers in the opposite direction by giving
-a numerical value to the the key \verb`chnudge`. The header is moved
-by the specified number of mu (math units; 18 to a quad). Note that
-the `mu' does not need to be written. {\ttfamily\verb`numerica-tables`}
-provides that. In the next example I have chosen \verb`chnudge=12`
-to nudge the column headers to the left to give a centred effect to
-the header but leaving the function values with their (potentially)
-awkward minus signs right aligned.
+\label{subsec:Nudgingtheheaders:-chnudge}In\index{chnudge@\texttt{chnudge}|(}
+left or right alignment it is possible to nudge the column headers
+in the opposite direction by giving a numerical value to the the key
+\verb`chnudge`. The header is moved by the specified number of mu
+(math units; 18 to a quad). Note that the `mu' does not need to
+be written. {\ttfamily\verb`numerica-tables`} provides
+that. In the next example I have chosen \verb`chnudge=12` to nudge
+the column headers to the left to give a centred effect to the header
+but leaving the function values with their (potentially) awkward minus
+signs right aligned.
 \begin{verbatim}
     \tabulate[rspec={x,0.2,6},ralign=c,
               cspec={k,2,3},chstyle=2,chnudge=12]
@@ -1080,11 +1116,12 @@
 $\Longrightarrow$     \tabulate
       [rspec={x,0.2,6},ralign=c,
          cspec={k,2,3},chstyle=2,chnudge=-9]
-      { \sin kx }[k=100,x=0][3*]
+      { \sin kx }[k=100,x=0][3*]\index{chnudge@\texttt{chnudge}|)}
 
 \subsubsection{Rounding: \texttt{chround}}
 
-In the examples so far, the column variable has incremented in integer
+In\index{chround@\texttt{chround}|(}\index{rounding value!header row|(}
+the examples so far, the column variable has incremented in integer
 steps. The default rounding value for the column variable is $0$
 (for the row variable it is $1$), so if it increments by some non-integer
 amount, the result will be confusing \textendash{} if $k$ incremented
@@ -1101,33 +1138,35 @@
 $\Longrightarrow$     \tabulate
       [rspec={x,0.2,6},rhead=x,ralign=c,
          cspec={k,0.25,3},chstyle=2,chround=2]
-      { \sin kx }[k=3,x=0][*]
+      { \sin kx }[k=3,x=0][*]\index{column variable header|)}\index{rounding value!header row|)}\index{column variable header!multi-column case|)}\index{chround@\texttt{chround}|)}\index{formatting!column variable header}
 
 \section{Multiple functions in a single table}
 
-\label{sec:Multiple-function-tables}As already noted in \xA7\ref{subsec:Adjoining-tables},
-tabulating more than one function at a time is too common a need to
-have to resort to a fudge like adjoining tables. The systematic way
-of handling this task is to enter the functions in the main argument
-of a \verb`\tabulate` command separated by a specified mark then
-alert \verb`\tabulate` that this has happened with the \verb`ff`
+\label{sec:Multiple-function-tables}As\index{multi-function tables|(}
+already noted in \xA7\ref{subsec:Adjoining-tables}, tabulating more
+than one function at a time is too common a need to have to resort
+to a fudge like adjoining tables. The systematic way of handling this
+task is to enter the functions in the main argument of a \verb`\tabulate`
+command separated by a specified mark then alert \verb`\tabulate`
+that this has happened with the \verb`ff`\index{ff@\texttt{ff}}
 key in the settings option. 
 
-By default the multi-formula delimiter is the comma if the decimal
-point is a dot (or period), or the semicolon if the decimal point
-is a comma (\texttt{numerica} loaded with the \verb`comma` package
-option). If you are content with the default delimiter then it suffices
-to enter \verb`ff` in the settings option. If not, then enter \verb`ff=<mark>`
-there. For example \verb`ff=|` would make the `pipe' character
-\verb`|` the multi-formula delimiter. If the \verb`ff` key is overlooked
-then multiple formulas in the main argument of \verb`\tabulate` will
-almost certainly cause a \LaTeX{} error.
+By default the multi-function delimiter\index{multi-function tables!function delimiter}
+is the comma if the decimal point is a dot (or period), or the semicolon\index{semicolon and decimal comma}
+if the decimal point is a comma\index{decimal comma} (\texttt{numerica}
+loaded with the \verb`comma` package option). If you are content
+with the default delimiter then it suffices to enter \verb`ff` in
+the settings option. If not, then enter \verb`ff=<mark>` there. For
+example \verb`ff=|` would make the `pipe' character \verb`|` the
+multi-formula delimiter. If the \verb`ff` key is overlooked then
+multiple formulas in the main argument of \verb`\tabulate` will almost
+certainly cause a \LaTeX{} error.
 
 In the following example, using the default comma, note first the
 \verb`ff` setting, and then the \verb`o` setting indicating that
 the arguments of the trig functions are in degrees and (just to amuse
 myself) I have put the row variable column on both sides with the
-\verb`rpos=3` setting: 
+\verb`rpos=3`\index{rpos@\texttt{rpos}} setting: 
 \begin{verbatim}
     \tabulate[ff,o,rpos=3,rround=0,
               rvar=\theta,rstep=10,rstop=90]
@@ -1138,20 +1177,23 @@
       { \sin \theta, \cos \theta }[\theta=0][*]\medskip{}
 
 The tables suggest a space saving possibility: since $\sin$ and $\cos$
-are complementary functions ($\cos\theta=\sin(90-\theta)$), the values
-in the bottom half of the table duplicate values in the top half,
-only with the columns reversed. This is the reason for the space saving
-\verb`rpos=4` setting (\xA7\ref{subsec:Second-row-var-col}) which enables
-complementary functions to be tabulated in `half tables' (for examples
-see \emph{HMF} Tables 4.10\textendash 4.12 for the trigonometric functions).
+are complementary functions\index{complementary functions} ($\cos\theta=\sin(90-\theta)$),
+the values in the bottom half of the table duplicate values in the
+top half, only with the columns reversed. This is the reason for the
+space saving \verb`rpos=4`\index{rpos@\texttt{rpos}} setting (\xA7\ref{subsec:Second-row-var-col})
+which enables complementary functions to be tabulated in `half tables'
+(\emph{HMF} Tables 4.10\textendash 4.12 are examples for the trigonometric
+functions).
 
-In the next example, the row-variable column is again duplicated,
+In the next example, the row variable column is again duplicated,
 left and right, with the \verb`rpos=3` setting, and a centred alignment
 is used for the function values. Because $\sin$ and $\cos$ are complementary,
 I have stopped the table at \verb`rstop=45` since continuing to \verb`90`
-would simply give a mirror reflection of the preceding values. Visually,
-the table has an unsatisfactory, sprawling appearance \textendash{}
-which directs attention to how tables might be titled (\xA7\ref{subsec:Title:-ctitle-setting}):
+would simply give a mirror reflection of the preceding values. To
+accommodate the use of the comma in \verb`\max` and \verb`\min`\index{n-ary@$n$-ary functions}
+I have stipulated \verb`ff=|`\index{ff@\texttt{ff}}. Visually, the
+table has an unsatisfactory, sprawling appearance \textendash{} which
+directs attention to how tables might be titled (\xA7\ref{subsec:Title:-ctitle-setting})\index{rpos@\texttt{rpos}}:
 \begin{verbatim}
     \tabulate[ff=|,o,rpos=3,rround=0,
         rvar=\theta,rstep=10,rstop=45,calign=c]
@@ -1163,16 +1205,16 @@
         rvar=\theta,rstep=10,rstop=45,calign=c]
       { \max(\sin \theta,\cos \theta)|
              \min(\sin \theta,\cos \theta) }
-      [\theta=0][*]   
+      [\theta=0][*]   \index{multi-function tables|)}
 
 \section{Whole-of-table formatting}
 
-\label{sec:Whole-of-table-formatting}There are a number of settings
-pertaining to the appearance of the table as a whole, things like
-the position of the row-variable column, division of the function
-values into blocks to aid readability, the presence of horizontal
-rules or of a collective column title or of a footer row. I discuss
-these here.
+\label{sec:Whole-of-table-formatting}There\index{formatting!title, subtitle, footer|(}
+are a number of settings pertaining to the appearance of the table
+as a whole, things like the position of the row variable column, division
+of the function values into blocks to aid readability, the presence
+of horizontal rules or of a collective column title or of a footer
+row. I discuss these here.
 
 \begin{table}
 \centering{}\caption{\protect\label{tab:Table-formatting-settings}Table formatting}
@@ -1182,11 +1224,11 @@
 {\small key} & {\small type} & {\small meaning} & {\small initial}\tabularnewline
 \midrule
 {\small\texttt{ctitle}} & {\small token(s)} & {\small collective title for function-value columns} & \tabularnewline
-{\small\texttt{csubttl}} & {\small token(s)} & {\small subtitle row for} {\small function- value cols} & \tabularnewline
+ & {\small token(s)} & {\small subtitle row for} {\small function- value cols} & \tabularnewline
 {\small\texttt{header}} & {\small int (}{\small\texttt{0/1}}{\small )} & {\small suppress/show header row} & {\small\texttt{1}}\tabularnewline
 {\small\texttt{foot}} & {\small token(s)} & {\small table-wide footer row} & \tabularnewline
 {\small\texttt{rules}} & {\small char(s)} & {\small horizontal rule spec.} & {\small\texttt{ThB}}\tabularnewline
-{\small\texttt{rpos}} & {\small int (}{\small\texttt{0}}{\small\ldots}{\small\texttt{4}}{\small )} & {\small row-variable col. position(s)} & {\small\texttt{1}}\tabularnewline
+{\small\texttt{rpos}} & {\small int (}{\small\texttt{0}}{\small\ldots}{\small\texttt{4}}{\small )} & {\small row variable col. position(s)} & {\small\texttt{1}}\tabularnewline
 {\small\texttt{rbloc}} & {\small integer comma list} & {\small row block specification} & \tabularnewline
 {\small\texttt{valign}} & {\small char (}{\small\texttt{t}}/{\small\texttt{m}}/{\small\texttt{b}}{\small )} & {\small vertical alignment of table relative to text baseline} & {\small\texttt{m}}\tabularnewline
 \bottomrule
@@ -1197,18 +1239,18 @@
 
 \subsection{Title for function-value columns: \texttt{ctitle}}
 
-\label{subsec:Title:-ctitle-setting}The function-value columns have
-individual headers, formatted in the various ways provided by the
-settings discussed in previous sections, but it can also be helpful
-to have a collective title for these columns. We saw the need in the
-last example. The need is met with the \verb`ctitle` key. This can
-be set to whatever you like (e.g. \verb`ctitle=\text{Fred}`) but,
-to more purpose, I shall use the setting to improve the look of the
-table in the last example. Note that the content of the \verb`ctitle`
+\label{subsec:Title:-ctitle-setting}\index{ctitle@\texttt{ctitle}|(}The\index{title row|(}
+function-value columns have individual headers, formatted in the various
+ways provided by the settings discussed in previous sections, but
+it can also be helpful to have a collective title for these columns.
+We saw the need in the last example. The need is met with the \verb`ctitle`
+key. This can be set to whatever you like (e.g. \verb`ctitle=\text{Fred}`)
+but, to more purpose, I shall use the setting to improve the look
+of the table in the last example. Note that the content of the \verb`ctitle`
 key is enclosed in braces. This is to shield the commas there from
 being misinterpreted as item separators in the settings option. For
-an analogous reason I have specified the semicolon (\verb`ff=;`)
-as the function separator in the main argument:
+an analogous reason I have specified the semicolon (\verb`ff=;`)\index{ff@\texttt{ff}}
+as the function separator in the main argument:\index{rpos@\texttt{rpos}}\index{n-ary@$n$-ary functions}
 \begin{verbatim}
      \tabulate[ff=;,o,rpos=3,rround=0,
                rvar=\theta,rstep=10,rstop=45,
@@ -1241,16 +1283,15 @@
               cspec={m,1,4},chstyle=2,ctitle=*]
       { \cos(m\pi/n) }[n=3,m=2][*4]
 \end{verbatim}
-$\Longrightarrow$ \selectlanguage{english}%
-    \tabulate[rspec={n,1,5},rround=0,
+$\Longrightarrow$     \tabulate[rspec={n,1,5},rround=0,
               cspec={m,1,4},chstyle=2,ctitle=*]
       { \cos(m\pi/n) }[n=3,m=2][*4]
-\selectlanguage{english}%
 
 \subsection{Between header \& title: \texttt{csubttl}}
 
-Some tables need to fit more header or title material into their rows
-than can be comfortably accommodated in either row alone. For examples,
+Some\index{csubttl@\texttt{csubttl}}\index{title row!subtitle row}
+tables need to fit more header or title material into their rows than
+can be comfortably accommodated in either row alone. For examples,
 see \emph{HMF} Tables 7.9 (error function for complex arguments),
 17.7 (Jacobian zeta function), 21.1 (eigenvalues of spheroidal wave
 functions), and 26.7 (probability integrals). One way of handling
@@ -1260,13 +1301,14 @@
 
 I have chosen \verb`csubttl`, a contraction of `column variable
 subtitle' for the key name. (In version 2 of \texttt{numerica-tables}
-the name \verb`cmidrow` was used; that will still work but \verb`csubttl`
-gives a clearer indication of what the key does.) The initial `c'
-emphasizes that like \verb`chead` and \verb`ctitle` it is constrained
-to the span of the column-variable (or function-value) columns only.
-The content of \verb`csubttl` is entirely the responsibility of the
-user, including insertion of the necessary number of tab characters,
-\verb`&`, and any math delimiters required. 
+the name \verb`cmidrow`\index{cmidrow@\texttt{cmidrow }|see{\texttt{csubttl}}}
+was used; that will still work but \verb`csubttl` gives a clearer
+indication of what the key does.) The initial `c' emphasizes that
+like \verb`chead` and \verb`ctitle` it is constrained to the span
+of the column variable (or function-value) columns only. The content
+of \verb`csubttl` is entirely the responsibility of the user, including
+insertion of the necessary number of tab characters, \verb`&`, and
+any math delimiters required. 
 \begin{verbatim}
     \tabulate[ff,rspec={x,1,7},rround=0,chnudge=18,
       ctitle=\text{Hyperbolic functions},
@@ -1280,37 +1322,41 @@
       csubttl=\multicolumn{3}{c}{$\sinh x=\tfrac12
         (e^x-e^{-x}),\ \cosh x=\tfrac12(e^x+e^{-x})$}]
       { \tfrac12e^x, \sinh x, \cosh x }
-      [{x}=0][8*]
+      [{x}=0][8*]\index{ctitle@\texttt{ctitle}|)}\index{title row|)}
 
 \subsection{Suppress/show header row}
 
-\label{subsec:Header-row-suppress}Usually the header row in a table
-is shown. It carries essential information as to the table's contents.
-However, there are occasions when it should be suppressed. An example
-where this is appropriate is given in \xA7\ref{subsec:rdata-rfile-rverb}
+\label{subsec:Header-row-suppress}Usually\index{headless@\texttt{headless}}
+the header row in a table is shown. It carries essential information
+as to the table's contents. However, there are occasions when it should
+be suppressed. An example where this is appropriate is given in \xA7\ref{subsec:rdata-rfile-rverb}
 where a table listing fractions of $\pi$ and their values is shown.
-As in that example, to suppress the header enter the setting \verb`header=0`.
-(Otherwise tables default to \verb`header=1`.)
+As in that example, to suppress the header enter the setting \verb`headless=1`.
+(Otherwise tables default to \verb`headless=0`.)
 
 \subsection{Footer row: \texttt{foot} }
 
-Some tables have a footer row and \verb`numerica-tables` allows such
-a row to be inserted, but its entire content, with one exception,
-is the responsibility of the user, including insertion of the necessary
-number of tab characters \verb`&`. This will usually be $1$ less
-than the total number of columns (including row-variable columns)
-in the table \textendash{} or some adjustment thereof if you use \verb`\multicolumn`.
-You can put into the footer what you wish: \verb`foot=<tokens>`.
-(\emph{HMF} uses the footer mainly for cryptic descriptions of the
-accuracy and needs of interpolation methods.)
+Some\index{foot@\texttt{foot}}\index{footer row} tables have a footer
+row and \verb`numerica-tables` allows such a row to be inserted,
+but its entire content, with one exception, is the responsibility
+of the user, including insertion of the necessary number of tab characters
+\verb`&`. This will usually be $1$ less than the total number of
+columns (including row variable columns) in the table \textendash{}
+or some adjustment thereof if you use \verb`\multicolumn`. (\emph{HMF}
+uses the footer mainly for cryptic descriptions of the accuracy and
+needs of interpolation methods.) 
 
-The one exception is when \verb`foot=*`. This will fill the footer
-with the header, but \emph{reversed}. This is useful for tabulating
-complementary functions like the sine and cosine or, more generally,
-$f(x)$ and $g(x)$ where $g(x)=f(k-x)$ for some constant $k$. Values
-for the complementary function are read from the bottom up and require
-a reversed row-variable column on the right of the table; see \xA7\ref{subsec:Second-row-var-col}.
+You can put into the footer what you wish with the setting \verb`foot=<tokens>`.
 
+The one exception is when \verb`foot=*`\index{foot@\texttt{foot}}.
+This will fill the footer with the header, but with the items of the
+header presented in \emph{reversed} order \textendash{} the last item
+first, and so on. This is useful for tabulating complementary functions
+like the sine and cosine or, more generally, $f(x)$ and $g(x)$ where
+$g(x)=f(k-x)$ for some constant $k$. Values for the complementary
+function are read from the bottom up and require a reversed row variable
+column on the right of the table; see \xA7\ref{subsec:Second-row-var-col}.
+
 \noindent{}%
 \noindent\begin{minipage}[t]{1\columnwidth}%
 \begin{shaded}%
@@ -1317,23 +1363,24 @@
 
 \subsubsection{Footer functions}
 
-In previous versions of \texttt{numerica-tables} it was possible to
-perform certain simple operations on columns \textendash{} calculate
-the sum, the average and maximum and minimum values. This is no longer
-so in version 3. Not only does it seem tangential to the primary function
-of the \verb`\tabulate` command but it was also acutely dependent
-on the format of the numbers being operated on. A simple change in
-the number-format option could cause a \LaTeX{} error.\end{shaded}%
-\end{minipage}
+In\index{footer functions} previous versions of \texttt{numerica-tables}
+it was possible to perform certain simple operations on columns \textendash{}
+calculate the sum, the average and maximum and minimum values. This
+is no longer so in version 3. Not only does it seem tangential to
+the primary function of the \verb`\tabulate` command but it was also
+acutely dependent on the format of the numbers being operated on.
+A simple change in the number-format option could cause a \LaTeX{}
+error.\end{shaded}%
+\end{minipage}\index{formatting!title, subtitle, footer|)}
 
 \subsection{Horizontal rules: \texttt{rules}}
 
-\label{subsec:Rules:-rules-setting}
+\label{subsec:Rules:-rules-setting}\index{rules@\texttt{rules}|(}\index{rules|(}\index{formatting!rules|(}
 \begin{table}[!b]
 \centering{}\caption{\protect\label{tab:Rules}Rules. {\small (In the \textquoteleft span\textquoteright{}
-column, \textquoteleft f-v\textquoteright =function-value; \textquoteleft r-v\textquoteright =row-variable;
-\textquoteleft$<$~table\textquoteright{} indicates that the rule
-spans the table but is trimmed at each end.)}}
+column, \textquoteleft f-v\textquoteright =function-value; \textquoteleft r-v\textquoteright =row
+variable; \textquoteleft$<$~table\textquoteright{} indicates that
+the rule spans the table but is trimmed at each end.)}}
 \begin{center}
 \begin{tabular}{lll>{\raggedright}p{3cm}l}
 \toprule 
@@ -1351,9 +1398,10 @@
 \end{tabular}
 \par\end{center}
 \end{table}
-The \texttt{booktabs} package which \texttt{numerica} uses is most
-emphatic that one should `1. Never, ever use vertical rules. 2. Never
-use double rules.' Most of the tables proper in \emph{HMF} lack rules
+The \texttt{booktabs} \index{booktabs@\texttt{booktabs}} package
+which \texttt{numerica} uses is most emphatic that one should `1.
+Never, ever use vertical rules.\index{rules!edicts} 2. Never use
+double rules.' Most of the tables proper in \emph{HMF} lack rules
 of any kind although closer inspection shows smaller tables within
 the text generally \emph{are} delimited by horizontal rules (often
 also with vertical rules). In the various examples in the present
@@ -1366,9 +1414,9 @@
 The \verb`rules` key allows one to specify precisely which rules
 are used. The content of the key is a `word' \textendash{} a sequence
 of letters \textendash{} where the characters have the significance
-and default thicknesses (from \texttt{booktabs}) shown in Table~\ref{tab:Rules}.
-The default setting is \verb`rules=ThB`. To insert a rule beneath
-the title, for example, change this to \verb`rules=TthB`.
+and default thicknesses (from \texttt{booktabs}\index{booktabs@\texttt{booktabs}})
+shown in Table~\ref{tab:Rules}. The default setting is \verb`rules=ThB`.
+To insert a rule beneath the title, for example, change this to \verb`rules=TthB`.
 
 If you are using a subtitle row between header and title rows and
 want a rule beneath that too, then the spec. is \verb`rules=TtshB`.
@@ -1376,33 +1424,35 @@
 can also be used instead of \verb`s`, as in version 2 of \texttt{numerica-tables}.)
 To my eye rules beneath both title and subtitle don't work; a rule
 beneath the subtitle alone gives a better result. The subtitle rule
-changes its behaviour depending on whether there are two row-variable
+changes its behaviour depending on whether there are two row variable
 columns \textendash{} on the left and right of the table \textendash{}
 or not. If there is only such column then, like the title rule, the
 subtitle rule spans only the function-value columns. If there are
-two row-variable columns then the subtitle rule spans the table but
-is trimmed by 0.5 em at each end. That degree of trim is the \verb`booktabs`
-default but can be changed by giving a different value to \verb`\cmidrulekern`
+two row variable columns then the subtitle rule spans the table but
+is trimmed by 0.5 em at each end. That degree of trim is the \texttt{booktabs}\index{booktabs@\texttt{booktabs}}
+default but can be changed by giving a different value to \verb`\cmidrulekern`\index{cmidrulekern@\texttt{\textbackslash cmidrulekern}}
 in the preamble, e.g. \verb`\cmidrulekern=1em`. Note that the changed
 trim will also apply to the title rule.
 
-If you are using a footer row and want a rule above it, then add \verb`f`
-to the specification, e.g. \verb`rules=TthfB`. In version 3 of \texttt{numerica-tables}
-the rule is trimmed at each end. Visually, having two table-spanning
-rules close together, the \verb`f` and \verb`B` rules, doesn't work.
-The trimming makes a difference. (For the \verb`T` and \verb`h`
-rules, the occurrence of the table body beneath the \verb`h` rule
-seems to make a difference to the visual impact of the rules.) But
-the question should always be: is a rule necessary at all? Usually,
-less is more.
+If you are using a footer row\index{footer row} and want a rule above
+it, then add \verb`f` to the specification, e.g. \verb`rules=TthfB`.
+In version 3 of \texttt{numerica-tables} the rule is trimmed at each
+end. Visually, having two table-spanning rules close together, the
+\verb`f` and \verb`B` rules, doesn't work. The trimming makes a
+difference. (For the \verb`T` and \verb`h` rules, the occurrence
+of the table body beneath the \verb`h` rule seems to make a difference
+to the visual impact of the rules.) But the question should always
+be: is a rule necessary at all? Usually, less is more.
 
 If you wish to change the thickness of a rule from its default, then
-enter new values for any or all of \verb`\heavyrulewidth`, \verb`\lightrulewidth`,
-\verb`\cmidrulewidth` in the preamble. The values listed in Table~\ref{tab:Rules}
-are the default values in the \texttt{booktabs} package (except for
-the midrow and footer rules, which \texttt{booktabs} does not cover;
-in \texttt{numerica-tables} these rules are assigned a thickness of
-\verb`\cmidrulewidth`).
+enter new values for any or all of \verb`\heavyrulewidth`\index{heavyrulewidth@\texttt{\textbackslash heavyrulewidth}},
+\verb`\lightrulewidth`\index{lightrulewidth@\texttt{\textbackslash lightrulewidth}},
+\verb`\cmidrulewidth`\index{cmidrulewidth@\texttt{\textbackslash cmidrulewidth}}
+in the preamble. The values listed in Table~\ref{tab:Rules} are
+the default values in the \texttt{booktabs}\index{booktabs@\texttt{booktabs}}
+package (except for the midrow and footer rules, which \texttt{booktabs}\index{booktabs@\texttt{booktabs}}
+does not cover; in \texttt{numerica-tables} these rules are assigned
+a thickness of \verb`\cmidrulewidth`).
 
 The order in which rules are placed in the specification doesn't matter.
 I have entered them in their `natural' order simply because it feels
@@ -1411,10 +1461,11 @@
 
 In the example table below, a rule for the column title has been specified
 (the \verb`t` in the setting \verb`rules=TthB`). Also note the use
-of \verb`ctitle=**`. The formula contains an extra parameter $a$,
-assigned a value in the vv-list. It now makes sense to display the
-vv-list in the column title (but note the braces around \verb`k`
-and \verb`x` in the vv-list so that \emph{they} don't display).
+of \verb`ctitle=**`\index{ctitle@\texttt{ctitle}!** setting@\texttt{{*}{*}} setting}.
+The formula contains an extra parameter $a$, assigned a value in
+the vv-list. It now makes sense to display the vv-list in the column
+title (but note the braces around \verb`k` and \verb`x` in the vv-list
+so that \emph{they} don't display).
 \begin{verbatim}
     \tabulate
       [rspec={x,0.25,5},rround=2,rhnudge=9,
@@ -1426,41 +1477,46 @@
       [rspec={x,0.25,5},rround=2,rhnudge=9,
          cspec={k,0.25,3},chstyle=2,chround=2,
            ctitle=**,rules=TthB] 
-      { a\sin kx }[a=2/\pi,{k}=3,{x}=0][*]
+      { a\sin kx }[a=2/\pi,{k}=3,{x}=0][*]\index{rules|)}\index{rules@\texttt{rules}|)}\index{formatting!rules}
 
-\subsection{Second row-variable column: \texttt{rpos=4}}
+\subsection{Second row variable column: \texttt{rpos=4}}
 
-\label{subsec:Second-row-var-col}In \xA7\ref{subsec:Row-var-col-pos}
-I discussed the settings \verb`rpos=0,1,2` and in \xA7\ref{sec:Multiple-function-tables}
+\label{subsec:Second-row-var-col}In\index{row variable column!position in table}
+\index{rpos@\texttt{rpos}|(}\xA7\ref{subsec:Row-var-col-pos} I discussed
+the settings \verb`rpos=0,1,2` and in \xA7\ref{sec:Multiple-function-tables}
 gave an example of using {\ttfamily\verb`rpos=3`} where
-repeating the row-variable column on the right is helpful. There is
+repeating the row variable column on the right is helpful. There is
 another value available for this key, \verb`rpos=4`. Like {\ttfamily\verb`rpos=3`}
-this adds the row-variable column to both left and right sides of
+this adds the row variable column to both left and right sides of
 the table, but for the right column the values are a function of those
 in the left column ({\ttfamily\verb`rpos=3`} corresponds
-to the function being the identity). The value given to the key \verb`rvar'`
-determines the function used and the value given to the key \verb`rhead'`
-determines the header for the right-hand row-variable column. If \verb`rhead'`
+to the function being the identity). The value given to the key \verb`rvar'`\index{rvar@\texttt{rvar'}|(}
+determines the function used and the value given to the key \verb`rhead'`\index{rhead@\texttt{rhead'}|(}
+determines the header for the right-hand row variable column. If \verb`rhead'`
 is omitted it defaults to a blank header, unless the \verb`rvar'`
 setting is also omitted, when \verb`rpos=4` behaves like \verb`rpos=3`.
 
-For example, the sine and cosine are complementary functions; when
-working in degrees, $\cos\theta=\sin(90-\theta)$. We can exploit
+For example, the sine and cosine are complementary functions\index{complementary functions|(};
+when working in degrees, $\cos\theta=\sin(90-\theta)$. We can exploit
 this fact to halve the table size needed to tabulate the two functions.
-The example also gives an illustration of the use of an  expression
-in the third element of \verb`rspec`.
+In the table, $\theta'=90-\theta$ and \verb`rhead'=\theta'`. Simply
+to illustrate the use of \verb`rhnudge'`\index{rhnudge@\texttt{rhnudge'}|(}
+I have nudged the header in the second (right) row variable column
+to sit above the tens digits of the row variable values. The example
+also gives an illustration of the use of an  expression in the third
+element of \verb`rspec`.\index{foot@\texttt{foot}}
 \begin{verbatim}
     \tabulate[ff=;,o,rpos=4,
       rspec={\theta,5,1+45/5},rround=0,
-        chnudge=14,rvar'=90-\theta,
-          rules=ThfB,foot=*]
+        chnudge=14,rvar'=90-\theta,rhnudge'=4,
+          rhead'=\theta',rules=ThfB,foot=*]
       { \sin\theta;\cos\theta }[\theta=0][*]
 \end{verbatim}
 $\Longrightarrow$     \tabulate[ff=;,o,rpos=4,
       rspec={\theta,5,1+45/5},rround=0,
-        chnudge=14,rvar'=90-\theta,
-          rules=ThfB,foot=*]
-      { \sin\theta;\cos\theta }[\theta=0][*]\medskip{}
+        chnudge=14,rvar'=90-\theta,rhnudge'=4,
+          rhead'=\theta',rules=ThfB,foot=*]
+      { \sin\theta;\cos\theta }[\theta=0][*]\index{footer row!complementary functions}\index{rhnudge@\texttt{rhnudge'}|)}\index{rhead@\texttt{rhead'}|)}\index{ff@\texttt{ff}}\medskip{}
 
 \noindent The values of sines from $0$ to $45$ degrees are read
 downwards from the first column of function values, and from 45 to
@@ -1469,10 +1525,8 @@
 the first column. The reversed footer line indicates the change of
 columns to use. In the example note
 \begin{itemize}
-\item the setting of \verb`rvar'` to a function (\verb`90-\theta`) of
-the row variable (\verb`\theta`); 
-\item the blank header for the \verb`rvar'` column (since no value was
-set for \verb`rhead'`);
+\item the setting of \verb`rvar'`\index{rvar@\texttt{rvar'}|)} to a function
+\verb`90-\theta` of the row variable;
 \item the footer setting \verb`foot=*` to obtain the reversed header in
 the footer;
 \item the rule \emph{above} the footer row specified by the \verb`f` added
@@ -1485,31 +1539,33 @@
 reader'. They require a certain concentration to read and in my view
 should be avoided unless space is seriously constrained. \emph{HMF}
 Tables 6.1 and 6.2 are tables of the gamma function and its relatives
-where $y=x-1$ is used in the row-variable column on the right (stemming
+where $y=x-1$ is used in the row variable column on the right (stemming
 from $y!=\Gamma(x-1)$); \emph{HMF }Table 6.5 in effect uses $\langle1/x\rangle$
-(the nearest integer to $1/x$) for the row variable on the right.
+(the nearest integer to $1/x$) for the row variable on the right.\index{complementary functions|)}
 
 \subsection{Separating blocks of rows: \texttt{rbloc}}
 
-Readability of long columns of figures can be aided by breaking the
-columns into blocks with extra white space between blocks of rows.
-This is achieved with the \texttt{rbloc} key:
-\begin{lyxcode}
-rbloc~=~<comma~list~of~positive~integers>
-\end{lyxcode}
+Readability\index{formatting!grouping rows|(}\index{row grouping|(}
+of long columns of figures can be aided by breaking the columns into
+blocks with extra white space between blocks of rows. This is achieved
+with the \verb`rbloc`\index{rbloc@\texttt{rbloc}|(} key:
+\begin{verbatim}
+    rbloc = <comma list of positive integers>
+\end{verbatim}
 specifies how many rows belong to each block. For example, \verb`rbloc={5,5,6}`
 breaks the table into blocks of $5$ rows, $5$ rows, then $6$ rows.
 If the number of rows in the table is greater than the sum of the
 entries in the comma list, then division into blocks continues as
-specified by the last entry in the comma list. Thus \texttt{rbloc=5}
-(strictly \texttt{rbloc=\{5\}} but the braces can be omitted in this
+specified by the last entry in the comma list. Thus \verb`rbloc=5`
+(strictly \verb`rbloc={5}` but the braces can be omitted in this
 case since no comma is enclosed) divides a table into blocks of $5$
-rows; \texttt{rbloc=\{1,5\}} divides a table into $1$ row followed
-by blocks of $5$ rows. A division of this kind may be appropriate
-when, say, the row variable runs from $0$ to $1$ in increments of
-$0.1$ \textendash{} there are $11$ rows of which the first (when
-the row variable is zero) may have distinctive values. 
+rows; \verb`rbloc={1,5}` divides a table into $1$ row followed by
+blocks of $5$ rows. A division of this kind may be appropriate when,
+say, the row variable runs from $0$ to $1$ in increments of $0.1$
+\textendash{} there are $11$ rows of which the first (when the row
+variable is zero) may have distinctive values. 
 
+\noindent{}%
 \noindent\begin{minipage}[t]{1\columnwidth}%
 \begin{shaded}%
 
@@ -1531,8 +1587,8 @@
 \end{minipage}
 
 \medskip{}
-In the next example I have divided the columns into blocks of $5$
-rows by means of the setting \texttt{rbloc=5}.
+In the next example I have divided the rows into blocks of $5$ by
+means of the setting \verb`rbloc=5`.
 \begin{verbatim}
     \tabulate[ff=;,o,rspec={\theta,10,1+90/10},
               rround=0,rbloc=5]
@@ -1540,28 +1596,32 @@
 \end{verbatim}
 $\Longrightarrow$     \tabulate[ff=;,o,rspec={\theta,10,1+90/10},
                           rround=0,rbloc=5]
-		{ \sin \theta; \cos \theta}[\theta=0][*]
+		{ \sin \theta; \cos \theta}[\theta=0][*]\index{rbloc@\texttt{rbloc}|)}
 
 \subsubsection{Adjusting the extra space\texttt{ rblocsep} }
 
 By default \texttt{numerica} sets the extra space between blocks of
 rows at \verb`1 ex`. This value can easily by changed with the setting
-\texttt{rblocsep=<length>}. The units need to be included in the specification. 
+\verb`rblocsep=<length>`\index{rblocsep@\texttt{rblocsep}}. The
+units need to be included in the specification. \index{formatting!grouping rows|)}\index{row grouping|)}
 
 \subsection{Table placement}
 
-\label{sec:Table-placement}Tables can be nudged vertically with the
-\LaTeX{} commands \verb`\bigskip`, \verb`\medskip`, \verb`\smallskip`,
+\label{sec:Table-placement}Tables\index{table placement!on the page}
+can be nudged vertically with the \LaTeX{} commands \verb`\bigskip`\index{bigskip@\texttt{\textbackslash bigskip}},
+\verb`\medskip`\verb`\medskip`, \verb`\smallskip`\index{smallskip@\texttt{\textbackslash smallskip}},
 usually about $1$, $\sfrac12$ and $\sfrac14$ line spaces (with
-stretch and shrink). \verb`booktabs` provides \verb`\abovetopsep`
-and \verb`\belowbottomsep`, both set by default to \verb`0ex` and
-easily changed by writing, e.g., \verb`\abovetopsep=1.25ex` if you
-want to insert \verb`1.25ex` of space above the table (perhaps to
-fit captions). 
+stretch and shrink). \texttt{booktabs}\index{booktabs@\texttt{booktabs}}
+provides \verb`\abovetopsep`\index{abovetopsep@\texttt{\textbackslash abovetopsep}}
+and \verb`\belowbottomsep`\index{belowbottomsep@\texttt{\textbackslash belowbottomsep}},
+both set by default to \verb`0ex` and easily changed by writing,
+e.g., \verb`\abovetopsep=1.25ex` if you want to insert \verb`1.25ex`
+of space above the table (perhaps to fit captions). 
 
 \subsubsection{Vertical~alignment}
 
-\label{subsec:Verticalalignment}By writing\texttt{ }{\ttfamily\verb`valign=<char>`}
+\label{subsec:Verticalalignment}By\index{table placement!on the line}
+writing\texttt{ }{\ttfamily\verb`valign=<char>`}\index{valign@\texttt{valign}}
 where \verb`<char>` is one of \verb`t`, \verb`m` or \verb`b` the
 vertical alignment of the table can be set relative to the text baseline.\texttt{ }\verb`valign=t`\texttt{
 }aligns the top of the table with the text baseline, \verb`valign=b`
@@ -1596,7 +1656,7 @@
 
 \section{Function value formatting}
 
-\label{sec:Function-value-formatting}
+\label{sec:Function-value-formatting}\index{formatting!function values|(}\index{function value formatting|(}
 \begin{table}
 \centering{}\caption{\protect\label{tab:Function-value-formatting}Formatting function
 values}
@@ -1605,9 +1665,10 @@
 \toprule 
 {\small key} & {\small type} & {\small meaning} & {\small initial}\tabularnewline
 \midrule
-{\small\texttt{(pad)}} & {\small int} & {\small (t-notation) phantom padding} & \tabularnewline
+{\small\texttt{(pad)}} & {\small int} & {\small t-notation phantom padding} & \tabularnewline
 {\small\texttt{signs}} & {\small int} & {\small sign handling for function-values} & {\small\texttt{0}}\tabularnewline
 {\small\texttt{diffs}} & {\small int} & {\small insert differences \& pre-pad with zeros} & {\small\texttt{0}}\tabularnewline
+{\small\texttt{round}} & {\small tokens} & {\small row or col. dependent rounding value} & \tabularnewline
 {\small\texttt{Q?}} & {\small tokens} & {\small special cell conditional} & \tabularnewline
 {\small\texttt{A!}} & {\small tokens} & {\small special cell formatting} & \tabularnewline
 \bottomrule
@@ -1618,30 +1679,32 @@
 been limited to a fairly narrow range of values. What happens when
 function values span orders of magnitude? Can we accommodate scientific
 notation, expressly designed to cope with such orders of magnitude,
-in a natural way? Or, in a different direction, can we form tables
-of function values in fraction form?
+in a natural way? Can we round rows or columns to different rounding
+values? Or, in a different direction, can we form tables of function
+values in fraction form?
 
 \subsection{Trailing optional argument}
 
 \label{subsec:Trailing-optional-argument}The primary tool for function-value
 formatting is the trailing optional argument of the \verb`\tabulate`
-command where the rounding value is specified, padding with zeros
-is set or not (generally \emph{set} in tables), scientific notation
-is set or not, and fraction-form output can be specified. 
+command where the rounding value\index{rounding value} is specified,
+padding with zeros is set or not (generally \emph{set} in tables),
+scientific notation is set or not, and fraction-form output can be
+specified. 
 
 \subsubsection{Fraction-form output}
 
-\label{subsec:Fraction-form-output}\xA7\ref{subsec:rfracFraction-form-rvar}
-showed the row variable in fraction form. Function values can also
-be presented in that form. The problem is that such output requires
-far more computation than other output since finding denominators
-at the specified accuracy is an iterative process that needs to be
-performed for every function value. However, it is feasible for small
-tables. In the tables below, approximations to small positive and
-inverse powers of $\pi$ are listed to $2$ and $4$ decimal places
-of accuracy. It is interesting that all the powers listed can be approximated
-to $4$-place accuracy by $3$-figure denominators (and $\pi^{2}$
-by a $2$-figure denominator).
+\label{subsec:Fraction-form-output}In\index{fraction form!function values|(}\index{function value formatting!fraction form|(}
+\xA7\ref{subsec:rfracFraction-form-rvar} we saw how to display the row
+variable in fraction form. Function values can also be presented in
+that form. The problem is that such output requires far more computation
+than other output since finding denominators at the specified accuracy
+is an iterative process that needs to be performed for every function
+value. However, it is feasible for small tables. In the tables below,
+approximations to small positive and inverse powers of $\pi$ are
+listed to $2$ and $4$ decimal places of accuracy. It is interesting
+that all the powers listed can be approximated to $4$-place accuracy
+by $3$-figure denominators (and $\pi^{2}$ by a $2$-figure denominator).\index{row variable!verbatim values|(}\index{sfrac@\texttt{\textbackslash sfrac}}
 \begin{verbatim}
     \def\mydataiii{\pi,\pi^2,\pi^3,
         \pi^{\sfrac12},\pi^{\sfrac13}} 
@@ -1659,21 +1722,36 @@
      { k }[2/s]\qquad
 \tabulate[rdata=\mydataiii,rverb=1,rpos=1,
         rvar=k,ralign=l,chead={\small $4$ places}] 
-     { k }[4/s]
+     { k }[4/s]\medskip{}
 
+A second example shows that all four built-in constants to \texttt{numerica}
+and their first few inverse powers can be approximated to $5$ decimal
+places with $3$-figure denominators:\index{sfrac@\texttt{\textbackslash sfrac}}
+\begin{verbatim}
+    \tabulate[rdata={\pi ,e,\phi,\gamma},rverb=1,rvar=k,
+        cspec={n,1,4},chstyle=3,chnudge=9,rules=TthB,/max=1000,
+        ctitle=\lvert k^{\sfrac1n}-p/q \rvert<0.5\times10^{-5}] 
+      { k^{\sfrac1n} }[n=1,k=1][/s5]
+\end{verbatim}
+$\Longrightarrow$     \tabulate[rdata={\pi ,e,\phi,\gamma},rverb=1,rvar=k,
+        cspec={n,1,4},chstyle=3,chnudge=9,rules=TthB,/max=1000,
+        ctitle=\lvert k^{\sfrac1n}-p/q \rvert<0.5\times10^{-5}] 
+      { k^{\sfrac1n} }[n=1,k=1][/s5]\index{function value formatting!fraction form|)}\index{fraction form!function values|)}\index{row variable!verbatim values|)}
+
 \subsubsection{Scientific notation}
 
-Elegant scientific notation, set with an \verb`x` in the trailing
-optional argument, is generally not appropriate for use in tables;
-see the first table below. Repeating the \verb`x` \textendash{} \verb`xx`
-\textendash{} in the trailing optional argument (the second table)
-so that scientific notation extends to numbers in the range $[1,10)$
-helps, particularly with the \emph{left} alignment chosen for the
-function-value column, but the result is wasteful of space and the
-repetition of the `$\times10$' is distracting and would be more
-so for a larger table. The \verb`x` specification should be used
-in tables, if at all, only for \emph{small} tables and special cases.
-The \verb`t` option is much preferred; see \xA7\ref{subsec:t-option}
+Elegant\index{function value formatting!scientific notations|(} scientific
+notation\index{scientific notation},\index{scientific notation|seealso{t-notation}}
+set with an \verb`x` in the trailing optional argument, is generally
+not appropriate for use in tables; see the first table below. Repeating
+the \verb`x` \textendash{} \verb`xx` \textendash{} in the trailing
+optional argument (the second table) so that scientific notation extends
+to numbers in the range $[1,10)$ helps, particularly with the \emph{left}
+alignment chosen for the function-value column, but the result is
+wasteful of space and the repetition of the `$\times10$' is distracting
+and would be more so for a larger table. The \verb`x` specification
+should be used in tables, if at all, only for \emph{small} tables
+and special cases. The \verb`t` option is much preferred; see \xA7\ref{subsec:t-option}
 below.
 \begin{verbatim}
     \tabulate[rspec={x,1,2*3+1},rround=0]
@@ -1686,11 +1764,12 @@
     \tabulate[rspec={x,1,2*3+1},rround=0,calign=l]
       { e^x}[x=-3][*xx]
 
-\subsubsection{The \texttt{t} option}
+\subsection{The \texttt{t} option}
 
-\label{subsec:t-option}\emph{HMF} uses a special notation for coping
-with function values spanning orders of magnitude. This notation can
-be invoked by inserting \verb`t` in the trailing optional argument.
+\label{subsec:t-option}\emph{HMF}\index{t-notation|(} uses a special
+notation\index{function value formatting|(seealso{t-notation}} for
+coping with function values spanning orders of magnitude. This notation
+can be invoked by inserting \verb`t` in the trailing optional argument.
 Repeating the previous two tables, and adding a \verb`chnudge` value,
 gives a more compact and visually appealing result:
 \begin{verbatim}
@@ -1706,9 +1785,10 @@
 
 \subsubsection{Padding the exponent: \texttt{(pad)}}
 
-In the second table of the last example some might quibble at the
-lack of alignment of the left parentheses. \emph{HMF} tends to align
-these and \verb`numerica-tables` offers the setting 
+In\index{padding with phantoms|(} the second table of the last example
+some might quibble at the lack of alignment of the left parentheses.
+\emph{HMF} tends to align these and \verb`numerica-tables` offers
+the setting 
 \begin{verbatim}
     (pad) = <integer>
 \end{verbatim}
@@ -1735,16 +1815,17 @@
 is used in the trailing number-formatting argument of the \verb`\tabulate`
 command. Examples in \emph{HMF} of the style exemplified by the first
 table are, among others, Tables 8.6, 9.2, 20.1, and of the style exemplified
-by the second table, among many, Tables 9.9, 10.5, 13.1, 14.1, 19.1.
+by the second table, among many, Tables 9.9, 10.5, 13.1, 14.1, 19.1.\index{padding with phantoms|)}
 
-\subsection{Accommodating signs: \texttt{signs}}
+\paragraph{Accommodating signs: \texttt{signs}}
 
-\label{subsec:Signs}Instead of $e^{x}$ as the test function, use
-$e^{x}-1.$ Now there are positive, zero and negative function values
-to contend with. Recall that in the \verb`t`-notation the \emph{exponent}
-is the parenthesized integer part of a number and the \emph{significand}
-the following decimal figures. \verb`numerica-tables` offers the
-\verb`signs` key to align (or not) the exponents. The setting is
+\label{subsec:Signs}Instead\index{t-notation!accommodating signs}\index{function value formatting!sign handling|(}
+of $e^{x}$ as the test function, use $e^{x}-1.$ Now there are positive,
+zero and negative function values to contend with. Recall that in
+the \verb`t`-notation the \emph{exponent} is the parenthesized integer
+part of a number and the \emph{significand} the following decimal
+figures. \verb`numerica-tables` offers the \verb`signs`\index{signs@\texttt{signs}|(}
+key to align (or not) the exponents. The setting is
 \begin{verbatim}
     signs = <integer>
 \end{verbatim}
@@ -1799,12 +1880,16 @@
 \end{verbatim}
 $\Longrightarrow$     \tabulate[rspec={x,1,2*3+1},rround=0,
         (pad)=2,signs=1]
-      { e^x-1}[x=-3][4*tt]\medskip{}
+      { e^x-1}[x=-3][4*tt]\index{t-notation|)}\index{function value formatting!scientific notations|)}\index{padding with phantoms|)}\medskip{}
 
-But the \verb`signs` key is not limited to the \verb`t`-notation.
-In the following tables where the notation is not used, positive values
-for the key, including \verb`signs=1`, give good results (I've included
-also the default setting \textendash{} the third table):
+
+\subsection{Indicating signs outside the t-notation}
+
+The \verb`signs` key is not limited to the \verb`t`-notation. In
+the following tables where the notation is not used, positive values
+for the key, including \verb`signs=1`\index{signs@\texttt{signs}},
+give good results (I've included also the default setting \textendash{}
+the third table):
 \begin{verbatim}
     \tabulate[rspec={x,0.1,9},(pad)=2,signs=2]
       { 10\sin 5x}[x=-0.4][*4]\qquad
@@ -1824,14 +1909,63 @@
 the function values changes every few entries and \verb`signs=1`
 when there are runs of entries of the same sign. Over the range tabulated
 here for $10\sin5x$, they would use the middle table of the three,
-\verb`signs=1`. 
+\verb`signs=1`.\index{function value formatting!sign handling|)}\index{signs@\texttt{signs}|)}
 
+\subsection{Rounding to varying values}
+
+\label{subsec:Rounding-varying} Above\index{rounding value!row/col-dependent|(},
+in \xA7\ref{subsec:Fraction-form-output}, we created two tables of fraction-form
+approximations to simple power functions of $\pi$, one accurate to
+two places of decimals, one to four places. Version 3.1 of \texttt{numerica-tables}
+(as distinct from version 3.0) offers the means of producing tables
+with rounding values depending on position in the table. This is effected
+through the key \index{round@\texttt{round}|(}
+\begin{verbatim}
+    round = f(rvar,cvar)
+\end{verbatim}
+where \texttt{f(rvar,cvar)} denotes a function of row and column variables.
+Usually this will mean dependence either on row variable or column
+variable rather than both.  In the present instance we form a multi-function
+table and with the \verb`round` key let the rounding value equal
+the row variable value \verb`r` (\verb`round=r`) to obtain fractional
+approximations to simple powers of $\pi$ at rounding values from
+$1$ to $5$ (and discover that all these values can be approximated
+to $5$ decimal places with $3$ figure denominators \textendash{}
+$\pi^{2}$ only just).\index{multi-function tables}\index{fraction form!row/col-dependent rounding}
+\begin{verbatim}
+     \tabulate[ff,rspec={r,1,5},round=r,/max=999,chstyle=2,
+            ctitle=\lvert\pi^k-\sfrac mn\rvert<0.5\times10^{-r}]
+        { \pi,\pi^2,\pi^3,\pi^{1/2},\pi^{1/3}}[r=1][/s]
+\end{verbatim}
+$\Longrightarrow$      \tabulate[ff,rspec={r,1,5},round=r,/max=999,chstyle=2,
+               ctitle=\lvert\pi^k-\sfrac mn\rvert<0.5\times10^{-r}]
+       { \pi ,\pi^2,\pi^3,\pi^{1/2},\pi^{1/3}}[r=1][/s]\index{fraction form!function values}\index{function value formatting!fraction form}\medskip{}
+
+Another place where a variable rounding value can be of value is when
+a function being tabulated changes slowly for each step in the row
+variable value; the value of the cosine for instance changes from
+$1.0000$ to $\eval{\cos10\degree}[4]$ between $0\degree$ and $10\degree$.
+\emph{Part} of a table of the cosine might be something like the following,
+where values in the initial rows of the table are rounded to a higher
+value than in later rows. \verb`round` is set to an expression involving
+the row variable in boolean elements \verb`\theta<11` and \verb`\theta>10`
+which evaluate to $0$ or $1$ so that \verb`round` takes the value
+$6$ for the initial rows of the table and the value $4$ thereafter. 
+\begin{verbatim}
+    \tabulate[o,rspec={\theta,1,6},calign=l,chnudge=15,
+              round=6(\theta<11)+4(\theta>10)] 
+      { \cos\theta }[\theta=8]
+\end{verbatim}
+$\Longrightarrow$     \tabulate[o,rspec={\theta,1,6},calign=l,chnudge=15,
+              round=6(\theta<11)+4(\theta>10)] 
+      { \cos\theta }[\theta=8]\index{rounding value!row/col-dependent|)}\index{round@\texttt{round}|)}
+
 \subsection{Differences: \texttt{diffs}}
 
-In fine-grained tables where function values change only slowly from
-entry to entry it can be helpful to include a difference entry between
-function-value entries as an aid to interpolation (and a test of eyesight).
-By entering 
+In\index{differences|(} fine-grained tables where function values
+change only slowly from entry to entry it can be helpful to include
+a difference entry between function-value entries as an aid to interpolation
+(and a test of eyesight). By entering 
 \begin{lyxcode}
 diffs~=~<non-negative~integer>
 \end{lyxcode}
@@ -1887,11 +2021,12 @@
 way of tackling this issue.) When the \texttt{diffs} setting is too
 big, alignment is fine but differences are padded with unnecessary
 leading zeros, meaning the column header will need a bigger nudge
-to bring \emph{it} into alignment. 
+to bring \emph{it} into alignment. \index{differences|)}
 
 \subsection{Formatting special values: \texttt{Q?} and \texttt{A!}}
 
-You may wish to highlight or display in some special way a particular
+You\index{function value formatting!highlighting special values|(}\index{Q?@\texttt{Q?}|(}\index{A@\texttt{A"!}|(}
+may wish to highlight or display in some special way a particular
 function value or values. \verb`\nmcTabulate` has two related settings
 that enable this: \verb`Q?=<tokens>` and \verb`A!=<tokens>`. As
 the names suggest: Question? and Answer! 
@@ -1909,9 +2044,10 @@
 (for $\le$) will be digested by \verb`l3fp`. In addition there are
 \verb`||` for logical Or, \verb`&&` for logical And, and \verb`!`
 for logical Not; \verb`exp(1)` for $e$ and \verb`pi` (no backslash)
-for $\pi$. \texttt{numerica-tables} provides \verb`MAX` and \verb`MIN`
-for the maximum and minimum function values tabulated, and uses \verb`@`
-to denote the current function value. 
+for $\pi$. \texttt{numerica-tables} provides \verb`MAX`\index{MAX@\texttt{MAX}}
+and \verb`MIN`\index{MIN@\texttt{MIN}} for the maximum and minimum
+function values tabulated, and uses \verb`@` to denote the current
+function value. 
 
 So, a query might be \verb`Q?=@<0`, \emph{Is the current function
 value negative?}, or \verb`Q?={@>=pi}`, \emph{Is the current function
@@ -1947,10 +2083,11 @@
 
 \subsubsection{Star option: \texttt{\textbackslash nmcTabulate{*}}}
 
-\label{sec:Star-option}If the \verb`Q?` question is satisfied by
-at least one function value then adding a star (asterisk) to the \verb`\tabulate`
-command will display the first such instance. Like other starred commands
-in the \verb`numerica` suite (\verb`\eval*`, \verb`info*`, \verb`\macros*`,
+\label{sec:Star-option}If\index{nmcTabulate@\texttt{\textbackslash nmcTabulate}!star (*) option at star (\texttt{{*}}) option}
+the \verb`Q?` question is satisfied by at least one function value
+then adding a star (asterisk) to the \verb`\tabulate` command will
+display the first such instance. Like other starred commands in the
+\verb`numerica` suite (\verb`\eval*`, \verb`info*`, \verb`\macros*`,
 \verb`\constants*`, \verb`\iter*`, \verb`\solve*` and \verb`\recur*`),
  \verb`\tabulate*` outputs a single number. Using the star means
 you do not need an answering \verb`A!` to the query \verb`Q?` since
@@ -1971,7 +2108,7 @@
 If you want the \emph{maximum} value that has been tabulated then,
 from version 3 of \texttt{numerica-tables}, you do not even need the
 query: when \verb`\tabulate` is starred, \verb`Q?` is initialized
-behind the scenes to \verb`@=MAX`.\footnote{\noindent In the unlikely event that someone \emph{consistently} wanted
+behind the scenes to \verb`@=MAX`\index{MAX@\texttt{MAX}}.\footnote{\noindent In the unlikely event that someone \emph{consistently} wanted
 some other query to be asked \textendash{} the minimum value perhaps,
 or first negative value or \ldots{} \textendash{} please let the author
 know. It would be straightforward to use a package option to give
@@ -1995,7 +2132,8 @@
 
 \paragraph{Errors}
 
-If \emph{no} function value satisfies a query then a message is generated:
+If\index{error messages} \emph{no} function value satisfies a query
+then a message is generated:
 \begin{verbatim}
     \tabulate*[rspec={n,1,1+(15-4)},
                cspec={m,1,1+(5-2)},Q?=@>1]
@@ -2004,7 +2142,7 @@
 $\Longrightarrow$      \tabulate*
       [rspec={n,1,1+(15-4)},cspec={m,1,1+(5-2)},
            Q?=@>1]
-      { \cos(m\pi/n) }[n=4,m=2][*4]
+      { \cos(m\pi/n) }[n=4,m=2][*4]\index{Q?@\texttt{Q?}|)}\index{A@\texttt{A"!}|)}
 
 \paragraph{Scientific notation}
 
@@ -2027,7 +2165,7 @@
       [rspec={n,1,1+(15-4)},cspec={m,1,1+(5-2)},
            Q?={@<-1e-14||@>0.5+1e-14},A!=]
       { \cos(m\pi/n) }[n=4,m=2][*4x]
-    $.
+    $.\index{formatting!function values|)}\index{function value formatting|)}\index{function value formatting!highlighting special values|)}
 
 \section{Other matters}
 
@@ -2035,9 +2173,10 @@
 
 \subsection{Nesting}
 
-\label{subsec:Nesting}A \verb`\tabulate` command can be nested within
-other commands from the \verb`numerica` suite, and those other commands
-can be nested within a \verb`\tabulate` command.
+\label{subsec:Nesting}A\index{nmcTabulate@\texttt{\textbackslash nmcTabulate}!nesting}
+\verb`\tabulate` command can be nested within other commands from
+the \verb`numerica` suite, and those other commands can be nested
+within a \verb`\tabulate` command.
 
 Occasionally one might want to extract a value from a table to insert
 in another command. This can be done by nesting a \verb`\tabulate*`
@@ -2105,14 +2244,14 @@
 
 \subsection{Saving tables to file}
 
-\label{sec:reuse-setting}In earlier versions of \texttt{numerica-tables}
-it was possible to save a table to file, or a row or a column or a
-particular value from a table, by giving a \emph{setting} \verb`reuse`
-a value. From version 3.0.0, in the interests of simplifying use (and
-avoiding code complications) the \verb`reuse` \emph{setting} has
-been discontinued. The \verb`\reuse` (or \verb`\nmcReuse`) \emph{command}
-remains (as part of the \texttt{numerica} package) and can be used
-to save the most recent table to file. 
+\label{sec:reuse-setting}In\index{tables!saving to file}\index{saving tables to file}
+earlier versions of \texttt{numerica-tables} it was possible to save
+a table to file, or a row or a column or a particular value from a
+table, by giving a \emph{setting} \verb`reuse` a value. From version
+3.0.0, in the interests of simplifying use (and avoiding code complications)
+the \verb`reuse` \emph{setting} has been discontinued. The \verb`\reuse`
+(or \verb`\nmcReuse`) \emph{command} remains (as part of the \texttt{numerica}
+package) and can be used to save the most recent table to file. 
 
 In the following example, a table is created and then saved to file
 and to the macro \verb`\mytable` by the subsequent \verb`\reuse`
@@ -2156,12 +2295,13 @@
 
 \subsection{Viewing the \protect\LaTeX{} form}
 
-In previous versions of \texttt{numerica-tables} the \verb`dbg` and
-\verb`view` settings were disabled. In version 3, they have been
-enabled to the extent that the \LaTeX{} form of a table can be viewed
-by entering either \verb`dbg=11` or, less nerdishly, \verb`view`
-into the settings option of \verb`\nmcTabulate`. In the example I
-first create the table and then use the \verb`view` setting:
+In\index{tables!viewing LaTeX form at viewing \LaTeX{} form} previous
+versions of \texttt{numerica-tables} the \verb`dbg` and \verb`view`\index{view@\texttt{view}}
+settings were disabled. In version 3, they have been enabled to the
+extent that the \LaTeX{} form of a table can be viewed by entering
+either \verb`dbg=11` or, less nerdishly, \verb`view` into the settings
+option of \verb`\nmcTabulate`. In the example I first create the
+table and then use the \verb`view` setting:
 \begin{verbatim}
     
     \tabulate[view,rvar=x,rstep=0.2,rstop=1]
@@ -2185,7 +2325,7 @@
 \toprule 
 {\small key} & {\small type} & {\small meaning} & {\small comment}\tabularnewline
 \midrule
-{\small\texttt{rvar}} & {\small token(s)} & {\small row-variable} & \tabularnewline
+{\small\texttt{rvar}} & {\small token(s)} & {\small row variable} & \tabularnewline
 {\small\texttt{rstep}} & {\small real num} & {\small step size} & \tabularnewline
 {\small\texttt{rstop}} & {\small real num} & {\small stop value} & \multirow{2}{3cm}{either {\small\texttt{rstop}}{\small{} or }{\small\texttt{rows}}{\small ,
 not both}}\tabularnewline
@@ -2218,7 +2358,7 @@
 \begin{center}
 \begin{tabular}{ll>{\raggedright}p{4cm}l}
 \toprule 
-{\small key} & {\small type} & {\small meaning} & {\small default}\tabularnewline
+{\small key} & {\small type} & {\small meaning} & {\small initial}\tabularnewline
 \midrule
 {\small\texttt{rround}} & {\small int} & {\small rounding} & {\small\texttt{1}}\tabularnewline
 {\small\texttt{ralign}} & {\small char (}{\small\texttt{r/c/l}}{\small )} & {\small horizontal alignment} & {\small\texttt{r}}\tabularnewline
@@ -2226,11 +2366,12 @@
 {\small\texttt{rhead}} & {\small tokens} & {\small header} & {\small\texttt{rvar}}\tabularnewline
 {\small\texttt{rhnudge}} & int & {\small nudge header }{\small{\small\verb`rhnudge`}}{\small{}
 mu} & {\small\texttt{0}}\tabularnewline
-{\small\texttt{rpos}} & {\small int (}{\small\texttt{0}}{\small\ldots}{\small\texttt{4}}{\small )} & {\small column position(s)} & {\small\texttt{1}}\tabularnewline
-{\small\texttt{rvar'}} & {\small token(s)} & {\small 2nd row-variable col. spec.} & {\small\texttt{rvar}}\tabularnewline
+{\small\texttt{rpos}} & {\small int (}{\small\texttt{0}}{\small\ldots}{\small\texttt{4}}{\small )} &  & {\small\texttt{1}}\tabularnewline
+{\small\texttt{rvar'}} & {\small token(s)} & {\small 2nd row variable col. spec.} & {\small\texttt{rvar}}\tabularnewline
 {\small\texttt{rhead'}} & {\small token(s)} & {\small header of 2nd r-v col. (if it exists)} & {\small\texttt{rvar'}}\tabularnewline
 {\small\texttt{rhnudge'}} & int & {\small nudge 2nd r-v col. header }{\small{\small\verb`rhnudge'`}}{\small{}
 mu} & {\small\texttt{0}}\tabularnewline
+{\small\texttt{rfrac}} & {\small int (}{\small\texttt{0}}{\small\ldots 5)} & {\small fraction form} & {\small\texttt{0}}\tabularnewline
 \bottomrule
 \end{tabular}
 \par\end{center}
@@ -2243,7 +2384,7 @@
 \toprule 
 {\small key} & {\small type} & {\small meaning} & {\small default}\tabularnewline
 \midrule
-{\small\texttt{cvar}} & {\small token(s)} & {\small column-variable} & \tabularnewline
+{\small\texttt{cvar}} & {\small token(s)} & {\small column variable} & \tabularnewline
 {\small\texttt{cstep}} & {\small real num} & {\small step size} & \tabularnewline
 {\small\texttt{cstop}} & {\small real num} & {\small stop value} & {\small either }{\small\texttt{cstop}}\tabularnewline
 {\small\texttt{cols}} & {\small int} & {\small number of columns} & {\small or }{\small\texttt{cols}}{\small , not both}\tabularnewline
@@ -2266,7 +2407,7 @@
 {\small\texttt{calign}} & {\small char (r/c/l)} & {\small column alignment} & {\small\texttt{r}}\tabularnewline
 {\small\texttt{chnudge}} & {\small int} & {\small nudge header }{\small{\small\verb`chnudge`}}{\small{}
 mu} & {\small\texttt{0}}\tabularnewline
-{\small\texttt{chround}} & {\small int} & {\small column header rounding} & {\small\texttt{0}}\tabularnewline
+{\small\texttt{chround}} & {\small int} & {\small{} rounding} & {\small\texttt{0}}\tabularnewline
 \bottomrule
 \end{tabular}
 \par\end{center}\newpage{}
@@ -2279,7 +2420,7 @@
 \toprule 
 {\small key} & {\small type} & {\small meaning} & {\small default}\tabularnewline
 \midrule
-{\small\texttt{(pad)}} & {\small int} & {\small (t-notation) phantom padding} & \tabularnewline
+{\small\texttt{(pad)}} & {\small int} & {\small t-notation phantom padding} & \tabularnewline
 {\small\texttt{signs}} & {\small int} & {\small sign handling for function-values} & {\small\texttt{0}}\tabularnewline
 {\small\texttt{diffs}} & {\small int} & {\small insert differences \& pre-pad with zeros} & {\small\texttt{0}}\tabularnewline
 {\small\texttt{Q?}} & {\small tokens} & {\small special cell conditional} & \tabularnewline
@@ -2297,11 +2438,11 @@
 {\small key} & {\small type} & {\small meaning} & {\small default}\tabularnewline
 \midrule
 {\small\texttt{ctitle}} & {\small token(s)} & {\small collective title for function-value columns} & \tabularnewline
-{\small\texttt{cmidrow}} & {\small token(s)} & {\small inter-header/title row for} {\small function-value columns} & \tabularnewline
+ & {\small token(s)} & {\small inter-header/title row for} {\small function-value columns} & \tabularnewline
 {\small\texttt{header}} & {\small int (}{\small\texttt{0/1}}{\small )}  & {\small suppress/show header row}  & {\small\texttt{1}}\tabularnewline
 {\small\texttt{rules}} & {\small char(s)} & {\small horizontal rules template} & {\small\texttt{ThB}}\tabularnewline
 {\small\texttt{foot}} & {\small token(s)} & {\small content of footer line} & \tabularnewline
-{\small\texttt{rpos}} & {\small int (}{\small\texttt{0}}{\small\ldots}{\small\texttt{4}}{\small )} & {\small row-variable column position(s)} & {\small\texttt{1}}\tabularnewline
+{\small\texttt{rpos}} & {\small int (}{\small\texttt{0}}{\small\ldots}{\small\texttt{4}}{\small )} & {\small row variable } & {\small\texttt{1}}\tabularnewline
 {\small\texttt{rbloc}} & {\small comma list} & {\small division of rows into blocks} & \tabularnewline
 {\small\texttt{valign}} & {\small char (}{\small\texttt{t}}/{\small\texttt{m}}/{\small\texttt{b}}{\small )} & {\small vertical alignment of table relative to text baseline} & {\small\texttt{m}}\tabularnewline
 \bottomrule
@@ -2313,4 +2454,6 @@
 
 \verb`view`, equivalent to \verb`dbg=11`: show the \LaTeX{} expression
 for the table.
+
+{\small\printindex}{\small\par}
 \end{document}

Modified: trunk/Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty	2023-09-06 20:15:28 UTC (rev 68192)
+++ trunk/Master/texmf-dist/tex/latex/numerica-tables/numerica-tables.sty	2023-09-06 20:15:38 UTC (rev 68193)
@@ -10,8 +10,8 @@
 \RequirePackage{booktabs}
 \ProvidesExplFile
   {numerica-tables.sty}
-  {2023/08/21}
-  {3.0.0}
+  {2023/08/25}
+  {3.1.0}
   {Create mathematical tables of function values}
 
 \msg_new:nnn {numerica-tables} {version}
@@ -68,6 +68,41 @@
 \cs_generate_variant:Nn \__nmc_sci_num_table_signs:n { x }
 \cs_new:Npn \__nmc_table_rc:N #1
   { \str_if_eq:nVTF { #1 } \c__nmc_r_tl { row } { column } }
+\cs_new_protected:Npn \__nmc_table_rvround_pre:
+  { 
+    \fp_set_eq:NN \l__nmc_table_r_fp \l__nmc_table_rstart_fp
+    \prop_put:NVx  \l__nmc_subst_var_prop \l__nmc_table_rvar_tl 
+      { \fp_use:N \l__nmc_table_r_fp }
+    \__nmc_table_reset_rounding:
+  }
+\cs_new_protected:Npn \__nmc_table_rvround_post:
+  {
+    \fp_add:Nn \l__nmc_table_r_fp { \l__nmc_table_rstep_fp  }
+    \prop_put:NVx  \l__nmc_subst_var_prop \l__nmc_table_rvar_tl
+        { \fp_use:N \l__nmc_table_r_fp }
+    \__nmc_table_reset_rounding:
+  }
+\cs_new_protected:Npn \__nmc_table_cvround_pre:
+  {
+    \fp_set_eq:NN \l__nmc_table_c_fp \l__nmc_table_cstart_fp
+    \prop_put:NVx  \l__nmc_subst_var_prop \l__nmc_table_cvar_tl 
+      { \fp_use:N \l__nmc_table_c_fp }
+    \__nmc_table_reset_rounding:
+  }
+
+\cs_new_protected:Npn \__nmc_table_cvround_post:
+  {
+    \fp_add:Nn \l__nmc_table_c_fp { \l__nmc_table_cstep_fp  }
+    \prop_put:NVx  \l__nmc_subst_var_prop \l__nmc_table_cvar_tl
+        { \fp_use:N \l__nmc_table_c_fp }
+    \__nmc_table_reset_rounding:
+  }
+\cs_new_protected:Npn \__nmc_table_reset_rounding:
+  { 
+    \tl_clear:N \l__nmca_tl
+    \__nmc_fpify:VN \l__nmc_round_xpr_tl \l__nmca_tl
+    \int_set:Nn \l__nmc_round_int { \fp_to_int:n \l__nmca_tl }
+  }
 %--------------------------------------
 \tl_new:N \l__nmc_x_tl 
 \seq_new:N \l_tmpd_seq
@@ -74,6 +109,7 @@
 \tl_const:Nn \c__nmc_r_tl { r }
 \tl_const:Nn \c__nmc_l_tl { l }
 \bool_new:N \l__nmc_table_multifn_bool
+\bool_new:N \l__nmc_table_round_bool
 \seq_new:N \l__nmc_table_multifn_seq
 \tl_new:N \l__nmc_table_valign_tl
 
@@ -122,6 +158,7 @@
 \tl_new:N \l__nmc_table_rheadi_tl
 \tl_new:N \l__nmc_table_rhnudge_tl
 \tl_new:N \l__nmc_table_rhnudgei_tl
+\int_new:N \l__nmc_table_chfrac_int
 \int_new:N \l__nmc_table_chround_int
 \int_new:N \l__nmc_table_chstyle_int
 \int_const:Nn \c__nmc_table_chstyle_int { 5 }
@@ -239,6 +276,12 @@
       }
     \int_compare:nNnF \l__nmc_dbg_int = { 11 }
       { \int_zero:N \l__nmc_dbg_int }
+    % \int_if_zero:nF { \l__nmc_table_rfrac_int + \l__nmc_table_chfrac_int }
+    \int_if_zero:nF { \l__nmc_table_rfrac_int }
+      { 
+        \int_compare:nNnT { \l__nmc_table_chstyle_int } > { 2 }
+          { \int_zero:N \l__nmc_table_chstyle_int }
+      }
   } 
 \cs_new_protected:Npn \l__nmc_table_settings_ctitle:
   {
@@ -347,6 +390,8 @@
           }
           { \__nmc_table_get_ini_vals_aux:N c }
       }
+    \bool_if:NT \l__nmc_table_round_bool
+      { \__nmc_fpify:VN \l__nmc_round_xpr_tl \l__nmc_toss_tl }
     \seq_gpop:NN \g__nmc_error_where_seq \l__nmc_toss_tl
   }
 \cs_new_protected:Npn \__nmc_table_get_ini_vals_aux:N #1
@@ -653,7 +698,7 @@
   { 
     \bool_if:NF \l__nmc_num_only_bool
       {
-        \int_if_zero:nF \l__nmc_table_header_int
+        \int_if_zero:nT \l__nmc_table_headless_int
           { 
             \__nmc_table_headercnum:
             \tl_set:Nx \l__nmc_table_header_tl { \__nmc_table_header: } 
@@ -669,7 +714,7 @@
           {
             \__nmc_table_upper:
             \exp_not:o \l__nmc_table_header_tl
-            \int_if_zero:nF \l__nmc_table_header_int
+            \int_if_zero:nT \l__nmc_table_headless_int
               { 
                 \\~
                 \__nmc_if_mod_zero:nnT { \l__nmc_table_rules_int } { 7 }
@@ -828,6 +873,8 @@
   }
 \cs_new:Npn \__nmc_table_headern:
   { 
+    \int_set_eq:NN \l__nmc_table_chfrac_int \l__nmc_frac_out_int
+    \int_zero:N \l__nmc_frac_out_int
     \tl_if_empty:NT \l__nmc_table_chead_tl
       {
         \seq_clear:N \l_tmpa_seq
@@ -847,6 +894,7 @@
           }
         \tl_set:Nx \l__nmc_table_chead_tl { \seq_use:Nn \l_tmpa_seq { & }  }
       }
+    \int_set_eq:NN \l__nmc_frac_out_int \l__nmc_table_chfrac_int
   }
 \cs_new_protected:Npn \__nmc_table_chstyler:NN #1 #2
   { 
@@ -857,12 +905,14 @@
           {
             \bool_if:NTF \l__nmc_table_coli_only_bool
               { 
-                \__nmc_table_header_auxi:Nx #1 { \l__nmc_table_cvar_tl = #2 } 
+                \__nmc_table_header_auxi:Nx #1 
+                    { \l__nmc_table_cvar_tl = \exp_not:o #2 } 
                 \bool_set_false:N \l__nmc_table_coli_only_bool
               }
               { \seq_put_right:NV #1 #2 }
           }
-        { 2 } { \__nmc_table_header_auxi:Nx #1 { \l__nmc_table_cvar_tl = #2 } }
+        { 2 } { \__nmc_table_header_auxi:Nx #1 
+                    { \l__nmc_table_cvar_tl = \exp_not:o #2 } }
         { 3 } { \__nmc_table_header_auxiii:NV #1 #2 }
         { 4 } { \__nmc_table_header_auxiv:NV #1 #2 }
         { 5 } { \seq_set_split:NnV #1 { & } \l__nmc_table_chead_tl }
@@ -872,7 +922,7 @@
 \cs_new_protected:Npn \__nmc_table_header_auxi:Nn #1#2
   { 
     \seq_put_right:Nx #1 { \__nmc_table_header_nudge:Nnn c
-         { \exp_not:n { #2 } } \l__nmc_table_chnudge_tl }
+         { \exp_not:o { #2 } } \l__nmc_table_chnudge_tl }
   }
 \cs_generate_variant:Nn \__nmc_table_header_auxi:Nn { NV,Nx }
 
@@ -897,12 +947,13 @@
 \cs_new:Npn \__nmc_table_header_nudge:Nnn #1#2#3
   { % #1=r(ow)/c(ol), #2=var, #3=nudge
     \tl_if_eq:cNTF { l__nmc_table_ #1 calign_tl } \c__nmc_r_tl
-      { $  #2 #3 $ }
+      { $ #2 #3 $ }
       { 
         \tl_if_eq:cNTF { l__nmc_table_ #1 calign_tl } \c__nmc_l_tl
           { $ #3 #2 $ } { $ #2 $ }
       }
   }
+\cs_generate_variant:Nn \__nmc_table_header_nudge:Nnn { NnV }
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
 \cs_new_protected:Npn \__nmc_table_form_body:N #1
   { % #1 <== \l__nmc_result_tl
@@ -976,9 +1027,13 @@
   }
 \cs_new_protected:Npn \__nmc_table_form_body_cvcols:N #1
   { % #1 \l__nmc_result_tl
+    \bool_if:NT \l__nmc_table_round_bool
+      { \__nmc_table_cvround_pre: }
     \seq_clear:N \l_tmpd_seq
     \seq_map_variable:NNn \l__nmc_table_body_cols_seq \l_tmpa_seq 
-      {
+      { 
+        \bool_if:NT \l__nmc_table_round_bool
+          { \__nmc_table_rvround_pre: }
         \seq_clear:N \l_tmpb_seq
         \__nmc_table_form_cols:NN \l_tmpa_seq \l_tmpb_seq 
         \seq_put_right:NV \l_tmpd_seq \l_tmpb_seq
@@ -1042,6 +1097,8 @@
         { 2 } { \__nmc_table_form_cols_rii:NN #1#2 }
       }
       { \__nmc_table_form_cols_riii:NN #1#2 }
+    \bool_if:NT \l__nmc_table_round_bool
+      { \__nmc_table_cvround_post: }
   }
 \cs_new_protected:Npn \__nmc_table_form_cols_ri:NN #1#2
   { 
@@ -1083,7 +1140,9 @@
   }
 \cs_new_protected:Npn \__nmc_table_form_cols_riii:NN #1#2
   { 
-    \__nmc_table_form_cols_rii_aux:NN #1#2 
+    \__nmc_table_form_cols_rii_aux:NN #1#2
+    \bool_if:NT \l__nmc_table_round_bool
+      { \__nmc_table_rvround_post: }
     \int_set_eq:NN \l__nmc_table_c_int \l__nmc_table_b_int
     \int_set_eq:NN \l__nmc_table_b_int \l__nmc_table_a_int 
     \seq_map_variable:NNn #1 \l_tmpa_fp
@@ -1100,6 +1159,8 @@
         \fp_set_eq:NN \l_tmpb_fp \l_tmpa_fp
         \int_set_eq:NN \l__nmc_table_c_int \l__nmc_table_b_int
         \int_set_eq:NN \l__nmc_table_b_int \l__nmc_table_a_int 
+        \bool_if:NT \l__nmc_table_round_bool
+          { \__nmc_table_rvround_post: }
       }
     \int_set:Nn \l__nmc_table_a_int { 1 } 
     \__nmc_table_signs:
@@ -1206,9 +1267,15 @@
       { \seq_set_from_clist:No \l__nmc_table_rdata_seq \l_tmpa_tl }
       { \__nmc_error_what:n { File~#1~not~found~in } }
   }
+\cs_new_protected:Npn \__nmc_table_rounding:n #1
+  {
+    \bool_set:Nn \l__nmc_table_round_bool { !\tl_if_blank_p:n { #1 } } 
+    \tl_set:Nn \l__nmc_round_xpr_tl { #1 }
+  }
 \keys_define:nn { numerica/table }
   {
     view        .code:n = \__nmc_dbg_int:nn { 1 } { 11 },
+    round       .code:n = \__nmc_table_rounding:n { #1 },
 %
     rvar      .tl_set:N = \l__nmc_table_rvar_tl,
     rstop     .tl_set:N = \l__nmc_table_rstop_tl,
@@ -1253,10 +1320,10 @@
     chround  .int_set:N = \l__nmc_table_chround_int,
 %
     ctitle    .tl_set:N = \l__nmc_table_ctitle_tl,
+    cmidrow   .tl_set:N = \l__nmc_table_csubttl_tl,
     csubttl   .tl_set:N = \l__nmc_table_csubttl_tl,
-    csubttl   .tl_set:N = \l__nmc_table_csubttl_tl,
-    header   .int_set:N = \l__nmc_table_header_int,
-    header   .initial:n = 1,
+    headless .int_set:N = \l__nmc_table_headless_int,
+    headless .initial:n = 0,
     rules     .tl_set:N = \l__nmc_table_rules_tl,
     rules    .initial:n = ThB, 
     foot      .tl_set:N = \l__nmc_table_footer_tl,



More information about the tex-live-commits mailing list.