aboutsummaryrefslogtreecommitdiffstats
path: root/doc/user/prg_tabs
diff options
context:
space:
mode:
Diffstat (limited to 'doc/user/prg_tabs')
-rw-r--r--doc/user/prg_tabs66
1 files changed, 66 insertions, 0 deletions
diff --git a/doc/user/prg_tabs b/doc/user/prg_tabs
new file mode 100644
index 0000000..3a04bfa
--- /dev/null
+++ b/doc/user/prg_tabs
@@ -0,0 +1,66 @@
+@Section
+ @Title { Dealing with tab characters in programs }
+ @Tag { tabs }
+@Begin
+@PP
+Tab characters provide a convenient way to indent and align parts of
+tab.c @Index { tab characters in programs }
+computer programs. With care, this alignment can be preserved in the final
+print even with varying-width fonts.
+@PP
+The distance between two tab stops in the program text is by default taken
+to be 8 characters, which is standard for Unix. This can be changed with
+the @Code "tabin" option. For example,
+@ID @Code "@CP tabin { 4 }"
+informs Lout that tab stops occur every 4 characters in the program
+text. All the symbols ({@Code "@CP"}, {@Code "@Eiffel"}, etc.) and
+their setup files have this option and the next; but to save repetition
+we will stick with C for the rest of this section.
+@PP
+The distance between two tab stops on the printed page is quite a different
+thing, and it is determined by the value of the @Code "tabout" option, which
+must be a Lout length. For example,
+@ID @Code "@CP tabout { 0.5i }"
+requests that tab stops be placed at half-inch intervals. In other
+words, a distance of one tab stop in the program text will be equivalent to a
+distance of half an inch on the printed page. For example,
+@ID @Code "@CP style { varying } tabout { 3f }"
+might produce the following, where tab characters in the program text
+have been used for indenting and also to align the comments:
+@ID @OneRow @CP style { varying } tabout { 3f } {
+struct tnode { /* the basic node */
+ char *word; /* points to the text */
+ int count; /* number of occurrences */
+ struct tnode *left; /* left child */
+ struct tnode *right; /* right child */
+};
+}
+The value {@Code "3f"} means three times the current font size, and
+it is the default value of @Code "tabout" for the @Code { varying }
+and @Code { symbol } styles (Section {@NumberOf cpsetup}). In a
+12 point font this is 36 points, or half an inch.
+@PP
+If @Code "tabout" is too small, there is a danger that the
+alignment might fail. For example,
+@ID @Code "@CP style { varying } tabout { 0.2i }"
+produces
+@ID @OneRow @CP style { varying } tabout { 0.2i } {
+struct tnode { /* the basic node */
+ char *word; /* points to the text */
+ int count; /* number of occurrences */
+ struct tnode *left; /* left child */
+ struct tnode *right; /* right child */
+};
+}
+given the same C text as the previous example. The problem here is that
+we are asking for @CP { /* } to appear four tab stops or 0.8 inches
+from the left edge, and yet the material to its left on the line is
+wider than this. This causes @CP { /* } to be shifted further to the
+right than expected, and the alignment is lost. The only solution is
+to increase {@Code "tabout"}.
+@PP
+When typesetting computer program texts independently of any document,
+there are @Code "-t" and @Code "-T" options to the @Code "prg2lout"
+program equivalent to @Code "tabin" and @Code "tabout" respectively. For
+example, @Code "-T0.5i" produces a half-inch tab width.
+@End @Section