aboutsummaryrefslogtreecommitdiffstats
path: root/doc/expert/pre_span
diff options
context:
space:
mode:
Diffstat (limited to 'doc/expert/pre_span')
-rw-r--r--doc/expert/pre_span58
1 files changed, 58 insertions, 0 deletions
diff --git a/doc/expert/pre_span b/doc/expert/pre_span
new file mode 100644
index 0000000..e527652
--- /dev/null
+++ b/doc/expert/pre_span
@@ -0,0 +1,58 @@
+@Section
+ @Title { "@StartHSpan","@StartVSpan", "@StartHVSpan", "@HSpan", and "@VSpan" }
+ @Tag { hspan }
+@Begin
+@PP
+starthspan. @Index { @@StartHSpan symbol }
+startvspan. @Index { @@StartVSpan symbol }
+starthvspan. @Index { @@StartHVSpan symbol }
+hspan. @Index { @@HSpan symbol }
+vspan. @Index { @@VSpan symbol }
+These symbols work together to produce spanning columns and rows in
+a more flexible way than is possible in practice with @Code "//" and
+{@Code "||"}. An object
+@ID @Code "@StartHSpan object"
+causes @Code object to be printed, but occupying all the horizontal space
+to the right on the row mark on which it lies up to and including the rightmost
+@@HSpan symbol on that mark not preceded by @@StartHVSpan, @@StartHSpan,
+@@StartVSpan, or @@VSpan. The column mark of this spanning object is not
+constrained to align with any of the column marks of the columns it spans.
+@PP
+If there is no @@HSpan symbol anywhere to the right of @@StartHSpan, then
+the object spans only its own column. This means that it occupies that
+column as usual but its mark is not constrained to align with those of the
+other objects in the column.
+@PP
+Similarly, the @@StartVSpan symbol causes its object to occupy all
+the vertical space below it on the column mark on which it lies, down to and
+including the bottommost @@VSpan symbol on that mark not preceded by a
+@@StartHVSpan, @@StartHSpan, @@StartVSpan, or @@HSpan; and if there
+is no @@VSpan symbol anywhere below it on that mark, then the object
+spans only its own row, occupying its row but with its mark not constrained
+to align with the row mark.
+@PP
+The @@StartHVSpan symbol combines the effects of @@StartHSpan and
+@@StartVSpan, allowing an object to span both columns and rows
+simultaneously. For example, in
+@ID @Code {
+"@StartHVSpan x | | @HSpan"
+"/"
+"@VSpan | |"
+}
+the object @Code x will occupy a rectangular area spanning three columns,
+two rows, and the gaps between them.
+@PP
+The objects lying in the region spanned should all be empty, or the
+@@HSpan and @@VSpan symbols can be used to document the spanning that
+is occurring. At present there may be no galley targets or recursive symbols
+within the right parameter of @@StartHSpan, @@StartVSpan, or
+@@StartHVSpan. However, the right parameter may otherwise be an
+arbitrary object, including paragraphs of text that require breaking.
+@PP
+If the right parameter of @@StartHSpan, @@StartVSpan, or @@StartHVSpan
+occupies more horizontal or vertical space than all of the spanned columns
+or rows combined require, the extra space goes into the last spanned column
+or row. Overlapping spanning rows and columns are permitted. Gaps spanned
+by span objects are unbreakable (their @Code "u" indicator is set
+automatically and cannot be revoked).
+@End @Section