texlive[61855] Master/texmf-dist: fcolumn (2feb22)

commits+karl at tug.org commits+karl at tug.org
Wed Feb 2 22:40:02 CET 2022


Revision: 61855
          http://tug.org/svn/texlive?view=revision&revision=61855
Author:   karl
Date:     2022-02-02 22:40:02 +0100 (Wed, 02 Feb 2022)
Log Message:
-----------
fcolumn (2feb22)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/latex/fcolumn/README
    trunk/Master/texmf-dist/doc/latex/fcolumn/fcolumn.pdf
    trunk/Master/texmf-dist/doc/latex/fcolumn/makefile
    trunk/Master/texmf-dist/source/latex/fcolumn/fcolumn.dtx
    trunk/Master/texmf-dist/source/latex/fcolumn/fcolumn.ins
    trunk/Master/texmf-dist/tex/latex/fcolumn/fcolumn.sty

Modified: trunk/Master/texmf-dist/doc/latex/fcolumn/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/fcolumn/README	2022-02-02 21:39:48 UTC (rev 61854)
+++ trunk/Master/texmf-dist/doc/latex/fcolumn/README	2022-02-02 21:40:02 UTC (rev 61855)
@@ -15,7 +15,7 @@
 is using 3,2 as #3, meaning that numbers are typeset with 2 decimal 
 digits and grouping is done on 3 digits.  The grouping character is 
 ``.'' and the decimal separator is ``,'', thereby coding for the 
-continental European standard.  People in the Anglo-saxon world would
+continental European standard.  People in the Anglo-Saxon world would
 rather code |\newcolumntype{f}{F{,}{.}{3,2}{}}|.
 
 To show where and how the f-column is used, let's look at a typical
@@ -48,7 +48,8 @@
 that are aligned are possible in one tabular environment.
    The fcolumn specifier can be used in a tabular environment
 and in the longtable environment.  Specific fcolumn formatting,
-like colour and/or font changes are possible.
+like colour and/or font changes are possible, see the file
+fcolumn.pdf.
 
 To install:
 -----------
@@ -56,12 +57,12 @@
 containing fcolumn.dtx) or type ``make install'' and move the 
 resultant file fcolumn.sty to a place searched by TeX.
 
-To produce the documentation:
------------------------------
+To generate the documentation:
+------------------------------
 Type ``make''.  Or run the file fcolumn.dtx through LaTeX,
 update the glossary and index by makeindex:
 
   makeindex -s gglo.ist -o fcolumn.gls fcolumn.glo
-  makeindex -s gglo.ist -o fcolumn.ind fcolumn.idx
+  makeindex -s gind.ist -o fcolumn.ind fcolumn.idx
 
 and then LaTeX fcolumn.dtx again; presto!

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

Modified: trunk/Master/texmf-dist/doc/latex/fcolumn/makefile
===================================================================
--- trunk/Master/texmf-dist/doc/latex/fcolumn/makefile	2022-02-02 21:39:48 UTC (rev 61854)
+++ trunk/Master/texmf-dist/doc/latex/fcolumn/makefile	2022-02-02 21:40:02 UTC (rev 61855)
@@ -25,7 +25,7 @@
 	pdftex fcolumn.ins
 
 dist: $(DIST)
-	mkdir FCv1.4; cp $(DIST) FCv1.4; tar -czf fcolumn.tgz FCv1.4; rm -r FCv1.4
+	mkdir FCv1.4.1temp; cp $(DIST) FCv1.4.1temp; tar -czf fcolumn.tgz FCv1.4.1temp; rm -r FCv1.4.1temp
 
 fcolumn.pdf: fcolumn.dtx fcolumn.gls fcolumn.ind fcolumn.sty
 fcolumn.glo  fcolumn.idx: fcolumn.dtx

Modified: trunk/Master/texmf-dist/source/latex/fcolumn/fcolumn.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/fcolumn/fcolumn.dtx	2022-02-02 21:39:48 UTC (rev 61854)
+++ trunk/Master/texmf-dist/source/latex/fcolumn/fcolumn.dtx	2022-02-02 21:40:02 UTC (rev 61855)
@@ -1,5 +1,5 @@
 % \iffalse meta-comment
-% Copyright (C) 2015--2021 by Edgar Olthof
+% Copyright (C) 2015--2022 by Edgar Olthof
 %
 % This file may be distributed and/or modified under the
 % conditions of the LaTeX Project Public License, either
@@ -14,13 +14,14 @@
 % \fi
 % \iffalse
 %<package>\ProvidesPackage{fcolumn}
-%<package>          [2021/11/22 v1.4 Automatic Currency Package (EHTO)]
+%<package>          [2022/02/01 v1.4.1 Automatic Currency Package (EHTO)]
 %<package>\NeedsTeXFormat{LaTeX2e}
 %<package>\RequirePackage{array}[v2.4k]
 %<*driver>
 \documentclass{ltxdoc}
-\usepackage{longtable}        
-\usepackage{fcolumn}          
+\usepackage{longtable}
+\usepackage{dcolumn}
+\usepackage{fcolumn}
 \usepackage{booktabs}
 \usepackage[tableposition=top,aboveskip=0pt]{caption}
 \DeclareCaptionStyle{normal}{labelfont={rm,bf,small},textfont={rm,small},%
@@ -40,7 +41,7 @@
 %</driver>
 % \fi
 % \RecordChanges
-% \CheckSum{1292}
+% \CheckSum{1200}
 % \CharacterTable
 %  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
 %   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
@@ -80,6 +81,8 @@
 %   backwards compatible to~1.2: it only adds functionality.}
 % \changes{v1.4}{2021/11/21}{More robust version on the extra formatting information: alternative
 %   formatting after the comma (if any), instead of additional information.  Corrected a few typos.}
+% \changes{v1.4.1}{2022/01/31}{Definition needed for longtable only if that package is loaded.
+%   General update, streamlining code.  Excess digits silently ignored when all zero.}
 % \GetFileInfo{fcolumn.sty}
 % \DoNotIndex{\@@endpbox,\@@startpbox,\@acol,\@arstrut,\@arstrutbox,\@classiv,\@classz,\@depth}
 % \DoNotIndex{\@firstampfalse,\@firstamptrue,\@gobble,\@halignto,\@height,\@mkpream,\@ne,\@nextchar}
@@ -121,16 +124,15 @@
 % People in the Anglo-Saxon world would rather code 
 % |\newcolumntype{f}{F{,}{.}{3,2}{}}| for the same input, yielding 
 % $12{,}345{.}67$ as output for the number given above.  The default
-% value for |#3| is |3,2|, indicating
-% that grouping of the integer part is by three digits, that a comma is
-% used in the \TeX-source to indicate the decimal separator, and that
-% the decimal part consists of two digits. 
-% If however, in your country or company grouping is done with a thinspace every 
-% four digits, that the separator in the source should be the character |p|,
-% and there are three digits after the decimal mark---that happens to be a 
-% |\cdot|---, then simply specify |\newcolumntype{f}{F{\,}{\cdot}{4p3}{}}| in 
-% that case.  The input could be 123456p78 then, yielding $12{\,}3456{\cdot}780$
-% as output.
+% value for |#3| is |3,2|, indicating that grouping of the integer 
+% part is by three digits, that a comma is used in the \TeX-source to
+% indicate the decimal mark, and that the decimal part consists of
+% two digits.  However, if in your country or company grouping is done 
+% with a thinspace every four digits, that the decimal mark in the
+% source should be the character |p|, and there are three digits after
+% the decimal mark---that happens to be a |\cdot|---, then simply specify
+% |\newcolumntype{f}{F{\,}{\cdot}{4p3}{}}| in that case.  The input could
+% be 123456p78 then, yielding $12{\,}3456{\cdot}780$ as output.
 %
 % By default two digits are used for the decimal part, so if you really
 % want no decimal digits (in that case of course also skipping the decimal
@@ -153,10 +155,10 @@
 % \toprule
 % properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
 % \midrule
-% house &      200000    & equity capital&  50000    \\
-% bank account & -603,23 & mortgage &      150000    \\
-% savings &     28000    \\
-% cash &          145,85 & profit  &        27542,62 \\
+% house &        200000    & equity capital & 50000    \\
+% bank account &   -603,23 & mortgage &      150000    \\
+% savings &       28000    \\
+% cash &            145,85 & profit &         27542,62 \\
 % \sumline
 % \bottomrule
 % \end{tabular}
@@ -174,10 +176,10 @@
 %\toprule
 %properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
 %\midrule
-%house &      200000    & equity capital&  50000    \\
-%bank account & -603,23 & mortgage &      150000    \\
-%savings &     28000    \\
-%cash &          145,85 & profit  &        27542,62 \\
+%house &        200000    & equity capital & 50000    \\
+%bank account &   -603,23 & mortgage &      150000    \\
+%savings &       28000    \\
+%cash &            145,85 & profit &         27542,62 \\
 %\sumline
 %\bottomrule
 %\end{tabular}
@@ -192,8 +194,8 @@
 % package~\cite{booktabs} was used, but that is not the point here.
 %
 % This package is heavily inspired by the |dcolumn| package by
-% David Carlisle~\cite{dcolumn}, some constructions are more or less 
-% copied from that package.  Version~1.4 (this version) incorporates the idea
+% David Carlisle~\cite{dcolumn}; some constructions are more or less 
+% copied from that package.  From version~1.3 onwards it incorporates the idea
 % of Christian Hoff of providing additional (formatting) information per column.
 % A rather contrived example is given in Table~\ref{tab:ex3}, combining colour and fonts.
 % \newcolumntype{q}[1]{F{.}{,}{3,2}{#1}}
@@ -205,10 +207,10 @@
 % \toprule
 % properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
 % \midrule
-% house &      200000    & equity capital&  50000    \\
-% bank account & -603,23 & mortgage &      150000    \\
-% savings &     28000    \\
-% cash &          145,85 & profit  &        27542,62 \\
+% house &        200000    & equity capital & 50000    \\
+% bank account &   -603,23 & mortgage &      150000    \\
+% savings &       28000   \\
+% cash &            145,85 & profit &         27542,62 \\
 % \sumline
 % \bottomrule
 % \end{tabular}
@@ -225,7 +227,7 @@
 %\begin{tabular}{@{}lq{\color{red}\mathsf,\mathbf}lq{\color{green}}@{}}
 %\multicolumn4c{\bfseries Balance sheet}\\
 %...
-%...(same financial contents as in Table 1)
+%... (Same financial contents as in Table 1.)
 %...
 %\end{tabular}
 %\end{table}
@@ -234,13 +236,13 @@
 % The font changing commands like |\mathsf| and |\mathbf| act on an argument, hence require
 % braces, but these are already provided internally for this purpose.  For that reason this
 % type of commands must be given last, without braces (and if you don't specify a font 
-% changing command, these extra internal braces are just redundant).  The argument to the
+% changing command, these extra internal braces are just redundant).  The fourth argument to the
 % new columntype may consist of two parts, separated by a comma.  In that case, the part to
 % the left of the comma is applied to the data entered by the user and the right part
 % is applied to the result.  The example in Table~\ref{tab:ex3} shows this: the bold font
-% is only used in the |\sumline| and also the colour is back to the default (black).  If
-% you want formatting for the whole column, like green colour as in the last column of
-% Table~\ref{tab:ex3}, leave out the comma.  
+% is only used in the |\sumline| and there is no colour specification, so that's back to
+% the default (black).  If you want formatting for the whole column, like green colour as
+% in the last column of Table~\ref{tab:ex3}, leave out the comma.  
 %
 % Note that changes in font size, e.g., ``|\huge|'' in ``|\huge\color{red}\mathbf|''
 % as parameter to column type |q| are ignored by \LaTeX, since the formatting 
@@ -266,18 +268,21 @@
 %\midrule
 %\endfirsthead
 %\caption[]{\textit{(continued from previous page)\/}}\\
-%\midrule
+%\toprule
 %properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
 %\midrule
 %\endhead
+%\bottomrule
 %\multicolumn4{r@{}}{\small\textit{(Table continues on next page)\/}}\\
-%\midrule
 %\endfoot
 %\bottomrule
 %\endlastfoot
+%house &        200000    & equity capital & 50000    \\
 %...
-%...(somewhat altered financial contents as in Table 1)
+%... (Somewhat altered financial contents compared to
+%...  Table 1 to demonstrate the page break.)
 %...
+%\sumline
 %\end{longtable}
 % \end{verbatim}
 % \end{table}
@@ -295,35 +300,27 @@
 % \midrule
 % \endfirsthead
 % \caption[]{\textit{(continued from previous page)\/}}\\
-% \midrule
+% \toprule
 % properties & \leeg{31 dec 2014} & debts & \leeg{31 dec 2014}\\
 % \midrule
 % \endhead
+% \bottomrule
 % \multicolumn4{r@{}}{\small\textit{(Table continues on next page)\/}}\\
-% \midrule
 % \endfoot
 % \bottomrule
 % \endlastfoot
-% house &      200000    & equity capital&  50000    \\
-% bank account & -603,23 & mortgage &      150000    \\
-% savings 1   &      2000    \\
-% savings 2   &      2000    \\
-% savings 3   &      2000    \\
-% savings 4   &      2000    \\
-% savings 5   &      2000    \\
-% savings 6   &      2000    \\
-% savings 7   &      2000    \\
-% savings 8   &      2000    \\
-% savings 9   &      2000    \\
-% savings 10  &      2000    \\
-% savings 11  &      2000    \\
-% savings 12  &      2000    \\
-% savings 13  &      2000    \\
-% savings 14  &      2000    \\
-% cash        &       145,85 & profit  &        27542,62 \\
+% house &        200000    & equity capital & 50000    \\
+% bank account &   -603,23 & mortgage &      150000    \\
+% savings 1 &      4000    \\
+% savings 2 &      4000    \\
+% savings 3 &      4000    \\
+% savings 4 &      4000    \\
+% savings 5 &      4000    \\
+% savings 6 &      4000    \\
+% savings 7 &      4000    \\
+% cash &            145,85 & profit &         27542,62 \\
 % \sumline
 % \end{longtable}
-
 % \section{Commands}
 % The user only needs to know six commands or constructions.  These six are given here.
 % \begin{macro}{F}
@@ -340,7 +337,7 @@
 % than just setting the input decimal mark.  By default the input grouping 
 % character is the dot, except when the dot is specified as input decimal
 % mark; in that case the comma is acting as input grouping character.  With 
-% this convention the continental Europe and Anglo-Saxon part of the world 
+% this convention continental Europe and the Anglo-Saxon part of the world 
 % is served.  And using input grouping markers is optional anyway.
 % \end{macro}
 % \begin{macro}{\sumline}
@@ -364,7 +361,7 @@
 % |\sumline|. Give, e.g., |\sumline[10pt]|, in case you want this spacing
 % to be 10\thinspace pt.  And you may even give two options, like in 
 % |\sumline[10pt][5pt]|, in which the second option is the extra space below
-% the summary row.  In fact that second option is the option to |\\| that is
+% the summary row.  In fact that second option is parsed to |\\|, that is
 % implicit in |\sumline|.
 % \end{macro}
 % \begin{macro}{\resetsumline}
@@ -441,7 +438,7 @@
 % \end{macro}
 % \begin{macro}{\leeg}
 % If an |F|-column should be empty then simply leave it empty.  If however
-% it should  not be empty but the entry should be treated as text---even 
+% it should not be empty but the entry should be treated as text---even 
 % if it is a number---, this can be done with |\leeg|.  It expects an 
 % argument and this argument is typeset in the column.  The common case is
 % where |p.m.| (\textit{pro memoria}) is entered.  In contrast to v1.1.2 
@@ -451,21 +448,21 @@
 % The automatic column balance check can also be done manually.  If 
 % |F|-columns~1 and~4 should balance and you want them to be checked,
 % then simply say |\checkfcolumns14|.  With more than nine |F|-columns
-% you may be forced to say something like |\checkfcolumns{10}{12}|. If
+% you may be forced to say something like |\checkfcolumns{10}{12}|.  If
 % |\checkfcolumns| is used, the automatic check is disabled.  Multiple
 % |\checkfcolumns|s are supported; if |F|-columns~1, 2, and~3 should 
 % balance, you specify |\checkfcolumns12| and |\checkfcolumns23|.
 % There is no explicit command to disable all checking, but
-% |\checkfcolumns11| obviously also serves that purpose.
+% |\checkfcolumns11| obviously does the trick.
 % \end{macro}
 % \begin{macro}{\ifstrict at ccounting}
 % In the rare occasion that a negative number occurs in a financial table,
-% the sign of that number can be an explicit minus sign ($-$) or the number
+% the sign of that number can be an explicit minus sign~($-$) or the number
 % is coloured red, or it is typeset between parentheses, and there may be
 % even other ways.  By default (for aesthetic reasons) |fcolumn| typesets
 % it with a minus~sign, but strict accounting prescibes that the number 
 % should be put between parentheses.  The latter can be accomplished by 
-% setting |\strict at ccountingtrue|.  But since this contains a non-letter,
+% setting |\strict at ccountingtrue|, but since this contains a non-letter,
 % it is also possible to invoke |fcolumn| with the option |strict|, i.e.,
 % |\usepackage[strict]{fcolumn}|, which sets this flag.
 % \end{macro}
@@ -513,7 +510,7 @@
 % an amount expressed in cents (dollar cents, euro cents, centen, Pfennige,
 % centimes, kopecks, groszy) and typesets it as the amount in entire 
 % currency units (dollars, euros, guldens, Marke, francs, rubles, z\l oty)
-% with comma as decimal separator and the dot as grouping character
+% with comma as decimal mark and the dot as grouping character
 % (thousand separator if the first part of |#1| is~3).
 % As explained, this can be changed.  It uses two private booleans: 
 % |\withs at p| and |\strict at ccounting|.  The latter is used to typeset
@@ -536,14 +533,14 @@
 % are always used within |$|s, so it is really a minus sign that is printed, not a hyphen.
 % All calculations are done with |\count0|, |\count1|, etc.\ i.e., without |F|-column-specific
 % \meta{count}s because it is all done locally.  Leaving the tabular environment will 
-% restore their values.  This is also true for the effect of |\FCform at t|, so that formatting
-% information is local to this column.  The reason for inserting the opening brace between 
-% |\FCform at t| and |\ifnum| (and the accompanying closing brace after |\fi|) is to facilitate
-% the possible use of |\mathbf| or any other font changing command as the last item in |\FCform at t|. 
+% restore their values.  This is also true for the effect of |\FCform at t|, so that 
+% formatting information is local to this column.  The reason for inserting the |{|
+% between |\FCform at t| and |\ifnum| (and the accompanying |}| just before finishing 
+% this definition) is to facilitate the possible use of |\mathbf| or any other font 
+% changing command as the last item in |\FCform at t|.
 %    \begin{macrocode}
-\def\g at ldm@cro#1\relax#2{\FCform at t{\ifnum#2<0 \ifstrict at ccounting (\else 
-  -\fi \count2=-#2 \else\count2=#2 
-\fi
+\def\g at ldm@cro#1\relax#2{\FCform at t{\ifnum#2<0 \ifstrict at ccounting 
+  (\else -\fi \count2=-#2 \else\count2=#2 \fi
 %    \end{macrocode}
 % Calculate the entire currency units: this is the result of $x/a$ as integer
 % division, with $a=10^n$ and $n$ the part of |#1| after the separator (if any).
@@ -613,7 +610,7 @@
 % |\count0| locally.  This also implies that tail recursion is not 
 % possible here, but that is not very important, as the largest number
 % (which is $2^{31}-1$) will only cause a threefold recursion using the
-% default |3,2| (ninefold when using |1,0|, but who does that?).  The 
+% default |3,2| (ninefold when using~|1,0|, but who does that?).  The 
 % largest amount this package can deal with is therefore 2.147.483.647 
 % (using |3,0|).  For most people this is probably more than enough if
 % the currency is euros or dollars.  And otherwise make clear that you
@@ -623,8 +620,8 @@
 % would lead to a maximum of slightly more than 92.2\thinspace P\EUR{};
 % about 100 times the current world economy~\cite{world_economy}. Yet
 % another method is to use Heiko Oberdiek's package |bigintcalc|:
-% then only memory restrictions apply.  This, however, requires a major
-% rewrite of |fcolumn|. For now, version~1.4 sticks to the moderate amounts.
+% then only memory restrictions apply.  This, however, would require
+% a major rewrite of |fcolumn|.
 %
 % There is no straightforward interpretation of |#1| being zero or 
 % negative, therefore this is used as an indicator that no grouping
@@ -705,7 +702,7 @@
 % First it checks whether there is a risk of overflow in this step.  If
 % $A$ and $B$ are two \TeX-registers and $B$ is to be added to $A$, 
 % overflow will not occur if one is (or both are) zero or if $A$ and~$B$
-% have different signs.  Otherwise, be careful.  Note that \TeX\ does not
+% have different signs; otherwise be careful.  Note that \TeX\ does not
 % check for overflow when performing an |\advance| (done in section~1238
 % of Ref.~\cite{CandTB}), in contrast to |\multiply|, see section~105.
 %    \begin{macrocode}
@@ -722,9 +719,9 @@
 \global\advance\csname FCtot@\romannumeral\FCsc at l\endcsname by \count0
 \ifx\FCs at gn\m at ne 
 %    \end{macrocode}
-% They had the same sign: risk of overflow.  Record the sign
-% of |\count0| (and of the original total of this column; they were 
-% the same) in |\FCs at gn|. Table~\ref{tab:ex9} 
+% They have the same sign, hence risk of overflow.  Record the sign
+% of |\count0| (and of the original total of this column; we just established
+% they were the same) in |\FCs at gn|. Table~\ref{tab:ex9} 
 % \begin{table}[htb]
 % \def\PackageError#1#2#3{\PackageWarning{#1}{#2: #3}}
 % \caption{Examples on overflow.}
@@ -735,8 +732,9 @@
 % income & \leeg{31 dec 2014} & \leeg{31 dec 2015} & \leeg{31 dec 2016} \\
 % \midrule
 % item~1 &  20000000 & 20000000 &20000000 \\
-% item~2 &  10000000 &  2000000 &-2000000 \\
-% item~3 &   5000000 & -2000000 & 2000000 \\
+% item~2 &  10000000 &  2000000 &-1500000 \\
+% item~3 &   5000000 & -1500000 & 2000000 \\
+% \checkfcolumns12
 % \checkfcolumns23
 % \sumline
 % \bottomrule
@@ -750,18 +748,19 @@
 % is correct in the end.  Nevertheless, it is advised to swap the two
 % items that caused the overflow, as shown in the right |F|-column.
 %
-% Since the absolute value of |\FCs at gn| is unity, no overflow will
-% occur in the multiplication step below.
+% Check that the sign of the updated column total is still correct.
+% If so, |\FCs at gn| is reset (to |\@ne|) at the end of this chunk.
 %    \begin{macrocode}
   \ifnum\count0>0 \let\FCs at gn\@ne \fi
   \count0=\csname FCtot@\romannumeral\FCsc at l\endcsname
-  \multiply\count0 by \FCs at gn
+  \ifnum\FCs at gn<0 \count0=-\count0 \fi
   \ifnum\count0<0 
     \let\FCs at gn=\m at ne
     \PackageError{fcolumn}{Register overflow}{Overflow occurred
-    in fcolumn \number\FCsc at l. You can press <enter> now and I'll
-    proceed,\MessageBreak but check your table. The offending entry is 
-    indicated with an exclamation\MessageBreak mark in the output.}%
+    in fcolumn \number\FCsc at l.\MessageBreak You can press <enter> 
+    now and I'll proceed, but check\MessageBreak your table. The
+    offending entry is indicated with an\MessageBreak exclamation
+    mark in the output.}%
   \else\let\FCs at gn=\@ne
   \fi
 \fi
@@ -775,7 +774,7 @@
 %    \end{macrocode}
 % \end{macro}
 %
-% The \meta{count}s |\FC at l| and |\FC at r| capture the part to the left and to the 
+% The \meta{count}s |\FC at l| and |\FC at r| capture the parts to the left and to the 
 % right of the decimal mark, respectively.
 %    \begin{macrocode}
 \newcount\FC at l \newcount\FC at r
@@ -786,6 +785,22 @@
 \def\assignform at t#1,#2,#3\assignform at t{\def\FCform at t{#1}%
   \def\FCform at tt{#2}\ifx\FCform at tt\@empty \def\FCform at tt{#1}\fi}
 %    \end{macrocode}
+% \begin{macro}{\m at thcodeswitch}
+% As will be shown below, once the first digit, or sign, or decimal mark, or
+% grouping character is scanned, the decimal digits should loose their
+% activeness.  That is done here for the digits in a rather blunt way, by putting their
+% |\mathcode|s to zero if |#1| equals~0, since the actual |\mathcode| is not important---as 
+% long as it is not |"8000|---because the digits are not used for typesetting.
+% (And even if they were; it's inside |\box0|, whose contents will be discarded.)  
+% When the |$| in |\e at fi| is encountered, the digits get back their original
+% |\mathcode|s so that the actual typesetting in |\zetg at ld| is correct again.
+% With a non-zero |#1| the activeness is switched on.
+%    \begin{macrocode}
+\def\m at thcodeswitch#1{\count0=10 \loop\ifnum\count0>0 
+\advance\count0 by \m at ne\mathcode\expandafter`\the\count0=
+\ifnum#1=0 0 \else "8000 \fi\repeat}
+%    \end{macrocode}
+% \end{macro}
 % \def\<#1>{\leavevmode\hbox{$\langle$#1\/$\rangle$}}
 % \begin{macro}{\b at fi}
 % The macro |\b at fi| provides the beginning of the financial column.  It
@@ -800,10 +815,9 @@
 % An intermediate macro |\sep at xt| to extract the first character
 % of |#1|, which in most cases will be the only character.
 %    \begin{macrocode}
-\def\sep at xt##1##2\end{\def\sep at rator{{##1}}}%
-\sep at xt#1\end\def\decim at lmark{{#2}}%
-\def\sp at l{#3}\assignform at t#4,,\assignform at t\global\advance\FCsc at l by 
-  \@ne \global\FC at l=0 \global\FC at r=1
+\def\sep at xt##1##2\end{\def\sep at rator{{##1}}}\sep at xt#1\end
+\def\decim at lmark{{#2}}\def\sp at l{#3}\assignform at t#4,,\assignform at t
+\global\advance\FCsc at l by \@ne\global\FC at l=0 \global\FC at r=1
 %    \end{macrocode}
 % The value specified by the user is then captured by |\FC at l| and 
 % this is done in a special way: |\FC at l| is assigned globally within
@@ -817,12 +831,13 @@
 % \<integer constant>. Here \<sign> is a plus or minus character with 
 % category code~12, \<integer constant> is a sequence of zero
 % or more (decimal) \<digit>s, and \<decimal mark> is the middel 
-% part of |#3|, i.e., the comma in |3,2| or the period in |3.2|.
-% If the \<decimal mark> is absent with no space characters between 
-% the two \<integer constant> terms, these merge, making four redundant
-% entries.  One of the combinations is \<empty>, a sequence of exactly 
-% zero non-space tokens: this is the only combination that doesn't put 
-% anything in an |F|-column---and was the most difficult part to handle.
+% part of |#3|, i.e., the comma in |3,2| or the period in |3.2|.  If
+% the \<decimal mark> is absent with no space characters between the
+% two \<integer constant> terms, these merge, making four redundant
+% entries.  One of the combinations is \<empty>, a sequence of characters
+% outside the ones that are made active, e.g., plain text or nothing at all:
+% this is the only combination that doesn't put anything in an |F|-column---and
+% was the most difficult part to handle.
 %
 % The minus sign must be captured separately, because in an entry like
 % |-0,07| the 7~cents are negative, but this cannot be seen from the
@@ -831,22 +846,16 @@
 % |\ifnum-0<0| yields |false|. |\FCs at gn| is a general purpose flag.  Its 
 % first use is to capture the sign.
 %    \begin{macrocode}
-\let\FCs at gn=\@ne\relax \setbox0\hbox\bgroup$%   
+\let\FCs at gn=\@ne\relax \setbox0\hbox\bgroup$
 %    \end{macrocode}
-% Do the scan inside a box and inside math mode.  Start with
-% defining all characters that may appear as the first one in an |F|-column
-% as active.
+% Do the scan inside a box and inside math mode.  Start with defining all
+% characters that may appear as the first one in an |F|-column as active; 
+% digits first. This needs a complicated |\edef| with accompanying |\noexpand|
+% because the starting digit for |\FC at l| must be packed inside each definition.
 %    \begin{macrocode}
-\uccode`\~=`0\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=0}
-\uccode`\~=`1\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=1}
-\uccode`\~=`2\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=2}
-\uccode`\~=`3\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=3}
-\uccode`\~=`4\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=4}
-\uccode`\~=`5\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=5}
-\uccode`\~=`6\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=6}
-\uccode`\~=`7\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=7}
-\uccode`\~=`8\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=8}
-\uccode`\~=`9\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=9}
+\count@=10 \loop\ifnum\count@>0 \advance\count@ by \m at ne
+ \uccode`\~=\expandafter`\the\count@ \uppercase{\edef~}{\noexpand
+ \m at thcodeswitch0 \global\FC at l=\the\count@}\repeat
 %    \end{macrocode}
 % For the input decimal mark something extra is needed: if it is the
 % first character in an |F|-column (like in |,07|), it should also
@@ -854,14 +863,14 @@
 % is the first is easy, since in that case the |\mathcode|s of the 
 % decimal digits is still |"8000|.  The assignment to |\FC at r| starts 
 % with~1, so that appended digits get captured correctly, even if they
-% start with~0.  Postprocessing of |\FC at r| is done in |\e at fi|.
+% start with~0; postprocessing of |\FC at r| is done in |\e at fi|.
 % The input decimal mark switches itself off as active character, 
-% so at most one input decimal separator is allowed (N.B.:
+% so at most one input decimal mark is allowed (N.B.:
 % this makes sense).
 %    \begin{macrocode}
 \def\deactdecm at rk##1##2\relax{\mathcode`##1=0 }%
 \afterassignment\setucc at de\count@#3\relax
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`- \restorem at thcodes\fi
+\uppercase{\def~}{\ifnum\mathcode`\0="8000 \m at thcodeswitch0 \fi
 \afterassignment\deactdecm at rk\count@#3\relax \global\FC at r=1}%
 %    \end{macrocode}
 % The input grouping character effectively expands to ``nothing, i.e.,
@@ -872,14 +881,14 @@
 % input decimal mark was encountered; that can be checked by looking
 % at its |\mathcode|.
 % 
-% The input grouping character is the dot |.|, except when that character
+% The input grouping character is the dot ``|.|'', except when that character
 % was already chosen as input decimal mark.  In that case, the grouping 
-% character will be the comma. This is easy to check because the |\uccode|
+% character will be the comma.  This is easy to check because the |\uccode|
 % of |`\~| is still preserved.  
 %    \begin{macrocode}
 \def\d at cm##1##2{\count@=\mathcode`##1 }
 \ifnum\uccode`\~=`. \uccode`\~=`,\relax\else \uccode`\~=`.\relax\fi
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`- \restorem at thcodes\fi
+\uppercase{\def~}{\ifnum\mathcode`\0="8000 \m at thcodeswitch0 \fi
 \afterassignment\d at cm\count@#3\relax
 %    \end{macrocode}
 % The |\expandafter| below is necessary because the global assignment
@@ -892,37 +901,28 @@
 % needed (it should be: a minus sign between digits screws up everything),
 % and start scanning the number.
 %    \begin{macrocode}
-\uccode`\~=`+\relax
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`-
-\restorem at thcodes\fi\global\FC at l=0}%
-\uccode`\~=`-\relax 
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`-
-\restorem at thcodes\fi\global\let\FCs at gn\m at ne \global\FC at l=0}%
+\uccode`\~=`+\relax \uppercase{\def~}{\ifnum\mathcode`\0="8000
+\m at thcodeswitch0 \fi\global\FC at l=0}
+\uccode`\~=`-\relax \uppercase{\def~}{\ifnum\mathcode`\0="8000
+\m at thcodeswitch0 \fi\global\let\FCs at gn\m at ne \global\FC at l=0}%
 %    \end{macrocode}
-% Now actually activate all these codes.  The first is simple, but
-% after that, one can't say |"8000| anymore because |0| acts as active.
-% But copying |\mathcode|s still works.
+% Now actually activate all these codes.
 %    \begin{macrocode}
-\mathcode`-="8000 \mathcode`+=\mathcode`- \mathcode`.=\mathcode`- 
+\mathcode`-="8000 \mathcode`+="8000 \mathcode`.="8000
 %    \end{macrocode}
 % These three remain active until the |$| in |\e at fi| is encountered.
 % The following ones will, except in the \<empty> case, have their activeness 
 % turned off at some time.
 %    \begin{macrocode}
-\def\actdecm at rk##1##2\relax{\ifx##1.\relax \mathcode`,=\mathcode`-
-\else \mathcode`##1=\mathcode`- \fi}%
-\afterassignment\actdecm at rk\count@#3\relax
-\mathcode`\0=\mathcode`- \mathcode`\1=\mathcode`- 
-\mathcode`\2=\mathcode`- \mathcode`\3=\mathcode`- 
-\mathcode`\4=\mathcode`- \mathcode`\5=\mathcode`- 
-\mathcode`\6=\mathcode`- \mathcode`\7=\mathcode`- 
-\mathcode`\8=\mathcode`- \mathcode`\9=\mathcode`- }
+\m at thcodeswitch1 \def\actdecm at rk##1##2\relax{%
+\ifx##1.\relax \mathcode`,="8000 \else \mathcode`##1="8000 \fi}%
+\afterassignment\actdecm at rk\count@#3\relax}
 %    \end{macrocode}
 % \end{macro}
 % \begin{macro}{\e at fi}
 % If the digits are still active then either nothing was entered or only
 % characters that did not deactivate the digits were entered.  In 
-% either case the output should be \<empty>.  To flag this outside
+% both cases the output should be \<empty>.  To flag this outside
 % the group that started with the opening |$| of |\b at fi|, |\FC at r| is set
 % globally to a negative value.  This doesn't harm, because it didn't 
 % contain relevant information anyway.  Outside the group, the sign
@@ -930,7 +930,7 @@
 % |\count|, but now it's documented.  In effect, |\FC at r| can only be~|-1|, 
 % |1|, or at least~|10|, so the comparison |\ifnum\FC at r>0| does not miss~0.
 %    \begin{macrocode}
-\def\e at fi{\ifnum\mathcode`\0=\mathcode`- \global\FC at r=\m at ne\fi$\egroup
+\def\e at fi{\ifnum\mathcode`\0="8000 \global\FC at r=\m at ne\fi$\egroup
 \ifnum\FC at r>0
 %    \end{macrocode}
 % If there was no decimal mark or if there was a decimal mark but no 
@@ -941,22 +941,41 @@
 %    \end{macrocode}
 % Next is a loop for bringing the decimal part in the correct way to
 % the integer part.  The loop is performed the number of decimal
-% digits to be printed (the~2 in |3,2| of the default setting).  This also
-% means that if you provided more decimal digits than this, the excess 
-% digit(s) will not be handled and a |\PackageWarning| will be given,
-% showing these excess digits.  This is truncation, not rounding!
-% There is one situation in which this code doesn't catch all:
-% when exactly one extra zero was provided.  And in that case truncation
-% is a no-op.
+% digits to be printed (the~2 in |3,2| of the default setting).
 %    \begin{macrocode}
  \def\i at ts##1##2{\count0=##2}
  \afterassignment\i at ts\count@\sp at l
  \loop\ifnum\count0>0 \multiply\FC at l by 10
-  \expandafter\secd at xt\number\FC at r\end \advance\count0 by \m at ne
+  \expandafter\secd at xt\number\FC at r\secd at xt \advance\count0 by \m at ne
  \repeat
- \ifnum\FC at r>10
+%    \end{macrocode}
+% This also means that if you provided more decimal digits than this, the excess 
+% digit(s) will not be handled.  This is truncation, not rounding!  If all 
+% truncated digits are zero, this truncation is a no-op and they are silently ignored,
+% see the example Table~\ref{tab:ex10}, 
+% \begin{table}[htb]
+% \newcolumntype{d}{D{,}{,}{-1}}
+% \caption{Truncating excess digits.}
+% \label{tab:ex10}
+% \begin{tabular}{@{}ldfl@{}}
+% \toprule
+% composer & \multicolumn1c{raw entry} & \leeg{debt} & remark \\
+% \midrule
+% Berg   &      123,450  & 123,450  & ``0'' silently ignored \\
+% Eisler &      234,567  & 234,567  & ``7'' ignored with warning \\
+% Sch\"onberg & 345,6709 & 345,6709 & ``09'' ignored with warning \\
+% Webern &        2,3456 &   2,3456 & ``56'' ignored with warning \\
+% \sumline
+% \bottomrule
+% \end{tabular}
+% \end{table}
+% that was created with |@{}ldfl@{}| (|d| for centering on the decimal
+% mark~\cite{dcolumn}) as tabular key. If, however, at least one of them is 
+% not zero, a |\PackageWarning| will be given, showing the excess digit(s). 
+%    \begin{macrocode}
+ \ifnum\expandafter\@gobble\number\FC at r>0
    \def\tw at l##1##2\relax{##2}
-   \PackageWarning{fcolumn}{Excess digit\ifnum\FC at r>100 s\fi\space
+   \PackageWarning{fcolumn}{Excess digit\ifnum\FC at r>19 s\fi\space
    ``\expandafter\tw at l\number\FC at r\relax'' in decimal part
    \MessageBreak ignored near or}
  \fi
@@ -974,32 +993,16 @@
 % The second digit from the left is needed from a string of characters
 % representing a decimal number. The macro |\secd at xt| extracts that digit,
 % provided that the number has at least two digits, but that is guaranteed by
-% |\e at fi|.  That second digit is then added to |\FC at l|.  A new number is 
-% assigned to |\FC at r|, that consists of the digits of |#1#3|.  If |#3| was
-% empty, 10 is assigned.  In this way |\FC at r| is prepared for insertion in
-% the next invocation of |\secd at xt|.  In iterating: 1234 yields~134, yields~14,
-% yields~10, stays~10, etc. 
+% |\e at fi|.  That second digit is then added to |\FC at l|. 
+% A new number is assigned to |\FC at r|, that consists 
+% of the digits of |#1#3|.  If |#3| was empty, 10 is assigned.  In this way
+% |\FC at r| is prepared for insertion in the next invocation of |\secd at xt|.  
+% In iterating: 1234 yields~134, yields~14, yields~10, stays~10, etc. 
 %    \begin{macrocode}
-\def\secd at xt#1#2#3\end{\advance\FC at l by #2
+\def\secd at xt#1#2#3\secd at xt{\advance\FC at l by #2
 \FC at r=#1#3 \ifnum\FC at r=1 \FC at r=10 \fi}
 %    \end{macrocode}
 % \end{macro}
-% \begin{macro}{\restorem at thcodes}
-% As shown above, once the first digit, or sign, or decimal separator, or
-% grouping character is scanned, the decimal digits should loose their
-% activeness.  That is done here in a rather blunt way, since the actual 
-% |\mathcode| is not important---as long as it is not |"8000|---because
-% the digits are not used for typesetting (and even if they were; it's
-% inside |\box0|, whose contents will be discarded).  When the |$| 
-% in |\e at fi| is encountered, the digits get back their original
-% |\mathcode|s so that the actual typesetting in |\zetg at ld| is
-% correct again.
-%    \begin{macrocode}
-\def\restorem at thcodes{\mathcode`\0=0 \mathcode`\1=0 
-\mathcode`\2=0 \mathcode`\3=0 \mathcode`\4=0 \mathcode`\5=0
-\mathcode`\6=0 \mathcode`\7=0 \mathcode`\8=0 \mathcode`\9=0 }
-%    \end{macrocode}
-% \end{macro}
 % \subsection{Adaptations to existing macros}
 % \begin{macro}{\@array}
 % The definition of |\@array| had to be extended slightly because it should
@@ -1006,15 +1009,12 @@
 % also include |\@mksumline| (acting on the same |#2| as |\@mkpream| gets).
 % This change is transparant: it only adds functionality and if you don't 
 % use that, you won't notice the difference.  It starts by just copying the
-% original definition from v2.4k of the |array| package~\cite{array}.
+% original definition from v2.4k of the |array| package~\cite{array},
+% compacted.
 %    \begin{macrocode}
-\def\@array[#1]#2{%
-\@tempdima \ht \strutbox
-\advance \@tempdima by\extrarowheight
-\setbox \@arstrutbox \hbox{\vrule
-           \@height \arraystretch \@tempdima
-           \@depth \arraystretch \dp \strutbox
-           \@width \z@}%
+\def\@array[#1]#2{\@tempdima\ht\strutbox\advance\@tempdima by
+ \extrarowheight\setbox\@arstrutbox\hbox{\vrule\@height\arraystretch 
+ \@tempdima\@depth\arraystretch\dp\strutbox\@width\z@}%
 %    \end{macrocode}
 % Here comes the first change: after each |\\| (or |\cr| for that matter)
 % the \meta{count} |\FCsc at l| should be reset.  This is easiest done with
@@ -1021,25 +1021,20 @@
 % |\everycr|, but |\everycr| is put to |{}| by |\ialign|, so that definition
 % should change.  The resetting should be done globally.
 %    \begin{macrocode}
-\def\ialign{\everycr{\noalign{\global\FCsc at l=0 }}%
- \tabskip\z at skip\halign}
+\def\ialign{\everycr{\noalign{\global\FCsc at l=0 }}\tabskip\z at skip\halign}
 %    \end{macrocode}
 % Then the definition is picked up again.
 %    \begin{macrocode}
-\begingroup
-\@mkpream{#2}%
-\xdef\@preamble{\noexpand \ialign \@halignto
+\begingroup\@mkpream{#2}\xdef\@preamble{\noexpand\ialign\@halignto
 \bgroup\@arstrut\@preamble\tabskip\z@\cr}%
 \endgroup 
 %    \end{macrocode}
-% The combination |\endgroup| followed by |\begingroup| seems redundant, 
-% but that is not the case: the |\endgroup| restores everything that was 
-% not |\global|.  With the following |\begingroup| it is ensured that 
-% |\@mksumline| experiences the same settings as |\@mkpream| did.
+% The combination |\endgroup| in the previous chunk followed by |\begingroup|
+% in the next chunk seems redundant, but that is not the case: the |\endgroup|
+% restores everything that was not |\global|.  With the following |\begingroup|
+% it is ensured that |\@mksumline| experiences the same settings as |\@mkpream| did.
 %    \begin{macrocode}
-\begingroup
-\@mksumline{#2}%
-\endgroup
+\begingroup\@mksumline{#2}\endgroup
 %    \end{macrocode}
 % As a side product of |\@mksumline| also the \meta{count}s for the totals 
 % and \meta{dimen}s for the widths of the colums are created.  The columns 
@@ -1049,14 +1044,9 @@
 %    \end{macrocode}
 % From here on it is just the old definition of |array.sty|.
 %    \begin{macrocode}
-\@arrayleft
-\if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
-\bgroup
-\let \@sharp ##\let \protect \relax
-\lineskip \z@
-\baselineskip \z@
-\m at th
-\let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble} 
+\@arrayleft\if #1t\vtop\else\if#1b\vbox\else\vcenter\fi\fi\bgroup 
+\let\@sharp ##\let\protect\relax\lineskip\z@\baselineskip\z@
+\m at th \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble} 
 %    \end{macrocode}
 % Because |\@array| was changed here and it is this version that should
 % be used, |\@@array| should be |\let| equal to |\@array| again.
@@ -1072,11 +1062,11 @@
 % is grammatically correct because it has already been screened by |\@mkpream|.
 % Furthermore, most entries will simply add nothing to |\s at ml@ne|, e.g., |@|, |!|,
 % and \verb+|+ can be fully ignored. Ampersands are only inserted by |c|, |l|, |r|,  
-% |p|, |m|, and |b|.  So a specifier like |@{}lflf@{}| will yield the sumline
-% |&\a&&\a\\|, (where |\a| is a macro that prints the desired result of the column, 
-% see below).  Had the specifier been \verb+l|f||@{   }l|f+, then the same sumline must
-% be constructed: all difficulties are already picked up and solved in the creation
-% of the preamble.
+% |p|, |m|, and |b|.  So, if |\a| is a macro that prints the desired result of the
+% column (see below), then a specifier like |@{}lflf@{}| will yield the sumline 
+% |&\a&&\a\\|.  Had the specifier been \verb+l|f||@{   }l|f+, then the same
+% sumline must be constructed: all difficulties are already picked up and 
+% solved in the creation of the preamble.
 %
 % In reality the sumline must be constructed from the expanded form of the
 % specifier, so |@{}lf@{}| will expand as
@@ -1089,9 +1079,10 @@
 % \item ignore everything else;
 % \item close with a |\\|.
 % \end{compactitem}
-% (In reality also the column check is inserted just before the |\\|, see
-% |\aut at check|.)  To discriminate, a special version of |\@testpach| could
-% be written, but that is not necessary: |\@testpach| can do all the work,
+% (For completeness' sake it should be mentioned that prior to the |\\| also the column
+% check is inserted, see |\aut at check|.)
+% To discriminate, a special version of |\@testpach|~\cite{array}
+% could be written, but that is not necessary: |\@testpach| can do all the work,
 % although much of it will be discarded.  Here speed is sacrificed for space
 % and this can be afforded because the creation of the sumline is done only 
 % once per |\tabular| or |\longtable|.
@@ -1108,9 +1099,8 @@
 %    \end{macrocode}
 % Then |\@mkpream| is picked up again.
 %    \begin{macrocode}
-\@temptokena{#1}\@tempswatrue
-\@whilesw\if at tempswa\fi{\@tempswafalse\the\NC at list}%
-\count0\m at ne\let\the at toks\relax\prepnext at tok
+\@temptokena{#1}\@tempswatrue\@whilesw\if at tempswa\fi{\@tempswafalse
+\the\NC at list}\count0\m at ne\let\the at toks\relax\prepnext at tok
 %    \end{macrocode}
 % Next is the loop over all tokens in the expanded form of the specifier.  The change
 % with respect to |\@mkpream| is that the body of the loop is now only dealing
@@ -1118,11 +1108,9 @@
 % what to do when constructing the preamble, so special definitions are created, see
 % below.
 %    \begin{macrocode}
-\expandafter \@tfor \expandafter \@nextchar
- \expandafter :\expandafter =\the\@temptokena \do
- {\@testpach
- \ifcase \@chclass \@classfz \or \or \@classfii \or \or \or \or \or
- \or \or \or \@classfx \fi\@lastchclass\@chclass}%
+\expandafter\@tfor\expandafter\@nextchar\expandafter:\expandafter=\the
+\@temptokena\do{\@testpach\ifcase\@chclass\@classfz\or\or\@classfii\or
+\or\or\or\or\or\or\or\@classfx\fi\@lastchclass\@chclass}%
 %    \end{macrocode}
 % And the macro is finished by applying the |\aut at check| and appending the 
 % |\\| to the sumline.  Note that the |\aut at check| is performed {\itshape 
@@ -1149,9 +1137,9 @@
 %    \end{macrocode}
 % \end{macro}
 % \begin{macro}{\@classfz}
-% Class~f0 is applicable for specifiers |c|, |l|, and |r|, and if the arguments of |p|,
-% |m|, or |b| are given.  The latter three cases, with |\@chnum| is 0, 1, or~2 should be
-% ignored and the first three cases are now similar to class~f10.
+% Class~f0 is applicable for specifiers |c|, |l|, and |r|, and if the arguments
+% of |p|, |m|, or |b| are given.  The latter three cases, with |\@chnum| is 0, 
+% 1, or~2 should be ignored and the first three cases are now similar to class~f10.
 %    \begin{macrocode}
 \def\@classfz{\ifnum\@chnum<\thr@@ \@classfx\fi}
 %    \end{macrocode}
@@ -1170,14 +1158,15 @@
  \edef\t at stn{\string\e at fi}
  \ifx\t at stm\t at stn
 %    \end{macrocode}
-% If both tests yield |true|, i.e., we encountered a |<{\e at fi}| where we expect one to 
-% find, then add the macro to typeset everything.
+% If both tests yield |true|, i.e., we encountered a |<{\e at fi}| where we expect
+% one to find, then add the macro to typeset everything.
 %    \begin{macrocode}
   \@addtosumline{\prr at sult}
 %    \end{macrocode}
-% But we're not done yet: in the following lines of code the appropriate \meta{count}s and
-% \meta{dimen}s are created, if necessary.  Note that |\FCsc at l| was set to~0 in the 
-% beginning of |\@mksumline|, so it is well-defined when |\@classfii| is used.
+% But we're not done yet: in the following lines of code the appropriate 
+% \meta{count}s and \meta{dimen}s are created, if necessary.  Note that 
+% |\FCsc at l| was set to~0 in the beginning of |\@mksumline|, so it is
+% well-defined when |\@classfii| is used.
 %    \begin{macrocode}
   \global\advance\FCsc at l by \@ne 
   \ifnum\FCsc at l>\FCtc at l
@@ -1217,7 +1206,7 @@
    \else
     \PackageError{fcolumn}{Name clash for <dimen>}{\expandafter\csname
     FCwd@\romannumeral\FCsc at l\endcsname is already defined and it may 
-    not even be a <dimen>.  If you're\MessageBreak sure it is a <dimen>,
+    not even be a <dimen>. If you're\MessageBreak sure it is a <dimen>,
     you can press <enter> now and I'll proceed, but things\MessageBreak
     will get overwritten.}%
    \fi
@@ -1250,8 +1239,8 @@
 %    \end{macrocode}
 % Then the information for the last line is computed.  It is not sufficient
 % to calculate the width of the result (in points) to use that as the width
-% of the rule separating the individual entries and the result.  It may be 
-% that the sum is larger (in points) than any of the entries, e.g., when the
+% of the rule separating the individual entries and the result.  It may happen
+% that the sum is wider (in points) than any of the entries, e.g., when the
 % result of $6+6$ (using specifier~|3,2|) is typeset. The width of the rule 
 % should be equal to the width of |\hbox{$12{,}00$}| then.  On the other
 % hand the width of the rule when summing $24$ and $-24$ should be that of 
@@ -1283,17 +1272,18 @@
 % a number in the table, e.g., |\leeg{p.m.}|, this definition is without 
 % at-sign. By defining |\leeg| in this way, instead of |\multicolumn1r{}|
 % (which contains |\omit|), the default spacing in the column is retained.
-% It has its normal effect on the column width, but doesn't alter the 
-% width of the sumrule.
+% It doesn't alter the width of the sumrule, but has its normal effect on
+% the column width, so be careful: don't insert the unabridged version of
+% Romeo and Juliet~\cite{RJ} here.  It is not typeset in math mode, nor 
+% does it use the extra (formatting) information of |#4| of the fcolumn,
+% so you're completely free here.
 %    \begin{macrocode}
 \def\leeg#1{$\egroup \let\e at fi=\relax #1}
 %    \end{macrocode}
 % Note that anything may be given as argument to |\leeg|, so in principle
-% it can also be used to cheat: |\leeg{0,03}| will insert |0,03| in the 
-% table but it doesn't increase the totals of that column by~3 (assuming 
-% |3,2| coding for the separations).  But you won't cheat, won't you?  
-% It may affect the width, so be careful: don't insert the unabridged 
-% version of Romeo and Juliet~\cite{RJ} here.
+% it can also be used to cheat: |\leeg{0,03}| will insert the text~|0,03|
+% in the table but it doesn't increase the totals of that column by~3 
+% (assuming |3,2| coding for the separations).  But you won't cheat, won't you?
 % \end{macro}
 % \begin{macro}{\res at tsumline}
 % Since all changes to the totals and widths of the columns are global,
@@ -1341,24 +1331,25 @@
   \count0=\@ne \count1=\FCsc at l 
   \divide\count1 by \tw@
   \loop\ifnum\count1<\FCsc at l
-    \advance\count1 by \@ne
-    \xdef\FC at chklist{\FC at chklist\number\count0,\number\count1;}%
-    \advance\count0 by\@ne
+   \advance\count1 by \@ne
+   \xdef\FC at chklist{\FC at chklist\number\count0,\number\count1;}%
+   \advance\count0 by\@ne
   \repeat
-  \fi
+ \fi
 \fi
 %    \end{macrocode}
 % Then this list is peeled off and processed.
 %    \begin{macrocode}
 \loop 
-  \ifx\FC at chklist\@empty\let\FCs at gn=\@ne\else\let\FCs at gn=\m at ne\fi
-  \ifx\FCs at gn\m at ne
-    \expandafter\fre at t\FC at chklist\end
-    \ifnum\csname FCtot@\romannumeral\count0\endcsname=
-      \csname FCtot@\romannumeral\count1\endcsname\else
-      \PackageWarning{fcolumn}{F-columns \number\count0 \space
-      and \number\count1 \space do not balance near or}%
-    \fi
+\ifx\FC at chklist\@empty\let\FCs at gn=\@ne\else\let\FCs at gn=\m at ne\fi
+\ifx\FCs at gn\m at ne
+ \expandafter\fre at t\FC at chklist\end
+ \ifnum\csname FCtot@\romannumeral\count0\endcsname=
+  \csname FCtot@\romannumeral\count1\endcsname\else
+  \PackageWarning{fcolumn}{F-columns \number\count0 \space and
+  \number\count1 \space do not balance due to \string\sumline
+  \MessageBreak near or}%
+ \fi
 \repeat}
 %    \end{macrocode}
 % When |\aut at check| is finished, |\FC at chklist| is empty again, i.e., well
@@ -1386,83 +1377,69 @@
 %    \end{macrocode}
 % \end{macro}
 % \subsection{Support for package longtable}
-% Package |longtable| is used for tables that may span multiple pages. |fcolumn| and
-% |longtable| work together as long as |longtable| is loaded first, so that |fcolumn|
-% can adapt one definition of |longtable|. If |longtable| is not loaded, that definition 
-% is just that: a definition.  If |longtable| is loaded before |fcolumn|, it is a 
-% redefinition, and it should be.  For that reason the user is warned (not loading 
-% |longtable| is not an error if you don't use it) if |fcolumn| is loaded without prior 
-% loading of |longtable|.
+% Package |longtable| is used for tables that may span multiple pages.  The
+% packages |fcolumn| and |longtable| work together provided |longtable| is 
+% loaded first, so that |fcolumn| can adapt one definition of |longtable|. If
+% |longtable| is not loaded, it's a waste of memory having that definition, so
+% it is only defined when necessary.  For that reason the user is warned (not 
+% loading |longtable| is obviously not an error if you don't use it) if 
+% |fcolumn| is loaded without prior loading of |longtable|.
 %    \begin{macrocode}
 \ifx\longtable\@undefined
- \PackageWarningNoLine{fcolumn}{fcolumn is loaded without longtable. That's 
- OK, but\MessageBreak if you want to load longtable as well, make sure
- \MessageBreak it is done before loading fcolumn}
-\fi
+ \PackageWarningNoLine{fcolumn}{fcolumn is loaded without longtable.
+ That's OK, but\MessageBreak if you want to load longtable as well, 
+ make sure \MessageBreak it is done before loading fcolumn}\else
 %    \end{macrocode}
 % \begin{macro}{\LT at array}
-% And here is the only definition of |longtable| that needs to be adapted a bit, to make 
-% |fcolumn| work with that package.
+% And here is the only definition of |longtable| that needs to be extended
+% to make |fcolumn| work with that package.  The lines are compacted a bit
+% w.r.t.\ the original |longtable| code; if you want to study the
+% code, have a look at the documentation~\cite{longtable}.
 %    \begin{macrocode}
-\def\LT at array[#1]#2{%
-  \refstepcounter{table}\stepcounter{LT at tables}%
-  \if l#1 \LTleft\z@\LTright\fill
-  \else\if r#1 \LTleft\fill\LTright\z@
-  \else\if c#1 \LTleft\fill\LTright\fill
-  \fi\fi\fi
-  \let\LT at mcol\multicolumn\let\LT@@tabarray\@tabarray\let\LT@@hl\hline
-  \def\@tabarray{\let\hline\LT@@hl \LT@@tabarray}%
-  \let\\\LT at tabularcr\let\tabularnewline\\%
-  \def\newpage{\noalign{\break}}%
-  \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT at no@pgbk-}4}%
-  \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT at no@pgbk4}%
-  \let\hline\LT at hline\let\kill\LT at kill\let\caption\LT at caption
-  \@tempdima\ht\strutbox\let\@endpbox\LT at endpbox
-  \ifx\extrarowheight\@undefined
-    \let\@acol\@tabacol\let\@classz\@tabclassz\let\@classiv\@tabclassiv
-    \def\@startpbox{\vtop\LT at startpbox}\let\@@startpbox
-    \@startpbox\let\@@endpbox\@endpbox\let\LT at LL@FM at cr\@tabularcr
-  \else
-    \advance\@tempdima\extrarowheight \col at sep\tabcolsep
-    \let\@startpbox\LT at startpbox\let\LT at LL@FM at cr\@arraycr
-  \fi
-  \setbox\@arstrutbox\hbox{\vrule\@height\arraystretch\@tempdima
-    \@depth\arraystretch\dp\strutbox\@width\z@}%
-  \let\@sharp##\let\protect\relax
-   \begingroup
-    \@mkpream{#2}%
-    \xdef\LT at bchunk{%
-       \global\advance\c at LT@chunks\@ne\global\LT at rows\z@
-       \setbox\z@\vbox\bgroup\LT at setprevdepth\tabskip\LTleft
-       \noexpand\halign to\hsize\bgroup\tabskip\z@\@arstrut
-       \@preamble\tabskip\LTright\cr}%
-  \endgroup
+ \def\LT at array[#1]#2{\refstepcounter{table}\stepcounter{LT at tables}\if
+  l#1 \LTleft\z@\LTright\fill\else\if r#1 \LTleft\fill\LTright\z@\else
+  \if c#1 \LTleft\fill\LTright\fill\fi\fi\fi\let\LT at mcol\multicolumn
+  \let\LT@@tabarray\@tabarray\let\LT@@hl\hline\def\@tabarray{\let
+  \hline\LT@@hl\LT@@tabarray}\let\\\LT at tabularcr\let\tabularnewline\\
+  \def\newpage{\noalign{\break}}\def\pagebreak{\noalign{\ifnum`}=0\fi
+  \@testopt{\LT at no@pgbk-}4}\def\nopagebreak{\noalign{\ifnum`}=0\fi
+  \@testopt\LT at no@pgbk4}\let\hline\LT at hline\let\kill\LT at kill\let\caption
+  \LT at caption\@tempdima\ht\strutbox\let\@endpbox\LT at endpbox\ifx
+  \extrarowheight\@undefined\let\@acol\@tabacol\let\@classz\@tabclassz
+  \let\@classiv\@tabclassiv\def\@startpbox{\vtop\LT at startpbox}\let
+  \@@startpbox\@startpbox\let\@@endpbox\@endpbox\let\LT at LL@FM at cr
+  \@tabularcr\else\advance\@tempdima\extrarowheight\col at sep\tabcolsep
+  \let\@startpbox\LT at startpbox\let\LT at LL@FM at cr\@arraycr\fi\setbox
+  \@arstrutbox\hbox{\vrule\@height\arraystretch\@tempdima\@depth
+  \arraystretch\dp\strutbox\@width\z@}\let\@sharp##\let\protect\relax
+  \begingroup\@mkpream{#2}\xdef\LT at bchunk{\global\advance\c at LT@chunks
+  \@ne\global\LT at rows\z@\setbox\z@\vbox\bgroup\LT at setprevdepth\tabskip
+  \LTleft\noexpand\halign to\hsize\bgroup\tabskip\z@\@arstrut\@preamble
+  \tabskip\LTright\cr}\endgroup
 %    \end{macrocode}
-% Until this line it was just the code for |\LT at array| from package |longtable|.
-% The five lines of the next chunk are new to |\LT at array|.  Their 
+% Until this line it was just the code for |\LT at array| from package~|longtable|.
+% The two lines of the next chunk are new to |\LT at array|.  Their 
 % purpose is the same as in |\@array| above.
 %    \begin{macrocode}
-  \begingroup
-  \@mksumline{#2}%
-  \endgroup
-  \res at tsumline
+  \begingroup\@mksumline{#2}\endgroup\res at tsumline 
   \everycr{\noalign{\global\FCsc at l=0 }}% 
 %    \end{macrocode}
-% From here on |\LT at array| is picked up again.
+% From here on |\LT at array| is picked up again, ending with the |\fi| that belongs
+% to the |\ifx| that started this definition.
 %    \begin{macrocode}
-  \expandafter\LT at nofcols\LT at bchunk&\LT at nofcols
-  \LT at make@row\m at th\let\par\@empty
-  \lineskip\z@\baselineskip\z@\LT at bchunk}
+  \expandafter\LT at nofcols\LT at bchunk&\LT at nofcols\LT at make@row\m at th\let
+  \par\@empty\lineskip\z@\baselineskip\z@\LT at bchunk}
+\fi
 %    \end{macrocode}
 % \end{macro}
 % That's it!
 % \section*{Acknowledgement}
-% Thanks to Karl Berry for valuable comments regarding the consistency of
-% the installation procedure of this version.  Frank Mittelbach gave 
-% various useful suggestions for improving the input parsing as well as
-% hints to make the package more \LaTeX-like. He also challenged me to make |fcolumn|
-% compatible with |longtable|.  Christian Hoff's request on column formatting triggered
-% many happy hours of coding.
+% Thanks to Karl Berry for valuable comments regarding the consistency of the
+% installation procedure of this version.  Frank Mittelbach gave various useful
+% suggestions for improving the input parsing as well as hints to make the package
+% more \LaTeX-like.  He also challenged me to make |fcolumn| compatible with 
+% |longtable|.  Christian Hoff's request on column formatting triggered many
+% happy hours of coding.
 % \bibliographystyle{plain}
 % \begin{thebibliography}{9}
 % \itemsep0pt
@@ -1470,7 +1447,7 @@
 % \parskip0pt
 % \bibitem{array} Frank Mittelbach and David Carlisle. 
 %    A new implementation of \LaTeX's |tabular| and |array| environment.
-% \bibitem{booktabs} Simon Fear.  Publication quality tables in \LaTeX.
+% \bibitem{booktabs} Simon Fear.  The |booktabs| package.  Publication quality tables in \LaTeX.
 % \bibitem{dcolumn} David Carlisle.  The |dcolumn| package.
 % \bibitem{longtable} David Carlisle.  The |longtable| package.
 % \bibitem{world_economy} According to the IMF \url{www.imf.org}.

Modified: trunk/Master/texmf-dist/source/latex/fcolumn/fcolumn.ins
===================================================================
--- trunk/Master/texmf-dist/source/latex/fcolumn/fcolumn.ins	2022-02-02 21:39:48 UTC (rev 61854)
+++ trunk/Master/texmf-dist/source/latex/fcolumn/fcolumn.ins	2022-02-02 21:40:02 UTC (rev 61855)
@@ -17,7 +17,7 @@
 
 This is a generated file.
 
-Copyright (C) 2015--2021 by Edgar Olthof
+Copyright (C) 2015--2022 by Edgar Olthof
 
 This file may be distributed and/or modified under the
 conditions of the LaTeX Project Public License, either
@@ -42,12 +42,12 @@
 \Msg{*   fcolumn.sty                                       *}
 \Msg{*                                                     *}
 \Msg{* into a directory searched by TeX.                   *}
-\Msg{*    To produce the documentation, type ``make'' or   *}
+\Msg{*    To generate the documentation, type ``make'' or  *}
 \Msg{* run the file fcolumn.dtx through LaTeX.  Make sure  *}
 \Msg{* the glossary and index are updated by makeindex:    *}
 \Msg{*                                                     *}
 \Msg{*   makeindex -s gglo.ist -o fcolumn.gls fcolumn.glo  *}
-\Msg{*   makeindex -s gglo.ist -o fcolumn.ind fcolumn.idx  *}
+\Msg{*   makeindex -s gind.ist -o fcolumn.ind fcolumn.idx  *}
 \Msg{*                                                     *}
 \Msg{* and then LaTeX again; presto!                       *}
 \Msg{*                                                     *}

Modified: trunk/Master/texmf-dist/tex/latex/fcolumn/fcolumn.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/fcolumn/fcolumn.sty	2022-02-02 21:39:48 UTC (rev 61854)
+++ trunk/Master/texmf-dist/tex/latex/fcolumn/fcolumn.sty	2022-02-02 21:40:02 UTC (rev 61855)
@@ -8,7 +8,7 @@
 %% 
 %% This is a generated file.
 %% 
-%% Copyright (C) 2015--2021 by Edgar Olthof
+%% Copyright (C) 2015--2022 by Edgar Olthof
 %% 
 %% This file may be distributed and/or modified under the
 %% conditions of the LaTeX Project Public License, either
@@ -20,10 +20,9 @@
 %% and version 1.3 or later is part of all distributions of
 %% LaTeX version 1999/12/01 or later.
 \ProvidesPackage{fcolumn}
-          [2021/11/22 v1.4 Automatic Currency Package (EHTO)]
+          [2022/02/01 v1.4.1 Automatic Currency Package (EHTO)]
 \NeedsTeXFormat{LaTeX2e}
 \RequirePackage{array}[v2.4k]
-
 \newif\ifstrict at ccounting \strict at ccountingfalse
 \DeclareOption{strict}{\strict at ccountingtrue}
 \ProcessOptions
@@ -33,9 +32,8 @@
 \newif\ifwiths at p
 \def\geldm at cro#1#2{\withs at pfalse
 \afterassignment\g at ldm@cro\count@#1\relax{#2}}
-\def\g at ldm@cro#1\relax#2{\FCform at t{\ifnum#2<0 \ifstrict at ccounting (\else
-  -\fi \count2=-#2 \else\count2=#2
-\fi
+\def\g at ldm@cro#1\relax#2{\FCform at t{\ifnum#2<0 \ifstrict at ccounting
+  (\else -\fi \count2=-#2 \else\count2=#2 \fi
 \count4=\ifx\relax#1\relax 2 \else \@gobble#1\relax\fi
 \count3=0
 \loop\ifnum\count3<\count4
@@ -100,13 +98,14 @@
 \ifx\FCs at gn\m at ne
   \ifnum\count0>0 \let\FCs at gn\@ne \fi
   \count0=\csname FCtot@\romannumeral\FCsc at l\endcsname
-  \multiply\count0 by \FCs at gn
+  \ifnum\FCs at gn<0 \count0=-\count0 \fi
   \ifnum\count0<0
     \let\FCs at gn=\m at ne
     \PackageError{fcolumn}{Register overflow}{Overflow occurred
-    in fcolumn \number\FCsc at l. You can press <enter> now and I'll
-    proceed,\MessageBreak but check your table. The offending entry is
-    indicated with an exclamation\MessageBreak mark in the output.}%
+    in fcolumn \number\FCsc at l.\MessageBreak You can press <enter>
+    now and I'll proceed, but check\MessageBreak your table. The
+    offending entry is indicated with an\MessageBreak exclamation
+    mark in the output.}%
   \else\let\FCs at gn=\@ne
   \fi
 \fi
@@ -118,58 +117,46 @@
 \def\setucc at de#1#2\relax{\uccode`\~=`#1 }
 \def\assignform at t#1,#2,#3\assignform at t{\def\FCform at t{#1}%
   \def\FCform at tt{#2}\ifx\FCform at tt\@empty \def\FCform at tt{#1}\fi}
+\def\m at thcodeswitch#1{\count0=10 \loop\ifnum\count0>0
+\advance\count0 by \m at ne\mathcode\expandafter`\the\count0=
+\ifnum#1=0 0 \else "8000 \fi\repeat}
 \def\b at fi#1#2#3#4{%
-\def\sep at xt##1##2\end{\def\sep at rator{{##1}}}%
-\sep at xt#1\end\def\decim at lmark{{#2}}%
-\def\sp at l{#3}\assignform at t#4,,\assignform at t\global\advance\FCsc at l by
-  \@ne \global\FC at l=0 \global\FC at r=1
-\let\FCs at gn=\@ne\relax \setbox0\hbox\bgroup$%
-\uccode`\~=`0\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=0}
-\uccode`\~=`1\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=1}
-\uccode`\~=`2\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=2}
-\uccode`\~=`3\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=3}
-\uccode`\~=`4\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=4}
-\uccode`\~=`5\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=5}
-\uccode`\~=`6\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=6}
-\uccode`\~=`7\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=7}
-\uccode`\~=`8\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=8}
-\uccode`\~=`9\relax \uppercase{\def~}{\restorem at thcodes \global\FC at l=9}
+\def\sep at xt##1##2\end{\def\sep at rator{{##1}}}\sep at xt#1\end
+\def\decim at lmark{{#2}}\def\sp at l{#3}\assignform at t#4,,\assignform at t
+\global\advance\FCsc at l by \@ne\global\FC at l=0 \global\FC at r=1
+\let\FCs at gn=\@ne\relax \setbox0\hbox\bgroup$
+\count@=10 \loop\ifnum\count@>0 \advance\count@ by \m at ne
+ \uccode`\~=\expandafter`\the\count@ \uppercase{\edef~}{\noexpand
+ \m at thcodeswitch0 \global\FC at l=\the\count@}\repeat
 \def\deactdecm at rk##1##2\relax{\mathcode`##1=0 }%
 \afterassignment\setucc at de\count@#3\relax
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`- \restorem at thcodes\fi
+\uppercase{\def~}{\ifnum\mathcode`\0="8000 \m at thcodeswitch0 \fi
 \afterassignment\deactdecm at rk\count@#3\relax \global\FC at r=1}%
 \def\d at cm##1##2{\count@=\mathcode`##1 }
 \ifnum\uccode`\~=`. \uccode`\~=`,\relax\else \uccode`\~=`.\relax\fi
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`- \restorem at thcodes\fi
+\uppercase{\def~}{\ifnum\mathcode`\0="8000 \m at thcodeswitch0 \fi
 \afterassignment\d at cm\count@#3\relax
 \ifnum\count@=\mathcode`- \expandafter\global\FC at l=\the\FC at l
 \else \expandafter\global\FC at r=\the\FC at r\fi}%
-\uccode`\~=`+\relax
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`-
-\restorem at thcodes\fi\global\FC at l=0}%
-\uccode`\~=`-\relax
-\uppercase{\def~}{\ifnum\mathcode`\0=\mathcode`-
-\restorem at thcodes\fi\global\let\FCs at gn\m at ne \global\FC at l=0}%
-\mathcode`-="8000 \mathcode`+=\mathcode`- \mathcode`.=\mathcode`-
-\def\actdecm at rk##1##2\relax{\ifx##1.\relax \mathcode`,=\mathcode`-
-\else \mathcode`##1=\mathcode`- \fi}%
-\afterassignment\actdecm at rk\count@#3\relax
-\mathcode`\0=\mathcode`- \mathcode`\1=\mathcode`-
-\mathcode`\2=\mathcode`- \mathcode`\3=\mathcode`-
-\mathcode`\4=\mathcode`- \mathcode`\5=\mathcode`-
-\mathcode`\6=\mathcode`- \mathcode`\7=\mathcode`-
-\mathcode`\8=\mathcode`- \mathcode`\9=\mathcode`- }
-\def\e at fi{\ifnum\mathcode`\0=\mathcode`- \global\FC at r=\m at ne\fi$\egroup
+\uccode`\~=`+\relax \uppercase{\def~}{\ifnum\mathcode`\0="8000
+\m at thcodeswitch0 \fi\global\FC at l=0}
+\uccode`\~=`-\relax \uppercase{\def~}{\ifnum\mathcode`\0="8000
+\m at thcodeswitch0 \fi\global\let\FCs at gn\m at ne \global\FC at l=0}%
+\mathcode`-="8000 \mathcode`+="8000 \mathcode`.="8000
+\m at thcodeswitch1 \def\actdecm at rk##1##2\relax{%
+\ifx##1.\relax \mathcode`,="8000 \else \mathcode`##1="8000 \fi}%
+\afterassignment\actdecm at rk\count@#3\relax}
+\def\e at fi{\ifnum\mathcode`\0="8000 \global\FC at r=\m at ne\fi$\egroup
 \ifnum\FC at r>0
  \ifnum\FC at r=1 \FC at r=10 \fi
  \def\i at ts##1##2{\count0=##2}
  \afterassignment\i at ts\count@\sp at l
  \loop\ifnum\count0>0 \multiply\FC at l by 10
-  \expandafter\secd at xt\number\FC at r\end \advance\count0 by \m at ne
+  \expandafter\secd at xt\number\FC at r\secd at xt \advance\count0 by \m at ne
  \repeat
- \ifnum\FC at r>10
+ \ifnum\expandafter\@gobble\number\FC at r>0
    \def\tw at l##1##2\relax{##2}
-   \PackageWarning{fcolumn}{Excess digit\ifnum\FC at r>100 s\fi\space
+   \PackageWarning{fcolumn}{Excess digit\ifnum\FC at r>19 s\fi\space
    ``\expandafter\tw at l\number\FC at r\relax'' in decimal part
    \MessageBreak ignored near or}
  \fi
@@ -176,49 +163,29 @@
  \ifx\FCs at gn\m at ne\relax \FC at l=-\FC at l \fi
  \zetg at ld{\sp at l}{\FC at l}%
 \fi}
-\def\secd at xt#1#2#3\end{\advance\FC at l by #2
+\def\secd at xt#1#2#3\secd at xt{\advance\FC at l by #2
 \FC at r=#1#3 \ifnum\FC at r=1 \FC at r=10 \fi}
-\def\restorem at thcodes{\mathcode`\0=0 \mathcode`\1=0
-\mathcode`\2=0 \mathcode`\3=0 \mathcode`\4=0 \mathcode`\5=0
-\mathcode`\6=0 \mathcode`\7=0 \mathcode`\8=0 \mathcode`\9=0 }
-\def\@array[#1]#2{%
-\@tempdima \ht \strutbox
-\advance \@tempdima by\extrarowheight
-\setbox \@arstrutbox \hbox{\vrule
-           \@height \arraystretch \@tempdima
-           \@depth \arraystretch \dp \strutbox
-           \@width \z@}%
-\def\ialign{\everycr{\noalign{\global\FCsc at l=0 }}%
- \tabskip\z at skip\halign}
-\begingroup
-\@mkpream{#2}%
-\xdef\@preamble{\noexpand \ialign \@halignto
+\def\@array[#1]#2{\@tempdima\ht\strutbox\advance\@tempdima by
+ \extrarowheight\setbox\@arstrutbox\hbox{\vrule\@height\arraystretch
+ \@tempdima\@depth\arraystretch\dp\strutbox\@width\z@}%
+\def\ialign{\everycr{\noalign{\global\FCsc at l=0 }}\tabskip\z at skip\halign}
+\begingroup\@mkpream{#2}\xdef\@preamble{\noexpand\ialign\@halignto
 \bgroup\@arstrut\@preamble\tabskip\z@\cr}%
 \endgroup
-\begingroup
-\@mksumline{#2}%
-\endgroup
+\begingroup\@mksumline{#2}\endgroup
 \res at tsumline
-\@arrayleft
-\if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
-\bgroup
-\let \@sharp ##\let \protect \relax
-\lineskip \z@
-\baselineskip \z@
-\m at th
-\let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble}
+\@arrayleft\if #1t\vtop\else\if#1b\vbox\else\vcenter\fi\fi\bgroup
+\let\@sharp ##\let\protect\relax\lineskip\z@\baselineskip\z@
+\m at th \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble}
 \let\@@array=\@array
 \def\@mksumline#1{\gdef\s at ml@ne{}\@lastchclass 4 \@firstamptrue
 \global\FCsc at l=0
 \let\prr at sult=\relax
-\@temptokena{#1}\@tempswatrue
-\@whilesw\if at tempswa\fi{\@tempswafalse\the\NC at list}%
-\count0\m at ne\let\the at toks\relax\prepnext at tok
-\expandafter \@tfor \expandafter \@nextchar
- \expandafter :\expandafter =\the\@temptokena \do
- {\@testpach
- \ifcase \@chclass \@classfz \or \or \@classfii \or \or \or \or \or
- \or \or \or \@classfx \fi\@lastchclass\@chclass}%
+\@temptokena{#1}\@tempswatrue\@whilesw\if at tempswa\fi{\@tempswafalse
+\the\NC at list}\count0\m at ne\let\the at toks\relax\prepnext at tok
+\expandafter\@tfor\expandafter\@nextchar\expandafter:\expandafter=\the
+\@temptokena\do{\@testpach\ifcase\@chclass\@classfz\or\or\@classfii\or
+\or\or\or\or\or\or\or\@classfx\fi\@lastchclass\@chclass}%
 \xdef\s at ml@ne{\s at ml@ne\noexpand\aut at check\noexpand\\}}
 \def\@addtosumline#1{\xdef\s at ml@ne{\s at ml@ne #1}}
 \def\@classfx{\if at firstamp \@firstampfalse \else \@addtosumline &\fi}
@@ -245,7 +212,7 @@
    \else
     \PackageError{fcolumn}{Name clash for <dimen>}{\expandafter\csname
     FCwd@\romannumeral\FCsc at l\endcsname is already defined and it may
-    not even be a <dimen>.  If you're\MessageBreak sure it is a <dimen>,
+    not even be a <dimen>. If you're\MessageBreak sure it is a <dimen>,
     you can press <enter> now and I'll proceed, but things\MessageBreak
     will get overwritten.}%
    \fi
@@ -276,70 +243,54 @@
   \count0=\@ne \count1=\FCsc at l
   \divide\count1 by \tw@
   \loop\ifnum\count1<\FCsc at l
-    \advance\count1 by \@ne
-    \xdef\FC at chklist{\FC at chklist\number\count0,\number\count1;}%
-    \advance\count0 by\@ne
+   \advance\count1 by \@ne
+   \xdef\FC at chklist{\FC at chklist\number\count0,\number\count1;}%
+   \advance\count0 by\@ne
   \repeat
-  \fi
+ \fi
 \fi
 \loop
-  \ifx\FC at chklist\@empty\let\FCs at gn=\@ne\else\let\FCs at gn=\m at ne\fi
-  \ifx\FCs at gn\m at ne
-    \expandafter\fre at t\FC at chklist\end
-    \ifnum\csname FCtot@\romannumeral\count0\endcsname=
-      \csname FCtot@\romannumeral\count1\endcsname\else
-      \PackageWarning{fcolumn}{F-columns \number\count0 \space
-      and \number\count1 \space do not balance near or}%
-    \fi
+\ifx\FC at chklist\@empty\let\FCs at gn=\@ne\else\let\FCs at gn=\m at ne\fi
+\ifx\FCs at gn\m at ne
+ \expandafter\fre at t\FC at chklist\end
+ \ifnum\csname FCtot@\romannumeral\count0\endcsname=
+  \csname FCtot@\romannumeral\count1\endcsname\else
+  \PackageWarning{fcolumn}{F-columns \number\count0 \space and
+  \number\count1 \space do not balance due to \string\sumline
+  \MessageBreak near or}%
+ \fi
 \repeat}
 \def\fre at t#1,#2;#3\end{\count0=#1 \count1=#2 \xdef\FC at chklist{#3}}
 \def\checkfcolumns#1#2{\noalign{\xdef\FC at chklist{\FC at chklist #1,#2;}}}
 \ifx\longtable\@undefined
- \PackageWarningNoLine{fcolumn}{fcolumn is loaded without longtable. That's
- OK, but\MessageBreak if you want to load longtable as well, make sure
- \MessageBreak it is done before loading fcolumn}
+ \PackageWarningNoLine{fcolumn}{fcolumn is loaded without longtable.
+ That's OK, but\MessageBreak if you want to load longtable as well,
+ make sure \MessageBreak it is done before loading fcolumn}\else
+ \def\LT at array[#1]#2{\refstepcounter{table}\stepcounter{LT at tables}\if
+  l#1 \LTleft\z@\LTright\fill\else\if r#1 \LTleft\fill\LTright\z@\else
+  \if c#1 \LTleft\fill\LTright\fill\fi\fi\fi\let\LT at mcol\multicolumn
+  \let\LT@@tabarray\@tabarray\let\LT@@hl\hline\def\@tabarray{\let
+  \hline\LT@@hl\LT@@tabarray}\let\\\LT at tabularcr\let\tabularnewline\\
+  \def\newpage{\noalign{\break}}\def\pagebreak{\noalign{\ifnum`}=0\fi
+  \@testopt{\LT at no@pgbk-}4}\def\nopagebreak{\noalign{\ifnum`}=0\fi
+  \@testopt\LT at no@pgbk4}\let\hline\LT at hline\let\kill\LT at kill\let\caption
+  \LT at caption\@tempdima\ht\strutbox\let\@endpbox\LT at endpbox\ifx
+  \extrarowheight\@undefined\let\@acol\@tabacol\let\@classz\@tabclassz
+  \let\@classiv\@tabclassiv\def\@startpbox{\vtop\LT at startpbox}\let
+  \@@startpbox\@startpbox\let\@@endpbox\@endpbox\let\LT at LL@FM at cr
+  \@tabularcr\else\advance\@tempdima\extrarowheight\col at sep\tabcolsep
+  \let\@startpbox\LT at startpbox\let\LT at LL@FM at cr\@arraycr\fi\setbox
+  \@arstrutbox\hbox{\vrule\@height\arraystretch\@tempdima\@depth
+  \arraystretch\dp\strutbox\@width\z@}\let\@sharp##\let\protect\relax
+  \begingroup\@mkpream{#2}\xdef\LT at bchunk{\global\advance\c at LT@chunks
+  \@ne\global\LT at rows\z@\setbox\z@\vbox\bgroup\LT at setprevdepth\tabskip
+  \LTleft\noexpand\halign to\hsize\bgroup\tabskip\z@\@arstrut\@preamble
+  \tabskip\LTright\cr}\endgroup
+  \begingroup\@mksumline{#2}\endgroup\res at tsumline
+  \everycr{\noalign{\global\FCsc at l=0 }}%
+  \expandafter\LT at nofcols\LT at bchunk&\LT at nofcols\LT at make@row\m at th\let
+  \par\@empty\lineskip\z@\baselineskip\z@\LT at bchunk}
 \fi
-\def\LT at array[#1]#2{%
-  \refstepcounter{table}\stepcounter{LT at tables}%
-  \if l#1 \LTleft\z@\LTright\fill
-  \else\if r#1 \LTleft\fill\LTright\z@
-  \else\if c#1 \LTleft\fill\LTright\fill
-  \fi\fi\fi
-  \let\LT at mcol\multicolumn\let\LT@@tabarray\@tabarray\let\LT@@hl\hline
-  \def\@tabarray{\let\hline\LT@@hl \LT@@tabarray}%
-  \let\\\LT at tabularcr\let\tabularnewline\\%
-  \def\newpage{\noalign{\break}}%
-  \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT at no@pgbk-}4}%
-  \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT at no@pgbk4}%
-  \let\hline\LT at hline\let\kill\LT at kill\let\caption\LT at caption
-  \@tempdima\ht\strutbox\let\@endpbox\LT at endpbox
-  \ifx\extrarowheight\@undefined
-    \let\@acol\@tabacol\let\@classz\@tabclassz\let\@classiv\@tabclassiv
-    \def\@startpbox{\vtop\LT at startpbox}\let\@@startpbox
-    \@startpbox\let\@@endpbox\@endpbox\let\LT at LL@FM at cr\@tabularcr
-  \else
-    \advance\@tempdima\extrarowheight \col at sep\tabcolsep
-    \let\@startpbox\LT at startpbox\let\LT at LL@FM at cr\@arraycr
-  \fi
-  \setbox\@arstrutbox\hbox{\vrule\@height\arraystretch\@tempdima
-    \@depth\arraystretch\dp\strutbox\@width\z@}%
-  \let\@sharp##\let\protect\relax
-   \begingroup
-    \@mkpream{#2}%
-    \xdef\LT at bchunk{%
-       \global\advance\c at LT@chunks\@ne\global\LT at rows\z@
-       \setbox\z@\vbox\bgroup\LT at setprevdepth\tabskip\LTleft
-       \noexpand\halign to\hsize\bgroup\tabskip\z@\@arstrut
-       \@preamble\tabskip\LTright\cr}%
-  \endgroup
-  \begingroup
-  \@mksumline{#2}%
-  \endgroup
-  \res at tsumline
-  \everycr{\noalign{\global\FCsc at l=0 }}%
-  \expandafter\LT at nofcols\LT at bchunk&\LT at nofcols
-  \LT at make@row\m at th\let\par\@empty
-  \lineskip\z@\baselineskip\z@\LT at bchunk}
 \endinput
 %%
 %% End of file `fcolumn.sty'.



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