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
Rick Beach, February 24, 1986 9:21:45 am PST
Michael Plass, June 23, 1986 9:23:41 am PDT
BeginStyle
General declarations
(bp) "big point"
{72.0 .div in} StyleRule
(sp) "width of spaces in screen font" {
screensp
} ScreenRule
(sp) "width of spaces in printing font" {
printsp
} PrintRule
(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" { "Classic" family 10 bp size } StyleRule
(FontFamily) "main font" { "Classic" family 10 bp size } StyleRule
(BodyFontFamily) "screen font" { "Classic" family 12 bp size } ScreenRule
(BodyFontFamily) "print font" { "Classic" family 10 bp size } PrintRule
(AlternateFontFamily) "other font" { "Trojan-Printwheel" family 12 bp size } StyleRule
(FixedPitchFont) "fixed pitch font" { "Trojan-Printwheel" family 12 bp size } 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
(displayNesting) .true StyleParam
(DoNest) % set it up so Nest does the nesting
{.true displayNesting} .cvx .def
(DontNest) % set it up so Nest does nothing
{.false displayNesting} .cvx .def
(DefaultNest) "for screen" {DoNest} ScreenRule
(DefaultNest) "for print" {DontNest} PrintRule
(Nest) "display nesting level" {
the displayNesting {
nestingLevel 1 .gt {BasicSize bigger leftIndent} .cvx .if
} {
} .ifelse .cvx .exec
} StyleRule
(DefaultLineLength) "for screen" {9 in lineLength} ScreenRule
(DefaultLineLength) "for print" {6 in lineLength} PrintRule
(FontPrefix) "default font prefix for Xerox fonts" {
TiogaFonts
} ScreenRule
(FontPrefix) "default font prefix for Xerox fonts" {
XCFonts
} PrintRule
(TiogaFonts) "font prefix for Xerox screen fonts suitable for easy reading on display" {
"Xerox/TiogaFonts/" fontPrefix
} StyleRule
(XCFonts) "font prefix for Xerox Interpress fonts suitable for look hardcopy" {
"Xerox/XC1-1-1/" fontPrefix
} StyleRule
Looks
(look.a) "annotation font" {
1 outlineBoxThickness FontFamily} StyleRule
(look.b) "bold font" {
all underlining all strikeout -3 strikeoutAscent} StyleRule
(look.c) "Cedar comments" {
letters+digits underlining} StyleRule
(look.d) "down for subscript" {
BasicIncrement .neg vShift
} StyleRule
(look.e) "emphasis" {
letters+digits underlining
} StyleRule
(look.f) "fixed-pitch font" {
FixedPitchFont} StyleRule
(look.g) "Greek" {
visible strikeout 8 strikeoutAscent } StyleRule
(look.h) "hidden" {
8 backgroundAscent 2 backgroundDescent } StyleRule
(look.i) "italic" {
visible underlining} StyleRule
(look.j) "unassigned as yet" {
} StyleRule
(look.k) "Cedar keywords" {
FontFamily} StyleRule
(look.l) "larger font" {
FixedPitchFont} StyleRule
(look.m) "Math font" {
visible strikeout 8 strikeoutAscent visible underlining} StyleRule
(look.n) "Cedar procedure names" {
look.b} StyleRule
(look.o) "other font" {
AlternateFontFamily} StyleRule
(look.p) "plain font -- override node format" {
FontFamily} StyleRule
(look.q) "quaint Xerox logo font" {
look.o} StyleRule
(look.r) "regular face -- override node format" {
} StyleRule
(look.s) "smaller font" {
look.p} StyleRule
(look.t) "Tioga font" {
look.p} StyleRule
(look.u) "up, for superscript" {
DoubleIncrement vShift
} StyleRule
(look.v) "unassigned as yet" {
} StyleRule
(look.w) "unassigned as yet" {
} StyleRule
(look.x) "extra large" {
} 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
(artworkFigure) "applied to inserted artwork" {
center
} StyleRule
(artworkCaption) "applied to inserted artwork captions" {
center
} StyleRule
(authors) "for authors on title page" {
block
QuadBreak BasicSize MoreLead bottomLeadingGlue
AlternateFontFamily
(No) hyphenation
} StyleRule
(block) "for block paragraphs, no initial indentation" {
docStandard
regular face
BreakSize MoreLead 0 topLeadingGlue
10 pageBreakPenalty
4 maxHorizontalExpansion
(English) hyphenation
justified lineFormatting
flushLeft lastLineFormatting
} 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
(No) hyphenation
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
(cedarRoot) "cedar format for root nodes" {
% Defined for convenience of layering styles on this one
FontPrefix
DefaultNest
DefaultLineLength
docStandard
.5 in topMargin
.8 in headerMargin
.5 in footerMargin
.5 in bottomMargin
1.25 in leftMargin
1.25 in rightMargin
24 pt topIndent
24 pt topLeading
0 leftIndent
10 pt rightIndent
} StyleRule
(center) "for centered paragraphs" {
block
(No) hyphenation
centered lineFormatting
centered lastLineFormatting
} StyleRule
(chapter) "for chapter titles that begin a new page" {
head1
XLSize MoreLead .add leading
} ScreenRule
(chapter) "for chapter titles that begin a new page" {
head1
XLSize MoreLead .add leading
11 in keep
1 fil keepStretch
1 fill 0 0 topLeadingGlue
} PrintRule
(code) "for ordinary Cedar program statements" {
standard
CodeFont
isComment {look.c}{} .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" {
block
BasicLeading 0 0 topLeadingGlue
} StyleRule
(copyrightNotice) "for copyright notices" {
default
} ScreenRule
(copyrightNotice) "for copyright notices" {
standard
nestingLevel 1 .eq .not {CodeIndent bigger leftIndent} .cvx .if
} PrintRule
(default) "style rule for nodes without explict formats" {
standard
CodeFont
isComment {look.c}{} .ifelse .cvx .exec
6 pt restIndent
nestingLevel 1 .eq .not {CodeIndent bigger leftIndent} .cvx .if
4 sp tabStops
} StyleRule
(display) "displayed equations, etc. embedded in text" {
block
(No) hyphenation
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 (must be the root node)" {
root
} StyleRule
(head1) "for chapter headings" {
docStandard
look.b
LargeSize MoreLead .add leading
isComment {
QuadBreak BasicSize MoreLead topLeadingGlue
} {
HexBreak BasicSize MoreLead topLeadingGlue
} .ifelse .cvx .exec
DoubleBreak BasicSize MoreLead bottomLeadingGlue
75 pageBreakAfterLastLinePenalty
the bottomLeading keep
BasicSize bigger keep
BasicSize bigger keep
1 fil keepStretch
} StyleRule
(head2) "for major section headings" {
docStandard
look.b
BasicSize MoreLead .add leading
DoubleBreak BasicSize MoreLead topLeadingGlue
DoubleBreak BasicSize MoreLead bottomLeadingGlue
50 pageBreakAfterLastLinePenalty
the bottomLeading keep
BasicSize bigger keep
BasicSize bigger keep
} StyleRule
(head3) "for minor section headings" {
docStandard
look.i
BasicSize MoreLead .add leading
DoubleBreak BasicSize MoreLead topLeadingGlue
DoubleBreak BasicSize MoreLead bottomLeadingGlue
25 pageBreakAfterLastLinePenalty
the bottomLeading keep
BasicSize bigger keep
BasicSize bigger keep
} StyleRule
(head4) "for run-in section headings" {
block
DoubleBreak BasicSize MoreLead topLeadingGlue
the bottomLeading keep
BasicSize bigger keep
} 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" {
LogoFont
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" {
LogoFont
36 bp topIndent
48 pt topLeading
48 pt bottomLeading
} ScreenRule
(memoHead) "for the To, From, Subject nodes at front of memos" {
standard
(No) hyphenation
FontFamily
LooseLeading 2 .mul topLeading
16 pt topIndent
LooseLeading bottomLeading
20 sp tabStops
} StyleRule
(note) "for fine points" {
quote
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
(pageNumber) "applied to the folio number when printing" {
unleaded
} ScreenRule
(quote) "for quotations and other displays" {
block
ParaIndent bigger leftIndent
} StyleRule
(ragged) "ragged-right block" {
block
flushLeft lineFormatting
flushLeft lastLineFormatting
} StyleRule
(raggedContinuation) "for continuation of broken ragged-right block" {
ragged
BasicLeading 0 0 topLeadingGlue
} StyleRule
(reference) "an item in a reference list" {
block
(No) hyphenation
4 sp restIndent
2 maxHorizontalExpansion
the restIndent tabStops
LooseLeading ExtraLead 0 topLeadingGlue
} StyleRule
(root) "format for root nodes" {cedarRoot} StyleRule
(standard) "shared by various formats" {
regular face
caps+lowercase alphabets
none strikeout
none underlining
FontFamily
BasicLeading leading
BasicLeading MoreLead 0 topLeadingGlue
BasicLeading MoreLead 0 bottomLeadingGlue
20 pageBreakAfterFirstLinePenalty
20 pageBreakBeforeLastLinePenalty
0 pageBreakPenalty
flushLeft lineFormatting
flushLeft lastLineFormatting
0 em firstIndent
0 em restIndent
the size MoreLead .add topIndent
15 sp tabStops
0 pt keep
0 pt keepStretch
1.5 maxVerticalExpansion
1 fil maxHorizontalExpansion
(No) hyphenation
} StyleRule
(subtitle) "for subtitle nodes" {
title
TripleBreak BasicSize MoreLead topLeadingGlue
QuadBreak BasicSize MoreLead bottomLeadingGlue
} StyleRule
(table) "sets TABs for kludge tables" {
block
(No) hyphenation
flushLeft lineFormatting
flushLeft lastLineFormatting
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
the size DoubleIncrement .add leading
QuadBreak DoubleBreak .add BasicSize MoreLead topLeadingGlue
QuadBreak BasicSize MoreLead bottomLeadingGlue
200 pageBreakAfterLastLinePenalty
0 firstIndent
0 restIndent
flushLeft lineFormatting
flushLeft lastLineFormatting
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