diff options
author | Karl Berry <karl@freefriends.org> | 2016-11-25 22:39:44 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2016-11-25 22:39:44 +0000 |
commit | 4a55147e264bbcb051fbb9a51b05b190e52bd6b7 (patch) | |
tree | 93f4c55dd1e9badbcc219df8ac9663e5690329ba /Master | |
parent | dc4d59f0c0a68d9586f1d3f32d9f7a3bb32e29d9 (diff) |
cals (25nov16)
git-svn-id: svn://tug.org/texlive/trunk@42577 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
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 Binary files differindex a87645f1e76..b4ac3abd127 100644 --- a/Master/texmf-dist/doc/latex/cals/cals.pdf +++ b/Master/texmf-dist/doc/latex/cals/cals.pdf diff --git a/Master/texmf-dist/doc/latex/cals/examples/bididemo.pdf b/Master/texmf-dist/doc/latex/cals/examples/bididemo.pdf Binary files differnew file mode 100644 index 00000000000..8daa020b370 --- /dev/null +++ b/Master/texmf-dist/doc/latex/cals/examples/bididemo.pdf 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 Binary files differindex bb83c39ca9b..85b57ae3495 100644 --- a/Master/texmf-dist/doc/latex/cals/examples/demo.pdf +++ b/Master/texmf-dist/doc/latex/cals/examples/demo.pdf 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 Binary files differnew file mode 100644 index 00000000000..a6827aa8ea7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/cals/notes.pdf diff --git a/Master/texmf-dist/doc/latex/cals/tb101parashchenko.pdf b/Master/texmf-dist/doc/latex/cals/tb101parashchenko.pdf Binary files differnew file mode 100644 index 00000000000..c4bd567622e --- /dev/null +++ b/Master/texmf-dist/doc/latex/cals/tb101parashchenko.pdf 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'. |