Cedar.Style
Copyright © 1984, 1985 by Xerox Corporation. All rights reserved.
Beach, January 23, 1985 9:40:17 pm PST
Russ Atkinson (RRA) January 8, 1985 10:18:06 am PST
BeginStyle
(BasicPrint) AttachStyle
General declarations
(bp) "big point"
{72.0 .div in} StyleRule
(BasicSize) % normal type font size
{10 bp} .cvx .def
(BasicIncrement) % normal type font size change
{2 bp} .cvx .def
(ExtraLead) % normal between-lines leading
{2 bp} .cvx .def
(CodeIndent) % normal amount to indent nested code nodes
{15 bp} .cvx .def
(CodeFont) "code font" { "Tioga" family 10 bp size } StyleRule
(FontFamily) "main font" { "TimesRoman" family } StyleRule
(BodyFontFamily) "screen font" { "Tioga" family } ScreenRule
(BodyFontFamily) "print font" { "TimesRoman" family } PrintRule
(AlternateFontFamily) "other font" { "Helvetica" family } StyleRule
(DoubleIncrement) % double type font size change
{BasicIncrement BasicIncrement .add} .cvx .def
(ParaIndent) % normal indentation of paragraphs
{BasicSize BasicSize .add} .cvx .def
(LargeSize) % large font size
{BasicSize BasicIncrement .add} .cvx .def
(XLSize) % large font size
{BasicSize DoubleIncrement .add} .cvx .def
(TitleSize) % largest font size
{XLSize DoubleIncrement .add} .cvx .def
(BasicLeading) % normal type leading
{BasicSize ExtraLead .add} .cvx .def
(LooseLeading) % normal type leading
{BasicLeading ExtraLead .add} .cvx .def
(MoreLead) % double inter-paragraph spacing
{ExtraLead 3 .mul} .cvx .def
(BreakSize) % normal inter-paragraph spacing
{BasicLeading MoreLead .add} .cvx .def
(BreakPlus) % extra inter-paragraph spacing
{BreakSize ExtraLead .add} .cvx .def
(DoubleBreak) % twice inter-paragraph spacing
{BreakSize MoreLead .add} .cvx .def
(TripleBreak) % triple inter-paragraph spacing
{DoubleBreak MoreLead .add} .cvx .def
(QuadBreak) % quadruple inter-paragraph spacing
{TripleBreak MoreLead .add} .cvx .def
(QuintBreak) % quintuple inter-paragraph spacing
{QuadBreak MoreLead .add} .cvx .def
(HexBreak) % hextuple inter-paragraph spacing
{QuintBreak MoreLead .add} .cvx .def
(Nest) "display nesting level" {
nestingLevel 1 .gt {BasicSize bigger leftIndent} .cvx .if
} ScreenRule
(Nest) "display nesting level" { } PrintRule
Looks
(look.a) "annotation font" {
+bold face BasicSize size FontFamily} StyleRule
(look.b) "bold font" {
+bold face} StyleRule
(look.c) "Cedar comments" {
+italic face} StyleRule
(look.d) "down for subscript" {
BasicIncrement .neg vShift
BasicIncrement smaller size} StyleRule
(look.e) "emphasis" {
isComment {-italic face}{+italic face} .ifelse .cvx .exec
} StyleRule
(look.f) "fixed-pitch font" {
"Gacha" family} StyleRule
(look.g) "Greek" {
"Hippo" family} StyleRule
(look.h) "hidden by asterisks" {
"Asterisk" family regular face 10 bp size} ScreenRule
(look.h) "hidden by asterisks" {
"Tioga" family regular face 10 bp size} PrintRule
(look.i) "italic" {
+italic face} StyleRule
(look.j) "unassigned as yet" {
} StyleRule
(look.k) "Cedar keywords" {
BasicIncrement smaller size
FontFamily} StyleRule
(look.l) "larger font" {
BasicIncrement bigger size} StyleRule
(look.m) "Math font" {
"Math" family} StyleRule
(look.n) "Cedar procedure names" {
+bold face} StyleRule
(look.o) "other font" {
AlternateFontFamily} StyleRule
(look.p) "plain font -- override node format" {
BasicSize size FontFamily} StyleRule
(look.q) "quaint Xerox logo font" {
"Logo" family 24 pt size 4 pt bigger topLeading} StyleRule
(look.r) "regular face -- override node format" {
regular face} StyleRule
(look.s) "smaller font" {
BasicIncrement smaller size} StyleRule
(look.t) "Tioga font" {
10 bp size "Tioga" family} StyleRule
(look.u) "up, for superscript" {
DoubleIncrement vShift
BasicIncrement smaller size} StyleRule
(look.v) "unassigned as yet" {
} StyleRule
(look.w) "unassigned as yet" {
} StyleRule
(look.x) "extra large" {
DoubleIncrement bigger size} StyleRule
(look.y) "y -- arbitrary for strikeout" {
all strikeout } StyleRule
(look.z) "z -- arbitrary for underlined" {
all underlining } StyleRule
Formats
(abstract) "for abstract on title page" {
head4
AlternateFontFamily
15 sp tabStops
} StyleRule
(authors) "for authors on title page" {
block
BasicIncrement bigger size
QuadBreak BasicSize MoreLead bottomLeadingGlue
AlternateFontFamily
} StyleRule
(block) "for block paragraphs, no initial indentation" {
docStandard
regular face
BreakSize MoreLead 0 topLeadingGlue
10 pageBreakPenalty
justified lineFormatting
} StyleRule
(block1) "for block paragraphs, with more top leading" {
block
BreakSize ExtraLead .add topLeading
} StyleRule
(body) "for ordinary paragraphs with indentation" {
block
isComment .not { ParaIndent firstIndent } .cvx .if
} StyleRule
(body1) "for ordinary paragraphs with indentation with extra top leading" {
body
BreakSize ExtraLead .add topLeading
} StyleRule
(boilerplate) "for title page Xerox logo and address" {
block
HexBreak 0 0 topLeadingGlue
DoubleBreak 0 0 bottomLeadingGlue
58 pt tabStops
} ScreenRule
(boilerplate) "for title page Xerox logo and address" {
pageBreak
58 pt tabStops
} PrintRule
(center) "for centered paragraphs" {
block
centered lineFormatting
} StyleRule
(chapter) "for chapter titles that begin a new page" {
head1
XLSize size
XLSize MoreLead .add leading
} ScreenRule
(chapter) "for chapter titles that begin a new page" {
head1
XLSize size
XLSize MoreLead .add leading
1 fill 0 0 topLeadingGlue
} PrintRule
(code) "for ordinary Cedar program statements" {
standard
CodeFont
isComment {italic face}{regular face} .ifelse .cvx .exec
isComment {6 pt restIndent}{CodeIndent 3 .mul restIndent} .ifelse .cvx .exec
nestingLevel 1 .eq .not {CodeIndent bigger leftIndent} .cvx .if
} StyleRule
(code1) "for ordinary Cedar program nodes" {
code
nestingLevel 1 .eq {DoubleBreak BasicSize MoreLead topLeadingGlue} .cvx .if
} StyleRule
(code2) "for ordinary Cedar program nodes" {
code
nestingLevel 3 .lt {DoubleBreak BasicSize MoreLead topLeadingGlue} .cvx .if
} StyleRule
(code3) "for ordinary Cedar program nodes" {
code
nestingLevel 4 .lt {DoubleBreak BasicSize MoreLead topLeadingGlue} .cvx .if
} StyleRule
(contents) "for section headings in tables of contents at any level" {
head
nestingLevel 1 .eq .not {ParaIndent bigger leftIndent} .cvx .if
BreakSize leading
DoubleBreak BasicSize MoreLead topLeadingGlue
BreakSize BasicSize MoreLead bottomLeadingGlue
} StyleRule
(continuation) "for continuation of broken paragraph" {
docStandard
regular face
20 pageBreakPenalty
justified lineFormatting
} StyleRule
(default) "style rule for nodes without explict formats" {
standard
CodeFont
isComment {italic face}{regular face} .ifelse .cvx .exec
6 pt restIndent
nestingLevel 1 .eq .not {CodeIndent bigger leftIndent} .cvx .if
the size 1 .add topIndent
4 sp tabStops
} StyleRule
(display) "displayed equations, etc. embedded in text" {
block
MoreLead bigger topLeading
MoreLead bigger bottomLeading
ParaIndent bigger leftIndent
} StyleRule
(docStandard) "shared by various text formats" {
standard
FontFamily
Nest
} StyleRule
(example) "default type for examples embedded in text" {
default
ParaIndent bigger leftIndent
} StyleRule
(head) "for section headings at any level" {
nestingLevel 3 .gt {head4} % do head4 if nestingLevel is greater than 3
{{ head0 head1 head2 head3 } nestingLevel .aget .cvx .exec} .ifelse .cvx .exec
} StyleRule
(head0) "for zero-level headings (unlikely, since Tioga nodes begin at 1)" {
title
} StyleRule
(head1) "for chapter headings" {
docStandard
bold face
LargeSize size
LargeSize MoreLead .add leading
isComment {
QuadBreak BasicSize MoreLead topLeadingGlue
} {
HexBreak BasicSize MoreLead topLeadingGlue
} .ifelse .cvx .exec
DoubleBreak BasicSize MoreLead bottomLeadingGlue
75 pageBreakAfterLastLinePenalty
} StyleRule
(head2) "for major section headings" {
docStandard
bold face
BasicSize MoreLead .add leading
DoubleBreak BasicSize MoreLead topLeadingGlue
DoubleBreak BasicSize MoreLead bottomLeadingGlue
50 pageBreakAfterLastLinePenalty
} StyleRule
(head3) "for minor section headings" {
docStandard
italic face
BasicSize MoreLead .add leading
DoubleBreak BasicSize MoreLead topLeadingGlue
DoubleBreak BasicSize MoreLead bottomLeadingGlue
25 pageBreakAfterLastLinePenalty
} StyleRule
(head4) "for run-in section headings" {
block
DoubleBreak BasicSize MoreLead topLeadingGlue
} StyleRule
(head5) "for run-in section headings for compatibility sake" {
head4
} StyleRule
(indent) "for indented paragraphs" {
block
BasicSize 3 .mul bigger leftIndent
} StyleRule
(indent1) "for indented paragraphs with more top leading" {
indent
BreakSize ExtraLead .add topLeading
} StyleRule
(item) "for lists of items." {
indent
BasicSize 3 .mul bigger restIndent
the restIndent tabStops
LooseLeading ExtraLead 0 topLeadingGlue
} StyleRule
(item1) "for lists of items with more top leading" {
item
BreakSize ExtraLead .add topLeading
} StyleRule
(lead1) "more lead, to space out or provide for larger type, superscripts, . . ." {
block
BreakSize ExtraLead .add topLeading
ExtraLead bigger leading
} StyleRule
(lead2) "even more lead, . . ." {
block
BreakSize ExtraLead 2 .mul .add topLeading
ExtraLead 2 .mul bigger leading
} StyleRule
(lead3) "still more lead, . . ." {
block
BreakSize ExtraLead 3 .mul .add topLeading
ExtraLead 3 .mul bigger leading
} StyleRule
(letterHead1) "top node of a letter (should be empty)" {
table2
} ScreenRule
(letterHead1) "top node of a letter (should be empty)" {
table2
60 pt .neg bottomLeading
} PrintRule
(letterHead2) "letterhead address" {
table2
60 pt .neg topLeading
72 pt bottomLeading
} StyleRule
(logo) "for Xerox logo" {
"Logo" family
24 pt size
24 bp topIndent
-0.75 in leftIndent
48 pt 20 pt 5 pt topLeadingGlue
48 pt 20 pt 5 pt bottomLeadingGlue
75 pageBreakAfterLastLinePenalty
} PrintRule
(logo) "Xerox logo: screen" {
"Logo" family
24 pt size
36 bp topIndent
48 pt topLeading
48 pt bottomLeading
} ScreenRule
(memoHead) "for the To, From, Subject nodes at front of memos" {
standard
FontFamily
LooseLeading 2 .mul topLeading
16 pt topIndent
LooseLeading bottomLeading
20 sp tabStops
} StyleRule
(note) "for fine points" {
quote
BasicIncrement smaller size
BasicIncrement smaller topLeading
BasicIncrement smaller leading
} StyleRule
(pageBreak) "to force a new page" {
standard
0 pt 1 fill .dup .mul 0 pt topLeadingGlue
1 fill .dup .mul 0 pt 0 pt bottomLeadingGlue
} PrintRule
(pageBreak) "to force a new page" {
standard
} ScreenRule
(quote) "for quotations and other displays" {
block
ParaIndent bigger leftIndent
} StyleRule
(ragged) "ragged-right block" {
block
flushLeft lineFormatting
} StyleRule
(reference) "an item in a reference list" {
block
4 sp restIndent
the restIndent tabStops
LooseLeading ExtraLead 0 topLeadingGlue
} StyleRule
(root) "format for root nodes" {
docStandard
.5 in topMargin
.8 in headerMargin
.5 in footerMargin
.5 in bottomMargin
1.25 in leftMargin
1.25 in rightMargin
6.0 in lineLength
24 pt topIndent
24 pt topLeading
0 leftIndent
10 pt rightIndent
} StyleRule
(standard) "shared by various formats" {
regular face
caps+lowercase alphabets
BasicSize size
BasicLeading leading
BasicLeading MoreLead 0 topLeadingGlue
BasicLeading MoreLead 0 bottomLeadingGlue
20 pageBreakAfterFirstLinePenalty
20 pageBreakBeforeLastLinePenalty
0 pageBreakPenalty
flushLeft lineFormatting
0 em firstIndent
0 em restIndent
the size MoreLead .add topIndent
15 sp tabStops
} StyleRule
(subtitle) "for subtitle nodes" {
title
XLSize size
TripleBreak BasicSize MoreLead topLeadingGlue
QuadBreak BasicSize MoreLead bottomLeadingGlue
} StyleRule
(table) "sets TABs for kludge tables" {
block
15 pageBreakPenalty
40 sp tabStops
} StyleRule
(table0) "for more columns" {
table
35 sp tabStops
} StyleRule
(table1) "for more columns" {
table
30 sp tabStops
} StyleRule
(table2) "for more columns" {
table
25 sp tabStops
} StyleRule
(table3) "for more columns" {
table
20 sp tabStops
} StyleRule
(tight) "for items with less leading" {
block
BasicSize ExtraLead 0 topLeadingGlue
BasicSize ExtraLead 0 bottomLeadingGlue
BasicSize leading
} StyleRule
(title) "for chapter title nodes" {
head
TitleSize size
the size DoubleIncrement .add leading
QuadBreak DoubleBreak .add BasicSize MoreLead topLeadingGlue
QuadBreak BasicSize MoreLead bottomLeadingGlue
200 pageBreakAfterLastLinePenalty
0 firstIndent
0 restIndent
flushLeft lineFormatting
AlternateFontFamily
} StyleRule
(unit) "for procedure and other major program nodes" {
code
BreakSize MoreLead 0 topLeadingGlue
} StyleRule
(unleaded) "for running head/feet text" {
docStandard
BasicLeading 0 0 topLeadingGlue
BasicLeading 0 0 bottomLeadingGlue
0 pageBreakAfterFirstLinePenalty
0 pageBreakBeforeLastLinePenalty
0 pageBreakPenalty
BasicLeading topIndent
BasicLeading bottomIndent
} StyleRule
(widowSaver) "for body paragraphs with the last line right-justified" {
body
justified lastLineFormatting
} StyleRule
EndStyle
Beach, May 20, 1983 2:07 pm
Add new StyleRules: abstract - for BlueAndWhite abstracts, authors - for BlueAndWhite authors, block - to differentiate between block-style paragraphs and indent-first-line paragraphs
Modify StyleRules: body - an indent-first-line paragraph, * - modify StyleRules which depend on block vs body, reference - make hanging indent work correctly with tab, root - establish page margins for header/footers
Modify Cedar.Style parameters to be executable rather than local variables. This permits styles to redefine them and have the effects percolate all affected StyleRules.
Russ Atkinson (RRA) January 8, 1985 10:13:48 am PST
default leftMargin ← 1.25; lineLength ← 6.0; Cedar.style now has Cedar style