...\"
...\" Copyright (c) 1990,1991, OPEN SOFTWARE FOUNDATION, INC.
...\" ALL RIGHTS RESERVED
...\"
...\" $Header: /project/docsrc/src/macros/RCS/sml,v 1.24 92/03/17 10:51:22 fred Exp $
...\"
...\"
...\"
...\"
...\"
...\"
...\"	*******************************************************
...\"	OSF gpsml & rsml shared Semantic Markup Language macros
...\"	*******************************************************
...\"
...\"
...\"
...\"
...\"
...\"
...\"	MM, MAN, and requests supported in BOTH gpsml & rsml
...\"	====================================================
...\"
...\" .AL Start sequential invariant list
...\" .EC Equation caption
...\" .EN End equation
...\" .EQ Start equation
...\" .EX Exhibit caption
...\" .FG Figure title
...\" .LE End of list
...\" .LI List item
...\" .ML Start nonsequential invariant list
...\" .OK Key words
...\" .P Paragraph
...\" .PE pic drawing end
...\" .PP Paragraph
...\" .PS pic drawing start
...\" .RS Start reference region
...\" .TB Table title
...\" .T& Table continue
...\" .TE End table
...\" .TS Start table
...\" .VL Start nonsequential variant list
...\"
...\" .ds Define string for expansion
...\" .ne Reserve x lines on one page (takes arg 'x')
...\"
...\"
...\"
...\"	MM macros supported in gpsml but NOT in rsml
...\"	============================================
...\" .H Header
...\" .TH Table header ends (differs from .TH in rsml)
...\" .FS Start footnote region
...\" .FE End footnote region
...\"
...\"
...\"	MAN macros supported in rsml but NOT in gpsml
...\"	=============================================
...\" .RF End reference region
...\" .SH Text head in reference page
...\" .SS Subhead in reference page
...\" .TH Top head in reference page (differs from .TH in gpsml)
...\"
...\"
...\"
...\"   Macros Supported in DTE
...\"   =======================
...\" .iX Index entry
...\"
...\"
...\"
...\"
...\"
...\"   Macros Delimiting Titled Elements of a Document
...\"   -----------------------------------------------
...\"
...\"
...\" Figure start--undefined operation
.de aS
..
...\"
...\" Figure end--undefined operation
.de aE
..
...\"
...\"
...\"   Macros Delimiting Untitled Elements of a Document
...\"   -------------------------------------------------
...\"
...\"
...\" Start system output example region
.de oS
.SP
.ps -1
.ft \\*(!)
.nf
.nr !x 8*\\w'0'
.ta \\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu
.if \\n(.$>0 .in 0\"   outdent if any args
..
...\"
...\" End system output example region
.de oE
.ps +1
.ft R
.fi
.SP
..
...\"
...\" Start user input example region
.de iS
.SP
.ps -1
.ft B
.nf
..
...\"
...\" End user input example region
.de iE
.ps +1
.ft R
.fi
.SP
..
...\"
...\" Start comment region
.de cS
.ig cE
..
...\" End comment region
.de cE
..
...\"
...\"
...\" start Changed Region
.de zA
.SP 1
.nr |Q (\\n(.lu-\\w\ \ \\$1\ (start)\ \ u-\\n(.i)/2
\&\\l\\n(|Qu\ \ \\$1\ (start)\ \ \\l\\n(|Qu
.br
..
...\"
...\"
...\"
...\" end Changed Region
.de zZ
.br
.nr |Q (\\n(.lu-\\w\ \ \\$1\ (end)\ \ u-\\n(.i)/2
\&\\l\\n(|Qu\ \ \\$1\ (end)\ \ \\l\\n(|Qu
.SP 1
..
...\"
...\"
...\" Start localization region
...\" to be defined later
.de lS
..
...\" End localization region
...\" to be defined later
.de lE
..
...\"
...\"
...\" Start note region
...\"
...\"
.nr Nn 0 1              \" indicates within note region
...\"
...\"
.de nS
.P
.nr Nn +1
.ie \\$1warning .ds yy Warning:\ \ \"
.el .ie \\$1caution .ds yy Caution:\ \ \"
.el .ie \\$1note .ds yy Note:\ \ \"
.el .ie \\$1reviewnote \{\
.	ds yy\" this is an exception; start with a clean "yy" string
.	ps +2
.	ft B
.	P
Review Note To Developers:
.	P
.	ft
.	ps -2 \}
.el .ds yy \\$1:\ \ \"  use user-supplied note header..
.ft B
.ll -\w\\*(yyu
.in +\w\\*(yyu
.ti -\w\\*(yyu
\\*(yy\c
.ft
..
...\" End note region
.de nE
.nr Nn -1
.in -\w\\*(yyu
.ll +\w\\*(yyu
.P
..
...\"
...\"
...\"
...\"	Meaningful Text Markup
...\"	----------------------
...\"
...\"	Strings
...\"	-------
...\"
...\"	"Meaningful text markup" refers to strings that specify the
...\"	type of inline text that follow.  The intent is that the user
...\"	will specify the start with one markup, and the end with
...\"	another, or back to "ordinary text."
...\"
...\"	We define a macro to change the fonts that the meaningful text
...\"	markup generate.  The macro gets called with the context that
...\"	the document is "entering" and the macro sets the meaningful
...\"	text markups appropriately.
...\"
...\"	The contexts supported are:
...\"
...\"	.|F table         \" starting a table
...\"	.|F general       \" any other context
...\"
...\"
.de |F
.ie \\$1table .nr |F 1
.el .nr |F 0
.ie \\n(|D=0&\\n(|F=1 \{\
...\"   WITHIN PUBLISH TABLES, USE HELVETICA:
.	ds L \&\\f(HB\"       Literal
.	ds V \&\\f(HI\"       Variable
.	ds A \&\\f\\*(!]\"    Alphabetic constant (const width)
.	ds N \&\\f\\*(!]\"    Numeric constant (const width)
.	ds O \&\\fH\"         Ordinary text
.	ds C \&\\f\\*(!]\"    System output (C for Computer output) (const width)
.	ds U \&\\f(HB\"       System input (U for User input)
.	ds E \&\\f(HI\"       Emphasize
'	br \}
.el \{\
...\"	FOR EVERYTHING ELSE:
.	ds L \&\\fB\"         Literal
.	ds V \&\\fI\"         Variable
.	ds A \&\\f\\*(!]\"    Alphabetic constant (const width)
.	ds N \&\\f\\*(!]\"    Numeric constant (const width)
.	ds O \&\\fR\"         Ordinary text
.	ds C \&\\f\\*(!]\"    System output (C for Computer output) (const width)
.	ds U \&\\fB\"         System input (U for User input)
.	ds E \&\\fI\"         Emphasize
'	br \}
..
...\"
...\"	initialize the meaningful text markups:
.|F general
.am TS             \" tables get special markup
.|F table
..
.am TE             \" turn off when over
.|F general
..
...\"
...\"
...\"
...\"		Macros
...\"		------
...\"
...\" Start synopsis definition -- synopses are inherently in fill mode.
...\"  For a function call synopsis, use the .sS/.sE with an inner .iS/.iE
...\"  region.
...\" 
.de sS
.SP
..
...\" End synopsis definition
.de sE
.SP
..
...\"
...\"
...\"
...\" Start function definition
...\"
...\"  Registers:
...\"	!+ = 0 outside of fS/fE
...\"	!+ = 1 within fS/fE
...\"   !% = 0 for first dS/dE after fS
...\"   !% = 1 for second or greater dS/dE after fS
...\"
...\"
.de fS
.br
\&\fB\\$1(\fP
.nr !+ 1				\" now within fS/fE
.nr !% 0				\" reset to see first dS/dE
..
...\"
...\" End function definition
...\"
.de fE
\fB);\fP
.br
.if \\n(!%=1 .in -5i	\" saw .dS, so reset .in made by .dS
.nr !+ 0
.nr !% 0
..
...\"
...\" Start type declaration (uses [opt] )
...\"
.de dS
.if \\n(!+=1 \{\
...\"   this path is for funtion prototype form
.	ie \\n(!%=0 .in +.5i	\" first dS/dE gets indented
.	el \fB,\fP\" 			\" if NOT 1st .dS only do ","
'	br \}
.br
\&\fB\\$1\fR\"				\" make type be bold
.nr !% 1					\" next time .dS won't be first if in .fS/.fE loop
..
...\"
...\" End type declaration
...\"
.de dE
.if \\n(!+=0 \fB;\fR\"		\" if NOT w/in .fS/.fE loop do ";"
..
...\"
...\"
...\"
...\"   Macros for Tagging Index, Key, & Glossary Entries
...\"   -------------------------------------------------
...\"
...\"
...\"
...\" Name of keyboard key, shown in <name> form
.de kY
.ft B
<\\$1>
.ft
..
...\" Keyboard key name followed by ordinary text
.de K,
\fB<\\$1>\fP\\$2
..
...\" Ordinary text followed by keyboard key name
.de ,K
\&\\$1\fB<\\$2>\fP
..
...\" Glossary term 
...\" (rem: .gL acts differently when inside .wS & .wE [gpsml])
...\"  -- defined in {draft|pub}-mmt+.mm because only meaningful with Sync files
...\".de gL
...\".tm !GLOSSARY: "\\$1" "\\n(H1-\\nP"
...\"..
...\"
...\"
...\"
...\" Emphasized text
.de eM
.ft I
\&\\$1
.ft
..
...\" Emphasized text followed by ordinary text
.de E,
\&\fI\\$1\fP\^\\$2
..
...\" Ordinary text followed by emphasized text
.de ,E
\&\\$1\^\fI\\$2\fP
..
...\"
...\"
...\"
...\"   Macros That Include, Define Strings, & Mark Up Pages
...\"   ----------------------------------------------------
...\"
...\"
...\"
...\" Include subdocument of same type
.de dI
.so \\$1
..
...\"
...\" Include subdocument of example type
.de eI
.nf
.ft CW
.nr !x 8*\w'0'
.ta \\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu +\\n(!xu
.de !~
so\\$1
\\..
.wh \\n(nlu+\\n(.tu-1v e,   \" trap long figures
.e:
!~
e;
.ft
.fi
.ch e,    \" remove trap when all done
..
...\"
.de e:    \" turn off control/escape chars
.eo
.c2 
.cc 
..
.de e;    \" turn on control/escape chars
cc
.c2
.ec
..
.de e,
e;       \" allow page footer processing...
'bp
.e:
..
...\"
...\"
...\"
...\" Include PostScript subdocument: print encapsulated PostScript file
...\" .pI filename [height [width]]
...\" where height is the vertical size of the picture.
.de pI
.br
.fl
.rs
.sy includePS "\\$1" "\\$2" "\\$3" > /tmp/pI.tmp.
.so /tmp/pI.tmp.
.sy rm -f /tmp/pI.tmp.
..
...\" Page markup information
.de pM
...\".tm "Warning:  .pM currently undefined"
..
...\"
...\"
...\"   Escape Mechanisms
...\"   -----------------
...\"
...\"
...\" Force a page break here
.de nP
.bp
..
...\" Force a line break
.de nL
.br
..
...\" Tag text converted from another language, not recognized
.de wH
..
