diff options
Diffstat (limited to 'doc/user/tbl_span')
-rw-r--r-- | doc/user/tbl_span | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/doc/user/tbl_span b/doc/user/tbl_span new file mode 100644 index 0000000..5621961 --- /dev/null +++ b/doc/user/tbl_span @@ -0,0 +1,195 @@ +@Section + @Title { Spanning columns and rows } + @Tag { tbl_span } +@Begin +@PP +To make a cell span across several columns, precede the @Code "@Cell" +spanning.columns @Index { spanning columns and rows in tables } +symbol with @Code "@StartHSpan" and replace each spanned cell's +@Code "@Cell" symbol with {@Code "@HSpan"}, like this: +@ID @OneRow @Code @Verbatim { +@Tbl + rule { yes } + aformat { @StartHSpan @Cell indent { ctr } @B A | @HSpan | @HSpan } + bformat { @Cell A | @Cell B | @Cell C } +{ +@Rowa + A { Some famous authors } +@Rowb + A { Austen } + B { Chaucer } + C { Donne } +@Rowb + A { Balzac } + B { Darwin } + C { Goethe } +} +} +The result of this is +@CD @OneRow @Tbl + rule { yes } + aformat { @StartHSpan @Cell indent { ctr } @B A | @HSpan | @HSpan } + bformat { @Cell A | @Cell B | @Cell C } +{ +@Rowa + A { Some famous authors } +@Rowb + A { Austen } + B { Chaucer } + C { Donne } +@Rowb + A { Balzac } + B { Darwin } + C { Goethe } +} +We've used a sample of options to show how naturally these go with +spanning cells: they apply to the whole cell as usual, whatever +its extent. It is quite acceptable to span just some of the columns, +not all of them; indeed, there may be no @Code "@HSpan" symbols at +all, and then the cell just spans its own column, which sounds redundant +but actually has a use (Section {@NumberOf tbl_alig}). +@PP +Spanning rows work in the same way; the spanning cell is preceded by +{@Code "@StartVSpan"}, and the spanned cells are replaced by +{@Code "@VSpan"}: +@ID @OneRow @Code @Verbatim { +@Tbl + rule { yes } + aformat { @StartVSpan @Cell @I A | @Cell B | @Cell C } + bformat { @VSpan | @Cell B | @Cell C } +{ +@Rowa + A { Mathematics } + B { MATH 1001 } + C { Differential Calculus } +@Rowb + B { MATH 1002 } + C { Linear Algebra } +@Rowa + A { Computer Science } + B { COMP 1001 } + C { Introductory Programming } +@Rowb + B { COMP 1002 } + C { Introductory Computer Science } +} +} +The result of this is +@CD @OneRow @Tbl + rule { yes } + aformat { @StartVSpan @Cell @I A | @Cell B | @Cell C } + bformat { @VSpan | @Cell B | @Cell C } +{ +@Rowa + A { Mathematics } + B { MATH 1001 } + C { Differential Calculus } +@Rowb + B { MATH 1002 } + C { Linear Algebra } +@Rowa + A { Computer Science } + B { COMP 1001 } + C { Introductory Programming } +@Rowb + B { COMP 1002 } + C { Introductory Computer Science } +} +Here is a notorious larger example, the `spiral': +@ID @OneRow @Code @Verbatim { +@QuotedDisplay @Tbl + rule { yes } +{ +@Row + format { @StartVSpan @Cell A | @StartHSpan @Cell B | @HSpan } + A { @SomeText } + B { @SomeText } +@Row + format { @VSpan | @Cell B | @StartVSpan @Cell C } + B { @SomeText } + C { @SomeText } +@Row + format { @StartHSpan @Cell A | @HSpan | @VSpan } + A { @SomeText } +} +} +The @Code "@SomeText" symbol produces a short paragraph of text. The +result is +@QD @Tbl + rule { yes } +{ +@Row format { @StartVSpan @Cell A | @StartHSpan @Cell B | @HSpan } + A { @SomeText } + B { @SomeText } +@Row format { @VSpan | @Cell B | @StartVSpan @Cell C } + B { @SomeText } + C { @SomeText } +@Row format { @StartHSpan @Cell A | @HSpan | @VSpan } + A { @SomeText } +} +It is important when constructing mind-boggling tables like this one +to ensure that every format has exactly the same number of @Code "|" +symbols. Otherwise the number of columns will differ from row to row. +The names given to the entries ({@Code "A"}, {@Code "B"}, {@Code "C"}, +etc.) are quite irrelevant: having a @Code "@Cell D" in one row and a +@Code "@Cell D" in another does not mean that the cells will appear in +the same column. +@PP +There is an asymmetry in the spiral above: the first column +occupies slightly more space than the other two. This arises +because the left margin of the leftmost column is excluded from the +calculation of how much space is available. This anomaly might be +corrected some day. +@PP +There is a @Code "@StartHVSpan" symbol which combines the effects +of @Code "@StartHSpan" and {@Code "@StartVSpan"}. You need to +use it in this arrangement: +@ID @OneRow @Tbl + mv { 0.5vx } + aformat { @Cell @Code A | @Cell @Code B | @Cell @Code C } +{ +@Rowa + A { "@StartHVSpan" } + B { "@HSpan" } + C { "@HSpan" } +@Rowa + A { "@VSpan" } +@Rowa + A { "@VSpan" } +} +The blank positions should be left empty. For example: +@ID @OneRow @Code @Verbatim { +@Tbl + rule { yes } + aformat { @Cell A | @Cell B | @Cell C | @Cell D } + bformat { @Cell A | @StartHVSpan @Cell i { ctr } iv { ctr } B | @HSpan | @Cell D } + cformat { @Cell A | @VSpan | | @Cell D } +{ +@Rowa +@Rowb + B { CPU } +@Rowc +@Rowa +} +} +produces +@CD @OneRow @Tbl + rule { yes } + strut { no } + aformat { @Cell A | @Cell B | @Cell C | @Cell D } + bformat { @Cell A | @StartHVSpan @Cell i { ctr } iv { ctr } B | @HSpan | @Cell D } + cformat { @Cell A | @VSpan | | @Cell D } +{ +@Rowa +@Rowb + B { CPU } +@Rowc +@Rowa +} +This example illustrates how Lout apportions space in the presence of +spanning columns. If the spanning cell is naturally narrower than the +cells it spans, it is widened to their size. If it is wider (as in +the example above), then the last spanned cell is widened to take +up the slack. This is why the third cell is wider than the second in the +first row of this example. +@End @Section |