Initial commit.
commit
1f9fa00edf
|
@ -0,0 +1,316 @@
|
|||
<html><head>
|
||||
<meta http-equiv="content-type" content="text/html; charset=windows-1252">
|
||||
<title>Drawing Graphs with gpic - Douglas B. West</title>
|
||||
</head>
|
||||
<body><h1>Drawing Graphs with gpic - Douglas B. West</h1>
|
||||
|
||||
Various people over the years have asked me how I draw the figures
|
||||
for my books, such as
|
||||
<a href="https://faculty.math.illinois.edu/~west/igt"><i>Introduction to Graph Theory</i></a>,
|
||||
<a href="https://faculty.math.illinois.edu/~west/mt"><i>Mathematical Thinking: Problem-Solving and
|
||||
Proofs</i></a> (with John D'Angelo),
|
||||
and the forthcoming
|
||||
<a href="https://faculty.math.illinois.edu/~west/0cont.ps"><i>Combinatorial Mathematics</i></a>.
|
||||
All these figures are drawn using gpic, the GNU (Free Software Foundation)
|
||||
version of the program pic developed originally by AT&T. gpic is part of
|
||||
the freely available groff document formatting system.
|
||||
|
||||
<p>
|
||||
The program pic was developed for drawing pictures in troff documents,
|
||||
I believe in 1984. The original version of gpic was intended as a
|
||||
preprocessor for groff. Sometime in the late 1990s, a command-line option
|
||||
was added to gpic to allow it to serve as a preprocessor for TeX.
|
||||
This allowed me to migrate my books from troff to TeX.
|
||||
|
||||
</p><p>
|
||||
Since mostly I want to draw graphs, I wrote macros that facilitate drawing and
|
||||
labeling graphs of various sorts in a few lines of gpic input.
|
||||
I provide the <a href="https://faculty.math.illinois.edu/~west/tpics.txt">macro package</a> as a text file with
|
||||
essentially no documentation. On this page I give a brief summary of how to
|
||||
use it, plus a few examples at the end.
|
||||
More extensive <a href="http://www.kohala.com/start/troff/troff.html">reference
|
||||
materials</a> on pic and gpic themselves, including old user manuals, have been
|
||||
gathered by Richard Stevens.
|
||||
|
||||
</p><p>
|
||||
My macro package is inelegant and could be made cleaner and more sophisticated.
|
||||
However, it does enable me to draw the pictures I want to draw rather quickly
|
||||
and with very little code.
|
||||
</p><p>
|
||||
Please send feedback on how this page can be improved to
|
||||
west @ math . uiuc . edu.
|
||||
Also, please let me know if you use these macros.
|
||||
|
||||
|
||||
</p><h2>Basics</h2>
|
||||
|
||||
<b>Locations and arguments</b><br>
|
||||
gpic is coordinate-based. Locations are described as ordered pairs "(a,b)"
|
||||
in the coordinate plane. Locations (or objects) can be named using colons, as
|
||||
in "A:(a,b)". Names remain in effect until reassigned; in particular, they
|
||||
persist into later pictures. To put multiple commands on a single line, end
|
||||
each with a semicolon.
|
||||
<p>
|
||||
In order to facilitate placing vertices at grid points, I have defined
|
||||
names for these locations. Available are "<b>p00</b>" through "<b>p99</b>"
|
||||
and "<b>p100</b>" through "<b>p155</b>", where "<b>p</b>ij" denotes "(i,j)",
|
||||
and the other locations are from (10,0) through (15,5). Offset locations
|
||||
are also available, using "<b>op00</b>" through "<b>op99</b>"
|
||||
and "<b>op100</b>" through "<b>op155</b>". Here "<b>op</b>ij" is defined
|
||||
as "O+(i,j)" for the particular location named as "O", which can be viewed
|
||||
as an "origin". A picture with several copies of the same structure can
|
||||
be produced by using the same commands with a change in the specification of
|
||||
"O".
|
||||
</p><p>
|
||||
Lines and arrows are drawn from location to location. gpic macros have a fixed
|
||||
list of up to nine arguments, invoked as <b>macro</b>(arg1,arg2,...,argN).
|
||||
Therefore, many of my macros come in sets indexed up to 9, depending
|
||||
on how many points are being placed or connected by lines.
|
||||
The syntax for macro definitions is
|
||||
<br>
|
||||
"define macroname #command1; command2; etc#"
|
||||
|
||||
|
||||
</p><p>
|
||||
<b> "spot", "spot2", . . ., "spot9"</b><br>
|
||||
The arguments for these macros are locations in the plane. "<b>spotN</b>"
|
||||
takes N such locations and puts bullets there as vertices. It also names those
|
||||
locations in order, A, B, C, . . . Those names can be used as arguments
|
||||
in later macros. This enables editing of pictures by moving vertices
|
||||
around without retyping lots of locations. If more than nine vertices are
|
||||
needed, than one can save the locations with other names, as in "A1:A;";
|
||||
each use of a "<b>spotN</b>" macro assigns names starting from "A".
|
||||
|
||||
</p><p>
|
||||
<b> "poly2", . . ., "poly20" </b><br>
|
||||
"<b>polyN</b>(loc,rad)" places N equally spaced vertices around an invisible
|
||||
circle with center "loc" and radius "rad", naming the locations beginning with
|
||||
A at the top (as in <b>spotN</b>) and moving clockwise. This is done via a
|
||||
small table of sines and cosines present in the macro package.
|
||||
For odd N, only up to N=13 is provided.
|
||||
When N is even, the (invisible) polygon sits on a horizontal base;
|
||||
the version "<b>polyNv</b>" (and maybe also "<b>polyNh</b>" for N=12
|
||||
and N=16") puts a point at the top and bottom.
|
||||
|
||||
|
||||
</p><p>
|
||||
<b> "edge", "degr", "matc", "path", "cycl"</b><br>
|
||||
"<b>edge</b>(A,B)" draws a line segment connecting two locations A and B.
|
||||
<br>
|
||||
"<b>degrN</b>" draws edges from its first argument to the other N arguments,
|
||||
up to N=8.
|
||||
<br>
|
||||
"<b>matcN</b>" draws a matching of size N on its 2N arguments, for N\in{2,3,4}.
|
||||
For example, "<b>matc4</b>(A,B,C,D,E,F,G,H)" draws the edges AB, CD, EF, and GH.
|
||||
<br>
|
||||
"<b>pathN</b>" draws a path through the locations of its N arguments in order.
|
||||
<br>
|
||||
"<b>cyclN</b>" draws a cycle through the locations of its N arguments in order.
|
||||
<br>
|
||||
The gpic primitive for these macros is "line", as in "line from A to B to C
|
||||
to D to E".
|
||||
|
||||
</p><p>
|
||||
<b> "call", "call2", "call3"</b><br>
|
||||
These place text at a specified location.
|
||||
In "<b>call</b>(A,"text $v_1$",ne);" the text inside quotation marks is
|
||||
placed near location A, in the northeast direction away from A.
|
||||
There are eight compass directions plus "c" for center.
|
||||
Note that text is passed through unchanged, to be processed by TeX (or troff),
|
||||
and it will be produced in the fonts used by the subsequent program. Thus
|
||||
notation is placed within dollar signs.
|
||||
To place text at locations A,B or A,B,C, use
|
||||
"<b>call2</b>(A,B,"text1","text2",direc1,direc2);" or
|
||||
"<b>call3</b>(A,B,C,"text1","text2","text3",direc1,direc2,direc3);".
|
||||
|
||||
</p><p>
|
||||
<b> "circ", "arch", "elli"</b><br>
|
||||
"<b>circ</b>(A,rad)" draws a circle of radius "rad" centered at location A.
|
||||
<br>
|
||||
"<b>arch</b>(A,B,rad)" draws a circular arc of radius "rad" counterclockwise
|
||||
from location A to location B.
|
||||
<br>
|
||||
"<b>elli</b>(A,ht,wid)" draws an ellips of height "ht" and width "wid"
|
||||
centered at location A.
|
||||
<br>
|
||||
Circless and ellipse are objects with centers and directional corners.
|
||||
The objects can be named, as in "C:circ(p00,2);" and then "C.ne" subsequently
|
||||
refers to the northeast point on C.
|
||||
|
||||
</p><p>
|
||||
<b>"spli3", . . ., "spli9"</b><br>
|
||||
"<b>spliN</b>" draws a curved line (via splines) from
|
||||
A to B to C, etc., those being its N arguments in order.
|
||||
Only the first and last locations are actually touched by the curve.
|
||||
Try it.
|
||||
|
||||
</p><p>
|
||||
<b> Arrow, Bold, Dashed, Dotted</b><br>
|
||||
Generally speaking, many of the macros for edge, path, cycl, degr, matc, spli,
|
||||
can be modified by prepending "a", "b", "f", "d", "t" to obtain lines that
|
||||
are arrows (directed edges), bold (thicker), fat (much thicker), dashed, or
|
||||
dotted, respectively. In combination, <b>daedge</b>, <b>baedge</b>, and
|
||||
<b>dapath</b> are also available.
|
||||
<br>
|
||||
The size of arrowheads is constant, but the extent of coordinates in pictures
|
||||
is not. As a result, arrowheads may appear too large or too small. To fix
|
||||
this, use "<b>sethead</b>(param)" to multiply the scale of arrowheads by
|
||||
"param". At the end of the picture, use "<b>resethead</b>" to restore the
|
||||
original scale; otherwise the new size arrowheads will be used in succeeding
|
||||
pictures.
|
||||
|
||||
|
||||
</p><h2>Invocation in TeX Documents</h2>
|
||||
|
||||
Within a TeX document, the source for a gpic picture appears as follows:
|
||||
<br>\gpic{
|
||||
<br>.PS x
|
||||
<br>gpic commands
|
||||
<br>.PE
|
||||
<br>}
|
||||
|
||||
<p>
|
||||
The "\gpic" macro is defined within the macro package. The "x" is the
|
||||
desired width of the picture in inches. When the file is run through the
|
||||
gpic program before sending it to tex or latex, the portion from
|
||||
.PS to .PE will be replaced with the "specials" that direct tex to draw the
|
||||
lines and other elements of the picture. Under tex, the macro "\gpic" then
|
||||
creates a centered box with the picture inside it.
|
||||
|
||||
</p><p>
|
||||
The command-line option "-t" instructs gpic to prepare its output for
|
||||
TeX rather than for troff. To run the preprocessor and then tex, one therefore
|
||||
uses something like the following script:
|
||||
<br>gpic -t gpicmacros texsource > temp.tex
|
||||
<br>tex temp
|
||||
</p><p>
|
||||
To get pdf output, the resulting dvi file should be hit with
|
||||
<br>
|
||||
dvips -Ppdf | ps2pdf
|
||||
|
||||
</p><h2>Further Macros and Comments</h2>
|
||||
|
||||
<b>Filled and Invisible</b><br>
|
||||
"<b>icirc</b>(A,rad)" draws an invisible circle, which may be useful when
|
||||
named in order to refer to directional locations.
|
||||
<br>
|
||||
"<b>fcirc</b>(A,rad,fill)" draws a circle of radius "rad" centered at location
|
||||
A with the interior filled to density "fill", between 0 and 1. The use of
|
||||
"fcirc" will overwrite anything that was previous put in the interior of the
|
||||
circle.
|
||||
<br>
|
||||
"<b>ficirc</b>(A,rad,fill)" draw a filled interior without the boundary.
|
||||
<br>
|
||||
"<b>felli, fielli</b>" are the analogues for ellipses.
|
||||
|
||||
<p>
|
||||
<b>"h1,...,h9", "v1,...,v9"</b><br>
|
||||
Like "<b>p</b>ij", these are shorthand for coordinate pairs, with
|
||||
"<b>h</b>j" being (.j,0) and "<b>v</b>j" being (0,.j).
|
||||
They can be used for making slight adjustments to locations for placing
|
||||
text labels.
|
||||
|
||||
</p><p>
|
||||
"<b>spoto</b>(A)" puts an open circle (instead of a bullet) at location A.
|
||||
<br>
|
||||
"<b>mark</b>(A)" puts a square at location A (to distinguish a vertex).
|
||||
<br>
|
||||
"<b>cliqN</b>" draws a complete graph with vertices at its N arguments,
|
||||
for N\in{4,5,6}.
|
||||
<br>
|
||||
<b>"k23", "k33", "k34", "k44"</b> draw complete bipartite graphs.
|
||||
|
||||
</p><h2>Examples</h2>
|
||||
Below is the gpic code using these macros to produce several of the
|
||||
figures in Section 1.1 of <i>Introduction to Graph Theory</i>,
|
||||
second edition.
|
||||
|
||||
<p>
|
||||
Petersen graph, page 13:
|
||||
<br>
|
||||
\gpic{
|
||||
<br>
|
||||
.PS 3.8
|
||||
<br>
|
||||
O:p00; poly5(O,2); cycl5(A,B,C,D,E); A1:A; B1:B; C1:C; D1:D; E1:E;
|
||||
<br>
|
||||
poly5(O,1); cycl5(A,C,E,B,D); matc3(A,A1,B,B1,C,C1); matc2(D,D1,E,E1);
|
||||
<br>
|
||||
call3(A1,B1+h1,C1+h1,"12","34","51",n,ne,se); call2(D1-h1,E1-h1,"23","45",sw,nw)
|
||||
<br>
|
||||
call3(A+h1,B-v1,C-h1,"35","52","24",e,s,sw); call2(D,E,"41","13",nw,n);
|
||||
<br>
|
||||
O:(5.5,0)+v1; poly3(op00,-.8); degr3(O,A,B,C); A1:A; B1:B; C1:C; spot(O);
|
||||
<br>
|
||||
poly6(op00,2); cycl6(A,B,C,D,E,F); path3(A,B1,D); path3(B,A1,E); path3(C,C1,F);
|
||||
<br>
|
||||
O:p110+v1; poly9(O,2); cycl9(A,B,C,D,E,F,G,H,I); spot(O); degr3(O,A,D,G);
|
||||
<br>
|
||||
matc3(B,F,E,I,H,C);
|
||||
<br>
|
||||
.PE
|
||||
<br>
|
||||
}
|
||||
|
||||
</p><p>
|
||||
Decomposition of <i>K<sub>5</sub></i> and <i>K<sub>4</sub></i>, page 11:
|
||||
<br>
|
||||
\gpic{
|
||||
<br>
|
||||
.PS 2.6
|
||||
<br>
|
||||
poly5((0,.85),1.15); bcycl5(A,B,C,D,E); cycl5(A,C,E,B,D);
|
||||
<br>
|
||||
spot4(p30,p50,p52,p32); path3(A,B,D); dpath3(B,C,A); bpath3(C,D,A);
|
||||
<br>
|
||||
.PE
|
||||
<br>
|
||||
}
|
||||
|
||||
</p><p>K\"onigsberg Bridge Problem, page 2:
|
||||
<br>
|
||||
\gpic{
|
||||
<br>
|
||||
.PS 4.0
|
||||
<br>
|
||||
elli(p64,4,6); call3(p64,p96+h2,p92+h2,"$W$","$X$","$Z$",c,ne,se);
|
||||
<br>
|
||||
call3(p124+h2,p55-v3,p75-v3,"$Y$","1","2",e,nw,ne);
|
||||
<br>
|
||||
call3(p53+v1,p73+v1,p84-h2,"3","4","5",sw,se,e);
|
||||
<br>
|
||||
call3(p115+h2,p113+h2,p114,"6","7","$~$",s,n,w);
|
||||
<br>
|
||||
spli7((14,6.4),(12,5.4),(9.8,5.0),(9.2,4),(9.8,3.0),(12,2.6),(14,1.6));
|
||||
<br>
|
||||
spli7((1.0,3.6),(2.6,3.4),(4,2),(6,1.4),(9.2,2.6),(12,2),(14,.8));
|
||||
<br>
|
||||
spli7((1.0,4.4),(2.6,4.6),(4,6),(6,6.6),(9.2,5.4),(12,6),(14,7.2));
|
||||
<br>
|
||||
matc2((8.7,4.1),(9.6,4.1),(8.7,3.9),(9.6,3.9));
|
||||
<br>
|
||||
matc4((4.7,1.4),(5.0,2.4),(4.5,1.5),(4.8,2.5),(4.7,6.6),(5.0,5.6),(4.5,6.5),(4.8,5.5));
|
||||
<br>
|
||||
matc4((7.3,1.4),(7.0,2.4),(7.5,1.5),(7.2,2.5),(7.3,6.6),(7.0,5.6),(7.5,6.5),(7.2,5.5));
|
||||
<br>
|
||||
matc4((11.0,1.8),(11.5,3.1),(11.2,1.7),(11.7,3.0),(11.0,6.2),(11.5,4.9),(11.2,6.3),(11.7,5.0));
|
||||
<br>
|
||||
O:(17,1);
|
||||
<br>
|
||||
spot4(op30,op03,op36,op63); degr3(D,A,B,C); dbledge(A,B,6.5); dbledge(B,C,6.5);
|
||||
<br>
|
||||
call3(C+v1,D,A-v1,"$x$","$y$","$z$",n,e,s); E1:.5< B,C>; E3:.5< A,B >;
|
||||
<br>
|
||||
E5:.5< B,D>; E6:.5< C,D>; E7:.5< D,A>;
|
||||
<br>
|
||||
call3(B-h2,E1-h3+v3,E1+h2-v2,"$w$","$e_1$","$e_2$",w,nw,se);
|
||||
<br>
|
||||
call3(E3-h2-v2,E3+h2+v2,E5,"$e_3$","$e_4$","$e_5$",sw,ne,n);
|
||||
<br>
|
||||
call3(E6,E7,E5,"$e_6$","$e_7$","$~$",ne,se,s);
|
||||
<br>
|
||||
.PE
|
||||
<br>
|
||||
}
|
||||
|
||||
</p><div id="grammalecte_menu_main_button_shadow_host" style="width: 0px; height: 0px;"></div></body><script src="Drawing%20Graphs%20with%20gpic%20-%20Douglas%20B.%20West_files/api.js"></script></html>
|
|
@ -0,0 +1,117 @@
|
|||
// JavaScript
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
var oGrammalecteAPI = {
|
||||
// Thes script might be reloaded, don’t use const or let.
|
||||
|
||||
// functions callable from within pages
|
||||
// to be sent to the content-cript via an event “GrammalecteCall”
|
||||
|
||||
sVersion: "1.0",
|
||||
|
||||
generateNodeId: function (xNode) {
|
||||
xNode.id = "grammalecte_generated_id_" + Date.now().toString(36) + "_" + this._random(0, 1000000).toString(10);
|
||||
console.log("[Grammalecte API] generated id:", xNode.id);
|
||||
return xNode.id;
|
||||
},
|
||||
|
||||
_random: function (nMin, nMax) {
|
||||
return Math.floor(Math.random() * (nMax - nMin + 1) + nMin);
|
||||
},
|
||||
|
||||
openPanelForNode: function (vNode) {
|
||||
// Parameter: a HTML node or the identifier of a HTML node
|
||||
if (vNode instanceof HTMLElement) {
|
||||
let sNodeId = vNode.id || this.generateNodeId(vNode);
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForNode", sNodeId: sNodeId}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
}
|
||||
else if (typeof(vNode) === "string" && document.getElementById(vNode)) {
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForNode", sNodeId: vNode}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
}
|
||||
else {
|
||||
console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier.");
|
||||
}
|
||||
},
|
||||
|
||||
openPanelForText: function (sText, vNode=null) {
|
||||
// Parameter: text to analyze, and optionaly a node to send results to.
|
||||
if (typeof(sText) === "string") {
|
||||
let sNodeId = "";
|
||||
if (vNode instanceof HTMLElement) {
|
||||
sNodeId = vNode.id || this.generateNodeId(vNode);
|
||||
}
|
||||
else if (typeof(vNode) === "string" && document.getElementById(vNode)) {
|
||||
sNodeId = vNode;
|
||||
}
|
||||
else {
|
||||
console.log("[Grammalecte API] No node identifier. No event, no result will be sent.")
|
||||
}
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForText", sText: sText, sNodeId: sNodeId}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
} else {
|
||||
console.log("[Grammalecte API] Error: parameter is not a text.");
|
||||
}
|
||||
},
|
||||
|
||||
parseNode: function (vNode) {
|
||||
/* Parameter: a HTML node (with a identifier) or the identifier of a HTML node.
|
||||
The result will be sent as an event “GrammalecteResult” to the node.
|
||||
*/
|
||||
if (vNode instanceof HTMLElement) {
|
||||
let sNodeId = vNode.id || this.generateNodeId(vNode);
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseNode", sNodeId: sNodeId}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
}
|
||||
else if (typeof(vNode) === "string" && document.getElementById(vNode)) {
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseNode", sNodeId: vNode}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
}
|
||||
else {
|
||||
console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier.");
|
||||
}
|
||||
},
|
||||
|
||||
parseText: function (sText, vNode) {
|
||||
// Parameter: text to analyze, and a node to send results to.
|
||||
if (typeof(sText) === "string") {
|
||||
if (vNode instanceof HTMLElement) {
|
||||
let sNodeId = vNode.id || this.generateNodeId(vNode);
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseText", sText: sText, sNodeId: sNodeId}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
}
|
||||
else if (typeof(vNode) === "string" && document.getElementById(vNode)) {
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseText", sText: sText, sNodeId: vNode}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
}
|
||||
else {
|
||||
console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier.");
|
||||
}
|
||||
} else {
|
||||
console.log("[Grammalecte API] Error: parameter is not a text.");
|
||||
}
|
||||
},
|
||||
|
||||
getSpellSuggestions: function (sWord, sDestination, sRequestId="") {
|
||||
/* parameters:
|
||||
- sWord (string)
|
||||
- sDestination: HTML identifier (string) -> the result will be sent as an event “GrammalecteResult” to destination node
|
||||
- sRequestId: custom identifier for the request (string) [default = ""]
|
||||
*/
|
||||
if (typeof(sWord) === "string" && typeof(sDestination) === "string" && typeof(sRequestId) === "string") {
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "getSpellSuggestions", sWord: sWord, sDestination: sDestination, sRequestId: sRequestId}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
} else {
|
||||
console.log("[Grammalecte API] Error: one or several parameters aren’t string.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Tell to the webpage that the Grammalecte API is ready.
|
||||
*/
|
||||
document.dispatchEvent(new Event('GrammalecteLoaded'));
|
||||
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,117 @@
|
|||
// JavaScript
|
||||
|
||||
"use strict";
|
||||
|
||||
|
||||
var oGrammalecteAPI = {
|
||||
// Thes script might be reloaded, don’t use const or let.
|
||||
|
||||
// functions callable from within pages
|
||||
// to be sent to the content-cript via an event “GrammalecteCall”
|
||||
|
||||
sVersion: "1.0",
|
||||
|
||||
generateNodeId: function (xNode) {
|
||||
xNode.id = "grammalecte_generated_id_" + Date.now().toString(36) + "_" + this._random(0, 1000000).toString(10);
|
||||
console.log("[Grammalecte API] generated id:", xNode.id);
|
||||
return xNode.id;
|
||||
},
|
||||
|
||||
_random: function (nMin, nMax) {
|
||||
return Math.floor(Math.random() * (nMax - nMin + 1) + nMin);
|
||||
},
|
||||
|
||||
openPanelForNode: function (vNode) {
|
||||
// Parameter: a HTML node or the identifier of a HTML node
|
||||
if (vNode instanceof HTMLElement) {
|
||||
let sNodeId = vNode.id || this.generateNodeId(vNode);
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForNode", sNodeId: sNodeId}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
}
|
||||
else if (typeof(vNode) === "string" && document.getElementById(vNode)) {
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForNode", sNodeId: vNode}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
}
|
||||
else {
|
||||
console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier.");
|
||||
}
|
||||
},
|
||||
|
||||
openPanelForText: function (sText, vNode=null) {
|
||||
// Parameter: text to analyze, and optionaly a node to send results to.
|
||||
if (typeof(sText) === "string") {
|
||||
let sNodeId = "";
|
||||
if (vNode instanceof HTMLElement) {
|
||||
sNodeId = vNode.id || this.generateNodeId(vNode);
|
||||
}
|
||||
else if (typeof(vNode) === "string" && document.getElementById(vNode)) {
|
||||
sNodeId = vNode;
|
||||
}
|
||||
else {
|
||||
console.log("[Grammalecte API] No node identifier. No event, no result will be sent.")
|
||||
}
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "openPanelForText", sText: sText, sNodeId: sNodeId}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
} else {
|
||||
console.log("[Grammalecte API] Error: parameter is not a text.");
|
||||
}
|
||||
},
|
||||
|
||||
parseNode: function (vNode) {
|
||||
/* Parameter: a HTML node (with a identifier) or the identifier of a HTML node.
|
||||
The result will be sent as an event “GrammalecteResult” to the node.
|
||||
*/
|
||||
if (vNode instanceof HTMLElement) {
|
||||
let sNodeId = vNode.id || this.generateNodeId(vNode);
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseNode", sNodeId: sNodeId}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
}
|
||||
else if (typeof(vNode) === "string" && document.getElementById(vNode)) {
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseNode", sNodeId: vNode}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
}
|
||||
else {
|
||||
console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier.");
|
||||
}
|
||||
},
|
||||
|
||||
parseText: function (sText, vNode) {
|
||||
// Parameter: text to analyze, and a node to send results to.
|
||||
if (typeof(sText) === "string") {
|
||||
if (vNode instanceof HTMLElement) {
|
||||
let sNodeId = vNode.id || this.generateNodeId(vNode);
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseText", sText: sText, sNodeId: sNodeId}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
}
|
||||
else if (typeof(vNode) === "string" && document.getElementById(vNode)) {
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "parseText", sText: sText, sNodeId: vNode}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
}
|
||||
else {
|
||||
console.log("[Grammalecte API] Error: parameter is not a HTML node with an identifier.");
|
||||
}
|
||||
} else {
|
||||
console.log("[Grammalecte API] Error: parameter is not a text.");
|
||||
}
|
||||
},
|
||||
|
||||
getSpellSuggestions: function (sWord, sDestination, sRequestId="") {
|
||||
/* parameters:
|
||||
- sWord (string)
|
||||
- sDestination: HTML identifier (string) -> the result will be sent as an event “GrammalecteResult” to destination node
|
||||
- sRequestId: custom identifier for the request (string) [default = ""]
|
||||
*/
|
||||
if (typeof(sWord) === "string" && typeof(sDestination) === "string" && typeof(sRequestId) === "string") {
|
||||
let xEvent = new CustomEvent("GrammalecteCall", { detail: JSON.stringify({sCommand: "getSpellSuggestions", sWord: sWord, sDestination: sDestination, sRequestId: sRequestId}) });
|
||||
document.dispatchEvent(xEvent);
|
||||
} else {
|
||||
console.log("[Grammalecte API] Error: one or several parameters aren’t string.");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Tell to the webpage that the Grammalecte API is ready.
|
||||
*/
|
||||
document.dispatchEvent(new Event('GrammalecteLoaded'));
|
||||
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,207 @@
|
|||
.pl 9c
|
||||
.nr PO 1c
|
||||
.nr LL 14c
|
||||
.nr LT 14c
|
||||
.nr HM 1c
|
||||
.nr FM .5c
|
||||
.RP no
|
||||
.P1
|
||||
.nr bm 0 1
|
||||
.nop \!x X papersize=16c,9c
|
||||
.ds PDFHREF.COLOUR 0.0 0.3 0.9
|
||||
.defcolor pdf:href.colour rgb \\*[PDFHREF.COLOUR]
|
||||
.ds PDFHREF.TEXT.COLOUR pdf:href.colour
|
||||
.OH "'\m[grey]Slides Demo''Deri James\m[]'"
|
||||
.EH "'\m[grey]Slides Demo''Deri James\m[]'"
|
||||
.pdftransition PAGE Wipe .5 V O
|
||||
.pdftransition BLOCK Fade 1
|
||||
.de HD
|
||||
.ev dj
|
||||
.po 0
|
||||
.vs 0
|
||||
.sp |0
|
||||
\#\X'pdf: pdfpic Backdrop.pdf -L 16c 4c'
|
||||
\X'pdf: import BackdropQ.pdf 0 0 453.543 255.118 453.543 100'
|
||||
.fl
|
||||
.vs
|
||||
.po
|
||||
.ev
|
||||
.sp |\\n[HM]u-6p
|
||||
\Z!\D't 1p'!\D'l \\n[LL]u 0p'
|
||||
.fl
|
||||
..
|
||||
.de HEAD
|
||||
. NH \\$1
|
||||
. shift
|
||||
\\m[pdf:href.colour]\\$*\\m[]
|
||||
. fl
|
||||
. pdfbookmark -T bm\\n+[bm] \\n[nh*hl] \\*[SN-STYLE] \\$*
|
||||
. XS \\n[%]
|
||||
. pdfhref L -D bm\\n[bm] -- \\*[SN-STYLE] \\$*
|
||||
. XE
|
||||
. pdfpause
|
||||
..
|
||||
.pdfpagename TITLE
|
||||
.TL
|
||||
\m[pdf:href.colour]Demonstrating using
|
||||
.br
|
||||
ms macros
|
||||
.br
|
||||
for a slideshow\m[]
|
||||
.AU
|
||||
Deri James
|
||||
.LP
|
||||
.sp -2.4v
|
||||
.HEAD 1 The Basics
|
||||
.LP
|
||||
Using
|
||||
.I ms
|
||||
to write a presentation slideshow is easy.
|
||||
.LP
|
||||
.pdfpause
|
||||
.HEAD 2 Configure the "paper" size
|
||||
.RS
|
||||
.LD
|
||||
.ft CR
|
||||
\&.pl 9c
|
||||
\&.nr PO 1c
|
||||
\&.nr LL 14c
|
||||
\&.nr LT 14c
|
||||
\&.nr HM 1c
|
||||
\&.nr FM .5c
|
||||
\&.RP no
|
||||
\&.P1
|
||||
\&.nop \\!x X papersize=16c,9c
|
||||
.ft
|
||||
.DE
|
||||
.RE
|
||||
The final command sets the pdf page size, suitable for a 16:9 ratio screen.
|
||||
.HEAD 2 Specify the presentation transitions
|
||||
.RS
|
||||
.LD
|
||||
.ft CR
|
||||
\&.pdftransition PAGE Box .5 . O
|
||||
\&.pdftransition BLOCK Wipe 1
|
||||
.ft
|
||||
.DE
|
||||
.RE
|
||||
A description of the allowed parameters is in the
|
||||
.pdfhref W -D http://chuzzlewit.co.uk/WebManPDF.pl/man:/1/gropdf -- gropdf(1)
|
||||
man page.
|
||||
The parameters applied to
|
||||
.B PAGE
|
||||
are used when the transition is to a new slide, and
|
||||
.B BLOCK
|
||||
sets the transition for any separate blocks in the slide.
|
||||
.LP
|
||||
.B Note:
|
||||
Not all possible transitions are supported by every PDF reader.
|
||||
.pdfpause
|
||||
.HEAD 2 Use Blocks
|
||||
.LP
|
||||
A Block is a portion of the slide which you want to appear separately on the screen
|
||||
when you click the mouse or press the space bar. After the text which you want to
|
||||
appear simply insert a pause:-
|
||||
.RS
|
||||
.LD
|
||||
.ft CR
|
||||
\&.pdfpause
|
||||
.ft
|
||||
.DE
|
||||
.RE
|
||||
.HEAD 2 Printing the slides
|
||||
.LP
|
||||
If the presentation contains blocks it may be difficult to print the slides in a format
|
||||
so they may be given as a handout. The solution is to define GROPDF_NOSLIDE as true before
|
||||
invoking groff:-
|
||||
.RS
|
||||
.LD
|
||||
.ft CR
|
||||
GROPDF_NOSLIDE=1 groff -Tpdf -ms filename.ms > filename.pdf
|
||||
.ft
|
||||
.DE
|
||||
.RE
|
||||
The pdf file produced will not be in presentation mode so can be printed normally but
|
||||
you may need to select \[oq]scale to fit\[cq] and \[oq]landscape\[cq] to fit the actual
|
||||
paper size.
|
||||
.HEAD 1 Other PDF considerations
|
||||
.LP
|
||||
This demo has other features which take advantage of calls to the gropdf device which
|
||||
may be useful.
|
||||
.bp
|
||||
.HEAD 2 Integrating busgrap with slides
|
||||
Slides often integrate various graphs:-
|
||||
.sp .5v
|
||||
.pdftransition BLOCK Split 2 V I
|
||||
.pdfpause
|
||||
.BGS
|
||||
Frame:7.1c 5c
|
||||
Just:centre
|
||||
PS:7.8
|
||||
Origin:3c 2.5c
|
||||
Xrad:1.5c
|
||||
YRad:1.5c
|
||||
Caption:\v'.3c'Top 3 UK Newspaper Circulation (+Origin)
|
||||
BGCOL:grey90
|
||||
PDFBOOKMARK:2
|
||||
Series:The Sun 1,978,702
|
||||
Series:Daily Mail 1,688,727
|
||||
Series:Daily Mirror 992,235
|
||||
.BGE
|
||||
.bp
|
||||
.pdftransition BLOCK Fade 1
|
||||
.HEAD 2 PDF overview and clickable TOC
|
||||
.LP
|
||||
I included a custom .HEAD macro which creates a heading, adds it to the overview panel
|
||||
in the pdf reader, adds a clickable link in the TOC and pauses:-
|
||||
.RS
|
||||
.LD
|
||||
.ft CR
|
||||
.ec Z
|
||||
Z&.de HEAD
|
||||
Z&. NH \\$1
|
||||
Z&. shift
|
||||
\\m[pdf:hrefZ&.colour]\\$*\\m[]
|
||||
Z&. fl
|
||||
Z&. pdfbookmark -T bm\\n+[bm] \\n[nh*hl] \\*[SN-STYLE] \\$*
|
||||
Z&. XS \\n[%]
|
||||
Z&. pdfhref L -D bm\\n[bm] -- \\*[SN-STYLE] \\$*
|
||||
Z&. XE
|
||||
Z&. pdfpause
|
||||
Z&..
|
||||
.ec
|
||||
.ft
|
||||
.DE
|
||||
.RE
|
||||
.bp
|
||||
It should be called as:
|
||||
.RS
|
||||
.LD
|
||||
.ft CR
|
||||
\&.HEAD 2 PDF overview and clickable TOC
|
||||
.ft
|
||||
.DE
|
||||
.RE
|
||||
.HEAD 2 Move TOC to page after TITLE
|
||||
.LP
|
||||
First insert the following just before the
|
||||
.CW .TL
|
||||
section at the top of the file.
|
||||
.RS
|
||||
.LD
|
||||
.ft CR
|
||||
\&.pdfpagename TITLE
|
||||
.ft
|
||||
.DE
|
||||
.RE
|
||||
Then insert these lines at the end of your ms file:-
|
||||
.RS
|
||||
.LD
|
||||
.ft CR
|
||||
\&.pdfswitchtopage after TITLE
|
||||
\&.TC
|
||||
.ft
|
||||
.DE
|
||||
.RE
|
||||
.pdfswitchtopage after TITLE
|
||||
.TC
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,619 @@
|
|||
%!PS-Adobe-3.0
|
||||
%%Creator: groff version 1.08
|
||||
%%DocumentNeededResources: font Palatino-Bold
|
||||
%%+ font Courier-Bold
|
||||
%%+ font Palatino-Italic
|
||||
%%+ font Palatino-Roman
|
||||
%%+ font Courier
|
||||
%%+ font Symbol
|
||||
%%DocumentSuppliedResources: procset grops 1.08 0
|
||||
%%Pages: 8
|
||||
%%PageOrder: Ascend
|
||||
%%Orientation: Portrait
|
||||
%%EndComments
|
||||
%%BeginProlog
|
||||
%%BeginResource: procset grops 1.08 0
|
||||
/setpacking where{
|
||||
pop
|
||||
currentpacking
|
||||
true setpacking
|
||||
}if
|
||||
/grops 120 dict dup begin
|
||||
/SC 32 def
|
||||
/A/show load def
|
||||
/B{0 SC 3 -1 roll widthshow}bind def
|
||||
/C{0 exch ashow}bind def
|
||||
/D{0 exch 0 SC 5 2 roll awidthshow}bind def
|
||||
/E{0 rmoveto show}bind def
|
||||
/F{0 rmoveto 0 SC 3 -1 roll widthshow}bind def
|
||||
/G{0 rmoveto 0 exch ashow}bind def
|
||||
/H{0 rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
|
||||
/I{0 exch rmoveto show}bind def
|
||||
/J{0 exch rmoveto 0 SC 3 -1 roll widthshow}bind def
|
||||
/K{0 exch rmoveto 0 exch ashow}bind def
|
||||
/L{0 exch rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
|
||||
/M{rmoveto show}bind def
|
||||
/N{rmoveto 0 SC 3 -1 roll widthshow}bind def
|
||||
/O{rmoveto 0 exch ashow}bind def
|
||||
/P{rmoveto 0 exch 0 SC 5 2 roll awidthshow}bind def
|
||||
/Q{moveto show}bind def
|
||||
/R{moveto 0 SC 3 -1 roll widthshow}bind def
|
||||
/S{moveto 0 exch ashow}bind def
|
||||
/T{moveto 0 exch 0 SC 5 2 roll awidthshow}bind def
|
||||
/SF{
|
||||
findfont exch
|
||||
[exch dup 0 exch 0 exch neg 0 0]makefont
|
||||
dup setfont
|
||||
[exch/setfont cvx]cvx bind def
|
||||
}bind def
|
||||
/MF{
|
||||
findfont
|
||||
[5 2 roll
|
||||
0 3 1 roll
|
||||
neg 0 0]makefont
|
||||
dup setfont
|
||||
[exch/setfont cvx]cvx bind def
|
||||
}bind def
|
||||
/level0 0 def
|
||||
/RES 0 def
|
||||
/PL 0 def
|
||||
/LS 0 def
|
||||
/PLG{
|
||||
gsave newpath clippath pathbbox grestore
|
||||
exch pop add exch pop
|
||||
}bind def
|
||||
/BP{
|
||||
/level0 save def
|
||||
1 setlinecap
|
||||
1 setlinejoin
|
||||
72 RES div dup scale
|
||||
LS{
|
||||
90 rotate
|
||||
}{
|
||||
0 PL translate
|
||||
}ifelse
|
||||
1 -1 scale
|
||||
}bind def
|
||||
/EP{
|
||||
level0 restore
|
||||
showpage
|
||||
}bind def
|
||||
/DA{
|
||||
newpath arcn stroke
|
||||
}bind def
|
||||
/SN{
|
||||
transform
|
||||
.25 sub exch .25 sub exch
|
||||
round .25 add exch round .25 add exch
|
||||
itransform
|
||||
}bind def
|
||||
/DL{
|
||||
SN
|
||||
moveto
|
||||
SN
|
||||
lineto stroke
|
||||
}bind def
|
||||
/DC{
|
||||
newpath 0 360 arc closepath
|
||||
}bind def
|
||||
/TM matrix def
|
||||
/DE{
|
||||
TM currentmatrix pop
|
||||
translate scale newpath 0 0 .5 0 360 arc closepath
|
||||
TM setmatrix
|
||||
}bind def
|
||||
/RC/rcurveto load def
|
||||
/RL/rlineto load def
|
||||
/ST/stroke load def
|
||||
/MT/moveto load def
|
||||
/CL/closepath load def
|
||||
/FL{
|
||||
currentgray exch setgray fill setgray
|
||||
}bind def
|
||||
/BL/fill load def
|
||||
/LW/setlinewidth load def
|
||||
/RE{
|
||||
findfont
|
||||
dup maxlength 1 index/FontName known not{1 add}if dict begin
|
||||
{
|
||||
1 index/FID ne{def}{pop pop}ifelse
|
||||
}forall
|
||||
/Encoding exch def
|
||||
dup/FontName exch def
|
||||
currentdict end definefont pop
|
||||
}bind def
|
||||
/DEFS 0 def
|
||||
/EBEGIN{
|
||||
moveto
|
||||
DEFS begin
|
||||
}bind def
|
||||
/EEND/end load def
|
||||
/CNT 0 def
|
||||
/level1 0 def
|
||||
/PBEGIN{
|
||||
/level1 save def
|
||||
translate
|
||||
div 3 1 roll div exch scale
|
||||
neg exch neg exch translate
|
||||
0 setgray
|
||||
0 setlinecap
|
||||
1 setlinewidth
|
||||
0 setlinejoin
|
||||
10 setmiterlimit
|
||||
[]0 setdash
|
||||
/setstrokeadjust where{
|
||||
pop
|
||||
false setstrokeadjust
|
||||
}if
|
||||
/setoverprint where{
|
||||
pop
|
||||
false setoverprint
|
||||
}if
|
||||
newpath
|
||||
/CNT countdictstack def
|
||||
userdict begin
|
||||
/showpage{}def
|
||||
}bind def
|
||||
/PEND{
|
||||
clear
|
||||
countdictstack CNT sub{end}repeat
|
||||
level1 restore
|
||||
}bind def
|
||||
end def
|
||||
/setpacking where{
|
||||
pop
|
||||
setpacking
|
||||
}if
|
||||
%%EndResource
|
||||
%%IncludeResource: font Palatino-Bold
|
||||
%%IncludeResource: font Courier-Bold
|
||||
%%IncludeResource: font Palatino-Italic
|
||||
%%IncludeResource: font Palatino-Roman
|
||||
%%IncludeResource: font Courier
|
||||
%%IncludeResource: font Symbol
|
||||
grops begin/DEFS 1 dict def DEFS begin/u{.001 mul}bind def end/RES 72 def/PL
|
||||
792 def/LS false def/ENC0[/asciicircum/asciitilde/Scaron/Zcaron/scaron/zcaron
|
||||
/Ydieresis/trademark/quotesingle/.notdef/.notdef/.notdef/.notdef/.notdef
|
||||
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef
|
||||
/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/.notdef/space
|
||||
/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft
|
||||
/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four
|
||||
/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C
|
||||
/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash
|
||||
/bracketright/circumflex/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q
|
||||
/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/tilde/.notdef/quotesinglbase
|
||||
/guillemotleft/guillemotright/bullet/florin/fraction/perthousand/dagger
|
||||
/daggerdbl/endash/emdash/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/hungarumlaut
|
||||
/dotaccent/breve/caron/ring/ogonek/quotedblleft/quotedblright/oe/lslash
|
||||
/quotedblbase/OE/Lslash/.notdef/exclamdown/cent/sterling/currency/yen/brokenbar
|
||||
/section/dieresis/copyright/ordfeminine/guilsinglleft/logicalnot/minus
|
||||
/registered/macron/degree/plusminus/twosuperior/threesuperior/acute/mu
|
||||
/paragraph/periodcentered/cedilla/onesuperior/ordmasculine/guilsinglright
|
||||
/onequarter/onehalf/threequarters/questiondown/Agrave/Aacute/Acircumflex/Atilde
|
||||
/Adieresis/Aring/AE/Ccedilla/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute
|
||||
/Icircumflex/Idieresis/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis
|
||||
/multiply/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls
|
||||
/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla/egrave/eacute
|
||||
/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis/eth/ntilde/ograve
|
||||
/oacute/ocircumflex/otilde/odieresis/divide/oslash/ugrave/uacute/ucircumflex
|
||||
/udieresis/yacute/thorn/ydieresis]def/Courier@0 ENC0/Courier RE
|
||||
/Palatino-Roman@0 ENC0/Palatino-Roman RE/Palatino-Italic@0 ENC0/Palatino-Italic
|
||||
RE/Courier-Bold@0 ENC0/Courier-Bold RE/Palatino-Bold@0 ENC0/Palatino-Bold RE
|
||||
%%EndProlog
|
||||
%%Page: 1 1
|
||||
%%BeginPageSetup
|
||||
BP
|
||||
%%EndPageSetup
|
||||
/F0 12/Palatino-Bold@0 SF(Examples of)220.704 120 Q/F1 12/Courier-Bold@0 SF
|
||||
(pic)3 E F0(Macros)3 E/F2 10/Palatino-Italic@0 SF 1.1 -.55(W. R)248.32 144 T
|
||||
(ichard Stevens).55 E/F3 10/Palatino-Roman@0 SF .095
|
||||
(This document contains examples of the)97 201.6 R/F4 10/Courier@0 SF(pic)2.595
|
||||
E F3(macr)2.595 E .095(os used in my books.)-.18 F(Using)5.095 E F4(pic)2.595 E
|
||||
F3 -.18(re)2.595 G(quir).18 E(es)-.18 E 2.82(developing a set of macr)72 213.6
|
||||
R 2.821(os to do common tasks.)-.18 F 2.821(These macr)7.821 F 2.821
|
||||
(os have been developed and)-.18 F 1.193(tweaked over the past 7 years.)72
|
||||
225.6 R 1.193(Many of the macr)6.193 F 1.192(os, especially the splines, wer)
|
||||
-.18 F 3.692(ed)-.18 G 1.192(eveloped by)448.708 225.6 R(Gary W)72 237.6 Q
|
||||
(right.)-.74 E .4 LW 504 250.8 72 250.8 DL
|
||||
(The following shows the compass points on a cir)72 265.2 Q(cle.)-.18 E/F5 9
|
||||
/Courier@0 SF 8.8(A: circle)72 282.2 R(rad 0.5)5.4 E(arrow up 0.2 from A.n)97
|
||||
293.2 Q(arrow up 0.2 right 0.2 from A.ne)97 304.2 Q(arrow right 0.2 from A.e)97
|
||||
315.2 Q(arrow down 0.2 right 0.2 from A.se)97 326.2 Q(arrow down 0.2 from A.s)
|
||||
97 337.2 Q(arrow down 0.2 left 0.2 from A.sw)97 348.2 Q
|
||||
(arrow left 0.2 from A.w)97 359.2 Q(arrow up 0.2 left 0.2 from A.nw)97 370.2 Q
|
||||
5.4("c)97 381.2 S
|
||||
(heck the compass points on a circle" at A.e + \(0.3, 0\) ljust)113.2 381.2 Q
|
||||
122.4 449.6 36 DC ST 122.4 399.2 122.4 413.6 DL 122.4 399.2 MT 2.232 6.768 RL
|
||||
-4.464 0 RL CL BL 122.4 399.2 MT 2.232 6.768 RL -4.464 0 RL CL ST 162.288
|
||||
409.712 147.888 424.112 DL 162.288 409.712 MT -3.168 6.336 RL -3.168 -3.168 RL
|
||||
CL BL 162.288 409.712 MT -3.168 6.336 RL -3.168 -3.168 RL CL ST 172.8 449.6
|
||||
158.4 449.6 DL 172.8 449.6 MT -6.768 2.232 RL 0 -4.464 RL CL BL 172.8 449.6 MT
|
||||
-6.768 2.232 RL 0 -4.464 RL CL ST 162.288 489.488 147.888 475.088 DL 162.288
|
||||
489.488 MT -6.336 -3.168 RL 3.168 -3.168 RL CL BL 162.288 489.488 MT -6.336
|
||||
-3.168 RL 3.168 -3.168 RL CL ST 122.4 500 122.4 485.6 DL 122.4 500 MT -2.232
|
||||
-6.768 RL 4.464 0 RL CL BL 122.4 500 MT -2.232 -6.768 RL 4.464 0 RL CL ST
|
||||
82.512 489.488 96.912 475.088 DL 82.512 489.488 MT 3.168 -6.336 RL 3.168 3.168
|
||||
RL CL BL 82.512 489.488 MT 3.168 -6.336 RL 3.168 3.168 RL CL ST 72 449.6 86.4
|
||||
449.6 DL 72 449.6 MT 6.768 -2.232 RL 0 4.464 RL CL BL 72 449.6 MT 6.768 -2.232
|
||||
RL 0 4.464 RL CL ST 82.512 409.712 96.912 424.112 DL 82.512 409.712 MT 6.336
|
||||
3.168 RL -3.168 3.168 RL CL BL 82.512 409.712 MT 6.336 3.168 RL -3.168 3.168 RL
|
||||
CL ST F3(check the compass points on a cir)182.5 451.8 Q(cle)-.18 E 504 513.2
|
||||
72 513.2 DL(And the compass points on an ellipse.)72 527.6 Q F5 8.8(A: ellipse)
|
||||
72 544.6 R(wid 0.5 ht 0.3)5.4 E(arrow up 0.2 from A.n)97 555.6 Q
|
||||
(arrow up 0.2 right 0.2 from A.ne)97 566.6 Q(arrow right 0.2 from A.e)97 577.6
|
||||
Q(arrow down 0.2 right 0.2 from A.se)97 588.6 Q(arrow down 0.2 from A.s)97
|
||||
599.6 Q(arrow down 0.2 left 0.2 from A.sw)97 610.6 Q(arrow left 0.2 from A.w)97
|
||||
621.6 Q(arrow up 0.2 left 0.2 from A.nw)97 632.6 Q 5.4("c)97 643.6 S
|
||||
(heck the compass points on a ellipse" at A.e + \(0.3, 0\) ljust)113.2 643.6 Q
|
||||
36 21.6 104.4 686.8 DE ST 104.4 661.6 104.4 676 DL 104.4 661.6 MT 2.232 6.768
|
||||
RL -4.464 0 RL CL BL 104.4 661.6 MT 2.232 6.768 RL -4.464 0 RL CL ST 131.544
|
||||
664.768 117.144 679.168 DL 131.544 664.768 MT -3.168 6.336 RL -3.168 -3.168 RL
|
||||
CL BL 131.544 664.768 MT -3.168 6.336 RL -3.168 -3.168 RL CL ST 136.8 686.8
|
||||
122.4 686.8 DL 136.8 686.8 MT -6.768 2.232 RL 0 -4.464 RL CL BL 136.8 686.8 MT
|
||||
-6.768 2.232 RL 0 -4.464 RL CL ST 131.544 708.832 117.144 694.432 DL 131.544
|
||||
708.832 MT -6.336 -3.168 RL 3.168 -3.168 RL CL BL 131.544 708.832 MT -6.336
|
||||
-3.168 RL 3.168 -3.168 RL CL ST 104.4 712 104.4 697.6 DL 104.4 712 MT -2.232
|
||||
-6.768 RL 4.464 0 RL CL BL 104.4 712 MT -2.232 -6.768 RL 4.464 0 RL CL ST
|
||||
77.256 708.832 91.656 694.432 DL 77.256 708.832 MT 3.168 -6.336 RL 3.168 3.168
|
||||
RL CL BL 77.256 708.832 MT 3.168 -6.336 RL 3.168 3.168 RL CL ST 72 686.8 86.4
|
||||
686.8 DL 72 686.8 MT 6.768 -2.232 RL 0 4.464 RL CL BL 72 686.8 MT 6.768 -2.232
|
||||
RL 0 4.464 RL CL ST 77.256 664.768 91.656 679.168 DL 77.256 664.768 MT 6.336
|
||||
3.168 RL -3.168 3.168 RL CL BL 77.256 664.768 MT 6.336 3.168 RL -3.168 3.168 RL
|
||||
CL ST F3(check the compass points on a ellipse)146.5 689 Q EP
|
||||
%%Page: 2 2
|
||||
%%BeginPageSetup
|
||||
BP
|
||||
%%EndPageSetup
|
||||
/F0 10/Palatino-Roman@0 SF 2.5(-2-)279.67 48 S .4 LW 504 84 72 84 DL 2.969(Iu)
|
||||
72 98.4 S .469(se four macr)84.369 98.4 R .468
|
||||
(os to draw braces in all our dir)-.18 F 2.968(ections. Each)-.18 F(macr)2.968
|
||||
E 2.968(od)-.18 G .468(e\214nes the location)378.276 98.4 R/F1 10/Courier@0 SF
|
||||
(Bracept)2.968 E F0 .823(and text can be placed ther)72 110.4 R 3.323(ea)-.18 G
|
||||
.823(fter drawing the brace.)207.607 110.4 R .823
|
||||
(When multiple lines of text ar)5.823 F 3.323(en)-.18 G .823(eeded at)465.827
|
||||
110.4 R(the)72 122.4 Q F1(Bracept)2.916 E F0 2.916(Id)2.916 G .415
|
||||
(raw a box of width 0.1, position the box at the)146.098 122.4 R F1(Bracept)
|
||||
2.915 E F0 .415(and then either left jus-)2.915 F .621
|
||||
(tify or right justify each line.)72 134.4 R .622(Note that I use the)5.621 F
|
||||
F1(left_space)3.122 E F0(macr)3.122 E 3.122(ot)-.18 G 3.122(oa)389.92 134.4 S
|
||||
.622(dd 2 inches of spacing)403.502 134.4 R(to the left of the pictur)72 146.4
|
||||
Q 2.5(e. This)-.18 F(is because the text items have no width.)2.5 E/F2 9
|
||||
/Courier@0 SF 8.8(B: box)72 163.4 R(at \(2.0, 0\))5.4 E
|
||||
(right_brace\( B.ne, B.se \))97 174.4 Q 5.4("\\)122 185.4 S
|
||||
(fCright_brace\\fP" at Bracept ljust)138.2 185.4 Q(left_brace\( B.nw, B.sw \))
|
||||
97 196.4 Q(box invis wid 0.1 with .c at Bracept \\)122 207.4 Q
|
||||
("this is from the " rjust \\)147 218.4 Q("\\fCleft_brace\\fP " rjust \\)147
|
||||
229.4 Q("macro " rjust)147 240.4 Q(left_space\(Bracept, 2.0\))97 251.4 Q
|
||||
(top_brace\( B.nw, B.ne \))97 262.4 Q("\\fCtop_brace\\fP" at Bracept above)122
|
||||
273.4 Q(bottom_brace\( B.sw, B.se \))97 284.4 Q 5.4("\\)122 295.4 S
|
||||
(fCbottom_brace\\fP" at Bracept below)138.2 295.4 Q 283.536 362.936 MT 0 -36 RL
|
||||
-54 0 RL 0 36 RL CL ST 290.304 331.4 4.464 -0.0000 -90.0000 DA 294.768 342.632
|
||||
294.768 331.4 DL 297 344.864 294.768 342.632 DL 294.768 347.168 297 344.936 DL
|
||||
294.768 358.4 294.768 347.168 DL 290.232 358.472 4.464 90.0000 0.0000 DA F1
|
||||
(right_brace)299.5 347.136 Q 222.768 331.4 4.464 -90.0000 180.0000 DA 218.232
|
||||
342.632 218.232 331.4 DL 216 344.864 218.232 342.632 DL 218.232 347.168 216
|
||||
344.936 DL 218.232 358.4 218.232 347.168 DL 222.696 358.4 4.464 -180.0000
|
||||
90.0000 DA F0(this is fr)147.36 335.136 Q(om the)-.18 E F1(left_brace)153.5
|
||||
347.136 Q F0(macr)186 359.136 Q(o)-.18 E 234 320.096 4.464 -90.0000 180.0000 DA
|
||||
254.232 315.632 234 315.632 DL 256.464 313.4 254.232 315.632 DL 258.696 315.632
|
||||
256.464 313.4 DL 279 315.632 258.768 315.632 DL 279.072 320.168 4.464 -0.0000
|
||||
-90.0000 DA F1(top_brace)229.464 309.6 Q 234 369.632 4.464 -180.0000 90.0000 DA
|
||||
254.232 374.168 234 374.168 DL 256.464 376.4 254.232 374.168 DL 258.696 374.168
|
||||
256.464 376.4 DL 279 374.168 258.768 374.168 DL 279 369.704 4.464 90.0000
|
||||
0.0000 DA(bottom_brace)221.714 384.6 Q 504 389.6 72 389.6 DL F0 .445
|
||||
(The two macr)72 404 R(os)-.18 E F1(label_above)2.945 E F0(and)2.945 E F1
|
||||
(label_below)2.945 E F0 .445(draw labels above or below a box.)2.945 F -.92(Yo)
|
||||
5.445 G 2.945(uh).92 G(ave)488.56 404 Q .728(to measur)72 416 R 3.228(et)-.18 G
|
||||
.728(he lines to the right and left of the arr)127.886 416 R .728
|
||||
(ows, to leave enough space for the text in the)-.18 F(middle.)72 428 Q F2 8.8
|
||||
(A: box)72 445 R(wid 3.0 ht 0.4)5.4 E
|
||||
(label_above\( A.nw, A.ne, 1.2, "a label" \))97 456 Q
|
||||
(label_below\( A.sw, A.se, 1.0, "another label" \))97 467 Q 288 535.4 MT 0
|
||||
-28.8 RL -216 0 RL 0 28.8 RL CL ST 72 485 72 499.4 DL 288 485 288 499.4 DL
|
||||
158.4 492.2 72 492.2 DL 72 492.2 MT 6.768 -2.232 RL 0 4.464 RL CL BL 72 492.2
|
||||
MT 6.768 -2.232 RL 0 4.464 RL CL ST 201.6 492.2 288 492.2 DL 288 492.2 MT
|
||||
-6.768 2.232 RL 0 -4.464 RL CL BL 288 492.2 MT -6.768 2.232 RL 0 -4.464 RL CL
|
||||
ST F0 2.5(al)165.68 494.4 S(abel)176.09 494.4 Q 72 557 72 542.6 DL 288 557 288
|
||||
542.6 DL 144 549.8 72 549.8 DL 72 549.8 MT 6.768 -2.232 RL 0 4.464 RL CL BL 72
|
||||
549.8 MT 6.768 -2.232 RL 0 4.464 RL CL ST 216 549.8 288 549.8 DL 288 549.8 MT
|
||||
-6.768 2.232 RL 0 -4.464 RL CL BL 288 549.8 MT -6.768 2.232 RL 0 -4.464 RL CL
|
||||
ST(another label)151.13 552 Q EP
|
||||
%%Page: 3 3
|
||||
%%BeginPageSetup
|
||||
BP
|
||||
%%EndPageSetup
|
||||
/F0 10/Palatino-Roman@0 SF 2.5(-3-)279.67 48 S .4 LW 504 84 72 84 DL(The)72
|
||||
98.4 Q/F1 10/Courier@0 SF(line_gap_down)2.5 E F0(and)2.5 E F1(line_gap_right)
|
||||
2.5 E F0(macr)2.5 E(os draw a line with a squiggle in the middle.)-.18 E/F2 9
|
||||
/Courier@0 SF 8.8(A: line)72 115.4 R(right 0.2)5.4 E 8.8(B: line)72 126.4 R
|
||||
(right 0.2 with .start at A.start + \(0, -0.8\))5.4 E
|
||||
(line_gap_down\( A.c, B.c \))97 137.4 Q 8.8(C: line)72 159.4 R
|
||||
(down 0.2 with .start at A.end + \(2.0, 0\))5.4 E 8.8(D: line)72 170.4 R
|
||||
(down 0.2 with .start at C.start + \(1.0, 0\))5.4 E
|
||||
(line_gap_right\( C.c, D.c \))97 181.4 Q 86.4 199.4 72 199.4 DL 86.4 257 72 257
|
||||
DL 79.2 223.88 79.2 199.4 DL 82.08 223.88 79.2 223.88 DL 76.32 232.52 82.08
|
||||
223.88 DL 79.2 232.52 76.32 232.52 DL 79.2 257 79.2 232.52 DL 230.4 213.8 230.4
|
||||
199.4 DL 302.4 213.8 302.4 199.4 DL 262.08 206.6 230.4 206.6 DL 262.08 203.72
|
||||
262.08 206.6 DL 270.72 209.48 262.08 203.72 DL 270.72 206.6 270.72 209.48 DL
|
||||
302.4 206.6 270.72 206.6 DL 504 270.2 72 270.2 DL F0 1.949(This is the)72 284.6
|
||||
R F1(vv_spline)4.449 E F0(macr)4.449 E 4.449(o. The)-.18 F F1(dash_box)4.449 E
|
||||
F0(macr)4.449 E 4.449(od)-.18 G 1.949(raws a dashed box ar)332.562 284.6 R 1.95
|
||||
(ound anything,)-.18 F(given the lower)72 296.6 Q(-left and upper)-.18 E
|
||||
(-right locations.)-.18 E F2 8.8(A: box)72 313.6 R(ht 0.2 wid 0.2)5.4 E 8.8
|
||||
(B: box)72 324.6 R(ht 0.2 wid 0.2 with .n at A.s + \(0, -1.0\))5.4 E
|
||||
(vv_spline\( A.e, B.ne, -0.05, 0.5, -> \))97 335.6 Q 8.8(C: box)72 357.6 R
|
||||
(ht 0.2 wid 0.2 with .w at A.e + \(2.0, 0\))5.4 E 8.8(D: box)72 368.6 R
|
||||
(ht 0.2 wid 0.2 with .n at C.s + \(0, -1.0\))5.4 E
|
||||
(vv_spline\( C.e, D.ne, -0.10, 0.3, -> \))97 379.6 Q
|
||||
(dash_box\( D.sw, C.ne + \(0.2, 0\) \))97 390.6 Q
|
||||
("the last line drawn" at last line.c below)122 401.6 Q 5.4("t)122 412.6 S
|
||||
(he 2nd last line drawn" at 2nd last line.c ljust)138.2 412.6 Q 86.4 459.4 MT 0
|
||||
-14.4 RL -14.4 0 RL 0 14.4 RL CL ST 86.4 545.8 MT 0 -14.4 RL -14.4 0 RL 0 14.4
|
||||
RL CL ST 82.8 452.2 86.4 452.2 DL 86.4 452.2 MT 18 0 RL 12 0 12 13.2 0 39.6 RC
|
||||
-18 39.6 RL ST 86.4 531.4 MT .72 -7.056 RL 4.104 1.872 RL CL BL 86.4 531.4 MT
|
||||
.72 -7.056 RL 4.104 1.872 RL CL ST 244.8 459.4 MT 0 -14.4 RL -14.4 0 RL 0 14.4
|
||||
RL CL ST 244.8 545.8 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL ST 237.6 452.2 244.8
|
||||
452.2 DL 244.8 452.2 MT 10.8 0 RL 7.2 0 7.2 13.2 0 39.6 RC -10.8 39.6 RL ST
|
||||
244.8 531.4 MT -.36 -7.128 RL 4.32 1.152 RL CL BL 244.8 531.4 MT -.36 -7.128 RL
|
||||
4.32 1.152 RL CL ST 216 556.6 216 560.2 DL 216 549.616 216 553.216 DL 216
|
||||
542.632 216 546.232 DL 216 535.576 216 539.176 DL 216 528.592 216 532.192 DL
|
||||
216 521.608 216 525.208 DL 216 514.624 216 518.224 DL 216 507.568 216 511.168
|
||||
DL 216 500.584 216 504.184 DL 216 493.6 216 497.2 DL 216 486.616 216 490.216 DL
|
||||
216 479.632 216 483.232 DL 216 472.576 216 476.176 DL 216 465.592 216 469.192
|
||||
DL 216 458.608 216 462.208 DL 216 451.624 216 455.224 DL 216 444.568 216
|
||||
448.168 DL 216 437.584 216 441.184 DL 216 430.6 216 434.2 DL 219.6 430.6 216
|
||||
430.6 DL 226.368 430.6 222.768 430.6 DL 233.136 430.6 229.536 430.6 DL 239.832
|
||||
430.6 236.232 430.6 DL 246.6 430.6 243 430.6 DL 253.368 430.6 249.768 430.6 DL
|
||||
260.136 430.6 256.536 430.6 DL 266.832 430.6 263.232 430.6 DL 273.6 430.6 270
|
||||
430.6 DL 273.6 434.2 273.6 430.6 DL 273.6 441.184 273.6 437.584 DL 273.6
|
||||
448.168 273.6 444.568 DL 273.6 455.224 273.6 451.624 DL 273.6 462.208 273.6
|
||||
458.608 DL 273.6 469.192 273.6 465.592 DL 273.6 476.176 273.6 472.576 DL 273.6
|
||||
483.232 273.6 479.632 DL 273.6 490.216 273.6 486.616 DL 273.6 497.2 273.6 493.6
|
||||
DL 273.6 504.184 273.6 500.584 DL 273.6 511.168 273.6 507.568 DL 273.6 518.224
|
||||
273.6 514.624 DL 273.6 525.208 273.6 521.608 DL 273.6 532.192 273.6 528.592 DL
|
||||
273.6 539.176 273.6 535.576 DL 273.6 546.232 273.6 542.632 DL 273.6 553.216
|
||||
273.6 549.616 DL 273.6 560.2 273.6 556.6 DL 270 560.2 273.6 560.2 DL 263.232
|
||||
560.2 266.832 560.2 DL 256.536 560.2 260.136 560.2 DL 249.768 560.2 253.368
|
||||
560.2 DL 243 560.2 246.6 560.2 DL 236.232 560.2 239.832 560.2 DL 229.536 560.2
|
||||
233.136 560.2 DL 222.768 560.2 226.368 560.2 DL 216 560.2 219.6 560.2 DL F0
|
||||
(the last line drawn)203.585 568.4 Q(the 2nd last line drawn)276.1 497.6 Q EP
|
||||
%%Page: 4 4
|
||||
%%BeginPageSetup
|
||||
BP
|
||||
%%EndPageSetup
|
||||
/F0 10/Palatino-Roman@0 SF 2.5(-4-)279.67 48 S .4 LW 504 84 72 84 DL(The)72
|
||||
94.8 Q/F1 10/Courier@0 SF(hz_spline)2.5 E F0(macr)2.5 E 2.5(ow)-.18 G
|
||||
(ith some dif)186.08 94.8 Q(fer)-.18 E(ent values for the)-.18 E F1(overrun)2.5
|
||||
E F0(ar)2.5 E(gument.)-.18 E/F2 9/Courier@0 SF(down)97 111.8 Q 3.4(A1: box)72
|
||||
122.8 R(ht 0.2 wid 0.2)5.4 E 3.4(A2: box)72 133.8 R(ht 0.2 wid 0.2)5.4 E 8.8
|
||||
(B: box)72 144.8 R(ht 0.2 wid 0.2 with .sw at A1.ne + \(1.0,)5.4 E(0.5\))345.4
|
||||
144.8 Q 8.8(C: box)72 155.8 R(ht 0.2 wid 0.2 with .nw at A1.se + \(3.0, -0.5\))
|
||||
5.4 E(hz_spline\( A1.e, B.w, 0.05, 0, ->, 0.5, -0.2 \))97 166.8 Q
|
||||
(hz_spline\( A2.e, C.w, 0, 0.10, <-, 0.5, -0.2 \))97 177.8 Q 5.4("o)97 188.8 S
|
||||
(verrun = \\\(mi0.2" at B.e ljust)113.2 188.8 Q(down)97 210.8 Q 3.4(A1: box)72
|
||||
221.8 R(ht 0.2 wid 0.2 with .n at A1.s + \(0, -1.7\))5.4 E 3.4(A2: box)72 232.8
|
||||
R(ht 0.2 wid 0.2)5.4 E 8.8(B: box)72 243.8 R
|
||||
(ht 0.2 wid 0.2 with .sw at A1.ne + \(1.0,)5.4 E(0.5\))345.4 243.8 Q 8.8
|
||||
(C: box)72 254.8 R(ht 0.2 wid 0.2 with .nw at A1.se + \(3.0, -0.5\))5.4 E
|
||||
(hz_spline\( A1.e, B.w, 0.05, 0, ->, 0.5, -0.1 \))97 265.8 Q
|
||||
(hz_spline\( A2.e, C.w, 0, 0.10, <-, 0.5, -0.1 \))97 276.8 Q 5.4("o)97 287.8 S
|
||||
(verrun = \\\(mi0.1" at B.e ljust)113.2 287.8 Q(down)97 309.8 Q 3.4(A1: box)72
|
||||
320.8 R(ht 0.2 wid 0.2 with .n at A1.s + \(0, -1.7\))5.4 E 3.4(A2: box)72 331.8
|
||||
R(ht 0.2 wid 0.2)5.4 E 8.8(B: box)72 342.8 R
|
||||
(ht 0.2 wid 0.2 with .sw at A1.ne + \(1.0,)5.4 E(0.5\))345.4 342.8 Q 8.8
|
||||
(C: box)72 353.8 R(ht 0.2 wid 0.2 with .nw at A1.se + \(3.0, -0.5\))5.4 E
|
||||
(hz_spline\( A1.e, B.w, 0.05, 0, ->, 0.5, 0.1 \))97 364.8 Q
|
||||
(hz_spline\( A2.e, C.w, 0, 0.10, <-, 0.5, 0.1 \))97 375.8 Q 5.4("o)97 386.8 S
|
||||
(verrun = 0.1" at B.e ljust)113.2 386.8 Q(down)97 408.8 Q 3.4(A1: box)72 419.8
|
||||
R(ht 0.2 wid 0.2 with .n at A1.s + \(0, -1.7\))5.4 E 3.4(A2: box)72 430.8 R
|
||||
(ht 0.2 wid 0.2)5.4 E 8.8(B: box)72 441.8 R
|
||||
(ht 0.2 wid 0.2 with .sw at A1.ne + \(1.0,)5.4 E(0.5\))345.4 441.8 Q 8.8
|
||||
(C: box)72 452.8 R(ht 0.2 wid 0.2 with .nw at A1.se + \(3.0, -0.5\))5.4 E
|
||||
(hz_spline\( A1.e, B.w, 0.05, 0, ->, 0.5, 0.2 \))97 463.8 Q
|
||||
(hz_spline\( A2.e, C.w, 0, 0.10, <-, 0.5, 0.2 \))97 474.8 Q 5.4("o)97 485.8 S
|
||||
(verrun = 0.2" at B.e ljust)113.2 485.8 Q EP
|
||||
%%Page: 5 5
|
||||
%%BeginPageSetup
|
||||
BP
|
||||
%%EndPageSetup
|
||||
/F0 10/Palatino-Roman@0 SF 2.5(-5-)279.67 48 S 86.4 148.8 MT 0 -14.4 RL -14.4 0
|
||||
RL 0 14.4 RL CL .4 LW ST 86.4 163.2 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL ST
|
||||
172.8 98.4 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL ST 316.8 199.2 MT 0 -14.4 RL
|
||||
-14.4 0 RL 0 14.4 RL CL ST 86.4 141.6 MT 10.8 0 RL 7.2 0 15.6 -8.4 25.2 -25.2
|
||||
RC 9.6 -16.8 18 -25.2 25.2 -25.2 RC 10.8 0 RL ST 158.4 91.2 MT -6.768 2.232 RL
|
||||
0 -4.464 RL CL BL 158.4 91.2 MT -6.768 2.232 RL 0 -4.464 RL CL ST 82.8 141.6
|
||||
86.4 141.6 DL 86.4 156 MT 32.4 0 RL 21.6 0 46.8 6 75.6 18 RC 28.8 12 54 18 75.6
|
||||
18 RC 32.4 0 RL ST 86.4 156 MT 6.768 -2.232 RL 0 4.464 RL CL BL 86.4 156 MT
|
||||
6.768 -2.232 RL 0 4.464 RL CL ST 309.6 192 302.4 192 DL(overr)175.3 93.4 Q
|
||||
(un =)-.08 E/F1 10/Symbol SF(-)2.5 E F0(0.2)A 86.4 285.6 MT 0 -14.4 RL -14.4 0
|
||||
RL 0 14.4 RL CL ST 86.4 300 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL ST 172.8
|
||||
235.2 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL ST 316.8 336 MT 0 -14.4 RL -14.4 0
|
||||
RL 0 14.4 RL CL ST 86.4 278.4 MT 14.4 0 RL 9.6 0 16.8 -8.4 21.6 -25.2 RC 4.8
|
||||
-16.8 12 -25.2 21.6 -25.2 RC 14.4 0 RL ST 158.4 228 MT -6.768 2.232 RL 0 -4.536
|
||||
RL CL BL 158.4 228 MT -6.768 2.232 RL 0 -4.536 RL CL ST 82.8 278.4 86.4 278.4
|
||||
DL 86.4 292.8 MT 43.2 0 RL 28.8 0 50.4 6 64.8 18 RC 14.4 12 36 18 64.8 18 RC
|
||||
43.2 0 RL ST 86.4 292.8 MT 6.768 -2.232 RL 0 4.464 RL CL BL 86.4 292.8 MT 6.768
|
||||
-2.232 RL 0 4.464 RL CL ST 309.6 328.8 302.4 328.8 DL(overr)175.3 230.2 Q(un =)
|
||||
-.08 E F1(-)2.5 E F0(0.1)A 86.4 422.4 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL ST
|
||||
86.4 436.8 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL ST 172.8 372 MT 0 -14.4 RL
|
||||
-14.4 0 RL 0 14.4 RL CL ST 316.8 472.8 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL ST
|
||||
86.4 415.2 MT 21.6 0 RL 14.4 0 19.2 -8.4 14.4 -25.2 RC -4.8 -16.8 0 -25.2 14.4
|
||||
-25.2 RC 21.6 0 RL ST 158.4 364.8 MT -6.768 2.232 RL 0 -4.464 RL CL BL 158.4
|
||||
364.8 MT -6.768 2.232 RL 0 -4.464 RL CL ST 82.8 415.2 86.4 415.2 DL 86.4 429.6
|
||||
MT 64.8 0 RL 43.2 0 57.6 6 43.2 18 RC -14.4 12 0 18 43.2 18 RC 64.8 0 RL ST
|
||||
86.4 429.6 MT 6.768 -2.232 RL 0 4.464 RL CL BL 86.4 429.6 MT 6.768 -2.232 RL 0
|
||||
4.464 RL CL ST 309.6 465.6 302.4 465.6 DL(overr)175.3 367 Q(un = 0.1)-.08 E
|
||||
86.4 559.2 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL ST 86.4 573.6 MT 0 -14.4 RL
|
||||
-14.4 0 RL 0 14.4 RL CL ST 172.8 508.8 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL ST
|
||||
316.8 609.6 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL ST 86.4 552 MT 25.2 0 RL 16.8
|
||||
0 20.4 -8.4 10.8 -25.2 RC -9.6 -16.8 -6 -25.2 10.8 -25.2 RC 25.2 0 RL ST 158.4
|
||||
501.6 MT -6.768 2.232 RL 0 -4.464 RL CL BL 158.4 501.6 MT -6.768 2.232 RL 0
|
||||
-4.464 RL CL ST 82.8 552 86.4 552 DL 86.4 566.4 MT 75.6 0 RL 50.4 0 61.2 6 32.4
|
||||
18 RC -28.8 12 -18 18 32.4 18 RC 75.6 0 RL ST 86.4 566.4 MT 6.768 -2.232 RL 0
|
||||
4.464 RL CL BL 86.4 566.4 MT 6.768 -2.232 RL 0 4.464 RL CL ST 309.6 602.4 302.4
|
||||
602.4 DL(overr)175.3 503.8 Q(un = 0.2)-.08 E EP
|
||||
%%Page: 6 6
|
||||
%%BeginPageSetup
|
||||
BP
|
||||
%%EndPageSetup
|
||||
/F0 10/Palatino-Roman@0 SF 2.5(-6-)279.67 48 S .4 LW 504 84 72 84 DL(The)72
|
||||
98.4 Q/F1 10/Courier@0 SF(spline_dl)3.099 E F0 .599
|
||||
(draws a spline down on the left side, and the)3.099 F F1(spline_ur)3.099 E F0
|
||||
.598(goes up on the right)3.099 F 2.5(side. Ther)72 110.4 R 2.5(ea)-.18 G .36
|
||||
-.18(re a)130.35 110.4 T(lso).18 E F1(spline_dr)2.5 E F0(and)2.5 E F1
|
||||
(spline_ul)2.5 E F0(macr)2.5 E(os.)-.18 E/F2 9/Courier@0 SF(down)97 127.4 Q 8.8
|
||||
(A: box)72 138.4 R(ht 0.2 wid 1.0 "A")5.4 E 8.8(B: box)72 149.4 R
|
||||
(ht 0.2 wid 1.0 "B")5.4 E 8.8(C: box)72 160.4 R(ht 0.2 wid 1.0 "C")5.4 E 8.8
|
||||
(D: box)72 171.4 R(ht 0.2 wid 1.0 "D")5.4 E 8.8(E: box)72 182.4 R
|
||||
(ht 0.2 wid 1.0 "E")5.4 E 8.8(F: box)72 193.4 R(ht 0.2 wid 1.0 "F")5.4 E 8.8
|
||||
(G: box)72 204.4 R(ht 0.2 wid 1.0 "G")5.4 E 8.8(H: box)72 215.4 R
|
||||
(ht 0.2 wid 1.0 "H")5.4 E(spline_dl\( A.w, H.w,)97 226.4 Q(0.1, 0.5, -> \))
|
||||
215.8 226.4 Q(spline_dl\( B.w, G.w,)97 237.4 Q(0.1, 0.4, -> \))215.8 237.4 Q
|
||||
(spline_dl\( C.w, F.w,)97 248.4 Q(0.1, 0.3, -> \))215.8 248.4 Q
|
||||
(spline_ur\( H.e, A.e, -0.1, 0.4, -> \))97 259.4 Q
|
||||
(spline_ur\( G.e, B.e, -0.1, 0.3, -> \))97 270.4 Q
|
||||
(spline_ur\( F.e, C.e, -0.1, 0.2, -> \))97 281.4 Q 180 313.8 MT 0 -14.4 RL -72
|
||||
0 RL 0 14.4 RL CL ST F0(A)140.11 308.8 Q 180 328.2 MT 0 -14.4 RL -72 0 RL 0
|
||||
14.4 RL CL ST(B)140.945 323.2 Q 180 342.6 MT 0 -14.4 RL -72 0 RL 0 14.4 RL CL
|
||||
ST(C)140.455 337.6 Q 180 357 MT 0 -14.4 RL -72 0 RL 0 14.4 RL CL ST(D)140.13
|
||||
352 Q 180 371.4 MT 0 -14.4 RL -72 0 RL 0 14.4 RL CL ST(E)140.945 366.4 Q 180
|
||||
385.8 MT 0 -14.4 RL -72 0 RL 0 14.4 RL CL ST(F)141.22 380.8 Q 180 400.2 MT 0
|
||||
-14.4 RL -72 0 RL 0 14.4 RL CL ST(G)140.185 395.2 Q 180 414.6 MT 0 -14.4 RL -72
|
||||
0 RL 0 14.4 RL CL ST(H)139.84 409.6 Q 115.2 306.6 108 306.6 DL 108 306.6 MT -18
|
||||
0 RL -12 0 -18 6 -18 18 RC 0 12 0 22.8 0 32.4 RC 0 9.6 0 20.4 0 32.4 RC 0 12 6
|
||||
18 18 18 RC 18 0 RL ST 108 407.4 MT -6.768 2.232 RL 0 -4.464 RL CL BL 108 407.4
|
||||
MT -6.768 2.232 RL 0 -4.464 RL CL ST 115.2 321 108 321 DL 108 321 MT -14.4 0 RL
|
||||
-9.6 0 -14.4 4.8 -14.4 14.4 RC 0 9.6 0 16.8 0 21.6 RC 0 4.8 0 12 0 21.6 RC 0
|
||||
9.6 4.8 14.4 14.4 14.4 RC 14.4 0 RL ST 108 393 MT -6.768 2.232 RL 0 -4.464 RL
|
||||
CL BL 108 393 MT -6.768 2.232 RL 0 -4.464 RL CL ST 115.2 335.4 108 335.4 DL 108
|
||||
335.4 MT -10.8 0 RL -7.2 0 -10.8 3.6 -10.8 10.8 RC 0 7.2 0 10.8 0 10.8 RC 0 0 0
|
||||
3.6 0 10.8 RC 0 7.2 3.6 10.8 10.8 10.8 RC 10.8 0 RL ST 108 378.6 MT -6.768
|
||||
2.232 RL 0 -4.464 RL CL BL 108 378.6 MT -6.768 2.232 RL 0 -4.464 RL CL ST 172.8
|
||||
407.4 180 407.4 DL 180 407.4 MT 14.4 0 RL 9.6 0 14.4 -4.8 14.4 -14.4 RC 0 -9.6
|
||||
0 -21.6 0 -36 RC 0 -14.4 0 -26.4 0 -36 RC 0 -9.6 -4.8 -14.4 -14.4 -14.4 RC
|
||||
-14.4 0 RL ST 180 306.6 MT 6.768 -2.232 RL 0 4.464 RL CL BL 180 306.6 MT 6.768
|
||||
-2.232 RL 0 4.464 RL CL ST 172.8 393 180 393 DL 180 393 MT 10.8 0 RL 7.2 0 10.8
|
||||
-3.6 10.8 -10.8 RC 0 -7.2 0 -15.6 0 -25.2 RC 0 -9.6 0 -18 0 -25.2 RC 0 -7.2
|
||||
-3.6 -10.8 -10.8 -10.8 RC -10.8 0 RL ST 180 321 MT 6.768 -2.232 RL 0 4.464 RL
|
||||
CL BL 180 321 MT 6.768 -2.232 RL 0 4.464 RL CL ST 172.8 378.6 180 378.6 DL 180
|
||||
378.6 MT 7.2 0 RL 4.8 0 7.2 -2.4 7.2 -7.2 RC 0 -4.8 0 -9.6 0 -14.4 RC 0 -4.8 0
|
||||
-9.6 0 -14.4 RC 0 -4.8 -2.4 -7.2 -7.2 -7.2 RC -7.2 0 RL ST 180 335.4 MT 6.768
|
||||
-2.232 RL 0 4.464 RL CL BL 180 335.4 MT 6.768 -2.232 RL 0 4.464 RL CL ST 504
|
||||
427.8 72 427.8 DL 1.958(The following four demonstrate macr)72 442.2 R 1.958
|
||||
(os right-up-right, right-down-right, left-up-left, and left-)-.18 F
|
||||
(down-left.)72 454.2 Q F2(down)97 471.2 Q 3.4(A1: box)72 482.2 R
|
||||
(ht 0.2 wid 0.2)5.4 E 3.4(A2: box)72 493.2 R(ht 0.2 wid 0.2)5.4 E 8.8(B: box)72
|
||||
504.2 R(ht 0.2 wid 0.2 with .sw at A1.ne + \( 1.0,)5.4 E(0.5\))350.8 504.2 Q
|
||||
8.8(C: box)72 515.2 R(ht 0.2 wid 0.2 with .nw at A1.se + \( 2.0, -0.5\))5.4 E
|
||||
8.8(D: box)72 526.2 R(ht 0.2 wid 0.2 with .se at A1.nw + \(-1.0,)5.4 E(0.5\))
|
||||
350.8 526.2 Q 8.8(E: box)72 537.2 R
|
||||
(ht 0.2 wid 0.2 with .ne at A1.sw + \(-2.0, -0.5\))5.4 E
|
||||
(spline_rur\( A1.e, B.w, -0.05, 0, -> \))97 548.2 Q
|
||||
(spline_rdr\( A2.e, C.w, -0.05, 0, -> \))97 559.2 Q(spline_lul\( A1.w, D.e,)97
|
||||
570.2 Q(0.05, 0, -> \))226.6 570.2 Q(spline_ldl\( A2.w, E.e,)97 581.2 Q
|
||||
(0.05, 0, -> \))226.6 581.2 Q 244.8 664 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL
|
||||
ST 244.8 678.4 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL ST 331.2 613.6 MT 0 -14.4
|
||||
RL -14.4 0 RL 0 14.4 RL CL ST 403.2 714.4 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL
|
||||
ST 158.4 613.6 MT 0 -14.4 RL -14.4 0 RL 0 14.4 RL CL ST 86.4 714.4 MT 0 -14.4
|
||||
RL -14.4 0 RL 0 14.4 RL CL ST 241.2 656.8 244.8 656.8 DL 244.8 656.8 MT 10.8 0
|
||||
RL 7.2 0 13.2 0 18 0 RC 4.8 0 7.2 -2.4 7.2 -7.2 RC 0 -4.8 0 -10.8 0 -18 RC 0
|
||||
-7.2 0 -13.2 0 -18 RC 0 -4.8 2.4 -7.2 7.2 -7.2 RC 4.8 0 10.8 0 18 0 RC 10.8 0
|
||||
RL ST 316.8 606.4 MT -6.768 2.232 RL 0 -4.464 RL CL BL 316.8 606.4 MT -6.768
|
||||
2.232 RL 0 -4.464 RL CL ST 241.2 671.2 244.8 671.2 DL 244.8 671.2 MT 28.8 0 RL
|
||||
19.2 0 31.2 0 36 0 RC 4.8 0 7.2 2.4 7.2 7.2 RC 0 4.8 0 8.4 0 10.8 RC 0 2.4 0 6
|
||||
0 10.8 RC 0 4.8 2.4 7.2 7.2 7.2 RC 4.8 0 16.8 0 36 0 RC 28.8 0 RL ST 388.8
|
||||
707.2 MT -6.768 2.232 RL 0 -4.464 RL CL BL 388.8 707.2 MT -6.768 2.232 RL 0
|
||||
-4.464 RL CL ST 234 656.8 230.4 656.8 DL 230.4 656.8 MT -10.8 0 RL -7.2 0 -13.2
|
||||
0 -18 0 RC -4.8 0 -7.2 -2.4 -7.2 -7.2 RC 0 -4.8 0 -10.8 0 -18 RC 0 -7.2 0 -13.2
|
||||
0 -18 RC 0 -4.8 -2.4 -7.2 -7.2 -7.2 RC -4.8 0 -10.8 0 -18 0 RC -10.8 0 RL ST
|
||||
158.4 606.4 MT 6.768 -2.232 RL 0 4.464 RL CL BL 158.4 606.4 MT 6.768 -2.232 RL
|
||||
0 4.464 RL CL ST 234 671.2 230.4 671.2 DL 230.4 671.2 MT -28.8 0 RL -19.2 0
|
||||
-31.2 0 -36 0 RC -4.8 0 -7.2 2.4 -7.2 7.2 RC 0 4.8 0 8.4 0 10.8 RC 0 2.4 0 6 0
|
||||
10.8 RC 0 4.8 -2.4 7.2 -7.2 7.2 RC -4.8 0 -16.8 0 -36 0 RC -28.8 0 RL ST 86.4
|
||||
707.2 MT 6.768 -2.232 RL 0 4.464 RL CL BL 86.4 707.2 MT 6.768 -2.232 RL 0 4.464
|
||||
RL CL ST EP
|
||||
%%Page: 7 7
|
||||
%%BeginPageSetup
|
||||
BP
|
||||
%%EndPageSetup
|
||||
/F0 10/Palatino-Roman@0 SF 2.5(-7-)279.67 48 S .4 LW 504 84 72 84 DL .738
|
||||
(Sometimes I need a custom spline when one of the macr)72 98.4 R .738
|
||||
(os just shown does not \214t the job.)-.18 F(This)5.737 E .875(example is fr)
|
||||
72 110.4 R .875(om page 322 of UNPv1.)-.18 F .876
|
||||
(When making a curve I divide the distance into quarters,)5.876 F
|
||||
(with one move per quarter)72 122.4 Q(.)-.74 E/F1 9/Courier@0 SF(boxwid = 0.8)
|
||||
72 139.4 Q(boxht = 0.2)72 150.4 Q 17.6(Box1: box)72 161.4 R 17.6(Box2: box)72
|
||||
172.4 R(with .w at Box1.e + \(0.55, 0\))5.4 E 17.6(Box3: box)72 183.4 R
|
||||
(with .w at Box2.e + \(0.55, 0\))5.4 E 12.2(Start: Box1.e)72 205.4 R 17.6
|
||||
(Dest: Box3.w)72 216.4 R(line left 0.05 from Start)97 227.4 Q
|
||||
(spline -> from Start \\)115.2 238.4 Q(right 0.55/4 \\)158.4 249.4 Q
|
||||
(then right 0.55/4 down 0.2 \\)158.4 260.4 Q(then right 0.55/4 down 0.2 \\)
|
||||
158.4 271.4 Q(then right 0.55/4 \\)158.4 282.4 Q(then right boxwid \\)158.4
|
||||
293.4 Q(then right 0.55/4 \\)158.4 304.4 Q(then right 0.55/4 up 0.2 \\)158.4
|
||||
315.4 Q(then right 0.55/4 up 0.2 \\)158.4 326.4 Q(then right 0.55/4)158.4 337.4
|
||||
Q 5.4(#D)72 348.4 S(raw the "points" in this spline definition.)88.2 348.4 Q
|
||||
8.8(A: line)72 359.4 R(invis right 0.55/4 from Start)5.4 E 8.8(B: line)72 370.4
|
||||
R(invis right 0.55/4 down 0.2)5.4 E 8.8(C: line)72 381.4 R
|
||||
(invis right 0.55/4 down 0.2)5.4 E 8.8(D: line)72 392.4 R(invis right 0.55/4)
|
||||
5.4 E 8.8(E: line)72 403.4 R(invis right boxwid)5.4 E 8.8(F: line)72 414.4 R
|
||||
(invis right 0.55/4)5.4 E 8.8(G: line)72 425.4 R(invis right 0.55/4 up 0.2)5.4
|
||||
E 8.8(H: line)72 436.4 R(invis right 0.55/4 up 0.2)5.4 E 8.8(I: line)72 447.4 R
|
||||
(invis right 0.55/4)5.4 E(circle rad 0.02 fill 1 at A.end)97 458.4 Q
|
||||
(circle rad 0.02 fill 1 at B.end)97 469.4 Q(circle rad 0.02 fill 1 at C.end)97
|
||||
480.4 Q(circle rad 0.02 fill 1 at D.end)97 491.4 Q
|
||||
(circle rad 0.02 fill 1 at E.end)97 502.4 Q(circle rad 0.02 fill 1 at F.end)97
|
||||
513.4 Q(circle rad 0.02 fill 1 at G.end)97 524.4 Q
|
||||
(circle rad 0.02 fill 1 at H.end)97 535.4 Q(circle rad 0.02 fill 1 at I.end)97
|
||||
546.4 Q 129.6 578.8 MT 0 -14.4 RL -57.6 0 RL 0 14.4 RL CL ST 226.8 578.8 MT 0
|
||||
-14.4 RL -57.6 0 RL 0 14.4 RL CL ST 324 578.8 MT 0 -14.4 RL -57.6 0 RL 0 14.4
|
||||
RL CL ST 126 571.6 129.6 571.6 DL 129.6 571.6 MT 4.932 0 RL 3.288 0 6.576 2.4
|
||||
9.864 7.2 RC 3.288 4.8 6.576 9.6 9.864 14.4 RC 3.288 4.8 6.576 7.2 9.864 7.2 RC
|
||||
3.288 0 14.532 0 33.732 0 RC 19.2 0 30.456 0 33.768 0 RC 3.312 0 6.624 -2.4
|
||||
9.936 -7.2 RC 3.312 -4.8 6.624 -9.6 9.936 -14.4 RC 3.312 -4.8 6.624 -7.2 9.936
|
||||
-7.2 RC 4.968 0 RL ST 266.4 571.6 MT -6.768 2.232 RL 0 -4.464 RL CL BL 266.4
|
||||
571.6 MT -6.768 2.232 RL 0 -4.464 RL CL ST 139.464 571.6 1.44 DC 0.0000 FL
|
||||
139.464 571.6 1.44 DC ST 149.4 586 1.44 DC 0.0000 FL 149.4 586 1.44 DC ST
|
||||
159.264 600.4 1.44 DC 0.0000 FL 159.264 600.4 1.44 DC ST 169.2 600.4 1.44 DC
|
||||
0.0000 FL 169.2 600.4 1.44 DC ST 226.8 600.4 1.44 DC 0.0000 FL 226.8 600.4 1.44
|
||||
DC ST 236.736 600.4 1.44 DC 0.0000 FL 236.736 600.4 1.44 DC ST 246.6 586 1.44
|
||||
DC 0.0000 FL 246.6 586 1.44 DC ST 256.536 571.6 1.44 DC 0.0000 FL 256.536 571.6
|
||||
1.44 DC ST 266.4 571.6 1.44 DC 0.0000 FL 266.4 571.6 1.44 DC ST 504 615.04 72
|
||||
615.04 DL F0(The)72 629.44 Q/F2 10/Courier@0 SF(erase)2.891 E F0(macr)2.891 E
|
||||
2.891(oi)-.18 G 2.891(su)157.823 629.44 S .391
|
||||
(sed to white out some portion of a \214gur)170.984 629.44 R 2.891(ew)-.18 G
|
||||
.391(hen lines cr)365.253 629.44 R 2.891(oss. I)-.18 F .391(\214rst specify a)
|
||||
2.891 F .04(second ar)72 641.44 R .04(gument of 1 \(draw the cir)-.18 F .04
|
||||
(cle all black\) to check the position of the cir)-.18 F .04
|
||||
(cle, then change the)-.18 F(ar)72 653.44 Q(gument to 0 to erase the cir)-.18 E
|
||||
(cle.)-.18 E EP
|
||||
%%Page: 8 8
|
||||
%%BeginPageSetup
|
||||
BP
|
||||
%%EndPageSetup
|
||||
/F0 10/Palatino-Roman@0 SF 2.5(-8-)279.67 48 S/F1 9/Courier@0 SF(right)97 89 Q
|
||||
8.8(A: box)72 100 R(dashed)5.4 E 8.8(B: box)72 111 R(dashed)5.4 E
|
||||
(line from A.nw to A.se)97 122 Q(erase\(A.c, 1, 0.05\))97 133 Q 5.4(#d)222 133
|
||||
S(raw a black circle)238.2 133 Q(line from A.sw to A.ne)97 144 Q
|
||||
(line from B.nw to B.se)97 155 Q(erase\(B.c, 0, 0.05\))97 166 Q 5.4(#d)222 166
|
||||
S(raw a white circle)238.2 166 Q(line from B.sw to B.ne)97 177 Q .4 LW 75.6
|
||||
209.4 72 209.4 DL 82.368 209.4 78.768 209.4 DL 89.136 209.4 85.536 209.4 DL
|
||||
95.832 209.4 92.232 209.4 DL 102.6 209.4 99 209.4 DL 109.368 209.4 105.768
|
||||
209.4 DL 116.064 209.4 112.464 209.4 DL 122.832 209.4 119.232 209.4 DL 129.6
|
||||
209.4 126 209.4 DL 129.6 205.8 129.6 209.4 DL 129.6 200.4 129.6 204 DL 129.6
|
||||
195 129.6 198.6 DL 126 195 129.6 195 DL 119.232 195 122.832 195 DL 112.536 195
|
||||
116.136 195 DL 105.768 195 109.368 195 DL 99 195 102.6 195 DL 92.232 195 95.832
|
||||
195 DL 85.536 195 89.136 195 DL 78.768 195 82.368 195 DL 72 195 75.6 195 DL 72
|
||||
198.6 72 195 DL 72 204 72 200.4 DL 72 209.4 72 205.8 DL 133.2 209.4 129.6 209.4
|
||||
DL 140.904 209.4 137.304 209.4 DL 148.608 209.4 145.008 209.4 DL 156.312 209.4
|
||||
152.712 209.4 DL 164.088 209.4 160.488 209.4 DL 171.792 209.4 168.192 209.4 DL
|
||||
179.496 209.4 175.896 209.4 DL 187.2 209.4 183.6 209.4 DL 187.2 205.8 187.2
|
||||
209.4 DL 187.2 200.4 187.2 204 DL 187.2 195 187.2 198.6 DL 183.6 195 187.2 195
|
||||
DL 175.896 195 179.496 195 DL 168.192 195 171.792 195 DL 160.488 195 164.088
|
||||
195 DL 152.712 195 156.312 195 DL 145.008 195 148.608 195 DL 137.304 195
|
||||
140.904 195 DL 129.6 195 133.2 195 DL 129.6 198.6 129.6 195 DL 129.6 204 129.6
|
||||
200.4 DL 129.6 209.4 129.6 205.8 DL 129.6 209.4 72 195 DL 100.8 202.2 3.6 DC
|
||||
0.0000 FL 129.6 195 72 209.4 DL 187.2 209.4 129.6 195 DL 158.4 202.2 3.6 DC
|
||||
1.0000 FL 187.2 195 129.6 209.4 DL EP
|
||||
%%Trailer
|
||||
end
|
||||
%%EOF
|
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue