aboutsummaryrefslogtreecommitdiffstats
path: root/doc/user/prg_opti
blob: 292f26a9e02a866944b2a9c7d962a6b399d1bb79 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
@Section
   @Title { Changing the appearance of a program }
   @Tag { prg_opti }
@Begin
@PP
The {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols have a number of
options for changing the appearance of the printed program.  These
options are the same for all symbols, although their default values
may vary.  The @Code "style" option changes the printing style; its
programs. @RawIndex { programs }
programs.style @SubIndex { @Code "style" option }
style. @RawIndex { @Code "style" option }
style.in.programs @SubIndex { in programs }
programs. @RawIndex { programs }
programs.fixed @SubIndex { @Code "fixed" style }
fixed.programs @Index { @Code "fixed" style (programs) }
value may be {@Code "fixed"} (fixed-width font), {@Code "varying"}
programs. @RawIndex { programs }
programs.varying @SubIndex { @Code "varying" style }
varying.programs @Index { @Code "varying" style (programs) }
programs. @RawIndex { programs }
programs.symbol @SubIndex { @Code "symbol" style }
symbol.programs @Index { @Code "symbol" style (programs) }
(varying-width font), or {@Code "symbol"} (varying-width font with
mathematical symbols used for some operators).  Its default value
depends on the language, and may be found in the fourth column of
the table at the start of this chapter.  The example in the previous
section was in @Code fixed style; we can switch styles like this:
@ID @OneRow @Code @Verbatim {
@CP
    style { varying }
{
#include <stdio.h>

treeprint(p)        /* print tree p recursively */
struct tnode *p;
{
        if (p != NULL) {
                treeprint(p->left);
                printf(\%4d %s\\n\, p->count, p->word);
                treeprint(p->right);
        }
}
}
}
The result in this case will be
@ID @OneRow @CP style { varying }
{
#include <stdio.h>

treeprint(p)        /* print tree p recursively */
struct tnode *p;
{
        if (p != NULL) {
                treeprint(p->left);
                printf("%4d %s\n", p->count, p->word);
                treeprint(p->right);
        }
}
}
If we use @Code "style { symbol }" we get this:
@ID @OneRow @CP style { symbol }
{
#include <stdio.h>

treeprint(p)        /* print tree p recursively */
struct tnode *p;
{
        if (p != NULL) {
                treeprint(p->left);
                printf("%4d %s\n", p->count, p->word);
                treeprint(p->right);
        }
}
}
with mathematical symbols replacing some of the operators.
@PP
The {@Code "@CP"}, {@Code "@Eiffel"} etc. symbols have additional options
which allow a finer control over the style.  Here they all are, with their
default values:
@ID @OneRow @Code @Verbatim {
@CP         [ or @Eiffel, @Blue, etc. ]
    style { fixed }
    numbered { No }
    font { Courier }
    size { -1.0p }
    line { 1.0vx }
    space { lout }
    tabin { 8 }
    tabout { 8s }
    identifiers { Base }
    keywords { Base }
    operators { Base }
    numbers { Base }
    strings { Base }
    comments { Base }
{
    ...
}
}
We are already familiar with {@Code "style"}.  After that comes
{@Code "numbered"}, whose value may be {@Code "No"} (the default),
{@Code "Yes"}, or a number, and which determines whether or not
programs. @RawIndex { programs }
programs.numbered @SubIndex { @Code "numbered" option }
numbered.programs @Index { @Code "numbered" option (programs) }
line numbers are to be added and if so the value of the first
one.  Next we have
{@Code "font"}, which determines the font family to use, {@Code "size"},
programs. @RawIndex { programs }
programs.font @SubIndex { @Code "font" option }
font.option. @RawIndex { @Code "font" option }
font.option.in.programs @SubIndex { in program formatting }
programs. @RawIndex { programs }
programs.size @SubIndex { @Code "size" option }
size.programs @Index { @Code "size" option (programs) }
programs. @RawIndex { programs }
programs.line @SubIndex { @Code "line" option }
line.programs @Index { @Code "line" option (programs) }
the font size to use, {@Code "line"}, the inter-line spacing, and
{@Code "space"}, the spacing mode (as for the @Code "@Space" symbol
of Section {@NumberOf white}).
programs. @RawIndex { programs }
programs.space @SubIndex { @Code "space" option }
space.programs @Index { @Code "space" option (programs) }
The default value for @Code "size" asks for one point smaller than in the
surrounding document; this was done to compensate for Courier's relatively
large appearance compared to other fonts of the same nominal size.
@PP
The @Code "tabin" and @Code "tabout" options are the subject of
Section {@NumberOf tabs}.  After them come six options giving the
particular font faces in which to print identifiers, keywords, operators,
programs. @RawIndex { programs }
programs.identifiers @SubIndex { @Code "identifiers" option }
identifiers.programs @Index { @Code "identifiers" option (programs) }
programs. @RawIndex { programs }
programs.keywords @SubIndex { @Code "keywords" option }
keywords.programs @Index { @Code "keywords" option (programs) }
programs. @RawIndex { programs }
programs.operators @SubIndex { @Code "operators" option }
operators.programs @Index { @Code "operators" option (programs) }
programs. @RawIndex { programs }
programs.numbers @SubIndex { @Code "numbers" option }
numbers.programs @Index { @Code "numbers" option (programs) }
programs. @RawIndex { programs }
programs.strings @SubIndex { @Code "strings" option }
strings.programs @Index { @Code "strings" option (programs) }
programs. @RawIndex { programs }
programs.comments @SubIndex { @Code "comments" option }
comments.programs @Index { @Code "comments" option (programs) }
numbers, strings, and comments.  {@Code "Base"} means the basic face; other
commonly available choices are {@Code "Slope"} and {@Code "Bold"}.  These
options may all be set to different faces if desired.  The default values
shown are correct for @Code "style { fixed }" only; the other styles
have other defaults (Section {@NumberOf cpsetup}).
@End @Section