diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/apl/tugboat.tex')
-rw-r--r-- | Master/texmf-dist/doc/latex/apl/tugboat.tex | 530 |
1 files changed, 0 insertions, 530 deletions
diff --git a/Master/texmf-dist/doc/latex/apl/tugboat.tex b/Master/texmf-dist/doc/latex/apl/tugboat.tex deleted file mode 100644 index 87b1461a1cc..00000000000 --- a/Master/texmf-dist/doc/latex/apl/tugboat.tex +++ /dev/null @@ -1,530 +0,0 @@ - -%============================================================================= -% T U G B O A T . T E X -%============================================================================= -%======================================================================== -% A TeX file for the paper on APL-TeX (new version, not published) -% -% A.Hohti/O.Kanerva (University of Helsinki) April 1987 -%======================================================================== -% -% -% Version of August 26, 1987 at 15:00 -% -% -%======================================================================== -\input aplstyle % the file containing the APL definitions -%======================================================================== -% -% -\magnification=\magstep1 % for weak eyes! -% -% -%======================================================================== -\font\bigbf=ambx10 % for titles -\font\sltt=amsltt10 % for file contents inside text -\font\manual=manfnt at 10pt % for major METAFONT logo -\font\minual=manfnt at 9pt % for minor METAFONT logo -\input ninesize % abstract, references -%======================================================================== -% -\def\METAFONT{{\manual META}\-{\manual FONT}} -\def\metafont{{\minual META}\-{\minual FONT}} -% -%======================================================================== -% stylistic definitions -\def\section#1{\vskip0pt plus .1\vsize - \penalty-250\vskip0pt plus-.1\vsize\bigskip - \noindent{\bf #1.\ }\nobreak\message{#1}} -\def\abstract#1{\bigskip\centerline{\hbox{ - \vbox{\hsize=4.75truein{\ninepoint \noindent ABSTRACT.\enspace#1}}}}} -\def\APL{{\sl APL}} -% this definition is from the TeXbook, Ex. 21.3 : -\def\boxit#1{\vbox{\hrule \hbox{\vrule \kern2pt - \vbox{\kern2pt#1\kern2pt}\kern2pt\vrule}\hrule}} -% A macro for making references and blocks. -% -\newdimen\refindent\newdimen\plusindent -\newdimen\refskip\newdimen\tempindent -\newdimen\extraindent -\newcount\refcount -% -% \refskip has to be set by the user! Otherwise \parindent is -% used, in accordance with \item. -% -\refcount=0 -\def\ref#1:#2.-#3\par{\ninepoint % switch to nine point fonts -\advance\refcount by 1 -\setbox0=\hbox{[\number\refcount]}\refindent=\wd0 -\plusindent=\refskip\extraindent=\refskip -\advance\plusindent by -\refindent\tempindent=\parindent % -\parindent=0pt\par\hangindent\extraindent % - [\number\refcount]\hskip\plusindent #1:{\sl#2},#3 -\parindent=\tempindent} -% -\refskip=\parindent -% -%======================================================================== - % HEADER -\null -\vskip2truecm -% - \centerline{\bigbf GENERATING AN \APL\ FONT} -% -\vskip.75truecm -% - \centerline{\sl Aarno Hohti and Okko Kanerva} -% -\vskip.5truecm -% - \centerline{\sl University of Helsinki} -\vskip.5truecm -\abstract{The \APL\ language is well known for its peculiar - symbols which have inhibited the use of this language - in many programming environments. Making \APL\ - documents of good quality has been difficult and - expensive. We describe here a simple way how to - use \metafont\ to generate an \APL\ font for \TeX\ - by using existing font definitions as far as possible.} -\vskip.5truecm -%======================================================================== -% -\section{Introduction} -This note describes an interesting exercise in using -\METAFONT\ to produce new typefaces by combining letters -from standard fonts. As we know, the \APL\ language [6] of -Kenneth Iverson has never gained the popularity it deserves -which is largely due to its strange symbol set. Indeed, -true \APL\ users require a special keyboard to support -the nonstandard but powerful operator symbols. Moreover, -putting \APL\ into print has always been a problem, and -modern low cost computerized typesetting programs do -not usually support \APL\ style. \TeX\ can be used to -produce high quality printouts for technical text, -and it would be desirable to have a possibility to -mix in \APL\ code. The companion program of -\TeX ---\METAFONT ---provides a full means for a simple generation -of an \APL\ font for \TeX, and the purpose of this -note is to inform other people about the result we -have obtained at the University of Helsinki. Let us note -that there are at least three other \APL\ fonts available -for small computer environments. Indeed, the newsletter -\APL\ {\it Quote Quad\/}\footnote{*}{{\ninepoint Newsletter of SIGAPL, -the Special Interest Group for \APL. {\it Quote Quad\/} has the same -status in the world of \APL\ as TUGboat in \TeX{nical} world.}} -is produced by using TROFF, and there -exists a Postscript \APL\ font for the Apple Laserwriter [5] and -another font for the TEXT typesetting system [2]. - -Consider the following usual kind of function definition in \APL: -\choosett{apl} -\begintt - @DLS_SUMSQ N;I - [1] S_I_0 - [2] @GO(N<I_I+1)/0 - [3] S_S+I*2 - [4] @GO2 - [5] @DL -\endtt -\choosett{sltt}% %@@@@ -How to write in this code, providing that we have a suitable -font? The \APL\ font should represent the screen -output style of \APL\ code and obey the same laws of spacing. -Hence, it should be a typewriter-like typeface with fixed -spacing; the same approach for representing \TeX\ input was -adopted by Knuth in the {\TeX}book. -The {\it verbatim\/} macros have often been used for importing -screen or paper outputs into \TeX\ documents; some people -misuse them for an easy construction of tables etc. In -{\sltt verbatim}, the typewriter mode is entered by the control -sequence @\begintt@---that mode is ended by -@\endtt@. In the same vein, we could enter -the \APL\ mode by the control sequence @\beginapl@, -and to end it by @\endapl@. However, it is more convenient to -augment {\sltt verbatim\/} with {\sltt aplstyle\/} so that -it can be used with several different typewriter-like fonts. -(The {\it verbatim\/} macros can be found in the {\TeX}book, -p.\ 421.) Since {\sltt\char'100\/} -(the {\it at sign}) is used as the escape character inside {\it verbatim\/} -mode, our \TeX\ code might (and in fact does) look as follows: -\def\endsym{\char'134{endtt}} % just for using \endtt after \begintt - % without actually ending anything -\choosett{tentt} -\begintt - \choosett{apl} - \begintt - @@DLS_SUMSQ N;I - [1] S_I_0 - [2] @@GO(N<I_I+1)/0 - [3] S_S+I*2 - [4] @@GO2 - [5] @@DL - @endsym -\endtt -\choosett{sltt}% %@@@@ -The control sequences @\DL@ and @\GO@ are not chosen arbitrarily -but follow the conventions used in Digital's VAX \APL\ interpreter [1]. -As terminals usually do not support the \APL\ character set, an -alternative representation by two-letter mnemonics is provided by the -interpreter. For the most part we have adopted these mnemonics also for our -\APL\ font. Hence, as an additional bonus the user should find it -easy to combine his or her \APL\ code with normal \TeX\ code. Thus, -it is not necessary for a VAX \APL\ user to retype the definitions -of \APL\ functions in order to be able to use them in documents. -He or she only has to replace every {\it period\/} used as an -escape character in Digital's interpreter, by {\sltt\char'100}. -(There is another syntactical difference between Digital's interpreter -and \TeX's {\it verbatim\/} mode: for the interpreter -the third ordinary character after an escape character -does no longer belong to the escape sequence while \TeX\ admits -arbitrarily long control sequences. We take care of this -by changing certain {\it catcodes\/} temporarily.) -% -% -\choosett{apl}% -% -\section{The \APL\ font table} -\APL\ symbols are divided into two classes: the primitive symbols -and those obtained by overstriking two primitive ones. The overstrikes -are traditionally obtained by typing the first symbol, by using -backspace to go back one space and then typing the second symbol -{\sl over\/} the first one. However, in modern \APL\ keyboards these -double symbols are assigned to non-alphanumeric keys (for example, -to keys under the {\sltt ALT\/} key). We decided to include only the -primitive \APL\ symbols in the font table; this enabled us to include -also the lower-case letters, following modern conventions. (The original -\APL\ letters were restricted to capitals.) The comment symbol -@"@ is the only exception since it is keyed in as a double quote. -Our font is a fixed size typeface with strongly slanted letters. -Moreover, we have followed the style of best books in \APL: -all symbols should be drawn with a thin pen to get a touch of -a typewriter. (This point is clearly witnessed, for example, in [5].) -The places of some symbols are determined by the \TeX\ font tables. -For example, the hash sign {\sltt\char'043\/} is used for the -multiplication sign in VAX \APL, and hence the corresponding symbol -has the the same octal code (043) as the hash sign in \TeX. -The font table has the following form: %@@@@ - -%======================================================================== -% table begins -%======================================================================== -% This macro comes from TUGboat (I (AH) do not remember which number), -% unsuitable parts are commented out. -% -{\baselineskip=0pt \lineskip=0pt -\newdimen\vu -% -%\output={\shipout\vbox{\unvbox255\vskip0.4in}\advancepageno} -% -\setbox9=\hbox{\sl 0} -\def\spike{\hbox to 0pt{\vbox to \ht9{}}} -\def\cell#1{\hbox to 1\vu{\hfill\char'#1\hfill}\vrule} -\def\label#1{\vbox to \ht8{\vfill\hbox to 35pt{\hfill\sl '#10\hskip1em% - }\vfill}\vrule} -% -\def\seprow{\def\m{\hskip 1\vu{}\vrule height 2pt}\hbox{\m\m\m\m\m\m\m\m}} -\def\cellrow#1{\setbox8=\vbox{\seprow\hbox{\spike% - \cell{#10}\cell{#11}\cell{#12}\cell{#13}% - \cell{#14}\cell{#15}\cell{#16}\cell{#17}\hfill% - }\seprow\hrule}\hbox{\label{#1}\box8}} -% -\def\lcol#1{\hbox to 1\vu{\hfill{\sl #1}\hfill}\hskip .4pt} -\def\chw#1{\hbox{\char'#1}} -% -\def\colw#1{\vbox{\chw{#10} - \chw{#11} - \chw{#12} - \chw{#13} - \chw{#14} - \chw{#15} - \chw{#16} - \chw{#17}}} -% -\def\setw#1{\vbox{\colw{#10} - \colw{#11} - \colw{#12} - \colw{#13} - \colw{#14} - \colw{#15} - \colw{#16} - \colw{#17}}} -% -\def\getw{\setbox0=\vbox{\setw0\setw1\hbox to \wd9{}\hbox to 1em{}}% - \vu=1.625\wd0} -% - \apl\getw\bigskip % changed from \null\vfill to \bigskip -% - \centerline{\vbox{%\hbox{\hskip35pt{\sl cmapl10}\hfill} -% \vskip20pt - \hbox{\hskip35pt\lcol0\lcol1\lcol2\lcol3\lcol4\lcol5\lcol6\lcol7} - \vskip 4pt - \hbox{\hskip35pt\vbox{\hrule width 8\vu}\vbox{\hrule width 3.6pt}} - \cellrow{00}\cellrow{01}\cellrow{02}\cellrow{03} - \cellrow{04}\cellrow{05}\cellrow{06}\cellrow{07} - \cellrow{10}\cellrow{11}\cellrow{12}\cellrow{13} - \cellrow{14}\cellrow{15}\cellrow{16}\cellrow{17}}}} % removed \vfill -% % from the end -% -%======================================================================== -% table ends -%======================================================================== -% -\section{The necessary \METAFONT\ files} -The whole process started when the first author had a paper -containing \APL\ symbols and was disappointed with the -quality of the symbols available on the typewriter. Moreover, -the secretary who had typed the text had forgot a couple -of lines in the middle of the paper, and the correction of -such mistakes seemed to be very clumsy in comparison with -modern typesetting. Then he decided (together with the second -author) to remedy the situation by creating an \APL\ font for -\TeX\ he was using for other kinds of document. Many of the -\APL\ symbols needed were contained in standard fonts; for example, -{\it diamond\/} can be found in {\it cmsy10}. For alphanumeric -characters one could use {\it cmsltt10}. The simplest try for -a solution of the problem would be to write a list of definitions -that pick symbols from appropriate fonts. However, this brute force -method does not really work since these symbols come from -very different typefaces and, moreover, do not provide a fixed -typeface. Hence, we decided to find an easy way of producing -an \APL\ font by using \METAFONT. - -As the starting point, we took the font {\it cmtex10}. This is a -fixed typeface for an extended typewriter-like font including -some Greek characters and mathematical symbols. The \METAFONT\ file -for this font, {\sltt cmtex10.mf\/} contains (as usual) a preamble -that assigns values to several global variables, and the command -{\sltt generate textset;\/}. Now the {\sl driver\/} file {\sltt textset.mf\/} %@@@@ -contains the commands {\sltt mode\_setup;font\_setup;\/} %@@@@ -(establishing the values of the variables for this font) and several -input files from which the \METAFONT\ descriptions of the characters are to -be found. Since some of these files treat the characters by name and -since some of the definitions have to be changed (and some dropped), -we considered it advisable to discard the driver file and to collect -the separate \METAFONT\ files, together with the preamble, to form a -large single file {\sltt cmapl10.mf}. The {\sltt .mf\/} character files -needed for {\sltt cmapl10.mf\/} are the following: -% -% -$$\vbox{\halign{{\sltt#}\hfil && \quad #\hfil\cr -% - greekl & ({\it rho, omega, alpha}) \cr - italms & ({\it iota}) \cr - romand & (roman digits) \cr - punct & (punctuation symbols) \cr - romanp & \cr - symbol & (math symbols) \cr - sym & \cr - romanu & (uppercase letters) \cr - romanl & (lowercase letters) \cr -% -}}$$ -% -% -\section{Definitions} -\choosett{tentt}% -The first thing to do is to put {\sltt font\_identifier:="CMAPL";\/} %@@@@ -and to set {\sltt slant:=0;\/} in the preamble. Many definitions can %@@@@ -be copied verbatim from the {\sltt .mf\/} files, but some of them -need changes. The Greek {\it iota}, as given in {\sltt greekl.mf}, -is strange to \APL\ style; we use instead the {\it dotless i\/} -from {\sltt italms.mf}. Moreover, we used the symbol {\it elt\/} -(element) from {\sltt sym.mf\/} instead of the Greek {\it epsilon}. -The symbols {\it del\/} and {\it delta\/} are -taken from {\sltt symbol.mf\/} (where their names are {\it large triangle\/} -and {\it large inverted triangle}). However, they are too sturdy -and too short to be placed in a proper \APL\ font. Further, {\it del\/} -must be lifted up so that it is vertically aligned with other -symbols. The modifications are very easy to do, and the modified %@@@@ , by ,and -definition is shown below. -% -% -\choosett{tentt} -\begintt - % sqrt48 was changed to 6.25 since the del symbol in APL has - % a narrower top than the original reversed triangle symbol - % rule.nib has been changed to light_rule.nib - % bot y3=-d-o has been changed to bot y3=0 - % top y1=h-d has been changed to top y1=h+2o - @null - cmchar "Del"; - beginchar(oct"002",16u#,asc_height#,0); - adjust_fit(0,0); pickup light_rule.nib; - top y1=h+2o; y2=y1; bot y3=0; - .5[x1,x2]=x3=good.x .5w; w:=r:=2x3; lft x1=hround(.5w-u*6.25); - draw z1--z2--z3--cycle; % stroke - labels(1,2,3); endchar; -\endtt -As can be seen from this example, pen strokes were made thinner. -Actually only one symbol was directly missing---this is the {\it quad -box}. However, it can be obtained from the above by adding one control point: -\begintt - cmchar "Quad"; - beginchar(oct"001",16u#,body_height#,0); - adjust_fit(0,0); pickup light_rule.nib; - bot y1=0; y2=y1; top y3=h+2o; y4=y3; - .5[x1,x2]=x5=good.x .5w; w:=r:=2x5; - % The quad box is slightly wider than Del - lft x1=hround(.5w-u*7); - x3=x1; x4=x2; - draw z1--z2--z4--z3--cycle; % box - labels(1,2,3,4); endchar; -\endtt -After taking care of special symbols, the letters can be treated -by finding a suitable value for {\it tilt ratio\/} (slant). Indeed, -\APL\ letters are {\sl very\/} slanted. We suggest the value -1/5 for this font (the font {\it cmsl10\/} uses 1/6). One should -remember to give the command {\sltt font\_setup;\/} after setting {\sltt slant\/} %@@@@ -to 1/5. -\choosett{sltt}% %@@@@ -Finally, one has to make the {\it verbatim\/} macros -suitable for \APL\ style. Since {\it verbatim\/} might be -used for several different fonts in one document, we decided -to include a control sequence @\choosett@. -\choosett{tentt} -\begintt - \def\ifundefined#1{\expandafter\ifx\csname#1\endcsname\relax} - \newif\ifapl \def\aplname{apl} - \outer\def\choosett#1{\ifundefined{#1}% - \message{Undefined font(?), replaced with cmtt10}% - \let\tt=\tentt - \else - \def\tt{\expandafter\csname#1\endcsname}% - \def\ttname{#1}% - \ifx\ttname\aplname\apltrue\else\aplfalse\fi\fi} -\endtt -\choosett{sltt}% -(The control sequence @\ifundefined@ comes from the \TeX{book}, p.\ 308.) -With the help of @\choosett@, the standard @verbatim@ macros can be used -with the single change that @\ifapl@, then the @\catcode@ of @A@,\dots,@Z@ -is @\other@ (12) instead of 11 for {\it letter}. Under \APL\ mode \TeX\ -will then recognize our single-letter control sequences defined, e.g., by -\choosett{tentt} -\begintt - \def\A#1{\if#1B{\apl\char'174}\else % stile - \if#1M{\apl\char'004}\fi\fi} % alpha . -\endtt -\choosett{sltt}% -Unfortunately, we have redefined the standard @\L@, @\O@, @\P@ and @\S@. - -The \APL\ symbols not in the font table are obtained---as usual---by -overstriking two table symbols. -\choosett{tentt}% -\begintt - \newbox\firstchar\newskip\charwidth - \def\overstrike#1#2{\setbox\firstchar=\hbox{#1}\charwidth=\wd\firstchar - #1\hskip-\charwidth#2} -\endtt -\choosett{apl}% -For example, the {\it grade up\/} and {\it grade down\/} symbols -\G U\ and \G D\ are obtained by striking the {\it stile\/} symbol -@|@ over \L D\ and \D L, respectively. -\choosett{tentt}% -\begintt - \def\G#1{\if#1U{\overstrike{\LD}{\AB}}\else % grade up - \if#1D{\overstrike{\DL}{\AB}}\fi\fi} % grade down -\endtt -Now let us take another example on \APL. The input -\begintt - \choosett{apl} % in case some other choice is in force - \setbox0=\vbox{\hsize=5.7truein - \begintt - [0] Z_A1 PROD A2;A;I;V - [1] "RETURNS THE PRODUCT OF THE POLYNOMIALS A1 AND A2 - [2] "THE ARGUMENTS ARE GIVEN AS COEFFICIENT ARRAYS - [3] I_@@ROA1 - [4] Z_A1@@SO.#A2 - [5] LOOP:V_@@ROZ @@DM V[(@@ROI)+1]_V[1] - [6] V_@@ROZ_Z,[(@@ROI)+1]V@@RO0 - [7] A_(1+-@@IOV[1])@@SO.#((@@NT(@@IO@@ROV)@@EP(1,(@@ROI)+1))/V)@@RO1 - [8] Z_+/[1]A@@RV[(@@ROI)+1]Z - [9] ((@@RO@@ROZ)>@@ROI)/LOOP - @endsym - } - $$\boxit{\boxit{\box0}}$$ - \centerline{\sevenrm An APL function for polynomial multiplication} -\endtt -% -gives the output -% -\choosett{apl} -\setbox0=\vbox{\hsize=5.7truein -\begintt - [0] Z_A1 PROD A2;A;I;V - [1] "RETURNS THE PRODUCT OF THE POLYNOMIALS A1 AND A2 - [2] "THE ARGUMENTS ARE GIVEN AS COEFFICIENT ARRAYS - [3] I_@ROA1 - [4] Z_A1@SO.#A2 - [5] LOOP:V_@ROZ @DM V[(@ROI)+1]_V[1] - [6] V_@ROZ_Z,[(@ROI)+1]V@RO0 - [7] A_(1+-@IOV[1])@SO.#((@NT(@IO@ROV)@EP(1,(@ROI)+1))/V)@RO1 - [8] Z_+/[1]A@RV[(@ROI)+1]Z - [9] ((@RO@ROZ)>@ROI)/LOOP -\endtt - } -$$\boxit{\boxit{\box0}}$$ -\centerline{\sevenrm An APL function for polynomial multiplication} -% -\section{User extension} -A modern user of a computerized typesetting facility will probably -ask if it is possible to extend or modify fonts coming with the -system. As with [5], where the font has an {\it analytic\/} and a -{\it bitmapped\/} variant, we can distinguish between the need of modifying -{\it cmapl10\/} via \METAFONT\ and modification of the pixel files. -\APL\ symbols of various ``blackness'' or ``thickness'' may be desirable. -Indeed, in [3] the user input is written with boldface \APL\ symbols -and the answers from the interpreter with thin ones. Furthermore, -certain screen previewers use specific small size pixel files, and -do not support the \APL\ font. - -The modification of the font by changing the values of some global -variables in the preamble of the \METAFONT\ file is easy and can be -done by following how it is done in standard fonts such as -{\it cmbx10\/} etc. This is the recommended way, too. However, if -\METAFONT\ is not available, then one must attack the pixel files. -For direct hand editing, we use a program that converts a pixel -file into a (bitmapped) text file acceptable to any standard screen -editor, and another program reading the edited file back into -a \TeX\ pixel file. Scaling fonts down to a desired size can be -done in a similar (but automatic) manner; this facility is needed -by a previewer (written by the first author) not using runtime -scaling. - - -\section{References} -\bigskip -{ -\ref Digital Equipment Corporation: VAX-11 \APL\ Reference Manual.- - 1983. - -\ref Feldberg, Ian: TEXT: Publication-Quality Characters Come - to \APL\ Graphics.- Proceedings of the 1986 \APL\ Conference, - SIGAPL, pp.\ 306--313. - -\ref Gilman, Leonard, and Allen J.\ Rose: \APL, An Interactive - Approach.- John Wiley \& Sons, Inc., 1984. - -\ref Grenander, Ulf: Mathematical Experiments on the Computer.- - Academic Press, 1982. - -\ref Howland, John E.: Typesetting \APL\ Using a Macintosh.- - Proceedings of the 1986 \APL\ Conference, SIGAPL, pp.\ 301--305. - -\ref Iverson, Kenneth: A Programming Language.- Wiley, New York, 1962. - - - } - -\bigskip -\section{The address} -\bigskip -{\ninepoint\obeylines -\hskip\refskip University of Helsinki -\hskip\refskip Department of Mathematics -\hskip\refskip Hallituskatu 15 -\hskip\refskip SF--00100 HELSINKI -\hskip\refskip FINLAND -} - -\end - |