Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

BS(1)  —  UNIX 3.0

NAME

cw, checkcw − prepare constant-width text for troff

SYNOPSIS

cw [ -lxx ] [ -rxx ] [ -fn ] [ -t ] [ +t ] [ -d ] [ files ]

checkcw [ -lxx ] [ -rxx ] files

DESCRIPTION

Cw is a preprocessor for troff(1) input files that contain text to be typeset in the constant-width (CW) font. 

Text typeset with the CW font resembles the output of terminals and of line printers.  This font is used to typeset examples of programs and of computer output in user manuals, programming texts, etc.  (An earlier version of this font was used in typesetting The C Programming Language by B. W. Kernighan and D. M. Ritchie).  It has been designed to be quite distinctive (but not overly obtrusive) when used together with the Times Roman font. 

Because the CW font contains a “non.ds ^ ^

NAME

bs − a compiler/interpreter for modest-sized programs

SYNOPSIS

bs [ file [ args ] ]

DESCRIPTION

Bs is a remote descendant of Basic and Snobol4 with a little C language thrown in.  Bs is designed for programming tasks where program development time is as important as the resulting speed of execution.  Formalities of data declaration and file/process manipulation are minimized.  Line-at-a-time debugging, the trace and dump‘not” sign %¬% %­%(no% Left arrow %←% %­%(<-% Right arrow %→% %­%(->% Down arrow %↓% %­%(da% Vertical single quote %′% %­%(fm% Control-shift indicator %†% %­%(dg% Visible space indicator %□% %­%(sq% Hyphen %-% %­%(hy%

The hyphen is a synonym for the unadorned minus sign (-).  Certain versions of cw recognize two additional names: %\(ua% for an up arrow and %\(lh% for a diagonal left-up (home) arrow. 

Cw recognizes five request lines, as well as user-defined delimiters.  The request lines look like troff(1) macro requests, and are copied in their entirety by cw onto its output; thus, they can be defined by the user as troff(1) macros; in fact, the %.CW% and %.CN% macros should be so defined (see HINTS below). 

The five requests are:

.CW Start of text to be set in the CW font; %.CW% causes a break; it can take precisely the same options, in precisely the same format, as are available on the cw command line. 

.CN End of text to be set in the CW font; %.CN% causes a break; it can take the same options as are available on the cw command line. 

.CD Change delimiters and/or settings of other options; takes the same options as are available on the cw command line. 

.CP arg1 arg2 arg3 ... argn All the arguments (which are delimited like troff(1) macro arguments) are concatenated, with the odd-numbered arguments set in the CW font and the even-numbered ones in the prevailing font. 

.PC arg1 arg2 arg3 ... argn Same as %.CP%, except that the even-numbered (rather than odd-numbered) arguments are set in the CW font. 

The %.CW% and %.CN% requests are meant to bracket text (e.g., a program fragment) that is to be typeset in the CW font “as is.”  Normally, cw operates in the transparent mode.  In that mode, except for the %.CD% request and the nine special four-character names listed in the table above, every character between %.CW% and %.CN% request lines stands for itself.  In particular, cw arranges for periods (.) and apostrophes (’) at the beginning of lines, and backslashes (%­) and ligatures (%fi%, %ff%, etc.)  everywhere to be “hidden” from troff(1). The transparent mode can be turned off (see below), in which case normal troff(1) rules apply. In any case, cw hides from the user the effect of the font changes generated by the %.CW% and %.CN% requests. 

The only purpose of the %.CD% request is to allow the changing of various options other than just at the beginning of a document. 

The user can also define delimiters. The left and right delimiters perform the same function as the %.CW%/%.CN% requests; they are meant, however, to enclose CW “words” or “phrases” in running text (see the example under BUGS below).  Cw treats text enclosed by delimiters in precisely the same manner as text bracketed by %.CW%/%.CN% pairs, except that, for aesthetic reasons, spaces in text bracketed by %.CW%/%.CN% pairs have the same width as any other CW character, while spaces between delimiters are half as wide, so that they have the same width as spaces in the prevailing text (but are not adjustable). 

Delimiters have no special meaning inside %.CW%/%.CN% pairs.

The options are:

-lxx The one- or two-character string xx becomes the left delimiter; if xx is omitted, the left delimiter becomes undefined, which it is initially. 

-rxx Same for the right delimiter.  The left and right delimiters may (but need not) be different. 

-fn The CW font is mounted in font position n; acceptable values for n are 1, 2, and 3 (default is 3, replacing the bold font).  This option is only useful at the beginning of a document. 

-t Turn transparent mode off.

+t Turn transparent mode on (this is the initial default). 

-d Print current option settings on file descriptor 2 in the form of troff(1) comment lines. This option is meant for debugging.

Cw reads the standard input when no files are specified, so it can be used as a filter.  Typical usage is:

cw files | troff ...

Checkcw checks that left and right delimiters, as well as the %.CW%/%.CN% pairs, are properly balanced. It prints out all offending lines.

HINTS

Typical definitions of the %.CW% and %.CN% macros meant to be used with the mm(7) macro package:

At the very least, the %.CW% macro should invoke the
troff(1)
no-fill (%.nf%) mode.

When set in running text, the
CW
font is meant to be set in the same point size as the rest of the text.
In displayed matter,
on the other hand, it can often be profitably set one point
smaller
than the prevailing
point size
(the displayed definitions of %.CW% and %.CN% above
are one point smaller than the running text on this page).
The
CW
font is sized so that,
when it is set in 9-point,
there are 12 characters per inch.

Documents that contain
CW
text may also contain tables and/or equations.
If this is the case, the order of preprocessing should be:
cw,
tbl,
and
eqn.
Usually, the tables contained in such documents will not contain
any
CW
text, although it is entirely possible
to have
elements
of the table set in the
CW
font;
of course, care must be taken that
tbl(1)
format information not be modified by
cw.
Attempts to set equations in the
CW
font are not likely to be either
pleasing or successful.

In the
CW
font,
overstriking is most easily accomplished with backspaces:
letting %←% represent a backspace,
%d←←dg% yields %d†%.
Because spaces (and, therefore backspaces) are half as wide between delimiters
as inside %.CW%/%.CN% pairs (see above), two backspaces are required for each overstrike
between delimiters.

FILES

/usr/lib/font/ftCW     CW font-width table

SEE ALSO

eqn(1), mmt(1), tbl(1), troff(1), mm(7), mv(7). 

WARNINGS

If text preprocessed by cw is to make any sense, it must be set on a typesetter equipped with the CW font or on the MHCC STARE facility; on the latter, the CW font appears as bold, but with the proper CW spacing. 

BUGS

Only a masochist would use periods (%.%) or backslashes (%­) as delimiters. 
Certain CW characters don’t concatenate gracefully with certain Times Roman characters, e.g., a CW ampersand (%&%) followed by a Times Roman comma(%,%); in such cases, judicious use of troff(1) half- and quarter-spaces (%% and %%) is most salutary, e.g., one should use %_&_,% (rather than just plain %_&_,%) to obtain %&%, (assuming that %_% is used for both delimiters).
Using cw with nroff is silly. 
The output of cw is hard to read. 
See also BUGS under troff(1).

June 13, 1980

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026