summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-11-25 22:39:44 +0000
committerKarl Berry <karl@freefriends.org>2016-11-25 22:39:44 +0000
commit4a55147e264bbcb051fbb9a51b05b190e52bd6b7 (patch)
tree93f4c55dd1e9badbcc219df8ac9663e5690329ba
parentdc4d59f0c0a68d9586f1d3f32d9f7a3bb32e29d9 (diff)
cals (25nov16)
git-svn-id: svn://tug.org/texlive/trunk@42577 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/latex/cals/README15
-rw-r--r--Master/texmf-dist/doc/latex/cals/cals.pdfbin236426 -> 99655 bytes
-rw-r--r--Master/texmf-dist/doc/latex/cals/examples/bididemo.pdfbin0 -> 19630 bytes
-rw-r--r--Master/texmf-dist/doc/latex/cals/examples/bididemo.tex59
-rw-r--r--Master/texmf-dist/doc/latex/cals/examples/biditable1.tex18
-rw-r--r--Master/texmf-dist/doc/latex/cals/examples/biditable2.tex33
-rw-r--r--Master/texmf-dist/doc/latex/cals/examples/biditable3.tex33
-rw-r--r--Master/texmf-dist/doc/latex/cals/examples/biditable4.tex32
-rw-r--r--Master/texmf-dist/doc/latex/cals/examples/demo.pdfbin58125 -> 19358 bytes
-rw-r--r--Master/texmf-dist/doc/latex/cals/examples/demo.tex8
-rw-r--r--Master/texmf-dist/doc/latex/cals/notes.pdfbin0 -> 34270 bytes
-rw-r--r--Master/texmf-dist/doc/latex/cals/tb101parashchenko.pdfbin0 -> 253635 bytes
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/README1
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/regression/test_060_alignment.chk6
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/regression/test_060_alignment.tex2
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/regression/test_070_clean_backup_row.chk1
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/regression/test_070_clean_backup_row.tex18
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/regression/test_075_vstraddled_retain_rowsep.chk14
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/regression/test_075_vstraddled_retain_rowsep.tex38
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/regression/test_080_never_pagebreak_in_float.chk4
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/regression/test_080_never_pagebreak_in_float.tex46
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/support/LatexTest.py2
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/support/run_tests.py1
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/table/test_40_issuerow.chk1
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/table/test_50_row.chk11
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/table/test_70_lrskip.chk2
-rw-r--r--Master/texmf-dist/doc/latex/cals/test/template.txt1
-rw-r--r--Master/texmf-dist/source/latex/cals/cals.dtx31
-rw-r--r--Master/texmf-dist/source/latex/cals/cals.ins1
-rw-r--r--Master/texmf-dist/source/latex/cals/cell.dtx25
-rw-r--r--Master/texmf-dist/source/latex/cals/rtl.dtx42
-rw-r--r--Master/texmf-dist/source/latex/cals/table.dtx103
-rw-r--r--Master/texmf-dist/tex/latex/cals/cals.sty118
33 files changed, 561 insertions, 105 deletions
diff --git a/Master/texmf-dist/doc/latex/cals/README b/Master/texmf-dist/doc/latex/cals/README
index e6bfcf975a5..c5dc5225ce4 100644
--- a/Master/texmf-dist/doc/latex/cals/README
+++ b/Master/texmf-dist/doc/latex/cals/README
@@ -4,7 +4,7 @@ The "cals" package is a set of macros to typeset multipage tables
with repeatable headers and footers, with cells spanned over
rows and columns. Decorations are supported: padding, background
color, width of separation rules. The code is compatible with
-multicols and pdfsync.
+multicols and bidi.
The work is released to public (LaTeX license, see below)
by bitplant.de GmbH, a company which provides technical
@@ -16,7 +16,7 @@ Contents:
README:
This file.
-cals.pdf:
+cals.pdf, tb101parashchenko.pdf, notes.pdf:
Documentation.
dev/
@@ -28,15 +28,16 @@ examples/
The file "demo.pdf", produced from "demo.tex" and several
include files, demonstrates features of the cals package.
To re-generate demo.pdf, after you got cals.ins:
- $ export TEXINPUTS=../cals:
+ $ ln -s ../dev/cals.sty
$ pdflatex demo.tex
+ $ xelatex bididemo.tex
-tests/
+test/
Unit tests. See "README" inside.
-Copyright (C) 2010 by Oleg Parashchenko <olpa uucode com>
-
+Copyright (C) 2010+ by Oleg Parashchenko <olpa uucode com>
+
Files from this pacjage may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
of this license or (at your option) any later version.
@@ -44,5 +45,5 @@ The latest version of this license is in:
http://www.latex-project.org/lppl.txt
-and version 1.3c or later is part of all distributions of LaTeX
+and version 1.3c or later is part of all distributions of LaTeX
version 2006/05/20 or later.
diff --git a/Master/texmf-dist/doc/latex/cals/cals.pdf b/Master/texmf-dist/doc/latex/cals/cals.pdf
index a87645f1e76..b4ac3abd127 100644
--- a/Master/texmf-dist/doc/latex/cals/cals.pdf
+++ b/Master/texmf-dist/doc/latex/cals/cals.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/cals/examples/bididemo.pdf b/Master/texmf-dist/doc/latex/cals/examples/bididemo.pdf
new file mode 100644
index 00000000000..8daa020b370
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/examples/bididemo.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/cals/examples/bididemo.tex b/Master/texmf-dist/doc/latex/cals/examples/bididemo.tex
new file mode 100644
index 00000000000..907f2f6c864
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/examples/bididemo.tex
@@ -0,0 +1,59 @@
+\documentclass[twocolumn]{minimal}
+\usepackage[paper=a5paper,landscape=true,margin=1cm,
+ twocolumn=true,columnsep=1cm]{geometry}
+\usepackage{helvet}
+\usepackage{times}
+\usepackage{color}
+\usepackage{fancyvrb}
+\usepackage{multicol}
+
+\usepackage[RTLdocument]{bidi}
+\usepackage{cals}
+
+\newcommand\newcolumn{\vfil\penalty-10000 }
+\newcommand\small{\fontsize{9pt}{11pt}\selectfont}
+\newcommand\Small{\fontsize{8pt}{9pt}\selectfont}
+\newcommand\Large{\fontsize{12pt}{14pt}\selectfont}
+
+\newcommand\header[1]{\noindent{\Large\bfseries#1\strut}\par\bigskip}
+
+\showboxdepth=100
+\showboxbreadth=100
+
+\begin{document}
+\makeatletter
+
+\header{CALS tables demo}
+\newcolumn
+\parindent=0pt
+by Oleg Parashchenko\par
+\textless{}olpa uucode com\textgreater\par
+\par
+24 May 2013\par
+\clearpage
+
+\header{Simple table}
+\input biditable1
+\newcolumn
+\VerbatimInput{biditable1.tex}
+\clearpage
+
+\header{Decorations}
+\input biditable2
+\newcolumn
+\VerbatimInput[fontsize=\small]{biditable2.tex}
+\clearpage
+
+\header{Cell spanning}
+\input biditable3
+\newcolumn
+\VerbatimInput[fontsize=\small]{biditable3.tex}
+\clearpage
+
+\header{Multipage table (in a multicols in a table)}
+\input biditable4
+\newcolumn
+\VerbatimInput[fontsize=\small]{biditable4.tex}
+\clearpage
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/cals/examples/biditable1.tex b/Master/texmf-dist/doc/latex/cals/examples/biditable1.tex
new file mode 100644
index 00000000000..28d367c2b12
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/examples/biditable1.tex
@@ -0,0 +1,18 @@
+\begin{calstable}
+\colwidths{{3cm}{4cm}}
+\thead{
+ I'm a caption in the header\par
+ \bfseries
+ \brow \cell{head 1.1}\cell{head 1.2} \erow
+ \brow \cell{head 2.1}\cell{head 2.2} \erow
+ \mdseries}
+
+\tfoot{
+ \brow \cell{foot 1.1} \cell{foot 1.2} \erow
+ \lastrule
+ I'm a caption in the footer\par}
+
+\brow \cell{body 1.1}\cell{body 1.2} \erow
+\brow \cell{body 2.1}\cell{body 2.2} \erow
+\brow \cell{body 3.1}\cell{body 3.2} \erow
+\end{calstable}
diff --git a/Master/texmf-dist/doc/latex/cals/examples/biditable2.tex b/Master/texmf-dist/doc/latex/cals/examples/biditable2.tex
new file mode 100644
index 00000000000..b17f7905914
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/examples/biditable2.tex
@@ -0,0 +1,33 @@
+\makeatletter
+\newcommand\bbrow{\brow\setbox\cals@current@row=
+ \hbox{\vbox to 2.9cm{}}}
+
+\newenvironment{decotable}{\begin{calstable}
+\fontsize{15pt}{17pt}\selectfont
+\cals@setpadding{Ag}\cals@setcellprevdepth{Al}
+\cals@paddingL=0pt \relax
+\cals@paddingR=0pt \relax
+\def\cals@framecs@width{2pt}
+\def\cals@rs@width{8pt}
+\def\cals@cs@width{4pt}
+}{\end{calstable}}
+
+\begin{decotable}
+\colwidths{{2.9cm}{2.9cm}{2.9cm}}
+\bbrow
+ \cell{left,\\top}
+ \alignC \cell{center,\\top}
+ \def\cals@borderL{0pt}\def\cals@borderB{0pt}
+ \alignR \cell{right,\\top} \erow
+ \let\cals@borderL=\relax \let\cals@borderB=\relax
+\bbrow
+ \alignL \cell{\vfil left,\\middle}
+ \alignC \cell{\vfil center,\\middle}
+ \alignR \cell{\vfil right,\\middle} \erow
+\bbrow
+ \def\cals@bgcolor{green}
+ \alignL \cell{\vfill left,\\bottom}
+ \def\cals@bgcolor{}
+ \alignC \cell{\vfill center,\\bottom}
+ \alignR \cell{\vfill right,\\bottom} \erow
+\end{decotable}
diff --git a/Master/texmf-dist/doc/latex/cals/examples/biditable3.tex b/Master/texmf-dist/doc/latex/cals/examples/biditable3.tex
new file mode 100644
index 00000000000..2a740fafd97
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/examples/biditable3.tex
@@ -0,0 +1,33 @@
+\makeatletter \let\olderow=\erow
+\def\erow{\ht\cals@current@row=1.3cm \olderow}
+
+\begin{calstable}
+\def\cals@framecs@width{.4pt}
+\def\cals@framers@width{.4pt}
+\colwidths{{1.3cm}}
+\brow
+ \cell{a6} \cell{b6} \cell{c6}
+ \cell{d6} \cell{e6} \cell{f6} \erow
+\brow
+ \cell{a5} \nullcell{ltb} \nullcell{tb}
+ \nullcell{rtb}\spancontent{b5, c5, d5}
+ \nullcell{ltr} \cell{f5} \erow
+\brow
+ \cell{a4} \nullcell{ltr} \nullcell{tl}
+ \nullcell{tr} \nullcell{lr} \cell{f4} \erow
+\brow
+ \cell{a3} \nullcell{lr} \nullcell{lb}
+ \nullcell{rb}\spancontent{c3, c4, d3, d4}
+ \nullcell{lrb}\spancontent{e3, e4, e5}
+ \cell{f3} \erow
+\brow
+ \cell{a2}
+ \nullcell{lrb}\spancontent{b2, b3, b4}
+ \nullcell{ltb} \nullcell{tb}
+ \nullcell{tbr}\spancontent{c2, d2, e2}
+ \cell{f2} \erow
+\brow
+ \cell{a1} \cell{b1} \cell{c1}
+ \cell{d1} \cell{e1} \cell{f1} \erow
+\end{calstable}
+\let\erow=\olderow
diff --git a/Master/texmf-dist/doc/latex/cals/examples/biditable4.tex b/Master/texmf-dist/doc/latex/cals/examples/biditable4.tex
new file mode 100644
index 00000000000..5f19645ddb1
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/examples/biditable4.tex
@@ -0,0 +1,32 @@
+\begin{calstable}
+\colwidths{{1cm}{7cm}{1cm}}
+\brow \cell{x} \cell{x} \cell{x} \erow
+\brow \cell{x} \cell{
+\columnsep=0cm\relax
+% Force multicols to regard our \leftskip
+% by pretending that we are a list.
+\@totalleftmargin=\cals@paddingL\relax
+\begin{multicols}{2}
+
+\begin{calstable}
+\alignR
+\colwidths{{1.5cm}{1.5cm}}
+\thead{\brow \cell{$n$}\cell{$n^2$} \erow}
+\tfoot{\brow \cell{$n$}\cell{$n^2$} \erow}
+\brow \cell{2} \cell{4} \erow
+\brow \cell{3} \cell{9} \erow
+\brow \cell{4} \cell{16} \erow
+\brow \cell{5} \cell{25} \erow
+\brow \cell{6} \cell{36} \erow
+\tbreak{\break }
+\brow \cell{7} \cell{49} \erow
+\brow \cell{8} \cell{64} \erow
+\brow \cell{9} \cell{81} \erow
+\brow \cell{10} \cell{100} \erow
+\brow \cell{11} \cell{121} \erow
+\end{calstable}
+
+\end{multicols}
+} \cell{x} \erow
+\brow \cell{x} \cell{x} \cell{x} \erow
+\end{calstable}
diff --git a/Master/texmf-dist/doc/latex/cals/examples/demo.pdf b/Master/texmf-dist/doc/latex/cals/examples/demo.pdf
index bb83c39ca9b..85b57ae3495 100644
--- a/Master/texmf-dist/doc/latex/cals/examples/demo.pdf
+++ b/Master/texmf-dist/doc/latex/cals/examples/demo.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/cals/examples/demo.tex b/Master/texmf-dist/doc/latex/cals/examples/demo.tex
index 0e165fffa34..97834159c13 100644
--- a/Master/texmf-dist/doc/latex/cals/examples/demo.tex
+++ b/Master/texmf-dist/doc/latex/cals/examples/demo.tex
@@ -8,14 +8,6 @@
\usepackage{fancyvrb}
\usepackage{multicol}
\usepackage{cals}
-\usepackage{pdfsync}
-
-% pdfsync setup. The command \pdfsyncstart is not defined yet,
-% therefore I use "def" instead of "let".
-\makeatletter
-\let\oldcalstable=\calstable
-\def\calstable{\oldcalstable\pdfsyncstop}
-\def\cals@AtBeginCell{\pdfsyncstart}
\newcommand\newcolumn{\vfil\penalty-10000 }
\newcommand\small{\fontsize{9pt}{11pt}\selectfont}
diff --git a/Master/texmf-dist/doc/latex/cals/notes.pdf b/Master/texmf-dist/doc/latex/cals/notes.pdf
new file mode 100644
index 00000000000..a6827aa8ea7
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/notes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/cals/tb101parashchenko.pdf b/Master/texmf-dist/doc/latex/cals/tb101parashchenko.pdf
new file mode 100644
index 00000000000..c4bd567622e
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/tb101parashchenko.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/cals/test/README b/Master/texmf-dist/doc/latex/cals/test/README
index e96d61b3f2e..a6c837b7e39 100644
--- a/Master/texmf-dist/doc/latex/cals/test/README
+++ b/Master/texmf-dist/doc/latex/cals/test/README
@@ -9,6 +9,7 @@ $ python support/run_tests.py cell/test_10
Expect that the tests in the directory "visual_tables" fail.
Depending on the OS and TeX distro version, the font drawing
might look different.
+17 Nov 2014: the tests in "visual_tables" are disabled.
Probably I need to package the unit testing code as a separate
package and publish an article about it.
diff --git a/Master/texmf-dist/doc/latex/cals/test/regression/test_060_alignment.chk b/Master/texmf-dist/doc/latex/cals/test/regression/test_060_alignment.chk
index 9d3bd56fc42..7003b6a3460 100644
--- a/Master/texmf-dist/doc/latex/cals/test/regression/test_060_alignment.chk
+++ b/Master/texmf-dist/doc/latex/cals/test/regression/test_060_alignment.chk
@@ -12,7 +12,6 @@
..\glue 50.0
..\vbox(100.0+0.0)x240.0 []
..\glue 0.0
-.\glue 0.0
.\penalty 10000
.\vbox(0.0+0.0)x290.0
..\hbox(50.0+0.0)x290.0 []
@@ -26,6 +25,7 @@
..\glue 50.0
..\hbox(50.0+0.0)x240.0 []
..\glue 0.0
+.\penalty 10000
.\hbox(0.0+0.0)x290.0
..\glue 50.0
..\glue -0.2
@@ -48,7 +48,6 @@
..\glue 0.0 plus 1.0fil
..\vbox(100.0+0.0)x240.0 []
..\glue 0.0 plus 1.0fil
-.\glue 0.0
.\penalty 10000
.\vbox(0.0+0.0)x400.0
..\hbox(50.0+0.0)x400.0, glue set 80.0fil []
@@ -62,6 +61,7 @@
..\glue 0.0 plus 1.0fil
..\hbox(50.0+0.0)x240.0 []
..\glue 0.0 plus 1.0fil
+.\penalty 10000
.\hbox(0.0+0.0)x400.0, glue set 80.0fil
..\glue 0.0 plus 1.0fil
..\glue -0.2
@@ -84,7 +84,6 @@
..\glue 0.0 plus 1.0fil
..\vbox(100.0+0.0)x240.0 []
..\glue 0.0
-.\glue 0.0
.\penalty 10000
.\vbox(0.0+0.0)x400.0
..\hbox(50.0+0.0)x400.0, glue set 160.0fil []
@@ -98,6 +97,7 @@
..\glue 0.0 plus 1.0fil
..\hbox(50.0+0.0)x240.0 []
..\glue 0.0
+.\penalty 10000
.\hbox(0.0+0.0)x400.0, glue set 160.0fil
..\glue 0.0 plus 1.0fil
..\glue -0.2
diff --git a/Master/texmf-dist/doc/latex/cals/test/regression/test_060_alignment.tex b/Master/texmf-dist/doc/latex/cals/test/regression/test_060_alignment.tex
index 08d5b24b6df..cc649a95b27 100644
--- a/Master/texmf-dist/doc/latex/cals/test/regression/test_060_alignment.tex
+++ b/Master/texmf-dist/doc/latex/cals/test/regression/test_060_alignment.tex
@@ -1,6 +1,6 @@
\def\w{\ht\cals@current@row=50pt\relax}
\def\mktable{%
-\begin{calstable}
+\begin{calstable}[n]
\colwidths{{70pt}{80pt}{90pt}}
\def\cals@framecs@width{\cals@cs@width}
\def\cals@framers@width{\cals@rs@width}
diff --git a/Master/texmf-dist/doc/latex/cals/test/regression/test_070_clean_backup_row.chk b/Master/texmf-dist/doc/latex/cals/test/regression/test_070_clean_backup_row.chk
new file mode 100644
index 00000000000..e6be40dfbeb
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/test/regression/test_070_clean_backup_row.chk
@@ -0,0 +1 @@
+> the letter Y.
diff --git a/Master/texmf-dist/doc/latex/cals/test/regression/test_070_clean_backup_row.tex b/Master/texmf-dist/doc/latex/cals/test/regression/test_070_clean_backup_row.tex
new file mode 100644
index 00000000000..8c7e4efa361
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/test/regression/test_070_clean_backup_row.tex
@@ -0,0 +1,18 @@
+%
+% Collision of two tables when a table is started in an unexpected moment
+% http://tex.stackexchange.com/questions/167400/fancyhdr-and-cals-vertical-merge-problem
+%
+
+\setbox\cals@backup@row=\hbox{nonsense}
+
+\begin{calstable}
+\colwidths{{90pt}}
+\brow
+\nullcell{ltr}
+\erow
+\brow
+\nullcell{lbr}\spancontent{spanned}
+\erow
+\end{calstable}
+
+\show Y
diff --git a/Master/texmf-dist/doc/latex/cals/test/regression/test_075_vstraddled_retain_rowsep.chk b/Master/texmf-dist/doc/latex/cals/test/regression/test_075_vstraddled_retain_rowsep.chk
new file mode 100644
index 00000000000..19c748f640a
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/test/regression/test_075_vstraddled_retain_rowsep.chk
@@ -0,0 +1,14 @@
+%
+% Between the 2&3 rows with a vertically straddled cell
+%
+> \cals@last@rs@below=macro:
+->{{100pt}{0pt}{0pt}{0pt}}{{100pt}{0pt}{0pt}{0pt}}.
+> \cals@current@rs@above=macro:
+->{{100pt}{0pt}{0pt}{0pt}}{{100pt}{0pt}{0pt}{0pt}}.
+%
+% Between the first row and the straddled 2&3
+%
+> \cals@last@rs@below=macro:
+->{{100pt}{0.4pt}{0.4pt}{0.4pt}}{{100pt}{0.4pt}{0.4pt}{0.4pt}}.
+> \cals@current@rs@above=macro:
+->{{100pt}{0pt}{0pt}{0pt}}{{100pt}{0pt}{0pt}{0pt}}.
diff --git a/Master/texmf-dist/doc/latex/cals/test/regression/test_075_vstraddled_retain_rowsep.tex b/Master/texmf-dist/doc/latex/cals/test/regression/test_075_vstraddled_retain_rowsep.tex
new file mode 100644
index 00000000000..bf880eec22d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/test/regression/test_075_vstraddled_retain_rowsep.tex
@@ -0,0 +1,38 @@
+% http://tex.stackexchange.com/questions/159814/miss-the-bottom-line-of-the-frame-header-of-the-cals-table-on-the-first-page
+
+% The first row should be inside a border, because the rules are
+% switched off after the row is made. However, the straddled rows
+% "forget" about the first row decoration. Fix it.
+
+% Mock
+\renewcommand\cals@rs@joinTwo[3]{\show#2\show#3}
+
+\begin{calstable}
+\colwidths{{100pt}{100pt}}
+\def\cals@borderT{0.4pt}
+\def\cals@borderB{0.4pt}
+\def\cals@borderL{0.4pt}
+\def\cals@borderR{0.4pt}
+
+\brow
+\cell{head1}
+\cell{head2}
+\erow
+
+\def\cals@borderT{0pt}
+\def\cals@borderB{0pt}
+\def\cals@borderL{0pt}
+\def\cals@borderR{0pt}
+
+\brow
+\nullcell{ltr}
+\cell{text 2}
+\erow
+
+\brow
+\nullcell{blr}
+\spancontent{2}
+\cell{text 2}
+\erow
+
+\end{calstable}
diff --git a/Master/texmf-dist/doc/latex/cals/test/regression/test_080_never_pagebreak_in_float.chk b/Master/texmf-dist/doc/latex/cals/test/regression/test_080_never_pagebreak_in_float.chk
new file mode 100644
index 00000000000..97c52cd2d50
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/test/regression/test_080_never_pagebreak_in_float.chk
@@ -0,0 +1,4 @@
+> \cals@last@context=the letter n.
+> \cals@last@context=the letter b.
+> \cals@last@context=the letter b.
+> \cals@last@context=the letter b.
diff --git a/Master/texmf-dist/doc/latex/cals/test/regression/test_080_never_pagebreak_in_float.tex b/Master/texmf-dist/doc/latex/cals/test/regression/test_080_never_pagebreak_in_float.tex
new file mode 100644
index 00000000000..49cf27fa388
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/cals/test/regression/test_080_never_pagebreak_in_float.tex
@@ -0,0 +1,46 @@
+% Don't break inside a float
+
+% Mock
+\let\issue@orig=\cals@issue@row
+\renewcommand\cals@issue@row{%
+\show\cals@last@context
+\issue@orig}
+
+% Start float at the end of page, so that the table breaking code
+% think it should split over page.
+Start of text\par
+\dimen0=\pagegoal\relax
+\advance\dimen0 by -5cm\relax
+\vskip\dimen0\relax
+here we are\par
+
+\newcommand\www{\ht\cals@current@row=2.5cm}
+
+\vbox{%
+\begin{calstable}
+\colwidths{{0.25in}{1.5in}{1.5in}{1.5in}}
+%
+\brow \cell{}\cell{C1}\cell{C2}\cell{C3} \www\erow
+%
+\brow
+\cell{R}
+\cell{r1c1}
+\cell{r1c2}
+\cell{r1c3}
+\www\erow
+%
+\brow \nullcell{lrt}
+\cell{r2c1}
+\cell{r2c2}
+\cell{r2c3}
+\www\erow
+%
+\brow
+\nullcell{lrb}\spancontent{S}
+\cell{r3c1}
+\cell{r3c2}
+\cell{r3c3}
+\www\erow
+\end{calstable}
+}% vbox
+\end{document}
diff --git a/Master/texmf-dist/doc/latex/cals/test/support/LatexTest.py b/Master/texmf-dist/doc/latex/cals/test/support/LatexTest.py
index d204f5fad6b..99a695597bf 100644
--- a/Master/texmf-dist/doc/latex/cals/test/support/LatexTest.py
+++ b/Master/texmf-dist/doc/latex/cals/test/support/LatexTest.py
@@ -154,7 +154,7 @@ class LatexTestCase(unittest.TestCase):
expected_png = os.path.join(module, png)
got_png = os.path.join(tmp_dir, png)
diff_png = os.path.join(tmp_dir, 'diff.png')
- cmd = "compare -metric RMSE %s %s %s 2>%s" % (expected_png, got_png, diff_png, os.path.join(tmp_dir, 'compare-stdout'))
+ cmd = "compare compare -metric RMSE %s %s %s 2>%s" % (expected_png, got_png, diff_png, os.path.join(tmp_dir, 'compare-stdout'))
os.system(cmd)
h = open(os.path.join(tmp_dir, 'compare-stdout'))
s = h.read()
diff --git a/Master/texmf-dist/doc/latex/cals/test/support/run_tests.py b/Master/texmf-dist/doc/latex/cals/test/support/run_tests.py
index c4fa70c22e6..07ee27cd502 100644
--- a/Master/texmf-dist/doc/latex/cals/test/support/run_tests.py
+++ b/Master/texmf-dist/doc/latex/cals/test/support/run_tests.py
@@ -23,6 +23,7 @@ filter = None
if len(sys.argv) > 1:
filter = sys.argv[1]
test_files = glob.glob('*/test_*.tex')
+test_files = [x for x in test_files if 'visual_tables' not in x]
modules_and_tests = {}
for fname in test_files:
(dir, basename) = os.path.split(fname)
diff --git a/Master/texmf-dist/doc/latex/cals/test/table/test_40_issuerow.chk b/Master/texmf-dist/doc/latex/cals/test/table/test_40_issuerow.chk
index 5e42a5f3526..470a7f3829a 100644
--- a/Master/texmf-dist/doc/latex/cals/test/table/test_40_issuerow.chk
+++ b/Master/texmf-dist/doc/latex/cals/test/table/test_40_issuerow.chk
@@ -25,3 +25,4 @@
....\rule(20.0+0.0)x200.0
....\glue 0.0 plus 1.0fil
..\glue 0.0
+.\penalty 10000
diff --git a/Master/texmf-dist/doc/latex/cals/test/table/test_50_row.chk b/Master/texmf-dist/doc/latex/cals/test/table/test_50_row.chk
index 8488abb63c6..eb34dae6520 100644
--- a/Master/texmf-dist/doc/latex/cals/test/table/test_50_row.chk
+++ b/Master/texmf-dist/doc/latex/cals/test/table/test_50_row.chk
@@ -47,11 +47,13 @@
....\rule(20.0+0.0)x200.0
....\glue 0.0 plus 1.0fil
..\glue 0.0
-%
-% Output procesure forcing
-%
-.\glue 0.0
.\penalty 10000
+% %
+% % Output procesure forcing
+% % 18.11.2016: conditionally
+% %
+% .\glue 0.0
+% .\penalty 10000
%
% Row 2, colsep
%
@@ -97,3 +99,4 @@
....\rule(40.0+0.0)x200.0
....\glue 0.0 plus 1.0fil
..\glue 0.0
+.\penalty 10000
diff --git a/Master/texmf-dist/doc/latex/cals/test/table/test_70_lrskip.chk b/Master/texmf-dist/doc/latex/cals/test/table/test_70_lrskip.chk
index f2ef8998bf2..6d2b08afe33 100644
--- a/Master/texmf-dist/doc/latex/cals/test/table/test_70_lrskip.chk
+++ b/Master/texmf-dist/doc/latex/cals/test/table/test_70_lrskip.chk
@@ -22,8 +22,6 @@
....\glue 0.0 plus 1.0fil
....\glue 0.0
..\glue 150.0
-% thead+row1 break workaround
-.\glue 0.0
.\penalty 10000
% rowsep
.\hbox(0.0+0.0)x300.0
diff --git a/Master/texmf-dist/doc/latex/cals/test/template.txt b/Master/texmf-dist/doc/latex/cals/test/template.txt
index 5e0b64b7380..0e756514666 100644
--- a/Master/texmf-dist/doc/latex/cals/test/template.txt
+++ b/Master/texmf-dist/doc/latex/cals/test/template.txt
@@ -15,6 +15,7 @@
\input{decor.dtx}
\input{colsep.dtx}
\input{rowsep.dtx}
+\input{rtl.dtx}
\fi
% Variables defined inside calstable environment
diff --git a/Master/texmf-dist/source/latex/cals/cals.dtx b/Master/texmf-dist/source/latex/cals/cals.dtx
index b3eef90729e..0f746973249 100644
--- a/Master/texmf-dist/source/latex/cals/cals.dtx
+++ b/Master/texmf-dist/source/latex/cals/cals.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2010 by Oleg Parashchenko <olpa@uucode.com>
+% Copyright (C) 2010-2017 by Oleg Parashchenko <olpa@uucode.com>
% -------------------------------------------------------
%
% This file may be distributed and/or modified under the
@@ -22,7 +22,7 @@
%<package>\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%<package>\ProvidesPackage{cals}
%<*package>
- [2013/05/24 CALS tables v.2.2]
+ [2016/11/23 CALS tables v.2.4.1]
%</package>
%
%<*driver>
@@ -58,6 +58,8 @@
% Right brace \} Tilde \~}
%
%
+% \changes{v2.4.1}{2016/11/23}{Bug fixes for row separation lines.}
+% \changes{v2.4}{2014/11/12}{Built-in RTL (right-to-left) support.}
% \changes{v2.2}{2013/05/27}{Hooks for bidi support.}
% \changes{v2.1}{2013/05/24}{Alignment of tables works.}
% \changes{v2.0}{2010/10/08}{Complete rewrite with different approach}
@@ -80,7 +82,7 @@
% with repeatable headers and footers, with cells spanned over
% rows and columns. Decorations are supported: padding, background
% color, width of separation rules. The code is compatible with
-% multicols, pdfsync and bidi.
+% multicols and bidi.
%
% The work is released to public (\LaTeX{} license)
% by \url{bitplant.de}~GmbH, a company which provides technical
@@ -89,20 +91,22 @@
% \section{Usage}
%
% The users' guide is a separate document, published in TUGboat 2011:2:
-% \url{http://tug.org/TUGboat/tb32-2/tb101parashchenko.pdf}
+% \url{http://tug.org/TUGboat/tb32-2/tb101parashchenko.pdf}. There are
+% examples on CTAN: \url{https://www.ctan.org/pkg/cals}.
%
% The most important feature: the table (its rows) must start in a
% vertical mode, the cells content should switch to a horizontal mode.
+% For using the commands with the |@| symbol you might need to say
+% |\makeatletter| first.
%
-% Please post questions and suggestions to TeX-SX
-% (\url{http://tex.stackexchange.com/}), the newsgroup
-% |comp.text.tex| and the |texhax| mailing list (see
-% \url{http://tug.org/mailman/listinfo/texhax}),
-% not directly to me.
+% Please post questions and suggestions to the |texhax| mailing list
+% (\url{http://tug.org/mailman/listinfo/texhax}) or on \TeX-\LaTeX{}
+% Stack Exchange site (\url{http://tex.stackexchange.com/}) with the
+% tag |cals|.
%
% Summary of the user interface:
% \begin{verbatim}
-% \begin{calstable}
+% \begin{calstable} % [n|l|c|r]
% \colwidths{{100pt}{200pt}}
% \brow \cell{a} \cell{b} \erow
% \end{calstable}
@@ -110,7 +114,10 @@
%
% Table elements: |\thead|, |\tfoot|, |\tbreak{\penalty-10000}|, |\lastrule|.
%
-% Alignment: |\alignL|, |\alignC|, |\alignR|, |\vfill|.
+% Table alignment: |l|, |c|, |r| for left, center and right;
+% |n| for none, using the default |\leftskip| and |\rightskip|.
+%
+% In-cell alignment: |\alignL|, |\alignC|, |\alignR|, |\vfill|.
%
% Padding: lengths |\cals@paddingL| (|...T,R,B|), set by |\cals@setpadding{Ag}|,
% baseline alignment |\cals@paddingD|, set by |\cals@setcellprevdepth{Al}|.
@@ -158,6 +165,7 @@
% elements. The second part starts with the common code,
% then explains in-row decorations (column separation and cells
% background) and between-row decorations (row separation).
+
%
% \input{cell.dtx}
% \input{span.dtx}
@@ -166,6 +174,7 @@
% \input{decor.dtx}
% \input{colsep.dtx}
% \input{rowsep.dtx}
+% \input{rtl.dtx}
%
% \Finale
diff --git a/Master/texmf-dist/source/latex/cals/cals.ins b/Master/texmf-dist/source/latex/cals/cals.ins
index 6c85c8f34e4..1fea8a3210d 100644
--- a/Master/texmf-dist/source/latex/cals/cals.ins
+++ b/Master/texmf-dist/source/latex/cals/cals.ins
@@ -42,6 +42,7 @@ and version 1.2 or later is part of all distributions of LaTeX version
\from{decor.dtx}{package}
\from{colsep.dtx}{package}
\from{rowsep.dtx}{package}
+ \from{rtl.dtx}{package}
}}
\obeyspaces
diff --git a/Master/texmf-dist/source/latex/cals/cell.dtx b/Master/texmf-dist/source/latex/cals/cell.dtx
index 1d72f279557..71ddd4177e4 100644
--- a/Master/texmf-dist/source/latex/cals/cell.dtx
+++ b/Master/texmf-dist/source/latex/cals/cell.dtx
@@ -219,21 +219,34 @@
% by assigning skip to dimen.
% \begin{macrocode}
\newcommand\alignL{%
-\dimen0=\cals@paddingL \cals@paddingL=\dimen0 \relax
-\dimen0=\cals@paddingR \cals@paddingR=\dimen0 \relax}
+\cals@vfillDrop\cals@paddingL
+\cals@vfillDrop\cals@paddingR}
\newcommand\alignC{%
-\dimen0=\cals@paddingL \cals@paddingL=\dimen0 plus 1fill\relax
-\dimen0=\cals@paddingR \cals@paddingR=\dimen0 plus 1fill\relax}
+\cals@vfillAdd\cals@paddingL
+\cals@vfillAdd\cals@paddingR}
\newcommand\alignR{%
-\dimen0=\cals@paddingL \cals@paddingL=\dimen0 plus 1fill\relax
-\dimen0=\cals@paddingR \cals@paddingR=\dimen0 \relax}
+\cals@vfillAdd\cals@paddingL
+\cals@vfillDrop\cals@paddingR}
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
+% \begin{macro}{\cals@vfillAdd}
+% \begin{macro}{\cals@vfillDrop}
+% Add or remove the |vfill|-part of a skip. Retain the existing
+% value if possible.
+% \begin{macrocode}
+\newcommand\cals@vfillAdd[1]{\ifnum\gluestretchorder#1>1\relax\else
+\dimen0=#1\relax #1=\dimen0 plus 1fill\relax \fi}
+\newcommand\cals@vfillDrop[1]{\ifnum\gluestretchorder#1>0\relax
+\dimen0=#1\relax #1=\dimen0\relax \fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
% \subsection{From cells to a row}
% \begin{macro}{\cals@current@row}
diff --git a/Master/texmf-dist/source/latex/cals/rtl.dtx b/Master/texmf-dist/source/latex/cals/rtl.dtx
new file mode 100644
index 00000000000..ed891fd4243
--- /dev/null
+++ b/Master/texmf-dist/source/latex/cals/rtl.dtx
@@ -0,0 +1,42 @@
+% \subsection{RTL (right-to-left) hooks}
+
+% \begin{macro}{\if@RTL}
+% \begin{macro}{\if@RTLtab}
+% \begin{macro}{\@RTLtabtrue}
+% Provide RTL status commands even if the RTL packages are not loaded.
+% \begin{macrocode}
+\def\next{%
+ \let\if@RTL=\iffalse
+ \let\if@RTLtab=\iffalse
+ \let\@RTLtabtrue=\relax
+}
+\ifdefined\if@RTL \relax \else \next \fi
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+
+% \begin{macro}{\cals@setup@alignment}
+% Swap alignment in the RTL mode.
+% \begin{macrocode}
+\newcommand\cals@setup@alignment[1]{%
+\if c#1\relax \cals@vfillAdd \leftskip \cals@vfillAdd \rightskip \fi
+\if@RTL
+ \if l#1\relax \cals@vfillAdd \leftskip \cals@vfillDrop\rightskip \fi
+ \if r#1\relax \cals@vfillDrop\leftskip \cals@vfillDrop\rightskip \fi
+\else
+ \if l#1\relax \cals@vfillDrop\leftskip \cals@vfillDrop\rightskip \fi
+ \if r#1\relax \cals@vfillAdd \leftskip \cals@vfillDrop\rightskip \fi
+\fi
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\cals@hskip@lr}
+% Do |hskip| with the first argument, unless in the RTL mode.
+% \begin{macrocode}
+\newcommand\cals@hskip@lr[2]{%
+\if@RTL \hskip#2\relax \else \hskip#1\relax \fi}
+% \end{macrocode}
+% \end{macro}
+
diff --git a/Master/texmf-dist/source/latex/cals/table.dtx b/Master/texmf-dist/source/latex/cals/table.dtx
index e4eb37dfb7b..94670200024 100644
--- a/Master/texmf-dist/source/latex/cals/table.dtx
+++ b/Master/texmf-dist/source/latex/cals/table.dtx
@@ -59,8 +59,12 @@
\let\cals@current@context=\cals@backup@context
\fi\fi\fi
% \end{macrocode}
-% Typeset the row.
+% Typeset the row. If the width of the row is more than hsize, then
+% the issue-code should not fit the row to hsize.
% \begin{macrocode}
+\ifdim\wd\cals@current@row>\hsize\relax
+\def\cals@tohsize{}%
+\fi
\cals@issue@row
% \end{macrocode}
% Consider a table such that thead+row1 do not fit to a page
@@ -76,8 +80,15 @@
% the first row of a table chunk.
% \begin{macrocode}
\ifx b\cals@last@context
- \ifx h\cals@last@context@bak \vskip0pt \penalty10000 \fi
- \ifx n\cals@last@context@bak \vskip0pt \penalty10000 \fi
+ {\dimen0=\pagetotal\relax
+ \advance\dimen0 by \cals@tfoot@height\relax
+ \advance\dimen0 by -\pagegoal
+ \ifdim\dimen0>0pt\relax
+ \vskip\dimen0
+ \penalty9999 % with 10000, the output page builder is not called
+ \vskip-\dimen0\relax
+ \fi
+ }%
\fi
}
% \end{macrocode}
@@ -100,6 +111,7 @@
\setbox\cals@backup@row=\vbox{\box\cals@current@row}%
\setbox\cals@backup@cs=\box\cals@current@cs
\let\cals@backup@rs@above=\cals@current@rs@above
+ \let\cals@backup@last@rs@below=\cals@last@rs@below
\let\cals@backup@context=\cals@last@context
\cals@backup@leftskip=\leftskip\relax
\cals@backup@rightskip=\rightskip\relax
@@ -120,6 +132,7 @@
\setbox\cals@current@row=\box\cals@backup@row
\setbox\cals@current@cs=\box\cals@backup@cs
\let\cals@current@rs@above=\cals@backup@rs@above
+ \let\cals@last@rs@below=\cals@backup@last@rs@below
\let\cals@last@context=\cals@backup@context
\leftskip=\cals@backup@leftskip
\rightskip=\cals@backup@rightskip
@@ -190,6 +203,7 @@
% If the user sets |\cals@tbreak@tokens| (using |\tbreak|),
% break is forced. Otherwise, no break is allowed:
% \begin{itemize}
+% \item inside a box (= inside a float)
% \item In the header
% \item In the footer
% \item Immediately after the header
@@ -206,22 +220,23 @@
\let\cals@tmp=\cals@iffalse
\let\cals@tmpII=\cals@iftrue
\ifx\relax\cals@tbreak@tokens
- \ifx h\cals@current@context \else
- \ifx f\cals@current@context \else
- \ifx h\cals@last@context \else
- \ifx n\cals@last@context \else
- \dimen0=\pagetotal\relax
- \advance\dimen0 by \ht\cals@current@row\relax
- %\showthe\ht\cals@current@row\relax
- \ifx \cals@tfoot@tokens\relax \else
- %\show\cals@tfoot@height\relax
- \advance\dimen0 by \cals@tfoot@height\relax
- \fi
- %\showthe\dimen0\relax
- \ifdim \dimen0>\pagegoal\relax
- \let\cals@tmp=\cals@tmpII
- \fi
- \fi\fi\fi\fi
+ \ifinner\else
+ \ifx h\cals@current@context \else
+ \ifx f\cals@current@context \else
+ \ifx h\cals@last@context \else
+ \ifx n\cals@last@context \else
+ \dimen0=\pagetotal\relax
+ \advance\dimen0 by \ht\cals@current@row\relax
+ %\showthe\ht\cals@current@row\relax
+ \ifx \cals@tfoot@tokens\relax \else
+ %\show\cals@tfoot@height\relax
+ \advance\dimen0 by \cals@tfoot@height\relax
+ \fi
+ %\showthe\dimen0\relax
+ \ifdim \dimen0>\pagegoal\relax
+ \let\cals@tmp=\cals@tmpII
+ \fi
+ \fi\fi\fi\fi\fi
\else \let\cals@tmp=\cals@tmpII % tbreak@tokens
\fi
\cals@tmp}
@@ -261,6 +276,9 @@
% \begin{macro}{\cals@deactivate@rtl}
% \begin{macro}{\cals@hbox}
% For bidi support, use |\hboxR| instead of |\hbox|.
+% Actually, more is required for bidi support, and
+% these macros are retained only as "legacy".
+% Otherwise I'd move the code into the beginning of `calstable`.
% \begin{macrocode}
\newcommand\cals@hbox{}
\newcommand\cals@activate@rtl{\let\cals@hbox=\hboxR}
@@ -278,11 +296,11 @@
% \begin{macrocode}
\newcommand\cals@issue@rowsep@alone{%
\setbox0=\cals@hbox\cals@tohsize{%
- \hskip\leftskip
+ \cals@hskip@lr\leftskip\rightskip
\cals@rs@sofar@reset
\cals@rs@joinOne\cals@framers@width\cals@current@rs@above
\cals@rs@sofar@end
- \hskip\rightskip}%
+ \cals@hskip@lr\rightskip\leftskip}%
\ht0=0pt \dp0=0pt \box0 }
% \end{macrocode}
% \end{macro}
@@ -304,11 +322,11 @@
\let\cals@tmpIII=\cals@rs@width \else
\let\cals@tmpIII=\cals@bodyrs@width \fi
\setbox0=\cals@hbox\cals@tohsize{%
- \hskip\leftskip
+ \cals@hskip@lr\leftskip\rightskip
\cals@rs@sofar@reset
\cals@rs@joinTwo\cals@tmpIII\cals@last@rs@below\cals@current@rs@above
\cals@rs@sofar@end
- \hskip\rightskip}%
+ \cals@hskip@lr\rightskip\leftskip}%
\ht0=0pt \dp0=0pt \box0 %
\fi}
% \end{macrocode}
@@ -332,7 +350,8 @@
% Decorations: first the column separation, then the row separation.
% \begin{macrocode}
\nointerlineskip
-\setbox0=\vtop{\cals@hbox\cals@tohsize{\hskip\leftskip \box\cals@current@cs \hskip\rightskip}}%
+\setbox0=\vtop{\cals@hbox\cals@tohsize{\cals@hskip@lr\leftskip\rightskip
+\box\cals@current@cs \cals@hskip@lr\rightskip\leftskip}}%
\ht0=0pt\relax\box0
\nointerlineskip
\cals@issue@rowsep
@@ -340,9 +359,11 @@
% \end{macrocode}
% Output the row, update the last context.
% \begin{macrocode}
-\cals@hbox\cals@tohsize{\hskip\leftskip \box\cals@current@row \hskip\rightskip}%
+\cals@hbox\cals@tohsize{\cals@hskip@lr\leftskip\rightskip
+\box\cals@current@row \cals@hskip@lr\rightskip\leftskip}%
\let\cals@last@rs@below=\cals@current@rs@below
-\let\cals@last@context=\cals@current@context}
+\let\cals@last@context=\cals@current@context
+\nobreak}
% \end{macrocode}
% \end{macro}
@@ -351,14 +372,16 @@
% \begin{environment}{\calstable}
% Setup the parameters and let the row dispatcher to do all the work.
% \begin{macrocode}
-\newenvironment{calstable}{%
+\newenvironment{calstable}[1][\cals@table@alignment]{%
+\if@RTL\@RTLtabtrue\cals@activate@rtl\fi
\let\cals@thead@tokens=\relax
\let\cals@tfoot@tokens=\relax
\let\cals@tbreak@tokens=\relax
\cals@tfoot@height=0pt \relax
\let\cals@last@context=n%
\let\cals@current@context=b%
-\parindent=0pt %
+\parindent=0pt \relax%
+\cals@setup@alignment{#1}%
\cals@setpadding{Ag}\cals@setcellprevdepth{Al}\cals@set@tohsize%
%% Alignment inside is independent on center/flushright outside
\parfillskip=0pt plus1fil\relax
@@ -366,6 +389,14 @@
\let\cals@borderR=\relax
\let\cals@borderT=\relax
\let\cals@borderB=\relax
+% \end{macrocode}
+% Bug fix for \url{http://tex.stackexchange.com/questions/167400/fancyhdr-and-cals-vertical-merge-problem}.
+% Table inside a table is ok, but when there are 1) page break inside
+% a table in the text flow, and 2) a table with a vertically straddled
+% cell is created in the output procedure, then this table inside table
+% needs additional cleaning.
+% \begin{macrocode}
+\setbox\cals@backup@row=\box\voidb@x\relax
\cals@AtBeginTable
}{% End of the table
\cals@tfoot@tokens\lastrule\cals@AtEndTable}
@@ -432,3 +463,19 @@
\newcommand\tbreak[1]{\def\cals@tbreak@tokens{#1}}
% \end{macrocode}
% \end{macro}
+
+% \begin{macro}{\cals@table@alignment}
+% The default alignment of tables in the text flow.
+% Doesn't affect the text alignment inside cells.
+% \begin{itemize}
+% \item |n|: no settings, the default |\leftskip| and |\rightskip| are used
+% \item |l|: align left
+% \item |c|: align center
+% \item |r|: align right
+% \end{itemize}
+% This setting is appeared in the version 2.3. Earlier versions
+% worked as it were |n|.
+% \begin{macrocode}
+\newcommand\cals@table@alignment{l}
+% \end{macrocode}
+% \end{macro}
diff --git a/Master/texmf-dist/tex/latex/cals/cals.sty b/Master/texmf-dist/tex/latex/cals/cals.sty
index b3244e2498b..2931cc48d13 100644
--- a/Master/texmf-dist/tex/latex/cals/cals.sty
+++ b/Master/texmf-dist/tex/latex/cals/cals.sty
@@ -12,6 +12,7 @@
%% decor.dtx (with options: `package')
%% colsep.dtx (with options: `package')
%% rowsep.dtx (with options: `package')
+%% rtl.dtx (with options: `package')
%%
%% This is a generated file.
%%
@@ -29,7 +30,8 @@
%%
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
\ProvidesPackage{cals}
- [2013/05/24 CALS tables v.2.2]
+ [2016/11/23 CALS tables v.2.4.1]
+
\newcommand\cals@cell[3]{}
@@ -106,16 +108,21 @@
\cals@paddingD=\dimen0 }
\newcommand\alignL{%
-\dimen0=\cals@paddingL \cals@paddingL=\dimen0 \relax
-\dimen0=\cals@paddingR \cals@paddingR=\dimen0 \relax}
+\cals@vfillDrop\cals@paddingL
+\cals@vfillDrop\cals@paddingR}
\newcommand\alignC{%
-\dimen0=\cals@paddingL \cals@paddingL=\dimen0 plus 1fill\relax
-\dimen0=\cals@paddingR \cals@paddingR=\dimen0 plus 1fill\relax}
+\cals@vfillAdd\cals@paddingL
+\cals@vfillAdd\cals@paddingR}
\newcommand\alignR{%
-\dimen0=\cals@paddingL \cals@paddingL=\dimen0 plus 1fill\relax
-\dimen0=\cals@paddingR \cals@paddingR=\dimen0 \relax}
+\cals@vfillAdd\cals@paddingL
+\cals@vfillDrop\cals@paddingR}
+
+\newcommand\cals@vfillAdd[1]{\ifnum\gluestretchorder#1>1\relax\else
+\dimen0=#1\relax #1=\dimen0 plus 1fill\relax \fi}
+\newcommand\cals@vfillDrop[1]{\ifnum\gluestretchorder#1>0\relax
+\dimen0=#1\relax #1=\dimen0\relax \fi}
\newbox\cals@current@row
@@ -260,10 +267,20 @@
\let\cals@current@rs@below=\cals@backup@rs@below
\let\cals@current@context=\cals@backup@context
\fi\fi\fi
+\ifdim\wd\cals@current@row>\hsize\relax
+\def\cals@tohsize{}%
+\fi
\cals@issue@row
\ifx b\cals@last@context
- \ifx h\cals@last@context@bak \vskip0pt \penalty10000 \fi
- \ifx n\cals@last@context@bak \vskip0pt \penalty10000 \fi
+ {\dimen0=\pagetotal\relax
+ \advance\dimen0 by \cals@tfoot@height\relax
+ \advance\dimen0 by -\pagegoal
+ \ifdim\dimen0>0pt\relax
+ \vskip\dimen0
+ \penalty9999 % with 10000, the output page builder is not called
+ \vskip-\dimen0\relax
+ \fi
+ }%
\fi
}
@@ -272,6 +289,7 @@
\setbox\cals@backup@row=\vbox{\box\cals@current@row}%
\setbox\cals@backup@cs=\box\cals@current@cs
\let\cals@backup@rs@above=\cals@current@rs@above
+ \let\cals@backup@last@rs@below=\cals@last@rs@below
\let\cals@backup@context=\cals@last@context
\cals@backup@leftskip=\leftskip\relax
\cals@backup@rightskip=\rightskip\relax
@@ -287,6 +305,7 @@
\setbox\cals@current@row=\box\cals@backup@row
\setbox\cals@current@cs=\box\cals@backup@cs
\let\cals@current@rs@above=\cals@backup@rs@above
+ \let\cals@last@rs@below=\cals@backup@last@rs@below
\let\cals@last@context=\cals@backup@context
\leftskip=\cals@backup@leftskip
\rightskip=\cals@backup@rightskip
@@ -308,22 +327,23 @@
\let\cals@tmp=\cals@iffalse
\let\cals@tmpII=\cals@iftrue
\ifx\relax\cals@tbreak@tokens
- \ifx h\cals@current@context \else
- \ifx f\cals@current@context \else
- \ifx h\cals@last@context \else
- \ifx n\cals@last@context \else
- \dimen0=\pagetotal\relax
- \advance\dimen0 by \ht\cals@current@row\relax
- %\showthe\ht\cals@current@row\relax
- \ifx \cals@tfoot@tokens\relax \else
- %\show\cals@tfoot@height\relax
- \advance\dimen0 by \cals@tfoot@height\relax
- \fi
- %\showthe\dimen0\relax
- \ifdim \dimen0>\pagegoal\relax
- \let\cals@tmp=\cals@tmpII
- \fi
- \fi\fi\fi\fi
+ \ifinner\else
+ \ifx h\cals@current@context \else
+ \ifx f\cals@current@context \else
+ \ifx h\cals@last@context \else
+ \ifx n\cals@last@context \else
+ \dimen0=\pagetotal\relax
+ \advance\dimen0 by \ht\cals@current@row\relax
+ %\showthe\ht\cals@current@row\relax
+ \ifx \cals@tfoot@tokens\relax \else
+ %\show\cals@tfoot@height\relax
+ \advance\dimen0 by \cals@tfoot@height\relax
+ \fi
+ %\showthe\dimen0\relax
+ \ifdim \dimen0>\pagegoal\relax
+ \let\cals@tmp=\cals@tmpII
+ \fi
+ \fi\fi\fi\fi\fi
\else \let\cals@tmp=\cals@tmpII % tbreak@tokens
\fi
\cals@tmp}
@@ -346,11 +366,11 @@
\newcommand\cals@issue@rowsep@alone{%
\setbox0=\cals@hbox\cals@tohsize{%
- \hskip\leftskip
+ \cals@hskip@lr\leftskip\rightskip
\cals@rs@sofar@reset
\cals@rs@joinOne\cals@framers@width\cals@current@rs@above
\cals@rs@sofar@end
- \hskip\rightskip}%
+ \cals@hskip@lr\rightskip\leftskip}%
\ht0=0pt \dp0=0pt \box0 }
\newcommand\cals@issue@rowsep{%
@@ -359,11 +379,11 @@
\let\cals@tmpIII=\cals@rs@width \else
\let\cals@tmpIII=\cals@bodyrs@width \fi
\setbox0=\cals@hbox\cals@tohsize{%
- \hskip\leftskip
+ \cals@hskip@lr\leftskip\rightskip
\cals@rs@sofar@reset
\cals@rs@joinTwo\cals@tmpIII\cals@last@rs@below\cals@current@rs@above
\cals@rs@sofar@end
- \hskip\rightskip}%
+ \cals@hskip@lr\rightskip\leftskip}%
\ht0=0pt \dp0=0pt \box0 %
\fi}
@@ -371,24 +391,29 @@
\newcommand\cals@issue@row{%
\nointerlineskip
-\setbox0=\vtop{\cals@hbox\cals@tohsize{\hskip\leftskip \box\cals@current@cs \hskip\rightskip}}%
+\setbox0=\vtop{\cals@hbox\cals@tohsize{\cals@hskip@lr\leftskip\rightskip
+\box\cals@current@cs \cals@hskip@lr\rightskip\leftskip}}%
\ht0=0pt\relax\box0
\nointerlineskip
\cals@issue@rowsep
\nointerlineskip
-\cals@hbox\cals@tohsize{\hskip\leftskip \box\cals@current@row \hskip\rightskip}%
+\cals@hbox\cals@tohsize{\cals@hskip@lr\leftskip\rightskip
+\box\cals@current@row \cals@hskip@lr\rightskip\leftskip}%
\let\cals@last@rs@below=\cals@current@rs@below
-\let\cals@last@context=\cals@current@context}
+\let\cals@last@context=\cals@current@context
+\nobreak}
-\newenvironment{calstable}{%
+\newenvironment{calstable}[1][\cals@table@alignment]{%
+\if@RTL\@RTLtabtrue\cals@activate@rtl\fi
\let\cals@thead@tokens=\relax
\let\cals@tfoot@tokens=\relax
\let\cals@tbreak@tokens=\relax
\cals@tfoot@height=0pt \relax
\let\cals@last@context=n%
\let\cals@current@context=b%
-\parindent=0pt %
+\parindent=0pt \relax%
+\cals@setup@alignment{#1}%
\cals@setpadding{Ag}\cals@setcellprevdepth{Al}\cals@set@tohsize%
%% Alignment inside is independent on center/flushright outside
\parfillskip=0pt plus1fil\relax
@@ -396,6 +421,7 @@
\let\cals@borderR=\relax
\let\cals@borderT=\relax
\let\cals@borderB=\relax
+\setbox\cals@backup@row=\box\voidb@x\relax
\cals@AtBeginTable
}{% End of the table
\cals@tfoot@tokens\lastrule\cals@AtEndTable}
@@ -424,6 +450,8 @@
\newcommand\tbreak[1]{\def\cals@tbreak@tokens{#1}}
+\newcommand\cals@table@alignment{l}
+
\def\llt@cons#1#2{%
\toks0=\expandafter{#1}%
\toks2=\expandafter{#2}%
@@ -717,6 +745,28 @@
\cals@rs@sofar@next\cals@tmpL\cals@tmpBl\cals@tmpBr\cals@width
\fi\next}%
\expandafter\next#2\eol}
+
+\def\next{%
+ \let\if@RTL=\iffalse
+ \let\if@RTLtab=\iffalse
+ \let\@RTLtabtrue=\relax
+}
+\ifdefined\if@RTL \relax \else \next \fi
+
+\newcommand\cals@setup@alignment[1]{%
+\if c#1\relax \cals@vfillAdd \leftskip \cals@vfillAdd \rightskip \fi
+\if@RTL
+ \if l#1\relax \cals@vfillAdd \leftskip \cals@vfillDrop\rightskip \fi
+ \if r#1\relax \cals@vfillDrop\leftskip \cals@vfillDrop\rightskip \fi
+\else
+ \if l#1\relax \cals@vfillDrop\leftskip \cals@vfillDrop\rightskip \fi
+ \if r#1\relax \cals@vfillAdd \leftskip \cals@vfillDrop\rightskip \fi
+\fi
+}
+
+\newcommand\cals@hskip@lr[2]{%
+\if@RTL \hskip#2\relax \else \hskip#1\relax \fi}
+
\endinput
%%
%% End of file `cals.sty'.