aboutsummaryrefslogtreecommitdiffstats
path: root/doc/expert/pre_spac
diff options
context:
space:
mode:
Diffstat (limited to 'doc/expert/pre_spac')
-rw-r--r--doc/expert/pre_spac55
1 files changed, 55 insertions, 0 deletions
diff --git a/doc/expert/pre_spac b/doc/expert/pre_spac
new file mode 100644
index 0000000..f44d840
--- /dev/null
+++ b/doc/expert/pre_spac
@@ -0,0 +1,55 @@
+@Section
+ @Title { "@Space" }
+ @Tag { space }
+@Begin
+@PP
+The @@Space symbol
+space.sym @Index { @@Space symbol }
+changes the value of the @Code s unit of measurement (Section
+s.unit.space @SubIndex { and @@Space symbol }
+{@NumberOf concatenation}) within its right parameter to the value
+given by the left parameter:
+@ID {
+@Code "1c @Space { a b c d }"
+}
+has result
+@ID {
+1c @Space { a b c d }
+}
+As for the @@Break symbol, the left parameter of @@Space may be given
+relative to the enclosing @Code s unit, and it may include a gap
+mode. Note that the @@Font symbol also sets the @Code s unit.
+@PP
+The left parameter of the @@Space symbol may also hold any one of the
+five special values {@Code lout}, {@Code compress}, {@Code separate},
+{@Code troff}, and {@Code tex}, which control the way in which Lout
+treats white space separating two objects. The names {@Code troff}
+and {@Code tex} indicate that the behaviour of these options is
+inspired by these other document formatting systems.
+@PP
+The default setting, {@Code lout}, produces as many spaces in the output as
+there are in the input. The {@Code compress} setting causes all sequences
+of two or more white space characters to be treated the same as one white
+space character. The {@Code separate} setting is like {@Code compress}
+but also causes zero white spaces between two objects (but not within
+one word) to be treated the same as one white space character.
+@PP
+The {@Code troff} setting is the same as {@Code lout} except that
+wherever a sentence ends at the end of a line, one extra space is
+added. Formally, when two objects are separated by white space
+characters which include at least one newline character, and the
+first object is a word ending in any one of a certain set of
+sequences of characters, the extra space is added. The set of
+sequences of characters depends on the current language and is defined
+in the @Code langdef for that language (see Section {@NumberOf language}).
+@PP
+The {@Code tex} option is the most complicated. First, the
+{@Code compress} option is applied. Then, at every sentence ending,
+whether or not at the end of a line, one extra space is added. A
+sentence ending is defined as for {@Code troff} except that, in addition
+to the preceding word having to end in one of a certain set of sequences of
+characters, the character preceding that sequence must exist and must
+be a lower-case letter. A character is a lower-case letter if, in the
+Lout Character Mapping file (Section {@NumberOf font}) associated with
+the current font, an upper-case equivalent of the character is defined.
+@End @Section