summaryrefslogtreecommitdiff
path: root/macros/latex-dev/required/tools/multicol.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex-dev/required/tools/multicol.dtx')
-rw-r--r--macros/latex-dev/required/tools/multicol.dtx43
1 files changed, 36 insertions, 7 deletions
diff --git a/macros/latex-dev/required/tools/multicol.dtx b/macros/latex-dev/required/tools/multicol.dtx
index 3a9f14927a..5adc4db0da 100644
--- a/macros/latex-dev/required/tools/multicol.dtx
+++ b/macros/latex-dev/required/tools/multicol.dtx
@@ -98,7 +98,7 @@
%<driver> \ProvidesFile{multicol.drv}
% \fi
% \ProvidesFile{multicol.dtx}
- [2019/10/15 v1.8x multicolumn formatting (FMi)]
+ [2019/12/09 v1.8y multicolumn formatting (FMi)]
%
%
%%
@@ -1034,19 +1034,20 @@
I therefore use two columns instead}%
\col@number\tw@ \fi
% \end{macrocode}
-% We have only enough box registers for ten columns, so we need to
+% We have only enough box registers for twenty columns, so we need to
% check that the user hasn't asked for more.
% \changes{v1.4k}{1992/06/27}{Maximum of 5 columns (temp)}
% \changes{v1.5a}{1992/11/04}{Allow 10 columns again}
+% \changes{v1.8y}{2019/12/09}{Allow for 20 columns (gh/237)}
% \begin{macrocode}
- \ifnum\col@number>10
+ \ifnum\col@number>20
\PackageError{multicol}%
{Too many columns}%
{Current implementation doesn't
- support more than 10 columns.%
+ support more than 20 columns.%
\MessageBreak
- I therefore use 10 columns instead}%
- \col@number10 \fi
+ I therefore use 20 columns instead}%
+ \col@number20 \fi
% \end{macrocode}
% Within the environment we need a special version of the
% kernel |\@footnotetext| command since the original sets the
@@ -3451,7 +3452,25 @@
% of this setup in the documentation, sigh.) This produced a problem
% at the moment we had more than 5 columns because then officially
% allocated boxes were overwritten by the algorithm.
-% The new release now uses private box registers
+% The new release now uses private box registers.
+%
+% There was in fact a bug in the new implementation because at one
+% point \LaTeX{} started to use the the extended registers and so
+% jumped from below 255 to above omitting the boxes allocated for
+% inserts and the output page box.
+%
+% So nowadays we really have to check if we get the full sequence
+% of boxes allocated without holes (i.e., $2\times\textit{max
+% cols}+1$) and if not alter the allocation registers to start
+% allocating after 255. This is all done quite low-level by looking
+% directly at the values of the allocation counters.
+% \changes{v1.8y}{2019/12/09}{Allow for 20 columns (gh/237)}
+% \begin{macrocode}
+\ifnum\numexpr \count20-\count14-1<41 % = 2 * 20 + 1
+ \count14=\@cclv
+\fi
+% \end{macrocode}
+%
% \begin{macrocode}
\newbox\mult@rightbox
\newbox\mult@grightbox
@@ -3465,6 +3484,16 @@
\newbox\@tempa\newbox\@tempa
\newbox\@tempa\newbox\@tempa
\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
\newbox\@tempa
\let\@tempa\relax
% \end{macrocode}