diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-09 00:45:48 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-09 00:45:48 +0000 |
commit | 5dc602d16c5be2fd035b254ca23484a90aebd6dc (patch) | |
tree | 72efb15fba318cc2096a8cc6999ed3fa0bff317d /Master/texmf-dist/doc/plain | |
parent | b4fc5f639874db951177ec539299d20908adb654 (diff) |
doc 5
git-svn-id: svn://tug.org/texlive/trunk@81 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/plain')
64 files changed, 17130 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/plain/cellular/cellular.doc b/Master/texmf-dist/doc/plain/cellular/cellular.doc new file mode 100644 index 00000000000..0a46d604381 --- /dev/null +++ b/Master/texmf-dist/doc/plain/cellular/cellular.doc @@ -0,0 +1,114 @@ +% File: TeX Inputs cellular.doc +% Author: J E Pittman +% Bitnet: JEPTeX@TAMVenus +% Internet: JEPTeX@Venus.TAMU.EDU +% Date: November 8, 1988 + +A cellular table is specified by: + + \begincellular{specifications that change defaults} + appropriate macro definitions + column header specifications + row specifications (header and data) + \endcellular + +The following are examples of specifications that change defaults: + + \pixelwidth=1in + \divide\pixelwidth by 300 + + The pixel width dimension register should be set to the resolution + of the device used. The default is 1/300th of an inch. + + \setverticaladjustment -or- \sethorizontaladjustment + + Some printers (such as the Xerox 9700s and 4050s) produce vertical + and horizontal rules that have a different visual thickness for the + same specified thickness. The macros set vertical and set + horizontal adjustment specified that vertical or horizontal rules + are to be thickened by pixel width, which may correct this problem. + + \edef\everycolumn{\everycolumn + \leftrulewidth=0.4pt\relax + \rightrulewidth=\leftrulewidth + \leftborderskip=6pt plus 1fil\relax + \rightborderskip=\leftborderskip + \columnwidth=\zeropt\relax + \columnwidth=\zeropt\relax + }% + + An \edef can be used to add material (usually default overrides) to + the every column macro. The information shown above reflect the + defaults. Care must be exercised to avoid introducing spurous + spaces, which will be very visible when output. + + \edef\everyrow{\everyrow + \toprulewidth=0.4pt\relax + \bottomrulewidth=\toprulewidth + \topborderskip=3pt plus 1fil\relax + \bottomborderskip=\topborderskip + \rowheight=\zeropt\relax + }% + + Same as every column. + + \tracingexpansions=1 + + This specification will request notes on how column and rows are + expanded to accommedate spans. + +Any sort of macros can be defined within a cellular table. An obvious +example is abbrevations for commonly used control sequence names. + +A column header is specified as: + + \column{specifications} + + The specifications are the same as for every column. Note: There + is a considerable amount of processing required for these + specifications, wise selection of defaults can decrease execution + time significantly. + + Column headers are optional. + +Rows are specified as a row header (similiar to a column header) and a +series of entry specifications. + +An entry specification can be any of the following: + + \blank + + A blank entry specification creates a completely blank spot in the + table (no rules or text). + + \mergeright + + A merge right specification merges the width of the entry into the + width of the entry to the right. It is used to create column + spans. + + \mergedown + + Similar to merge right. Note: The overhead for a merge down + specification is considerably higher than a merge right. + Therefore, when specifing an entry that spans both rows and + columns, merge rights should be used as much as possible. For + example: + + > > > V V V V V + > > > V rather V V V V + > > > V than V V V V + > > > * > > > * + + \entry{horizontal mode material} + + An entry macro takes the specified material and formats it as + appropriate. + +It is not necessary to complete every row. + +Vertical mode material can be added after a row by specifying: + + \noalign{vertical mode material} + +at any point in the row. Multiple no aligns are permitted. diff --git a/Master/texmf-dist/doc/plain/cellular/origin b/Master/texmf-dist/doc/plain/cellular/origin new file mode 100644 index 00000000000..89d309c957c --- /dev/null +++ b/Master/texmf-dist/doc/plain/cellular/origin @@ -0,0 +1,28 @@ +Date: Wed, 9 Nov 88 13:33:46 CST +From: J E PITTMAN <JEPTEX@venus.tamu.edu> +Subject: TeX Inputs cellular.tex (table-generating macros) +Keywords: macros + +Several months ago, someone sent in a request for macros that allow vertical +and horizontal spans within a ruled table. There have also been questions +about `nubs' and `gaps' within ruled tables. + +After thinking about the problem for a while, I realized that a solution was to +abandon the \halign primitive and start from scratch. + +I have finished my first attempt at a set of table generating macros, which I +have chosen to call Cellular.TeX. These macros allow for both vertical and +horizontal spans and take steps to prevent `nubs' and `gaps' when rules are +used. + +They are, unfortunately, very slow and I have not been able to increase their +speed without sacrificing memory conservation and generality. + +I am sending the macros under separate cover since there are nearly 1,000 lines +of code involved, divided into five files. Detailed comments are available in +the file TeX Inputs cellular.doc. + +J E Pittman Bitnet: JEPTeX@TAMVenus +User Services Group Internet: JEPTeX@Venus.TAMU.Edu +Computing Services Center +Texas A&M University diff --git a/Master/texmf-dist/doc/plain/gustlib/README b/Master/texmf-dist/doc/plain/gustlib/README new file mode 100644 index 00000000000..addbba104d2 --- /dev/null +++ b/Master/texmf-dist/doc/plain/gustlib/README @@ -0,0 +1,146 @@ +GUSTLIB +=========== +W tym katalogu znajduje się parę | In this catalogue you'll find a couple +przydatnych makr do \input-owania | of useful macros (to be input). +Jest to moja propozycja podręcznej | It is my proposal of a handy library +biblioteczki dla użytkowników | primarily for plain format users, +głównie Plain/MeX, choć powinny | although the macros are supposed +dzialać też w LaTeX-u. | to work also with LaTeX. + | +Niektóre pakiety są już umieszczone | some packages are already located +w strukturze katalogów TeXLive CD | in the TeX Live CD structure +(patrz lista na końcu pliku) | (see the end of this file) +---------------------------------------------------------------------------- +1. biblo10.zip + BibloTeX to system makr do | Macros for generating bibliography + generowania bibliografii w Plain. | in Plain (emulating LaTeX's macros) + Od strony użytkownika makra te | + emulują działanie makr LaTeX-a | +B. Lichoński +---------------------------------------------------------------------------- +2. infram.tex + niemalże trywialne makro do | nearly trivial macro for putting + ujmowania tekstu w ramkę | a frame around a text (infr-ex.tex -- + (infr-ex.tex -- przykład użycia) | an example how to use it). +folk's invention +---------------------------------------------------------------------------- +3. licz.zip + makra do rozwijania liczb | macros for expanding numbers into + w napisy i przykład. | text strings (rather for Poles ;-). +M. Ryćko +---------------------------------------------------------------------------- +4. map.zip + makra do operacji na żetonach | generic macros for token manipulations; + (token) i makra do spacjowania | macros for letter spacing (tsp.tex) + tekstu (tsp.tex) oraz | and underlining text (tun.tex) + podkreślania (tun.tex) wraz | with examples. + z przykładami. | +M. Ryćko +---------------------------------------------------------------------------- +5. meashor.tex + makro do wyznaczania położenia | a macro for determining a position + w akapicie (polecane do mierzenia | in a paragraph (recommended for + długości ostatniego wiersza | measuring the length of the last + akapitu). | line of a paragraph). +B. Jackowski +---------------------------------------------------------------------------- +6. mimulcol.tex + skład wielołamowy (mcol-ex.tex | multicolumn format (mcol-ex.tex + -- przykład użycia). | -- an example how to use it). +F. Mittelbach, | F. Mittelbach, + ,,splainował'' B. Jackowski | ``plained'' by B. Jackowski +---------------------------------------------------------------------------- +7. plbtx993.zip + polskie style bibliograficzne | Polish bibliography styles for LaTeX + do programu BibTeX dla LaTeX | (for Plain use with macros from + (w Plain wraz z makrami z pakietu | biblo10.zip package) + biblo10.zip) | +B. Lichoński +---------------------------------------------------------------------------- +8. plidxmac.zip + makra do tworzenia indeksów | generic macros for index entries + w Plain w oparciu o program | with plindex (Polish adaptation + plindex. | of MakeIndex). +B. Lichoński +---------------------------------------------------------------------------- +9. roundbox.tex + ramki zaokrąglone (rbox-ex.tex | rounded frames (rbox-ex.tex + -- przykład użycia). | -- an example how to use it). +G. Glendown i B. Jackowski +---------------------------------------------------------------------------- +10. tp-crf.tex + makra do obsługi odsyłaczy dla | generic macros for cross-references; + formatu plain, na końcu pliku | example of use at the end of file. + zawarto przykład użycia. | +T. Przechlewski +---------------------------------------------------------------------------- +11. verbatim.tex + makra do składu ,,dosłownego'': | all purpose verbatim macros + np. cytatów kodu programów. | (program listings, etc.). +D. E. Knuth et al. + +============================================================================ +Inne makra z GUSTLIB | Other macros from GUSTLIB + +texmf/dvips/tex-ps/mirr.hd + plik nagłówkowy dla DVIPS do | this small header for DVIPS can + wydruku ,,lustrzanego'' (mirror) | be used for producing mirrored + na drukarkach, np. | output on printers, e.g. + dvips -hmirr.hd [other_options1] <DVI_file> [other_options2] +B. Jackowski, P. Pianowski +---------------------------------------------------------------------------- +texmf/tex/generic/c_pascal/* + CAP (C albo Pascal) -- makra do | CAP (C and Pascal) macro package for + składu programów w C i Pascalu | typesetting programs in C and Pascal +---------------------------------------------------------------------------- +texmf/tex/generic/insbox/* + makra do umieszczania rysunków | macros for inserting pictures/boxes + lub pudełek z tekstem w ramach | into paragraphs. + akapitu. | +M. Gulczy\'nski +---------------------------------------------------------------------------- +texmf/tex/generic/poligraf/poligraf.tex + makra do obudowy strony dokumentu | preparation of pages for prepress, color + dla celów drukarskich (pasery, | separation, crop-marks, color and gray + paski kontrolne kolorów i szaro- | scale bars, booklet preparation, etc. + ści), separacje barwne, montaż | + stron na arkuszach drukarskich | +J. M. Nowacki +---------------------------------------------------------------------------- +texmf/tex/generic/tex-ps/bop-hax.tex + makra do obs/lugi druku | macros for landscape and mirror + pejzażowego i lustrzanego | (meant for PostScript/Dvips). + z wykorzystaniem sterownika Dvips | +B. Jackowski i P. Pianowski +---------------------------------------------------------------------------- +texmf/tex/generic/tex-ps/cmyk-hax.tex + pakiet makr do wykonywania | the set of macros for making color + wyciągów barwnych (także | separation (also bitmaps) and examples + bitmap) i przykłady | of use +B. Jackowski, P. Pianowski +---------------------------------------------------------------------------- +texmf/tex/generic/tex-ps/epsfx.tex + rozszerzenie makr epsf.tex | extension of T. Rokicki's epsf.tex: + T. Rokickiego; pozwala bezpiecznie| safe including of EPS files generated + włączać do składu pliki EPS | by Dvips, can also display bounding + tworzone programem Dvips oraz | boxes. (for dvips 5.58) + wyświetlać na życzenie | + prostok/at ograniczający | + (bounding box). (dla dvips 5.58) | +B. Jackowski i P. Pianowski +---------------------------------------------------------------------------- +texmf/tex/generic/tex-ps/trans.tex + makra ułatwiające geometryczne | macros for easy transformations: + przekształcenia elementów | rotation, slanting, scaling of boxes + składu (obracanie, pochylanie, | (eg., containing text or picture). + przeskalowania). | +B. Jackowski i P. Pianowski +---------------------------------------------------------------------------- +texmf/tex/generic/tap/tap.tex + pakiet makr do wygodnego składu | generic macros for making tables; + tabelek, także kolorowych. | also coloured/grayed. +B. Jackowski, P. Pianowski, P. Strzelczyk + +---------------------------------------------------------------------------- +Prepared by Staszek Wawrykiewicz <StaW@gust.org.pl> +24.03.98 diff --git a/Master/texmf-dist/doc/plain/gustlib/readme.biblotex b/Master/texmf-dist/doc/plain/gustlib/readme.biblotex new file mode 100644 index 00000000000..20d45de5cd8 --- /dev/null +++ b/Master/texmf-dist/doc/plain/gustlib/readme.biblotex @@ -0,0 +1,17 @@ +Gdynia 2 IX 1994 +================ + +To jest pakiet BibloTeX v.1.0. ________________________________Free software! + +BibloTeX to system makr do generowania bibliografii w systemie plain-TeX. +Od strony u§ytkownika makra te emuluj dziaanie makr LaTeX-owych. + + +Dalsze informacje +----------------- +Dalszych informacji nale§y szuka w dokumentacji -> plik texidxbs.zip + + +Test +---- +Aby przetestowa te makra nale§y skompilowa plik -> przyklad.tex diff --git a/Master/texmf-dist/doc/plain/gustlib/readme.plbtx993 b/Master/texmf-dist/doc/plain/gustlib/readme.plbtx993 new file mode 100644 index 00000000000..bcb5b2d3d64 --- /dev/null +++ b/Master/texmf-dist/doc/plain/gustlib/readme.plbtx993 @@ -0,0 +1,75 @@ +Gdynia 22 X 1997 +================ + +To jest pakiet PLBTXBST v.0.99.3[a-z] __________________________Free software! + +PLBTXBST v.0.99.3[a-z] to system polskich styli bibliograficznych +dla programu BibTeX v.0.99[a-z]. + +Styli tych mo/zna u/zywa/c w~systemie \LaTeX\ lub +plain-\TeX (wraz ze zbiorem makr \BibloTeX). + + +Podzi/ekowania +-------------- +Dziekuje mojemu najwytrwalszemu testerowi +Andrzejowi Kosi/nskiemu (and@ichf.edu.pl) +za przetrzepanie moich styli. Dzieki niemu +powsta/ly wersje v.0.99.[1-3][a-z]. + + +Dalsze informacje +----------------- +Dalszych informacji nale/zy szuka/c w dokumentacji -> plik texidxbs.zip +dost/epny pod adresem: + + ftp://ftp.gust.org.pl/GUST/contrib/plindex/texidxbs.zip + + + +Opis plik/ow +------------ +00CONTEN -- zawarto/s/c katalogu bie/z/acego + +README -- ten plik + +PLABBRV BST -- cztery gotowe do pracy polskie style bibliograficzne +PLALPHA BST +PLPLAIN BST +PLUNSRT BST + +PLBTXBST DOC -- cztery polskie style bibliograficzne wraz z dokumentacj/a + nie gotowe do pracy + +MAKE-BST -- plik u/latwiaj/acy generacj/e czterech podstawowych styli + z~pliku plbtxbst.doc + +TEST.TEX +i TEST.BIB -- ma/ly przyk/ladzik + + +Generowanie styli +----------------- +W pliku PLBTXBST.DOC znajduj/a si/e cztery polskie style bibliograficzne +(PLABBRV.BST, PLALPHA.BST, PLPLAIN.BST, PLUNSRT.BST), kt/ore mo/zna +wygenerowa/c nast/epuj/aco: + +cc -P -E -DPLPLAIN plbtxbst.doc | grep -v "^%" > plplain.bst +cc -P -E -DPLUNSRT plbtxbst.doc | grep -v "^%" > plunsrt.bst +cc -P -E -DPLALPHA plbtxbst.doc | grep -v "^%" > plalpha.bst +cc -P -E -DPLABBRV plbtxbst.doc | grep -v "^%" > plabbrv.bst + +Dalszych informacji na temat generacji styli nale/zy szuka/c w dokumentacji +ftp://ftp.gust.org.pl/GUST/contrib/plindex/texidxbs.zip + + +Autor +----- +Nie czuj opor/ow i informuj mnie o ka/zdym znalezionym b/l/edzie. +Jestem uchwytny na li/scie dyskusyjnej GUSTu (GUST-L@man.torun.pl) + +Mi/lej zabawy! + +**Bogus/law Lichonski (b.lichonski@gwo.com.pl) + +[EOF] diff --git a/Master/texmf-dist/doc/plain/gustlib/readme.plmac218 b/Master/texmf-dist/doc/plain/gustlib/readme.plmac218 new file mode 100644 index 00000000000..5a2127faa0c --- /dev/null +++ b/Master/texmf-dist/doc/plain/gustlib/readme.plmac218 @@ -0,0 +1,24 @@ +Sopot 7 V 1996 +============== + +To jest pakiet PLIDXMAC v.2.18. ________________________________Free software! + +PLIDXMAC to system makr do tworzenia indeks/ow w systemie plain-TeX. +Od strony u/zytkownika makra te emuluj/a dzia/lanie makr LaTeX-owych. + +Test +---- +Aby przetestowa/c te makra nale/zy skompilowa/c plik -> przyklad.tex +nast/pnie uruchomi/c program PLINDEX z parametrami jak w przyk/ladowym +pliku plind.bat i ponownie skompilowa/c plik + +Plik stylu PLAINTEX.IST mo/zna umie/sci/c w katalogu wskazywanym przez +zmienn/a systemow/a (np: set indexstyle=c:\emtex\idxstyle) + +Dalsze informacje +----------------- +Dalszych informacji nale/zy szuka/c w pakiecie plind211.zip (plindex.asc) +i w dokumentacji -> plik texidxbs.zip (archiwum GUST + ftp.gust.org.pl:/pub/TeX/GUST/contrib/plindex/texidxbs.zip) + +(pakiet zmodyfikowa/l i uporz/adkowa/l St. Wawrykiewicz, 5 V 96) diff --git a/Master/texmf-dist/doc/plain/harvmac/harvsamp.tex b/Master/texmf-dist/doc/plain/harvmac/harvsamp.tex new file mode 100644 index 00000000000..738c1cde5d7 --- /dev/null +++ b/Master/texmf-dist/doc/plain/harvmac/harvsamp.tex @@ -0,0 +1,273 @@ +\input harvmac + +\Title{HUTP-91/A000}{This is the Template} + +%For more complicated situations, substitute for {\it either\/} argument: +%\Title{\vbox{\baselineskip12pt\hbox{HUTP-88/A000}\hbox{SLAC-PUB 88-001} +% \hbox{photocopy at own risk}}} +%{\vbox{\centerline{This title is too long to fit} +% \vskip2pt\centerline{comfortably on one line*}}} +% \footnote{}{*optional footnote on title} + +\centerline{Author One and Author Two\footnote{$^\dagger$} +{(author@huhepl.hepnet, \ @huhepl.bitnet, \ or \ @huhepl.harvard.edu)}} +\bigskip\centerline{Lyman Laboratory of Physics} +\centerline{Harvard University}\centerline{Cambridge, MA 02138} + +%if too many authors for abstract on same page, say \vfill\eject\pageno0 + +\vskip .3in +This sample is produced by the file `sample.tex' in the directory +tex\$macros and is intended to exhibit the conventions used +in the file `harvmac.tex' also in this directory, as inputted above. +{\it (You do not need to copy {\rm tex\$macros:harvmac.tex} into your own +directory\/}, nor do you need to explicitly specify its directory as +long as there is no harvmac.tex in your default directory.) +The vskips, etc., on this title page have been chosen to give +a reasonable looking HUTP style preprint in either full-sized or reduced +format (selected by typing b or $\ell$ in response to the big/little query +from the macro). Note that the `Title' and `Date' macros should be used +together to choose fonts and horizontal size appropriately, suppress first +page number, etc., for `big' and `little' formats with title page. One may +most easily start a new paper by making a copy of this sample and then +replacing the dummy text with something potentially more interesting. It is +useful to read pp.~1--54, 127--201 of Knuth's {\it Texbook\/}. + +\Date{4/91} %replace this line by \draft for preliminary versions + %or specify \draftmode at some point + +%if you want double-space, use e.g. \baselineskip=20pt plus 2pt minus 2pt + +\newsec{Introduction} + +Sections are begun +\def\\#1 {{\tt\char'134#1} }% (defines \\ to single backslash in macro names) +using the macro \\newsec as above. For papers without separate sections, +leave out \\newsec and equations will automatically be numbered consecutively +(without section numbers). + +References are done using the macro \\ref as follows\ref +\rIi{John Q. Physicist, Phys. Rev. D20 (1980) 1234.}\ref\rIii{Author +One and Author Two, Nucl. Phys. B52 (1975) 439.}. +The labels on the references\rIi\ and \rIii\ (which include the brackets, +note the second backslash to provide a space) can then be used to refer +back to them\rIi. (note no extra backslash needed before period\rIii, or +before comma.) Here is how to put two papers in one reference\ref +\rAG{L. Alvarez-Gaum\'e and P. Ginsparg, ``The Structure of +Gauge and Gravitational Anomalies,'' Harvard preprint HUTP-84/A016, +to appear in Ann. Phys.\semi +L. Alvarez-Gaum\'e and P. Ginsparg, Nucl. Phys. B243 (1984) 449.}. +Note the use of the macro \\semi %(= ;\hfil\break) +to separate them (the macro \\nref can be used to suppress the immediate +appearance of the bracketed reference number in the text if desired\ref +\rSP{Seminal Paper.}% +\nref\rMIF{Moderately Interesting Follow-ups.}% +--\ref\rCUR{Completely Useless Ripoffs.}). The references are listed in the +file refs.tmp, and can be of arbitrary length. + +The macro \\foot is used for footnotes.\foot{like this} They also get +automatically numbered\foot{consecutively} throughout the paper. + +To do equations we use the macro \\eqn +% +\eqn\eIi{R^a{}_b=d\om ab+\om ac\wedge\om cb} +% +and +% +\eqn\eIii{\om a{{b,\mu}}\equiv e^a{}_\nu\grad\mu e_b{}^\nu= +-e_b{}^\nu\grad\mu e^a{}_\nu.} +% +The equations are then referred to (see \eIi\ or \eIii) using the +label (which includes the parentheses). In draftmode, the equation +labels appear in the right margin next to the equation. + +%To start in the middle of text, initialize for example with +%\pageno=5\secno=3\meqno=2\startrefs{24}%\draftmode + +\newsec{Body} + +Ordinarily one uses equations with internal eqaligns: +% +\eqn\eIIx{\eqalign{&d=2+2=4\cr +&d=2\times 2=4.\cr}} +% +(How could Nature fail to avail herself of such a fine opportunity to base +herself on the remarkable numerical coincidence embodied in eqn.~\eIIx?) +To specify equation numbers in aligned equations and/or equations +specified with a's, b's, etc., just tag the equation numbers first +using the macro \\eqnn or \\eqna and then use \\eqalignno +\eqna\eIIi %(only for equation labels with a,b type argument) +\eqnn\eIIii +% +$$\eqalignno{\left(\int_{-\infty}^\infty e^{-x^2}\,dx\right)^2 +&={\rm something}&\eIIi a\cr +&={\rm something\ else}\cr +&=\pi&\eIIi b\cr +&=2\pi/2.&\eIIii\cr}$$ +% +We can then easily refer back to \eIIii\ or \eIIi{a}\ or \eIIi{a,b}\ +or even \eIIi{a\hbox{--}c}\ (\\eqna defines a label which takes an argument +$\{a,b,\ldots\}$ when used to refer back; it could be used instead of +\\eqnn if one remembers to type $\{\}$ after the label when referring +back, e.g., \eIIi{}\ ). (Note also that \\nref and \\eqnn can always be +used to simulate macro packages that require a separate macro to define +labels in advance of using them.) + +To list the references, use the macro \\listrefs as at the end of +this file\foot{In draftmode reference labels appear in left margin +next to reference.}. + +\newsec{Conclusion} + +\seclab\sconcl % (defines a section label for later use) +To call Tex on a source file filename.tex, issue the command +$$\hbox{\$ tex filename}$$ +which creates a file filename.dvi (and also a filename.log file). +The macro package will ask you whether you want ``big'' +output, ordinary typewritten pages, or ``little,'' reduced two-column pages +suitable for preprinting. +(Default is for postscript laserprinters. In order to print out in +reduced format on qms printer at HEPL, you need to specify \\qms +after inputting the macros.) + +\subsec{At Lyman} + +After eliminating any tex errors in your manuscript, issue the command +% +$$\hbox{\$ lw filename}$$ +% +to convert the .dvi file to a postscript file that is then automatically +sent to the lyman laserwriter. +(To process only selected portions of a .dvi file, +type instead \ \$ dvips filename --- then type i for interactive [or +? for help at any time]. +\$ lw filename.ps with explicit .ps extension then sends the .ps +file to the Lyman laserwriter.) + +\subsec{At HEPL} + +\subseclab\shepl % (defines a subsection label for later use) +(at hepl, use instead +% +$$\hbox{\$ qmstex filename}$$ +% +to convert the .dvi file to a .qms file that is then automatically +sent to the hepl laserprinter). Before logging off, it is +probably preferable to get rid of any .ps, .dvi, .qms, and .log files. + + +\bigbreak\bigskip\bigskip\centerline{{\bf Acknowledgements}}\nobreak +This work was supported in part by various colleagues. We also thank +NSF contract PHY-82-15249 for discussions. + +\appendix{A}{} + +Everything same as before, now equations appear as (A.1), etc. +Appendix A has no title. + +\appendix{B}{Enhancements added, 11/88} + +For fancier treatment of multiple references, say \refs{\rSP{--}\rCUR}, +\refs{\rIii,\rSP}, or even \refs{\rIi,\rIii,\rAG{--}\rCUR}. (The arguments +have to be previously defined references, so use \\nref before for any +first occurrences.) To strip off the brackets from a single reference for +some reason, use \\xref to give \xref\rIi\ instead of \rIi. + +To refer to equations (or references) that occur much later in the +paper, add \\writedefs after inputting macros. +This redefines the equation and reference macros so they write all the +label definitions to a file labeldefs.tmp. Then tex a second time with a +line inputting this file. To start from the middle of a paper, tex +the first part with \\writedefs and \\writestop %i.e. \writedefs\writestop +(the latter adds to labeldefs a line with the pagenumber, section number, +etc., at the point \\listrefs was called). Inputting labeldefs.tmp then +starts the continuation where the previous left off, and allows referring +to any of the previously defined reference and equation labels. + +The subsection option in section 3 above is also new. + +Another macro, \\footend, redefines \\foot so that it writes the footnotes +in a file foots.tmp, which is then automatically called in by \\listrefs +before the references. For journals that prefer the footnotes at the +end, one can thus add \\footend after inputting harvmac, +with no other changes necessary. + +A new macro \\fig (also \\nfig, \\figs, \\xfig) works for figures just +as does \\ref. The label is defined to include the abbreviation fig. +For papers with thousands of figures, the macro +\fig\flabel{This is the figure caption}. This works exactly as does +\ref\rlabel{For a compendium of references missing here, see M. Green, +J. Schwarz, and E. Witten, {\it Superstring theory\/}, Vols. I,II, +Cambridge Univ. Press (1987).}, with the label defined to include the +abbreviation `fig.~'. The macro \\nfig suppresses immediate appearance of +`fig.~x', \nfig\flabi{second dummy figure}\nfig\flabii{third dummy figure}% +so that one can instead say, for example, \figs{\flabi,\flabii}\ +using the macro \\figs. %(here gives figs.~2,3) +\\xfig strips off the `fig.~' to leave just the figure number, +i.e.\ \xfig\flabel, if necessary for some reason. +The figure captions are written in a file figs.tmp that is called in by +saying \\listfigs after \\listrefs. +(Note that the formerly used macro \\figures need not be used if +\\fig is instead used in conjunction with \\listfigs.) + +% Instead of \listfigs, if \fig not used in text, after \listrefs say +% +%\figures % former version, still supported +%\fig{1}{This is the first figure caption.} +%\fig{2}{This is the second figure caption.} +%\fig{3}{Note that \\fig automatically types a colon and lines up the +%text properly.} +% +%\parindent=20pt + +\appendix{C}{Enhancements added, 6/89} + +A macro \\seclab sets a label equal to the current section number, useful +for referring back to the section, e.g.\ as used in section \sconcl\ above. +Similarly, \\subseclab sets a label equal to the current +section.subsection, as in the definition of subsection \shepl\ in the ``at +HEPL'' subsection above. +(Using \\writedefs, these definitions will appear in labeldefs.tmp so can +be used as well to refer forward. In draftmode, the definitions appear in +the right margin.) + +A macro \\writetoc writes a file toc.tmp that contains section and +subsection numbers and headings with the pagenumbers on which they appear. +The macro \\listtoc writes the heading {\bf Contents} and inputs the file +toc.tex. It is evidently necessary to tex in two passes, renaming toc.tmp +to toc.tex after the first. +%(Note that the pagenumbers will not come out properly in ``little'' mode +% --- the easiest (and least elegant) way around this is to set +% \output={\plainoutput} (after harvmac input) to produce toc.tmp, +% then remove and tex again with \\listtoc to produce final .dvi file. + +\appendix{D}{Enhancements added, 1/91} + +A macro \\lref (same syntax as \\ref and \\nref) +\lref\reflabel{Another reference.} +defines the reflabel to be a macro that calls \\ref on itself. +This allows making a list of references via \\lref (in any order) at the +beginning of a file and only those used in the text will actually appear +(automatically listed in correct order of first appearance by \\listrefs). +(In principle \\lref can be used to compile a long standard reference file +to input, although this might eventually cause problems due to clogging up tex +memory with too many unused definitions.) + +\lref\riii{extra ref three.} +\lref\rii{extra ref two.} +\lref\ri{extra ref one.} +\\refs is defined to not display reference labels that appear in succession +(i.e.\ without intervening delimiter), so that e.g.\ \refs{\ri\rii{--}\riii} +can expand the middle reference \rii\ if it hasn't already appeared. +\\refs will also accept reflabels that are not previously defined so that it is +possible to tex preliminary versions without inputting full reference list +(For this mode, even individual refs, e.g.\ \refs{\reflabel}, need to be +called via \\refs.) + +The macro \\sequentialequations inserted at beginning causes +equations to be numbered sequentially (1)--(n) throughout paper +(rather than with section numbers (2.1)$\ldots$). + +\listrefs +\listfigs %(if necessary) +\bye diff --git a/Master/texmf-dist/doc/plain/jsmisc/deutsch.doc b/Master/texmf-dist/doc/plain/jsmisc/deutsch.doc new file mode 100644 index 00000000000..8285a980c3c --- /dev/null +++ b/Master/texmf-dist/doc/plain/jsmisc/deutsch.doc @@ -0,0 +1,329 @@ +% $Id: deutsch.doc,v 1.4 1995/07/30 13:23:56 schrod Exp $ +%---------------------------------------------------------------------- +% Written by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>. +% This file is distributed without any copyright restriction. + +% +% deutsch.doc -- typeset German documents with plain TeX. +% +% [TeX in MAKEPROG] +% (history at end) + + +\input progdoc + +\input names.sty +\def\babel{{\sf babel}} + + + +\title{Typesetting German Documents with Plain \TeX{}} + + + +\chap Introduction. + +There are several defencies of plain \TeX{} if used for German +documents: + +\item{---} Mappings of national characters (`umlauts' and `sharp~s') +to macros or to other character codes (if special fonts are available) +are missing. + +\item{---} \TeX{} produces lots of overfull hboxes for German texts. +That's because the words there are usually longer than English ones. +Furthermore we have to use much more hyphenation for German texts than +for English ones, narrow typesetting is more important than few +hyphenations. In particular, words with umlauts are not hyphenated +often anyhow, even with the `multiple-word' approach from |german.sty|. + +\item{---} It is typographic usage that between compound words +ligatures are not built. Plain~\TeX{} has no easy, readable way to +provide this. + +\noindent This file does the according definitions. They are quite +often only a kludge. But it is hard to make the restrictions +disappear, sometimes it is even impossible within the current +implementation of \TeX{}---and there will never be any other +implementation. So we must live with these kludges. + + +\sect Of course, there is more to German typesetting. Hyphenation, +also for words with umlauts and sharp~s, etc. This basic +functionality is supplied by the \babel{} system and DANTE's +|german.sty|, we have to load the appropriate module. + +There's one problem, though. \babel{}~3.5 defines +|\DeclareTextSymbol|, a symbol used by |german.sty| to decide if it +shall use NFSS code to access symbols. But that usage will lead to an +endless recursion, because some text symbols are defined by +themselves. I don't know if that problem is caused by \babel{}'s code +or by its usage in |german.sty| -- turning it off seems to be an +appropriate fix. + +\beginprog +\let\DeclareTextSymbol\undefined +\input german.sty +\endprog + + +\sect But before we start we declare some shorthands for category +codes. By declaring the at sign~(`|@|') as well as the +underscore~`(|_|)' as letters we can use them in our macros. (I +agree with D.~Knuth that |\identifier_several_words_long| is more +readable than |\IdentifierSeveralWordsLong| and in every case better +than |\p@@@s|.) With the at sign we can use the ``private'' Plain +macros and with the underscore we can make our own macros more +readable. But as we have to restore these category codes at the end +of this macro file we store their former values in control +sequences. This method is better than to use +a group because not all macros have to be defined global this way. + +\beginprog +\ifx \CatEscape\undefined + \chardef\CatEscape=0 + \chardef\CatOpen=1 + \chardef\CatClose=2 + \chardef\CatIgnore=9 + \chardef\CatLetter=11 + \chardef\CatOther=12 + \chardef\CatActive=13 % \active of plain.tex + \chardef\CatInvalid=15 + + \chardef\CatAtCode=\catcode`\@ + \chardef\CatUsCode=\catcode`\_ +\fi + +\catcode`\@=\CatLetter % top level macro file +\catcode`\_=\CatLetter +\endprog + + +\sect Let's identify this macro file against the user and in the Log file. + +\beginprog +\begingroup + \catcode`\$=\CatIgnore + \catcode`\:=\CatIgnore + \message{Support for German documents, $Revision: 1.4 $} +\endgroup +\endprog + + + +\chap National Characters. + +By default no extended characters are available, except those defined +below. I.e., we start to treat all characters from |"7F| to |"FF| as +invalid characters. + +\beginprog +\count@="7F +\loop + \catcode \the\count@ = \CatInvalid + \advance\count@ by 1 + \ifnum \count@ < "100 +\repeat +\endprog + + +\sect We provide a command for the definition of non-ASCII characters: +|\ExtendChar|. A sample definition of an ``Umlaut-a''~(\"a) in the +extended code of an IBM~PC (hex code~|"84|) is: +$$ + |\ExtendChar\^^84: {^^84}{\"a}| +$$ +First the hex code is given as a control sequence, followed by a +colon. Afterwards come two parameters, the first is again the hex +code, the second is the token list which should be used instead of the +hex code. + +The macro definition is rather easy, we just have to make the +respective character active and bind it to it's new meaning. + +\beginprog +\def\ExtendChar #1:{% + \catcode`#1 \CatActive + \extend_char + } +\def\extend_char #1#2{% + \def #1{#2}% + } +\endprog + + +\sect Now we can define some replacements. + +The braces after the control sequences are needed when characters from +the extended character set are written to an auxiliary file and read +in later. During the |\write| they are expanded and following white +space would be gobbled if the braces would not be there. + +\beginprog +% ISO-Latin-1 +\ExtendChar\^^c4: {^^c4}{\"A} +\ExtendChar\^^d6: {^^d6}{\"O} +\ExtendChar\^^dc: {^^dc}{\"U} +\ExtendChar\^^df: {^^df}{\ss{}} +\ExtendChar\^^e4: {^^e4}{\"a} +\ExtendChar\^^f6: {^^f6}{\"o} +\ExtendChar\^^fc: {^^fc}{\"u} + +% IBM PC (code page 850) +\ExtendChar\^^81: {^^81}{\"u} +\ExtendChar\^^84: {^^84}{\"a} +\ExtendChar\^^8e: {^^8e}{\"A} +\ExtendChar\^^94: {^^94}{\"o} +\ExtendChar\^^99: {^^99}{\"O} +\ExtendChar\^^9a: {^^9a}{\"U} +\ExtendChar\^^e1: {^^e1}{\ss{}} % actually \beta, used as \ss in Germany + +% Atari ST (like IBM PC, but with a real `sharp~s') +\ExtendChar\^^9e: {^^9e}{\ss{}} +\endprog + + + +\chap Paragraph Breaking. + +As outlined in the introduction, we allow longer interword spaces. A +line now may have a badness up to 2500, over 1500 a warning is to be +given. Furthermore the penalties for hyphenation are lowered because a +narrow typesetting is preferred against few hyphenations. + +These values are still experimental and should be tuned. + +As |german.sty| uses \babel{} compatible structure, the german +language hook is a good place to store such definitions. But to +use \babel{}'s convenient macros, too, we have to assure that it's +kernel code is loaded first. + +\beginprog +\ifx \babel@core@loaded\undefined + \input babel.def +\fi +\addto\extrasgerman{% + \babel@savevariable\tolerance + \babel@savevariable\hbadness + \babel@savevariable\doublehyphendemerits + \babel@savevariable\finalhyphendemerits + \babel@savevariable\adjdemerits + \tolerance 2500 \hbadness 1500 + \doublehyphendemerits 50000 + \finalhyphendemerits 25000 + \adjdemerits 50000 + } +\endprog + + +\sect In some languages ligatures should not appear between compound +words. We use {\tt \string\|\/} to mark those places. This is only +done within text mode, in math mode {\tt \string\|\/} is still +`$\|$'. But it is sure that one can always hyphenate between compound +words, so we insert |\-|. To allow the hyphenation in other parts of +the word though, we use |\allowhyphens| again. + +\beginprog +\def\|{% % break open a ligature (if not in math mode) + \relax + \ifmmode \Vert + \else \allowhyphens\-\allowhyphens + \fi + } +\endprog + + +\sect Don't use the dreaded `double quote special meaning' stuff of +|german.sty|. And use original umlauts. Already in M\"unster I voted +against it\dots + +\beginprog +\addto\extrasgerman{% + \mdqoff + \umlautlow + } +\endprog + + +\sect Define |\SwitchtoLanguage| for upward compatibility. It does +not really do the same, the old definition was more similar to +|\selectlanguage|. But other languages have to be declared +explicitely, that's not done by this macro file. So we just want to +make old documents processable. + +\beginprog +\def\SwitchtoLanguage#1{\language \csname l@#1\endcsname} +\endprog + + +\sect We are finished; switch to german language (to enable the new +extras defined above), restore the catcodes and prevent from following +garbage. + +\beginprog +\selectlanguage{german} + +\catcode`\@=\CatAtCode +\catcode`\_=\CatUsCode + +\endinput +\endprog + + +%% \sect {\it Acknowledgements:}\quad I would like to thank XXX + + +\bye + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% $Log: deutsch.doc,v $ +% Revision 1.4 1995/07/30 13:23:56 schrod +% Discard babel definition of \DeclareTextCommand before including +% german.sty, they are incompatible. +% +% Revision 1.3 1995/07/29 17:58:24 schrod +% Use german.sty, not germanb.sty. (babel 3.5 is not functional for +% plain TeX any more.) But we still want to use babel's macros, we have +% to load it's kernel for that. +% +% Revision 1.2 1995/03/13 23:18:10 schrod +% Started to manage this package with CVS. Made minor code cleanup. +% +% Revision 1.1 1994/10/16 16:57:30 schrod +% Merged macros from local.tex, codes.tex, and language.tex. This +% new file is mainly there to provide upward compatibility for our old +% documents. +% +% +% +% pre-CVS Version History: +% +% DATE WHO REMARKS +% 91-01-18 js set all extended characters to code invalid +% 90-12-23 js added the definition of \ExtendChar for usage in codes.tex. +% 90-10-06 js renamed from dlocal to local, it's now international, +% adapted to TeX 3: +% included codes.tex and langdef.tex if they exist, +% assumed that language.tex is already loaded, +% defined German parameters as a language hook, +% removed first \allowhyphens in \uml@ut, +% documented it with MAKEPROG. +% 89-10-27 js was reworked for ILaTeX +% 89-05-31 js defined \| as a separator for ligatures in text mode +% 87-10-01 js introduced \protect, +% set parameters for German page makeup +% 87-??-?? kg first release +% +% kg: Klaus Guntermann <gunterma@<schrod@iti.informatik.th-darmstadt.de> +% js: Joachim Schrod <schrod@iti.informatik.th-darmstadt.de> + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Local Variables: +mode: plain-TeX +TeX-master: t +TeX-brace-indent-level: 4 +End: diff --git a/Master/texmf-dist/doc/plain/jsmisc/deutsch.tex b/Master/texmf-dist/doc/plain/jsmisc/deutsch.tex new file mode 100644 index 00000000000..26f3e3719d6 --- /dev/null +++ b/Master/texmf-dist/doc/plain/jsmisc/deutsch.tex @@ -0,0 +1,350 @@ +% $Id: deutsch.doc,v 1.4 1995/07/30 13:23:56 schrod Exp $ +%---------------------------------------------------------------------- +% Written by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>. +% This file is distributed without any copyright restriction. + +% +% deutsch.doc -- typeset German documents with plain TeX. +% +% [TeX in MAKEPROG] +% (history at end) + + +%%%% +%%%% +%%%% These TeX macros were documented with the documentation system +%%%% MAKEPROG and automatically converted to the current form. +%%%% If you have MAKEPROG available you may transform it back to +%%%% the original input: Remove every occurence of three percents +%%%% and one optional blank from the beginning of a line and remove +%%%% every line which starts with four percents. The following lex +%%%% program will do this: +%%%% +%%%% %% +%%%% +%%%% ^%%%\ ? ; +%%%% ^%%%%.*\n ; +%%%% +%%%% If you just want to print the documentation you may fetch +%%%% the archive print-makeprog.tar.Z from ftp.th-darmstadt.de (directory +%%%% pub/tex/latex). It contains *all* used styles -- but beware, they +%%%% may not be in a documented form... +%%%% +%%%% +%%% \input progdoc + +%%% \input names.sty +%%% \def\babel{{\sf babel}} + + + +%%% \title{Typesetting German Documents with Plain \TeX{}} + + + +%%% \chap Introduction. + +%%% There are several defencies of plain \TeX{} if used for German +%%% documents: + +%%% \item{---} Mappings of national characters (`umlauts' and `sharp~s') +%%% to macros or to other character codes (if special fonts are available) +%%% are missing. + +%%% \item{---} \TeX{} produces lots of overfull hboxes for German texts. +%%% That's because the words there are usually longer than English ones. +%%% Furthermore we have to use much more hyphenation for German texts than +%%% for English ones, narrow typesetting is more important than few +%%% hyphenations. In particular, words with umlauts are not hyphenated +%%% often anyhow, even with the `multiple-word' approach from |german.sty|. + +%%% \item{---} It is typographic usage that between compound words +%%% ligatures are not built. Plain~\TeX{} has no easy, readable way to +%%% provide this. + +%%% \noindent This file does the according definitions. They are quite +%%% often only a kludge. But it is hard to make the restrictions +%%% disappear, sometimes it is even impossible within the current +%%% implementation of \TeX{}---and there will never be any other +%%% implementation. So we must live with these kludges. + + +%%% \sect Of course, there is more to German typesetting. Hyphenation, +%%% also for words with umlauts and sharp~s, etc. This basic +%%% functionality is supplied by the \babel{} system and DANTE's +%%% |german.sty|, we have to load the appropriate module. + +%%% There's one problem, though. \babel{}~3.5 defines +%%% |\DeclareTextSymbol|, a symbol used by |german.sty| to decide if it +%%% shall use NFSS code to access symbols. But that usage will lead to an +%%% endless recursion, because some text symbols are defined by +%%% themselves. I don't know if that problem is caused by \babel{}'s code +%%% or by its usage in |german.sty| -- turning it off seems to be an +%%% appropriate fix. + +%%% \beginprog +\let\DeclareTextSymbol\undefined +\input german.sty +%%% \endprog + + +%%% \sect But before we start we declare some shorthands for category +%%% codes. By declaring the at sign~(`|@|') as well as the +%%% underscore~`(|_|)' as letters we can use them in our macros. (I +%%% agree with D.~Knuth that |\identifier_several_words_long| is more +%%% readable than |\IdentifierSeveralWordsLong| and in every case better +%%% than |\p@@@s|.) With the at sign we can use the ``private'' Plain +%%% macros and with the underscore we can make our own macros more +%%% readable. But as we have to restore these category codes at the end +%%% of this macro file we store their former values in control +%%% sequences. This method is better than to use +%%% a group because not all macros have to be defined global this way. + +%%% \beginprog +\ifx \CatEscape\undefined + \chardef\CatEscape=0 + \chardef\CatOpen=1 + \chardef\CatClose=2 + \chardef\CatIgnore=9 + \chardef\CatLetter=11 + \chardef\CatOther=12 + \chardef\CatActive=13 % \active of plain.tex + \chardef\CatInvalid=15 + + \chardef\CatAtCode=\catcode`\@ + \chardef\CatUsCode=\catcode`\_ +\fi + +\catcode`\@=\CatLetter % top level macro file +\catcode`\_=\CatLetter +%%% \endprog + + +%%% \sect Let's identify this macro file against the user and in the Log file. + +%%% \beginprog +\begingroup + \catcode`\$=\CatIgnore + \catcode`\:=\CatIgnore + \message{Support for German documents, $Revision: 1.4 $} +\endgroup +%%% \endprog + + + +%%% \chap National Characters. + +%%% By default no extended characters are available, except those defined +%%% below. I.e., we start to treat all characters from |"7F| to |"FF| as +%%% invalid characters. + +%%% \beginprog +\count@="7F +\loop + \catcode \the\count@ = \CatInvalid + \advance\count@ by 1 + \ifnum \count@ < "100 +\repeat +%%% \endprog + + +%%% \sect We provide a command for the definition of non-ASCII characters: +%%% |\ExtendChar|. A sample definition of an ``Umlaut-a''~(\"a) in the +%%% extended code of an IBM~PC (hex code~|"84|) is: +%%% $$ +%%% |\ExtendChar\^^84: {^^84}{\"a}| +%%% $$ +%%% First the hex code is given as a control sequence, followed by a +%%% colon. Afterwards come two parameters, the first is again the hex +%%% code, the second is the token list which should be used instead of the +%%% hex code. + +%%% The macro definition is rather easy, we just have to make the +%%% respective character active and bind it to it's new meaning. + +%%% \beginprog +\def\ExtendChar #1:{% + \catcode`#1 \CatActive + \extend_char + } +\def\extend_char #1#2{% + \def #1{#2}% + } +%%% \endprog + + +%%% \sect Now we can define some replacements. + +%%% The braces after the control sequences are needed when characters from +%%% the extended character set are written to an auxiliary file and read +%%% in later. During the |\write| they are expanded and following white +%%% space would be gobbled if the braces would not be there. + +%%% \beginprog +% ISO-Latin-1 +\ExtendChar\^^c4: {^^c4}{\"A} +\ExtendChar\^^d6: {^^d6}{\"O} +\ExtendChar\^^dc: {^^dc}{\"U} +\ExtendChar\^^df: {^^df}{\ss{}} +\ExtendChar\^^e4: {^^e4}{\"a} +\ExtendChar\^^f6: {^^f6}{\"o} +\ExtendChar\^^fc: {^^fc}{\"u} + +% IBM PC (code page 850) +\ExtendChar\^^81: {^^81}{\"u} +\ExtendChar\^^84: {^^84}{\"a} +\ExtendChar\^^8e: {^^8e}{\"A} +\ExtendChar\^^94: {^^94}{\"o} +\ExtendChar\^^99: {^^99}{\"O} +\ExtendChar\^^9a: {^^9a}{\"U} +\ExtendChar\^^e1: {^^e1}{\ss{}} % actually \beta, used as \ss in Germany + +% Atari ST (like IBM PC, but with a real `sharp~s') +\ExtendChar\^^9e: {^^9e}{\ss{}} +%%% \endprog + + + +%%% \chap Paragraph Breaking. + +%%% As outlined in the introduction, we allow longer interword spaces. A +%%% line now may have a badness up to 2500, over 1500 a warning is to be +%%% given. Furthermore the penalties for hyphenation are lowered because a +%%% narrow typesetting is preferred against few hyphenations. + +%%% These values are still experimental and should be tuned. + +%%% As |german.sty| uses \babel{} compatible structure, the german +%%% language hook is a good place to store such definitions. But to +%%% use \babel{}'s convenient macros, too, we have to assure that it's +%%% kernel code is loaded first. + +%%% \beginprog +\ifx \babel@core@loaded\undefined + \input babel.def +\fi +\addto\extrasgerman{% + \babel@savevariable\tolerance + \babel@savevariable\hbadness + \babel@savevariable\doublehyphendemerits + \babel@savevariable\finalhyphendemerits + \babel@savevariable\adjdemerits + \tolerance 2500 \hbadness 1500 + \doublehyphendemerits 50000 + \finalhyphendemerits 25000 + \adjdemerits 50000 + } +%%% \endprog + + +%%% \sect In some languages ligatures should not appear between compound +%%% words. We use {\tt \string\|\/} to mark those places. This is only +%%% done within text mode, in math mode {\tt \string\|\/} is still +%%% `$\|$'. But it is sure that one can always hyphenate between compound +%%% words, so we insert |\-|. To allow the hyphenation in other parts of +%%% the word though, we use |\allowhyphens| again. + +%%% \beginprog +\def\|{% % break open a ligature (if not in math mode) + \relax + \ifmmode \Vert + \else \allowhyphens\-\allowhyphens + \fi + } +%%% \endprog + + +%%% \sect Don't use the dreaded `double quote special meaning' stuff of +%%% |german.sty|. And use original umlauts. Already in M\"unster I voted +%%% against it\dots + +%%% \beginprog +\addto\extrasgerman{% + \mdqoff + \umlautlow + } +%%% \endprog + + +%%% \sect Define |\SwitchtoLanguage| for upward compatibility. It does +%%% not really do the same, the old definition was more similar to +%%% |\selectlanguage|. But other languages have to be declared +%%% explicitely, that's not done by this macro file. So we just want to +%%% make old documents processable. + +%%% \beginprog +\def\SwitchtoLanguage#1{\language \csname l@#1\endcsname} +%%% \endprog + + +%%% \sect We are finished; switch to german language (to enable the new +%%% extras defined above), restore the catcodes and prevent from following +%%% garbage. + +%%% \beginprog +\selectlanguage{german} + +\catcode`\@=\CatAtCode +\catcode`\_=\CatUsCode + +\endinput +%%% \endprog + + +%%% %% \sect {\it Acknowledgements:}\quad I would like to thank XXX + + +%%% \bye + +%%% +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% % +%%% % $Log: deutsch.doc,v $ +%%% % Revision 1.4 1995/07/30 13:23:56 schrod +%%% % Discard babel definition of \DeclareTextCommand before including +%%% % german.sty, they are incompatible. +%%% % +%%% % Revision 1.3 1995/07/29 17:58:24 schrod +%%% % Use german.sty, not germanb.sty. (babel 3.5 is not functional for +%%% % plain TeX any more.) But we still want to use babel's macros, we have +%%% % to load it's kernel for that. +%%% % +%%% % Revision 1.2 1995/03/13 23:18:10 schrod +%%% % Started to manage this package with CVS. Made minor code cleanup. +%%% % +%%% % Revision 1.1 1994/10/16 16:57:30 schrod +%%% % Merged macros from local.tex, codes.tex, and language.tex. This +%%% % new file is mainly there to provide upward compatibility for our old +%%% % documents. +%%% % +%%% % +%%% % +%%% % pre-CVS Version History: +%%% % +%%% % DATE WHO REMARKS +%%% % 91-01-18 js set all extended characters to code invalid +%%% % 90-12-23 js added the definition of \ExtendChar for usage in codes.tex. +%%% % 90-10-06 js renamed from dlocal to local, it's now international, +%%% % adapted to TeX 3: +%%% % included codes.tex and langdef.tex if they exist, +%%% % assumed that language.tex is already loaded, +%%% % defined German parameters as a language hook, +%%% % removed first \allowhyphens in \uml@ut, +%%% % documented it with MAKEPROG. +%%% % 89-10-27 js was reworked for ILaTeX +%%% % 89-05-31 js defined \| as a separator for ligatures in text mode +%%% % 87-10-01 js introduced \protect, +%%% % set parameters for German page makeup +%%% % 87-??-?? kg first release +%%% % +%%% % kg: Klaus Guntermann <gunterma@<schrod@iti.informatik.th-darmstadt.de> +%%% % js: Joachim Schrod <schrod@iti.informatik.th-darmstadt.de> + + +%%% +%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Local Variables: +%%% mode: plain-TeX +%%% TeX-master: t +%%% TeX-brace-indent-level: 4 +%%% End: diff --git a/Master/texmf-dist/doc/plain/jsmisc/idverb.doc b/Master/texmf-dist/doc/plain/jsmisc/idverb.doc new file mode 100644 index 00000000000..79fb0b183dd --- /dev/null +++ b/Master/texmf-dist/doc/plain/jsmisc/idverb.doc @@ -0,0 +1,194 @@ +% $Id: idverb.doc,v 1.1 1995/03/13 23:18:11 schrod Exp $ +%---------------------------------------------------------------------- +% Written by Joachim Schrod <schrod@iti.informatik.th-darmstadt.de>. +% Copyright conditions see below. + +% +% idverb.doc --- typeset identifiers verbatim +% +% [plain TeX in MAKEPROG] +% (history at end) + + +\input progdoc + +\input names.sty +\def\v{{\tt \vbar\/}} + + + +\title{Identifiers Verbatim \`a la {\ttitlefont WEB}} + + + +\chap Introduction. + +This macro files allows to write identifiers in a \WEB{} like style, +i.e.\ as {\tt \origvert identifier\origvert\/}. The identifiers are +typeset verbatim in the monospace type face. The macros +|\makevertother| and |\makevertactive| are available to activate and +deactivate the special behaviour of the vertical bar. + + +\sect This macro file uses the namespace |idv|. + +\beginprog +\ifx \IdvLoaded\undefined + \def\IdvLoaded{$Revision: 1.1 $} +\else \endinput \fi % <-- one line! +\endprog + + +\sect These macros are supported. Send bug reports, comments and +repairs. + +The reference version may be retrieved via anonymous ftp from +|ftp.th-darmstadt.de| [130.83.47.112], directory |pub/tex/plain|. It's +placed there as a gzipped tar file. (The information on the +IP~number is dated March 13, 1995. It might have changed, also this is very +unlikely. Use your friendly nameserver.) + + +\sect This is freely distributable software; you can redistribute it +and/or modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version~2 of the +License, or (at your option) any later version. + +This software is distributed in the hope that it will be useful, but +{\bf without any warranty\/}; without even the implied warranty of +{\bf merchantability\/} or {\bf fitness for a particular purpose}. See +the GNU General Public License for more details. + +You should have received a copy of the GNU General Public License in +the file |License| along with this package; if not, write to the Free +Software Foundation, Inc., 675~Mass Ave, Cambridge, MA~02139,~USA. + + +\sect But before we start we declare some shorthands for category +codes. By declaring the at sign~(`|@|') as well as the +underscore~`(|_|)' as letters we can use them in our macros. (I agree +with D.~Knuth that |\identifier_several_words_long| is more readable +than |\IdentifierSeveralWordsLong| and in every case better than +|\p@@@s|.) With the at sign we can use the ``private'' Plain macros +and with the underscore we can make our own macros more readable. But +as we have to restore these category codes at the end of this macro +file we store their former values in control sequences. This method is +better than to use a group because not all macros have to be defined +global this way. + +Only the first macro file read in defines the |Cat| cseqs. + +\beginprog +\ifx \CatEscape\undefined + \chardef\CatEscape=0 + \chardef\CatOpen=1 + \chardef\CatClose=2 + \chardef\CatIgnore=9 + \chardef\CatLetter=11 + \chardef\CatOther=12 + \chardef\CatActive=13 % \active of plain.tex + \chardef\CatInvalid=15 + + \chardef\CatAtCode=\catcode`\@ + \chardef\CatUsCode=\catcode`\_ +\fi + +\catcode`\@=\CatLetter % top level macro file +\catcode`\_=\CatLetter +\endprog + + +\sect Let's identify this macro file against the user and in the Log file. + +\beginprog +\begingroup + \catcode`\$=\CatIgnore + \catcode`\:=\CatIgnore + \message{Verbatim identifiers, $Revision: 1.1 $} +\endgroup +\endprog + + +\sect The usual verbatim macros use |\dospecials| to change the +catcode of all special characters. We have to add `\v' to this list. +The old meaning is stored in |\idv_OrigDospecials|. + +\beginprog +\let\idv_OrigDospecials=\dospecials +\begingroup + \def\do#1{\noexpand\do\noexpand#1} + \xdef\dospecials{\idv_OrigDospecials\do\|} +\endgroup +\let\idv_dospecials=\dospecials + +\def\makevertactive{\catcode`\|\CatActive \let\dospecials\idv_dospecials} +\def\makevertother{\catcode`\|\CatOther \let\dospecials\idv_OrigDospecials} + +\makevertactive +\endprog + + +\sect Now we can define `\v'. This definition is a little bit tricky, +as it redefines itself to |\egroup| to close the hbox. But if the hbox +is ended, `\v' is restored to its original meaning. |\origvert| is +given the original meaning of `\v'. |\vbar| is the character from the +current font that has the ASCII code of a vertical bar, sometimes this +{\it is\/} a vertical bar. + +\beginprog +\let\origvert=| +\chardef\vbar=`\| + +\def\idv_setup_verbatim{% + \def\do##1{\catcode`##1\CatOther}\idv_OrigDospecials + \parskip\z@skip \parindent\z@ + \obeylines \obeyspaces \frenchspacing + \tt + } + +\def|{% + \leavevmode + \hbox\bgroup + \let\par\space \idv_setup_verbatim + \let|\egroup + } +\endprog + + +\sect We are finished; +restore the catcodes and prevent from following garbage. + +\beginprog +\catcode`\@=\CatAtCode +\catcode`\_=\CatUsCode + +\endinput +\endprog + + +%% \sect {\it Acknowledgements:}\quad I would like to thank XXX + + +\bye + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% $Log: idverb.doc,v $ +% Revision 1.1 1995/03/13 23:18:11 schrod +% Started to manage this package with CVS. Made minor code cleanup. +% + +% +% Pre-CVS Log: +% +% 27 Jul 89 js Initial revision. + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +Local Variables: +mode: plain-TeX +TeX-master: t +TeX-brace-indent-level: 4 +End: diff --git a/Master/texmf-dist/doc/plain/metatex/README b/Master/texmf-dist/doc/plain/metatex/README new file mode 100644 index 00000000000..1e384d8e7ef --- /dev/null +++ b/Master/texmf-dist/doc/plain/metatex/README @@ -0,0 +1,92 @@ +
+\title METATeX
+
+\section What is METATeX?
+
+METATeX is a set of plain TeX and METAFONT macros that you can use to
+define both the text and the figures in a single source file. Because
+METATeX sets up two way communication, from TeX to METAFONT and back
+from METAFONT to TeX, drawing dimensions can be controlled by TeX and
+labels can be located by METAFONT. Only standard features of TeX and
+METAFONT are used, but two runs of TeX and one of METAFONT are needed.
+
+
+\section How to use METATeX?
+
+Please read the TUGboat paper on METATeX to get an explanation. The
+paper is provided here in pdf format (mtpaper.pdf). To recreate yourself
+the paper, you will need the plain TUGboat style files (tugboat.cmn and
+tugboat.sty), in addition to the sources located in the mtpaper subdir
+(mtpaper.tex, delay.mf, diagram.tex, frame.tex and shadow.tex),.
+
+The original TUGboat paper on METATeX is:
+
+"METATeX" by Ram\'on Casares.
+ TUGboat (ISSN 0896-3207)
+ Volume 23, Number 3/4, pp. 313-318, 2002.
+
+It is also available on-line:
+ http://www.tug.org/TUGboat/Articles/tb23-3-4/tb75casa.pdf
+
+
+\section Where to find METATeX?
+
+The home of METATeX is CTAN:
+
+ http://www.ctan.org/tex-archive/macros/plain/contrib/metatex/
+
+
+\section Bugs and comments
+
+Please address your comments and bug reports to (change # by @):
+
+ r.casares#computer.org
+
+I do not promise anything.
+
+
+\section Files
+
+METATeX comprises the following files:
+
+ metatex.tex
+ mtmp2pdf.tex
+ mtpaper.pdf
+ mtpaper/mtpaper.tex
+ mtpaper/delay.mf
+ mtpaper/diagram.tex
+ mtpaper/frame.tex
+ mtpaper/shadow.tex
+ README
+ gpl.txt
+
+
+\section License
+
+ METATeX.TeX communicates TeX and METAFONT
+ Copyright (C) 2003, 2004 Ram\'on Casares
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the
+ Free Software Foundation, Inc.,
+ 59 Temple Place, Suite 330,
+ Boston, MA 02111-1307 USA
+
+
+\section Versions
+
+ 1.1 Date 2004.08.12. File mptopdf.tex renamed to mtmp2pdf.tex.
+ 1.0 Date 2003.10.15. The first public version.
+
+
+\bye
diff --git a/Master/texmf-dist/doc/plain/metatex/gpl.txt b/Master/texmf-dist/doc/plain/metatex/gpl.txt new file mode 100644 index 00000000000..98acb4ffd90 --- /dev/null +++ b/Master/texmf-dist/doc/plain/metatex/gpl.txt @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/Master/texmf-dist/doc/plain/metatex/mtmp2pdf.tex b/Master/texmf-dist/doc/plain/metatex/mtmp2pdf.tex new file mode 100644 index 00000000000..6cc2b4841b4 --- /dev/null +++ b/Master/texmf-dist/doc/plain/metatex/mtmp2pdf.tex @@ -0,0 +1,369 @@ +% MTMP2PDF.TeX (RMCG19970919) + +% MTMP2PDF.TeX converts from PostScript code (by METAPost) to PDF +% Adapted by Ram\'on Casares from ConTeXt by PRAGMA +% ConTeXt copyright={PRAGMA / Hans Hagen & Ton Otten} +% Under the same terms as ConTeXt +% http://www.pragma-ade.com/general/manuals/mreadme.pdf + +% \catcode`\@ should be 11 + +\newcount\MPcounter +\newdimen\MPdimen + +% POSTSCRIPT operators that METAPOST uses + +\def \PScurveto {curveto} +\def \PSlineto {lineto} +\def \PSmoveto {moveto} +\def \PSshowpage {showpage} +\def \PSnewpath {newpath} +\def \PSfshow {fshow} +\def \PSclosepath {closepath} +\def \PSfill {fill} +\def \PSstroke {stroke} +\def \PSclip {clip} +\def \PSrlineto {rlineto} +\def \PSsetlinejoin {setlinejoin} +\def \PSsetlinecap {setlinecap} +\def \PSsetmiterlimit {setmiterlimit} +\def \PSsetgray {setgray} +\def \PSsetrgbcolor {setrgbcolor} +\def \PSsetdash {setdash} +\def \PSgsave {gsave} +\def \PSgrestore {grestore} +\def \PStranslate {translate} +\def \PSscale {scale} +\def \PSconcat {concat} +\def \PSdtransform {dtransform} + +\def \PSBoundingBox {BoundingBox:} +\def \PSHiResBoundingBox {HiResBoundingBox:} +\def \PSExactBoundingBox {ExactBoundingBox:} +\def \PSPage {Page:} + +% A stack + +\newcount\nofMPsegments +\newcount\nofMParguments + +\def\@@MP{@@MP} + +\def\setMPargument#1{\advance\nofMParguments by 1 + \expandafter\def + \csname\@@MP\the\nofMPsegments\the\nofMParguments\endcsname% + {\do#1}} + +\def\gMPa#1{\csname\@@MP0#1\endcsname} +\def\gMPs#1{\csname\@@MP\the\nofMPsegments#1\endcsname} + +\def\setMPkeyword#1 + {\expandafter\def\csname\@@MP\the\nofMPsegments0\endcsname{#1}% + \advance\nofMPsegments by 1 \nofMParguments=0\relax} + +\def\getMPkeyword#1{\csname\@@MP#10\endcsname} + +\def\resetMPstack{\catcode`\%=13 % active + \let\handleMPgraphic=\handleMPendgraphic + \def\resetMPstack{\nofMParguments=0\relax}% + \resetMPstack} + +% Ignore, most of times, ( and ), but with care +% Take care, also of TeX specials + +\def\octalMPcharacter#1#2#3{\char'#1#2#3\relax} + +\bgroup +\catcode`\|=14 \catcode`\%=13 \catcode`\[=13 \catcode`\]=13 +\catcode`\{=13 \catcode`\}=13 \catcode`B=1 \catcode`E=2 +\gdef\ignoreMPspecialsB\def%BE\def[BE\def]BE\def{BE\def}BEE +\gdef\obeyMPspecialsB\def%B\char 37\relax E| + \def[B\char 91\relax E\def]B\char 93\relax E| + \def{B\char123\relax E\def}B\char125\relax EE +\gdef\setMPspecialsB\catcode`\%=13 + \catcode`\[=13 \catcode`\]=13 \catcode`\{=13 \catcode`\}=13 + \catcode`\$=11 \catcode`\_=11 \catcode`\#=11 \catcode`\^=11 + \catcode`\&=11 \catcode`\|=11 \catcode`\~=11 + \def\(B\char40\relax E\def\)B\char41\relax E\def\\B\char92\relax E| + \def\0B\octalMPcharacter0E\def\1B\octalMPcharacter1E| + \def\2B\octalMPcharacter2E\def\3B\octalMPcharacter3E| + \def\4B\octalMPcharacter4E\def\5B\octalMPcharacter5E| + \def\6B\octalMPcharacter6E\def\7B\octalMPcharacter7E| + \def\8B\octalMPcharacter8E\def\9B\octalMPcharacter9EE +\egroup + +% We use the comment symbol as a sort of trigger: + +\bgroup \catcode`\%=13 +\gdef\startMPscanning{\let%=\startMPconversion} +\egroup + +\def\startMPconversion{\catcode`\%=9 \ignoreMPspecials \handleMPsequence} + +% The main loop. +% Most arguments are numbers that can be recognized by their \lccode. + +\def\dohandleMPsequence#1#2 {\ifnum\lccode`#1=0 \setMPargument{#1#2}% + \else \edef\somestring{#1#2}\ifx\somestring\PSmoveto + \edef\lastMPmoveX{\gMPa1}\edef\lastMPmoveY{\gMPa2}% + \pdfliteral{\gMPa1 \gMPa2 m}\resetMPstack + \else\ifx\somestring\PSnewpath \let\handleMPsequence=\handleMPpath + \else\ifx\somestring\PSgsave \pdfliteral{q}\resetMPstack + \else\ifx\somestring\PSgrestore \pdfliteral{Q}\resetMPstack + \else\ifx\somestring\PSdtransform % == setlinewidth + \let\handleMPsequence=\handleMPdtransform + \else\ifx\somestring\PSconcat + \pdfliteral{\gMPa1 \gMPa2 \gMPa3 \gMPa4 \gMPa5 \gMPa6 cm}\resetMPstack + \else\ifx\somestring\PSsetrgbcolor + \pdfliteral{\gMPa1 \gMPa2 \gMPa3 rg \gMPa1 \gMPa2 \gMPa3 RG}% + \resetMPstack + \else\ifx\somestring\PSsetgray \pdfliteral{\gMPa1 g \gMPa1 G}\resetMPstack + \else\ifx\somestring\PStranslate + \pdfliteral{1 0 0 1 \gMPa1 \gMPa2 cm}\resetMPstack + \else\ifx\somestring\PSsetdash \handleMPsetdash \resetMPstack + \else\ifx\somestring\PSsetlinejoin \pdfliteral{\gMPa1 j}\resetMPstack + \else\ifx\somestring\PSsetmiterlimit \pdfliteral{\gMPa1 M}\resetMPstack + \else\ifx\somestring\PSfshow \handleMPfshow \resetMPstack + \else\ifx\somestring\PSsetlinecap \pdfliteral{\gMPa1 J}\resetMPstack + \else\ifx\somestring\PSrlineto + \pdfliteral{\lastMPmoveX\space \lastMPmoveY\space l S}\resetMPstack + \else\ifx\somestring\PSscale + \pdfliteral{\gMPa1 0 0 \gMPa2 0 0 cm}\resetMPstack + \else \handleMPgraphic{#1#2}% + \fi\fi\fi\fi\fi\fi\fi\fi \fi\fi\fi\fi\fi\fi\fi\fi \fi + \handleMPsequence} + +% Graphics + +\def\handleMPendgraphic#1{\ifx\somestring\PSshowpage + \let\handleMPsequence=\finishMPgraphic \else + \setMPargument{#1}\fi} + +\def\handleMPbegingraphic#1{\ifx\somestring\PSBoundingBox + \let\handleMPsequence=\handleMPboundingbox + \else\ifx\somestring\PSHiResBoundingBox + \let\handleMPsequence=\handleMPboundingbox + \else\ifx\somestring\PSExactBoundingBox + \let\handleMPsequence=\handleMPboundingbox + \else\ifx\somestring\PSPage + \let\handleMPsequence=\handleMPpage + \else \setMPargument{#1}\fi\fi\fi\fi} + +\let\handleMPgraphic=\handleMPbegingraphic + +% There are three kind of bounding boxes: +% BoundingBox: llx lly ucx ucy +% HiResBoundingBox: llx lly ucx ucy +% ExactBoundingBox: llx lly ucx ucy +% The dimensions are saved for later use. + +\def\handleMPboundingbox #1 #2 #3 #4 {\nofMParguments=0 + \let\handleMPsequence=\dohandleMPsequence \handleMPsequence} + +% The page comment is a signal that stackbuilding can be started + +\def\handleMPpage #1 #2 {\nofMParguments=0 + \let\handleMPsequence=\dohandleMPsequence \handleMPsequence} + +% METAPOST: 0 0 rlineto + +\def\lastMPmoveX{0}\def\lastMPmoveY{0} + +% Text + +{\catcode`\.=12 \catcode`\p=12 \catcode`\t=12 + \gdef\WITHOUTPT#1pt{#1}} +\def\withoutpt#1{\expandafter\WITHOUTPT#1} +\def\ScaledPointsToBigPoints#1#2{\MPdimen=#1sp\relax + \MPdimen=.996264\MPdimen \edef#2{\withoutpt{\the\MPdimen}}} + +\def\handleMPfshow{\setbox0=\hbox{\obeyMPspecials + \edef\size{\gMPa{\the\nofMParguments} }% + \advance\nofMParguments by -1 + \font\temp=\gMPa{\the\nofMParguments} at \size bp + \advance\nofMParguments by -1 \temp + \ifnum\nofMParguments=1 \def\do(##1){##1}\gMPa1% + \else \MPcounter=1 + \def\do(##1{##1}\gMPa{\the\MPcounter}\space\def\do{}% + \loop \advance\MPcounter by 1 + \ifnum\MPcounter<\nofMParguments \gMPa{\the\MPcounter}\space\repeat + \def\do##1){##1}\gMPa{\the\MPcounter}% + \fi + \unskip}% + \dimen0=\lastMPmoveY bp \advance\dimen0 by \ht0 + \ScaledPointsToBigPoints{\number\dimen0}\lastMPmoveY + \pdfliteral{n q 1 0 0 1 \lastMPmoveX\space\lastMPmoveY\space cm}% + \dimen0=\ht0 \advance\dimen0 by \dp0 \box0 \vskip-\dimen0 + \pdfliteral{Q}} + + +% Take care of dashes + +\def\handleMPsetdash{\bgroup \def\somestring{[}\MPcounter=1 + \loop \ifnum\MPcounter<\nofMParguments + \edef\somestring{\somestring\space\gMPa{\the\MPcounter}}% + \advance\MPcounter by 1 \repeat + \edef\somestring{\somestring]\gMPa{\the\MPcounter} d}% + \pdfliteral{\somestring}\egroup} + +% setlinewidth + +\def\handleMPdtransform{\ifdim\gMPa1pt>0pt + \pdfliteral{\gMPa1 w}% + \def\next##1 ##2 ##3 ##4 ##5 ##6 {\handleMPsequence}\else + \pdfliteral{\gMPa2 w}% + \def\next##1 ##2 ##3 ##4 {\handleMPsequence}\fi + \let\handleMPsequence=\dohandleMPsequence \resetMPstack + \next} + +% Paths, concat + +\def\handleMPpath{\chardef\finiMPpath=0 + \let\closeMPpath=\relax \let\flushMPpath=\flushnormalMPpath + \resetMPstack \nofMPsegments=1 + \let\handleMPsequence=\dohandleMPpath \dohandleMPpath} + +\def\flushnormalMPpath{\MPcounter=\nofMPsegments \nofMPsegments=1 + \loop \expandafter\ifcase\getMPkeyword{\the\nofMPsegments}\relax + \pdfliteral{\gMPs1 \gMPs2 l}\or + \pdfliteral{\gMPs1 \gMPs2 \gMPs3 \gMPs4 \gMPs5 \gMPs6 c}\or + \pdfliteral{\lastMPmoveX\space \lastMPmoveY\space l S}\or + \edef\lastMPmoveX{\gMPs1}\edef\lastMPmoveY{\gMPs2}% + \pdfliteral{\lastMPmoveX\space \lastMPmoveY\space m}\fi + \advance\nofMPsegments by 1\relax + \ifnum\nofMPsegments<\MPcounter \repeat} + +\def\flushconcatMPpath{\MPcounter=\nofMPsegments \nofMPsegments=1 + \loop \expandafter\ifcase\getMPkeyword{\the\nofMPsegments}\relax + \doMPconcat{\gMPs1}\a{\gMPs2}\b \pdfliteral{\a\space \b\space l}% + \or + \doMPconcat{\gMPs1}\a{\gMPs2}\b + \doMPconcat{\gMPs3}\c{\gMPs4}\d + \doMPconcat{\gMPs5}\e{\gMPs6}\f + \pdfliteral{\a\space \b\space \c\space \d\space \e\space \f\space c}% + \or + \bgroup \noMPtranslate \doMPconcat\lastMPmoveX\a\lastMPmoveY\b + \pdfliteral{\a\space \b\space l S}\egroup + \or + \edef\lastMPmoveX{\gMPs1}\edef\lastMPmoveY{\gMPs2}% + \doMPconcat\lastMPmoveX\a\lastMPmoveY\b + \pdfliteral{\a\space \b\space m}% + \fi + \advance\nofMPsegments by 1\relax + \ifnum\nofMPsegments<\MPcounter \repeat} + +% The transformation of the coordinates + +\def\MPconcatfactor{256} + +\def\doMPreducedimen#1 {\count0=\MPconcatfactor + \advance\dimen#1 \ifdim\dimen#1>0pt .5\else -.5\fi\count0 + \divide\dimen#1 \count0\relax} + +\def\doMPexpanddimen#1 {\multiply\dimen#1 \MPconcatfactor\relax} + +\def\presetMPconcat% + {\dimen 0=\gMPs1 pt \doMPreducedimen 0 % r_x + \dimen 2=\gMPs2 pt \doMPreducedimen 2 % s_x + \dimen 4=\gMPs3 pt \doMPreducedimen 4 % s_y + \dimen 6=\gMPs4 pt \doMPreducedimen 6 % r_y + \dimen 8=\gMPs5 pt \doMPreducedimen 8 % t_x + \dimen10=\gMPs6 pt \doMPreducedimen10 } % t_y + +\def\presetMPscale% + {\dimen 0=\gMPs1 pt \doMPreducedimen 0 + \dimen 2=0pt + \dimen 4=0pt + \dimen 6=\gMPs2 pt \doMPreducedimen 6 + \dimen 8=0pt + \dimen10=0pt } + +\def\noMPtranslate% use this one grouped + {\dimen 8=0pt % t_x + \dimen10=0pt } % t_y + +\def\doMPconcat#1#2#3#4% + {\dimen12=#1 pt \doMPreducedimen12 % p_x + \dimen14=#3 pt \doMPreducedimen14 % p_y + % + \dimen16 \dimen 0 + \multiply \dimen16 \dimen 6 + \dimen20 \dimen 2 + \multiply \dimen20 \dimen 4 + \advance \dimen16 -\dimen20 + % + \dimen18 \dimen12 + \multiply \dimen18 \dimen 6 + \dimen20 \dimen14 + \multiply \dimen20 \dimen 4 + \advance \dimen18 -\dimen20 + \dimen20 \dimen 4 + \multiply \dimen20 \dimen10 + \advance \dimen18 \dimen20 + \dimen20 \dimen 6 + \multiply \dimen20 \dimen 8 + \advance \dimen18 -\dimen20 + % + \multiply \dimen12 -\dimen 2 + \multiply \dimen14 \dimen 0 + \advance \dimen12 \dimen14 + \dimen20 \dimen 2 + \multiply \dimen20 \dimen 8 + \advance \dimen12 \dimen20 + \dimen20 \dimen 0 + \multiply \dimen20 \dimen10 + \advance \dimen12 -\dimen20 + % + \doMPreducedimen16 + \divide \dimen18 \dimen16 \doMPexpanddimen18 + \divide \dimen12 \dimen16 \doMPexpanddimen12 + % + \edef#2{\withoutpt{\the\dimen18}}% % p_x^\prime + \edef#4{\withoutpt{\the\dimen12}}} % p_y^\prime + +\def\processMPpath{\flushMPpath \closeMPpath + \pdfliteral{\ifcase\finiMPpath W n\or S\or f\or B\fi}% + \let\handleMPsequence=\dohandleMPsequence + \resetMPstack \nofMPsegments=0 \handleMPsequence} + +\def\handleMPpathconcat{\presetMPconcat + \pdfliteral{\gMPs1 \gMPs2 \gMPs3 \gMPs4 \gMPs5 \gMPs6 cm}% + \resetMPstack} + +\def\handleMPpathscale{\presetMPscale + \pdfliteral{\gMPs1 0 0 \gMPs2 0 0 cm}\resetMPstack} + +\def\dohandleMPpath#1#2 {\ifnum\lccode`#1=0 \setMPargument{#1#2}% + \else \def\somestring{#1#2}\ifx\somestring\PSlineto \setMPkeyword0 + \else\ifx\somestring\PScurveto \setMPkeyword1 + \else\ifx\somestring\PSrlineto \setMPkeyword2 + \else\ifx\somestring\PSmoveto \setMPkeyword3 + \else\ifx\somestring\PSclip \let\handleMPsequence=\processMPpath + \else\ifx\somestring\PSgsave \chardef\finiMPpath=3 + \else\ifx\somestring\PSgrestore + \else\ifx\somestring\PSfill + \ifnum\finiMPpath=0 + \chardef\finiMPpath=2 \let\handleMPsequence=\processMPpath \fi + \else\ifx\somestring\PSstroke + \ifnum\finiMPpath=0 \chardef\finiMPpath=1 \fi + \let\handleMPsequence=\processMPpath + \else\ifx\somestring\PSclosepath \def\closeMPpath{\pdfliteral{h}}% + \else\ifx\somestring\PSconcat + \let\flushMPpath=\flushconcatMPpath \handleMPpathconcat + \else\ifx\somestring\PSscale + \let\flushMPpath\flushconcatMPpath \handleMPpathscale + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi + \handleMPsequence} + +% The main conversion command + +\def\MPtoPDF#1{\bgroup + \setMPspecials\startMPscanning\def\do{}% + \setbox0=\vbox\bgroup + \parskip=0pt \leftskip=0pt \parindent=0pt \everypar{}\offinterlineskip + \pdfliteral{q}\let\handleMPsequence=\dohandleMPsequence + \input #1 \relax} + +\def\finishMPgraphic{\pdfliteral{Q}\egroup\box0\egroup} + +\endinput diff --git a/Master/texmf-dist/doc/plain/metatex/mtpaper.pdf b/Master/texmf-dist/doc/plain/metatex/mtpaper.pdf Binary files differnew file mode 100644 index 00000000000..80953ce70b1 --- /dev/null +++ b/Master/texmf-dist/doc/plain/metatex/mtpaper.pdf diff --git a/Master/texmf-dist/doc/plain/metatex/mtpaper/delay.mf b/Master/texmf-dist/doc/plain/metatex/mtpaper/delay.mf new file mode 100644 index 00000000000..72bafc9f173 --- /dev/null +++ b/Master/texmf-dist/doc/plain/metatex/mtpaper/delay.mf @@ -0,0 +1,301 @@ +% DELAY.MF (RMCG19950405) + +% DELAY.MF delays the actual drawing till the endchar; +% Copyright (C) 2003 Ram\'on Casares +% +% This program is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 2 of the License, or +% (at your option) any later version. +% +% This program is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with this program; if not, write to the +% Free Software Foundation, Inc., +% 59 Temple Place, Suite 330, +% Boston, MA 02111-1307 USA + +def clear_del = + save _dn, _del; _dn := 0; string _del[]; +enddef; + +def make_del = + for k := 1 upto _dn: scantokens _del[k]; endfor +enddef; + +extra_beginchar := extra_beginchar & "clear_del;"; +extra_endchar := "make_del;" & extra_endchar; + +def MTlabel(suffix i)(expr v,h,add,wd,ht,dp) = + x.i.l = x.i if h="c": - wd/2 elseif h="r": - wd fi; + y.i.t = y.i if v="c": + ht/2 elseif v="b": + ht fi; + x.i.r = x.i.l + wd; y.i.b = y.i.t - ht - dp; + if not (add=""): _del[incr _dn] := "_delete(" & str i & ");"; fi + _del[incr _dn] := "_pos(" & str i & ");"; +enddef; + +def _delete(suffix i) = erase fill (x.i.l,y.i.t) -- + (x.i.l,y.i.b) -- (x.i.r,y.i.b) -- (x.i.r,y.i.t) -- cycle; +enddef; + +def _pos(suffix i) = + message"\MTloglabel"; show x\i/pt; show y\i/pt; message""; +enddef; + +pickup pencircle scaled 0.4pt; thin_pen:=savepen; +pickup pencircle scaled 0.8pt; med_pen:=savepen; +pickup pencircle scaled 1.2pt; thick_pen:=savepen; + +def thinpen = pickup thin_pen; + _del[incr _dn] := "pickup thin_pen;"; +enddef; + +def medpen = pickup med_pen; + _del[incr _dn] := "pickup med_pen;"; +enddef; + +def thickpen = pickup thick_pen; + _del[incr _dn] := "pickup thick_pen;"; +enddef; + +def rectangle(suffix s)(expr width,height) = + x.s.l = x.s - width/2; x.s.r = x.s + width/2; + y.s.t = y.s + height/2; y.s.b = y.s - height/2; + _del[incr _dn] := "_rectangle(" & str s & ");"; +enddef; + +def _rectangle(suffix s) = + draw (x.s.l,y.s.b) -- (x.s.r,y.s.b) -- + (x.s.r,y.s.t) -- (x.s.l,y.s.t) -- cycle; +enddef; + +def square(suffix s)(expr side) = + x.s.l = x.s - side/2; x.s.r = x.s + side/2; + y.s.t = y.s + side/2; y.s.b = y.s - side/2; + _del[incr _dn] := "_square(" & str s & ");"; +enddef; + +def _square(suffix s) = + draw (x.s.l,y.s.b) -- (x.s.r,y.s.b) -- + (x.s.r,y.s.t) -- (x.s.l,y.s.t) -- cycle; +enddef; + +def ellipse(suffix s)(expr width,height) = + x.s.l = x.s - width/2; x.s.r = x.s + width/2; + y.s.t = y.s + height/2; y.s.b = y.s - height/2; + _del[incr _dn] := "_ellipse(" & str s & ");"; +enddef; + +def _ellipse(suffix s) = + draw (fullcircle xscaled (x.s.r - x.s.l) yscaled (y.s.t - y.s.b) + shifted z.s); +enddef; + +def circle(suffix s)(expr diameter) = + x.s.l = x.s - diameter/2; x.s.r = x.s + diameter/2; + y.s.t = y.s + diameter/2; y.s.b = y.s - diameter/2; + _del[incr _dn] := "_circle(" & str s & ");"; +enddef; + +def _circle(suffix s) = + draw (fullcircle scaled (x.s.r - x.s.l) shifted z.s); +enddef; + +def oval(suffix s)(expr width,height,superness) = + x.s.l = x.s - width/2; x.s.r = x.s + width/2; + y.s.t = y.s + height/2; y.s.b = y.s - height/2; + x.s.ness = superness; + _del[incr _dn] := "_oval(" & str s & ");"; +enddef; + +def _oval(suffix s) = + draw superellipse((x.s.r,y.s),(x.s,y.s.t),(x.s.l,y.s),(x.s,y.s.b), + x.s.ness); +enddef; + +def triangle(suffix s)(expr width,height) = + x.s.l = x.s - width/2; x.s.r = x.s + width/2; + y.s.t = y.s + height/2; y.s.b = y.s - height/2; + _del[incr _dn] := "_triangle(" & str s & ");"; +enddef; + +def _triangle(suffix s) = + draw (x.s.l,y.s.b) -- (x.s.r,y.s.b) -- (x.s,y.s.t) -- cycle; +enddef; + +def lozenge(suffix s)(expr width,height) = + x.s.l = x.s - width/2; x.s.r = x.s + width/2; + y.s.t = y.s + height/2; y.s.b = y.s - height/2; + _del[incr _dn] := "_lozenge(" & str s & ");"; +enddef; + +def _lozenge(suffix s) = + draw (x.s.l,y.s) -- (x.s,y.s.b) -- + (x.s.r,y.s) -- (x.s,y.s.t) -- cycle; +enddef; + +dot_diameter := 2.4pt; + +def dot(suffix s) = + x.s.dd = dot_diameter; + _del[incr _dn] := "_dot(" & str s & ");"; +enddef; + +def _dot(suffix s) = + fill fullcircle scaled x.s.dd shifted z.s; +enddef; + +def line(suffix s) = + _del[incr _dn] := "_line(" & str s & ");"; +enddef; + +def _line(suffix s) = + draw z.s.o -- z.s.d; +enddef; + +dash_length := 4pt; + +def dottedline(suffix s) = + x.s.dl = dash_length; x.s.dd = dot_diameter; + _del[incr _dn] := "_dottedline(" & str s & ");"; +enddef; + +def _dottedline(suffix s) = + begingroup save p, n; + path p; p = z.s.o -- z.s.d; + n := floor(length(z.s.d-z.s.o)/abs(x.s.dl)); + for i := 0 upto n: + fill fullcircle scaled x.s.dd shifted (point i/n of p); + endfor endgroup +enddef; + +def dashedline(suffix s) = + x.s.dl = dash_length; + _del[incr _dn] := "_dashedline(" & str s & ");"; +enddef; + +def _dashedline(suffix s) = + begingroup save p, n; + path p; p = z.s.o -- z.s.d; + n := floor(length(z.s.d-z.s.o)/abs(x.s.dl)); + if not (odd n): n := n + 1; fi + for i := 0 upto (n-1): if not (odd i): + draw subpath(i/n,(i+1)/n) of p; + fi endfor endgroup +enddef; + +arrow_head_length := 6pt; +arrow_head_width := 2.4pt; + +def arrowhead(suffix s) = + x.s.ahl = arrow_head_length; x.s.ahw = arrow_head_width; + _del[incr _dn] := "_arrowhead(" & str s & ");"; +enddef; + +def _arrowhead(suffix s) = + z.s.dh = (x.s.ahl/length(z.s.d-z.s.o))[z.s.d,z.s.o]; + z.s.dr = z.s.dh + x.s.ahw / 2 * dir(angle(z.s.d-z.s.o)+90); + z.s.dl = z.s.dh + x.s.ahw / 2 * dir(angle(z.s.d-z.s.o)-90); + fill z.s.d -- z.s.dr -- z.s.dl -- cycle; +enddef; + +def arrow(suffix s) = + arrowhead(s); + _del[incr _dn] := "_arrow(" & str s & ");"; +enddef; + +def _arrow(suffix s) = + draw z.s.o .. z.s.dh; +enddef; + +def cillinder(suffix s)(expr width,height) = + x.s.l = x.s - 1/2width; x.s.r = x.s + 1/2width; + y.s.b = y.s - 1/2height; y.s.t = y.s + 1/2height; + y.s.ar = 1/6height; + _del[incr _dn] := "_cillinder(" & str s & ");"; +enddef; + +def _cillinder(suffix s) = + draw (x.s.l,y.s.t-y.s.ar) -- (x.s.l,y.s.b+y.s.ar); + draw (x.s.r,y.s.t-y.s.ar) -- (x.s.r,y.s.b+y.s.ar); + draw (x.s.l,y.s.b+y.s.ar){down} .. (x.s,y.s.b){right} + .. (x.s.r,y.s.b+y.s.ar){up}; + draw (x.s.l,y.s.t-y.s.ar){down} .. (x.s,y.s.t-2y.s.ar){right} + .. (x.s.r,y.s.t-y.s.ar){up} .. (x.s,y.s.t){left} .. cycle; +enddef; + +join_radius := 5pt; + +def box(suffix s)(expr width,height) = + x.s.l = x.s - width/2; x.s.r = x.s + width/2; + y.s.t = y.s + height/2; y.s.b = y.s - height/2; + x.s.jr = join_radius; + _del[incr _dn] := "_box(" & str s & ");"; +enddef; + +def _box(suffix s) = + if min((x.s.r-x.s.l),(y.s.t-y.s.b)) > 2x.s.jr: + draw (((x.s,y.s.b) .. (x.s.r,y.s.b)) softjoin + ((x.s.r,y.s.b) .. (x.s.r,y.s.t)) softjoin + ((x.s.r,y.s.t) .. (x.s.l,y.s.t)) softjoin + ((x.s.l,y.s.t) .. (x.s.l,y.s.b)) softjoin + ((x.s.l,y.s.b) .. (x.s,y.s.b))); + else: + draw (fullcircle xscaled (x.s.r-x.s.l) yscaled (y.s.t-y.s.b) + shifted z.s); + fi +enddef; + +def soft(suffix s) = + _del[incr _dn] := "_soft(" & str s & ");"; +enddef; + +def _soft(suffix s) = + draw (z.s.o -- z.s.m) softjoin (z.s.m -- z.s.d); +enddef; + +def softt(suffix s) = + _del[incr _dn] := "_softt(" & str s & ");"; +enddef; + +def _softt(suffix s) = + draw ((z.s.o .. z.s.m1) softjoin + (z.s.m1 .. z.s.m2) softjoin (z.s.m2 .. z.s.d)); +enddef; + +def fork(suffix s) = + z.s.head.o = z.s.m; z.s.head.d = z.s.d; + arrowhead(s.head); + dot(s.o); + z.s.body.o = z.s.o; z.s.body.m = z.s.m; + z.s.body.d = z.s.head.dh; + soft(s.body); +enddef; + +def darrow(suffix s) = + z.s.med = 1/2[z.s.o,z.s.d]; + z.s.one.o = z.s.med; z.s.one.d = z.s.d; + arrow(s.one); + z.s.two.o = z.s.med; z.s.two.d = z.s.o; + arrow(s.two); +enddef; + +def arroww(suffix s) = + z.s.head.o = z.s.m; z.s.head.d = z.s.d; + arrowhead(s.head); + z.s.body.o = z.s.o; z.s.body.m = z.s.m; + z.s.body.d = z.s.head.dh; + soft(s.body); +enddef; + +def arrowww(suffix s) = + z.s.head.o = z.s.m2; z.s.head.d = z.s.d; + arrowhead(s.head); + z.s.body.o = z.s.o; z.s.body.m1 = z.s.m1; + z.s.body.m2 = z.s.m2; z.s.body.d = z.s.head.dh; + softt(s.body); +enddef; diff --git a/Master/texmf-dist/doc/plain/metatex/mtpaper/diagram.tex b/Master/texmf-dist/doc/plain/metatex/mtpaper/diagram.tex new file mode 100644 index 00000000000..9dd392df99f --- /dev/null +++ b/Master/texmf-dist/doc/plain/metatex/mtpaper/diagram.tex @@ -0,0 +1,83 @@ +% DIAGRAM.TEX + +\dimen0=\hsize \divide\dimen0 by 10 +\dimen2=\dimen0 \divide\dimen2 by 3 \multiply\dimen2 by 4 + +\MTbeginchar(\the\dimen0,\the\dimen2,0pt); +\MT: thickpen; +\MT: z1 = (0,0); z2 = (0,h); z3 = (w,h); z4 = (w,0); +\MT: z5 = (1/3w,1/8h); z6 = (1/2w,0); z7 = (2/3w,-1/16h); +\MT: draw z1 -- z2 -- z3 -- z4; +\MT: draw z1 .. z5 ..z6 .. z7 .. z4; +\MT: thinpen; +\MT: for i = 11 upto 20: y[i] = 1/8h + 7/80h*(i-10); endfor +\MT: for i = 12,13,15,16,17,19,20: +\MT: draw (1/8w,y[i]) -- (7/8w,y[i]); +\MT: endfor; +\MT: for i = 11,14,18: +\MT: draw (1/4w,y[i]) -- (7/8w,y[i]); +\MT: endfor; +\MTendchar; + +\setbox0=\box\MTbox + +\ifdim\hsize<10cm + \let\figfont=\smallsf \def\driver{drv} + \dimen0=\hsize \multiply\dimen0 by 2 \divide\dimen0 by 3 +\else + \let\figfont=\sf \def\driver{Driver} + \dimen0=\hsize \multiply\dimen0 by 2 \divide\dimen0 by 4 +\fi + +\MTbeginchar(\the\hsize,\the\dimen0,\the\ht0); +\MT: save u, v; u = w/10; v = h/10; +\MT: thickpen; +%\MT: draw (0,-d)--(0,h)--(w,h)--(w,-d)--cycle; draw(0,0)--(w,0); +\MT: x1l = x2l = x4l = x7l = 2u; +\MT: y1t = h - v; z1lbl = z1; +\MT: rectangle(1)(u,v); +\MTlabel(1lbl)"\figfont\TeX"; +\MT: y2 = y3 = y1 - 2v; z2lbl = z2; z3lbl = z3; x3 = x2 + 2u; +\MT: ellipse(2)(u,v); rectangle(3)(u,v); +\MTlabel(2lbl)"\figfont\TeX"; \MTlabel(3lbl)"\figfont TFM"; +\MT: y4 = y5 = y6 = y2 - 2v; x5 = x3 + 2u; x6 = x5 + 2u; +\MT: z4lbl = z4; z5lbl = z5; z6lbl = z6; +\MT: rectangle(4)(u,v); ellipse(5)(u,v); rectangle(6)(u,v); +\MTlabel(4lbl)"\figfont DVI"; \MTlabel(5lbl)"\figfont MF"; +\MTlabel(6lbl)"\figfont MF"; +\MT: y7 = y8 = y4 - 2v; x8 = x3; z7lbl = z7; z8lbl = z8; +\MT: ellipse(7)(u,v); rectangle(8)(u,v); +\MTlabel(7lbl)"\figfont\driver"; \MTlabel(8lbl)"\figfont GF"; +\MT: x9 = x7; y9t = y7t - 2v; +\MTlabel(9)"\box0"; +\MT: x31r = x2l - u; y31 = y2; z31lbl = z31; rectangle(31)(u,v); +\MTlabel(31lbl)"\figfont FMT"; +\MT: x32 = x5; y32b = y5t + v; z32lbl = z32; rectangle(32)(u,v); +\MTlabel(32lbl)"\figfont BAS"; +\MT: x33 = x31; y33 = y4; z33lbl = z33; rectangle(33)(u,v); +\MTlabel(33lbl)"\figfont log"; +\MT: x34 = x32; y34 = y7; z34lbl = z34; rectangle(34)(u,v); +\MTlabel(34lbl)"\figfont log"; +\MT: thinpen; join_radius:=15pt; +\MT: z11o = (x1,h); z11d = (x1,y1t); arrow(11); +\MT: z12o = (x1,y1b); z12d = (x2,y2t); arrow(12); +\MT: z13o = (x3l,y3); z13d = (x2r,y2); arrow(13); +\MT: z14o = (x2,y2b); z14d = (x4,y4t); arrow(14); +\MT: z15o = (w,y6); z15d = (x6r,y6); arrow(15); +\MT: z16o = (x6l,y6); z16d = (x5r,y5); arrow(16); +\MT: z17o = (x5l,y5); z17d = (x3,y3b); z17m = (x3,y5); +\MT: arroww(17); +\MT: z18o = (x5l,y5); z18d = (x8,y8t); z18m = (x8,y5); +\MT: arroww(18); +\MT: z19o = (x4,y4b); z19d = (x7,y7t); arrow(19); +\MT: z20o = (x8l,y8); z20d = (x7r,y7); arrow(20); +\MT: z21o = (x7,y7b); z21d = (x9,y9t); arrow(21); +\MT: z41o = (x31r,y31); z41d = (x2l,y2); arrow(41); +\MT: z42o = (x32,y32b); z42d = (x5,y5t); arrow(42); +\MT: z43o = (x2,y2b); z43d = (x33r,y33t); arrow(43); +\MT: z44o = (x5,y5b); z44d = (x34,y34t); arrow(44); +\MT: x0 = w/2; y0 = y9; % y0b = -d; +\MTlabel(0)"\rm \TeX\ formats"; +\MTendchar; + +\centerline{\box\MTbox} diff --git a/Master/texmf-dist/doc/plain/metatex/mtpaper/frame.tex b/Master/texmf-dist/doc/plain/metatex/mtpaper/frame.tex new file mode 100644 index 00000000000..a1433d567c7 --- /dev/null +++ b/Master/texmf-dist/doc/plain/metatex/mtpaper/frame.tex @@ -0,0 +1,23 @@ +% FRAME.TEX (RMCG19950401) + +\catcode`\@=11 + +\newbox\@uxbox + +\let\oldhrule=\hrule \let\oldvrule=\vrule +\def\rulethickness{\afterassignment\rul@thickness\dimen0 } +\def\rul@thickness{\edef\hrule{\oldhrule height\dimen0 }% + \edef\vrule{\oldvrule width\dimen0 }} + +\def\framebox{\afterassignment\fr@mebox\count@=} +\def\fr@mebox{\ifvoid\count@\else \bgroup + \dimen0=\wd\count@ \dimen2=\ht\count@ \advance\dimen2\dp\count@ + \global\setbox\@uxbox=\vtop{ + \hbox to\dimen0{\vrule\hss\vbox to \dimen2{\hrule\vss + \hbox to\dimen0{}\vss\hrule}\hss\vrule}\kern0pt}\egroup + \wd\@uxbox=0pt \ht\@uxbox=0pt \dp\@uxbox=0pt + \ifhbox\count@ + \setbox\count@=\hbox{\raise\ht\count@\box\@uxbox\box\count@}\else + \setbox\count@=\vbox{\box\@uxbox\nointerlineskip\box\count@}\fi\fi} + +\catcode`\@=12 diff --git a/Master/texmf-dist/doc/plain/metatex/mtpaper/mtpaper.tex b/Master/texmf-dist/doc/plain/metatex/mtpaper/mtpaper.tex new file mode 100644 index 00000000000..de044df2bf7 --- /dev/null +++ b/Master/texmf-dist/doc/plain/metatex/mtpaper/mtpaper.tex @@ -0,0 +1,654 @@ + +\input tugboat.sty + +%\input tugboat.dates +%\input tb75pages +%\pageno=\TBcasa + +% EXTRA CODE + +\ifx\plaindefaults\undefined \let\next=\relax +\else \let\next=\plaindefaults \fi \next + +\input metatex +\MTline{input delay.mf;} + +\def\MTeX{{\manual META}\-\TeX} +\font\smallsf=cmssq8 +\font\sf=cmss10 + +% END EXTRA CODE + + +\title * {\MTeX} * +\author * Ram\'on Casares * +\address * Telef\'onica de Espa\~na * +\netaddress * r.casares@computer.org * + +\article %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\head * Abstract * + +{\MTeX} is a set of {\plain} {\TeX} and {\MF} macros that you can use to +define both the text and the figures in a single source file. Because +{\MTeX} sets up two way communication, from {\TeX} to {\MF} and back +from {\MF} to {\TeX}, drawing dimensions can be controlled by {\TeX} and +labels can be located by {\MF}. Only standard features of {\TeX} and +{\MF} are used, but two runs of {\TeX} and one of {\MF} are needed. + + +\head * Overview * + +Together, {\TeX} and {\MF} define the page layout to the pixel. This +means that nothing more is needed, not even a means of including figures +in a {\TeX} document. To prove this is the aim of this paper. + +To split the typesetting process in two parts, one to define and draw +the characters and the other to arrange the characters in paragraphs and +pages, is surely the best way to reduce the complexity of the +typesetting task, provided it needs simplification (see Figure~1). But +this method makes it difficult, for example, to integrate labels with +graphics in figures, because while {\TeX} is best suited to typeset the +labels, {\MF} is the appropriate tool to draw the graphics. And, of +course, labels should be located in accordance with the graphics. + +Therefore, the true successor of {\TeX} has to include in a single +program both the capabilities of {\TeX} and {\MF}. Then the typesetting +engine would include a powerful graphic tool, a grid in which to typeset if +required, and it could take into account the shapes of the characters to +determine, for example, kernings or italic corrections. The other way +around is also possible. It could be seen as a graphic engine with a +powerful typesetting tool. From this point of view, the page would be a +graphic object that could contain paragraphs of different shapes +requested from the typesetting tool. + +\MTeX, although it does not fulfill the requirements of such a +successor, can be seen as an early sign of its possibilities. For the +moment, {\MTeX} takes advantage of {\MF}'s equation solving capabilities +to locate objects, including the labels, which are typeset by {\TeX}. The +cost of this nice feature is that two {\TeX} passes are required. + +During the first {\TeX} pass a {\MF} file is written. As it is {\TeX} +itself who writes the {\MF} file, any dimension controlled by {\TeX} can +be used and incorporated in {\MF}'s calculations. For example, the label +sizes, as they will be typeset by {\TeX}, are made known to {\MF}. + +After the first {\TeX} pass, {\MF} draws the graphic figures and +writes the label locations in its log file. So it is {\MF}'s +responsibility to locate the labels. Note that, depending on the style +of {\MF} programming, this can be completely determined from {\TeX}. In +other words, you can relate the label location to the location and size +of other {\MF} objects, or not. + +When {\TeX} executes its second pass, it takes the graphics +from the new font, reads the location of labels from the +{\MF} log file, and then everything is complete. + +Because labels are just |\hbox|es typeset by \TeX, every macro currently +defined for text automatically applies also to figures. For example, if +a macro |\person| is defined to write its argument in a small caps font +and save it to an index file, the same happens whenever it is used +inside a figure label. + + +\head * Methods * + +{\MTeX} allows the source file to include, in addition to the customary +{\TeX} macros to control the text, other commands to generate +figures with {\MF}. + +\subhead * Steps * + +In order to use {\MTeX} the following three steps are to be executed: + +\list[\numbered] + +\item The {\MTeX} file, suppose it is |filename.ext|, is first +processed by |TEX|, with the {\plain} format, during which a {\MF} file +named |auxiliar.mf| is created. This {\MF} file contains information +provided by {\TeX} concerning the size of the labels, so the |MF| +program can delete this area from the figure if requested. If the output +file |filename.dvi| were typeset now, it would have blanks in place of +the figures, but otherwise be the same as the final document. + +\item Then |MF|, with the {\plain} base, is run on |auxiliar.mf|. +As a result, information specifying where to typeset the labels is +written in the log file, |auxiliar.log|. In addition, the metric file, +|auxiliar.tfm|, and the generic format bitmap font, |auxiliar.329gf|, +are created. On my system I have to process this |gf| file to get a +|pk| file that my drivers can read, so I execute the program |GFtoPK| on +it, getting the packed bitmap font |auxiliar.329pk|. Please note three +points. i)~The number |329|, referring to the resolution, varies +according to the {\MF} mode. ii)~The |tfm| and |pk| files must be in or +moved to directories where programs can find them. iii)~{\MTeX} sets the +{\MF} mode to |localfont|, thus assuming that |localfont| is assigned +the appropriate name. + +\item Lastly, |filename.ext| is again run through |TEX|. During this +second run, both the font |auxiliar| containing the figures and the +information explaining where to locate the labels are available, so the +document is complete. + +\endlist + +The figures fill exactly the same area in both the first and second +|TEX| program runs, so indices, tables of contents, and other references +that also need two passes to be resolved can take advantage of the two +runs needed by {\MTeX}. + +\subhead * Use * + +To use the {\MTeX} macros, they must be imported by writing in the +source file: ||\input metatex|| + +\noindent This has to be written after |\mag| has been given its final +value. When |metatex.tex| is read, {\MTeX} checks whether the file +|auxiliar.mf| exists. If it does not exist, then things are set up for +the first pass; for example, |auxiliar.mf| is opened for writing. If it +does exist, then things are set for the second pass; for example, +|auxiliar.log| is opened for reading. This means that if +|auxiliar.mf| is not deleted, then step~3, the second |TEX| program +pass, is executed directly. This saves time when only the text in file +|filename.ext|, but not the figures, were modified. + +\subhead * User macros * + +The {\MTeX} user macros are: + +\list + +\item |\MTbeginchar(wd,ht,dp);| states that a figure sized as given +(width |wd|, height |ht|, depth |dp|) will be created. These values +should be known both by {\TeX} and by {\MF}, so for example |12pt|, +|6cm|, |\the\hsize| or |\the\dimen0|, always without |#|, are allowed. +During the {\it first pass}, {\TeX} writes in |auxiliar.mf| the {\MF} +macro |beginchar| assigning character codes sequentially, and box +|\MTbox| is made empty but sized as specified by the arguments of this +macro. During the {\it second pass}, {\TeX} puts the corresponding +character of the font |auxiliar| in box |\MTbox|. The size of |\MTbox| is +that specified and not affected by the character dimensions. + +\item |\MTendchar;| finishes the figure definition. During the +{\it first pass}, {\TeX} writes the {\MF} macro |endchar;| in file +|auxiliar.mf|. During the {\it second pass}, box |\MTbox| contains the +complete figure, including labels. Something like |\box\MTbox| is +used to typeset the figure. + +\item |\MTlabel*(s)cc"Text";| adds a label to the current figure. +The parameter between quotes, |Text| in the example, is the label +content; it will be put inside an |\hbox| and therefore could be +anything that {\TeX} allows inside an |\hbox|. The optional asterisk +after |\MTlabel| instructs {\MTeX} to erase the area of the figure +already drawn that it is under the label. + +The label will be located at {\MF} point |z.s|, where |s| is the parameter +between parentheses. The reference point is further specified by the +optional parameter after the right parenthesis, |cc| in the example. +This parameter is composed of exactly two letters: the first can be |t| +meaning top, |c| meaning center or |b| meaning bottom; and the second +letter can be |l| meaning left, |c| meaning center or |r| meaning right. +So, for example, |tl| means that the label reference point is its top +left corner. The default value for the reference point is |cc|, that is, +its center. + +|\MTlabel| should only be used between |\MTbeginchar| and |\MTendchar|. +During the {\it first pass}, it writes the following three elements in +|auxiliar.mf|: i)~the {\MF} macros which in turn cause |MF| to write the +label reference point location to its log file, |auxiliar.log|; ii)~the +four label sides, which are by this means made available to the +following {\MF} code for the figure, notated as |y.s.t| for the top side, +|y.s.b| for the bottom side, |x.s.l| for the left side and |x.s.r| for the right +side; and iii)~the code to delete, if requested, the figure area already +drawn that is under the rectangle occupied by the label. During the {\it +second pass}, it adds the label to the box |\MTbox| in the place that +reads from file |auxiliar.log|, making no modification to the dimensions of +|\MTbox|, even if the label is typeset outside the box. + +\endlist + +There are three more macros for passing information to \MF, that is, for +writing general text in |auxiliar.mf|: |\MT:|, |\MTcode| and |\MTline|. +This happens only during the first pass; during the second pass, these +macros do nothing. + +\list + +\item |\MT:| writes in file |auxiliar.mf| everything till the end of +line. It writes verbatim except for the character |\|, which keeps its +normal {\TeX} |\catcode| of |0|. Spaces are {\it not\/} ignored after +macros. The sequence |\\| writes a single |\| in file |auxiliar.mf|. + +\item |\MTcode| writes in file |auxiliar.mf| everything until it finds a +line equal (including |\catcode|s) to the current value of |\MTendmark|. +By default, this is a blank line, thus, |\def\MTendmark{}|. As with +|\MT:|, it writes verbatim except for |\|, which still operates as an +escape character. The control sequence |\\| writes a single |\| in file +|auxiliar.mf|. + +\item |\MTline{text}| writes its parameter to |auxiliar.mf|, +|text| in the example. It does not change the |\catcode|s in the +argument, so it does not perform verbatim writing. But all {\plain} +special characters can be written prefixing them by the escape character +|\|. The {\plain} special characters are (not including the first colon +nor the final period): |\{}$&#^_~%|. For example, |\#| results in +|#|. + +\endlist + +When defining {\TeX} macros that write to |auxiliar.mf|, |\MTline| +should generally be used in preference to |\MT:| or |\MTcode|, because +the latter two use +the end of line in a special way that is not usually available when +{\TeX} is reading a macro. + +{\TeX} dimensions can be included using any of these three writing +macros. For example, |\the\hsize| will be expanded to {\tt \the\hsize} +(for the present article), +and written as such to the {\MF} file |auxiliar.mf|. Note that the character +|\| keeps its escape |\catcode| in all three writing macros. In the +case of |\MTline|, braces |{}| also keep their |\catcode|s and therefore +macros with parameters can be used normally. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\head * Examples * + +\subhead * Diagram * + +First a typical example of {\MTeX} usage, showing the file formats, +programs, and their relationships. The figure width is exactly +|\hsize|, but what is more important is that the same code will adapt +itself to any value for the measure. Well, of course, not to {\it any\/} +width but to any width between, let's say, $8\,$cm and $25\,$cm. + +\figure[\caption{Figure 1: One column diagram}] + \input diagram +\endfigure + +%\twocolfigure[\caption{Figure 2: Two columns diagram}] +% \input diagram +%\endfigure + +Figure~1 is the one column version, and Figure~2 (above the appendix) is +the two column version, generated by the same source. + + +%%%%%%%%%%%%%%%%%%% + +\input shadow + +\def\beginshadowpar{\setbox0=\vbox\bgroup \kern3pt + \advance\parindent by -3pt \leftskip=3pt\rightskip=3pt } +\def\endshadowpar{\par\kern3pt\egroup\framebox0\shadowbox0\box0 } + +% \subhead * Shadowing * +\bigskip % \subhead skip + +\beginshadowpar\noindent +{\bf Shadowing.} Both {\TeX} and {\MF} are ill suited to creating +shadows. In {\TeX}, one straightforward technique is double use of +|\leaders|, but in practice this results in huge |dvi| files. In {\MF}, +drawing lots of tiny points easily exceeds the capacity of the program. +The solution is to coordinate the work of both programs. +\endshadowpar + +To create a large rectangular shadow we divide it into an array of $n +\times m$ smaller rectangles. The smaller rectangles are all identical, +so it is enough for {\MF} to draw one shadow character and then for +{\TeX} to typeset a solid area repeating it. + +To simplify the tasks of both {\TeX} and {\MF}, the size of the shadow +character should be similar to that of normal characters, because neither +program was designed to work well with extraordinarily large (or small) +characters. So a +good approach is to make the shadow character as big as possible but +never wider nor higher than 16$\,$pt. + +For {\MTeX}, each figure is a character. This causes problems with {\MF} +when the figure is big and the resolution is high, because it cannot +draw areas bigger than $4095\times4095$ pixels. This is not usually a +problem working at 300$\,$dpi. (It is never a problem with {\MP}, see +the following section on {\PS}. Another advantage of using {\PS} is that +you get a shadow simply by drawing a grey rule, and none of the above +machinations are necessary.) + +%%%%%%%%%%%%%%%%%%% + +\subhead * Keys * + +After the following {\MTeX} macros: + +\verbatim[\numbered\outputtofile{keys.tex}] +\MTcode +def keybox = + pickup pencircle scaled 0.8pt; + x1 = x3 = 1pt; + x2 = x4 = w - 1pt; + x5 = 0; x6 = w; + y1 = y2 = -d; + y3 = y4 = h; + y5 = y6 = (h - d)/2; + draw z1 -- z2 .. z6{up} .. + z4 -- z3 .. z5{down} .. cycle; + z0 = (x1,0); +enddef; + +\def\defkey#1#2{\setbox0=\hbox{\sf#2}% + \dimen0=\wd0\advance\dimen0 by 2pt + \dimen2=\ht0\advance\dimen2 by 1pt + \dimen4=\dp0\advance\dimen4 by 1pt + \MTbeginchar(\the\dimen0,% + \the\dimen2,% + \the\dimen4);% + \MTline{keybox;}% + \MTlabel(0)bl"\sf #2";% + \MTendchar;% + \expandafter\newbox + \csname\string#1box\endcsname + \expandafter\setbox + \csname\string#1box\endcsname + =\vtop{\unvbox\MTbox}% + \def#1{\expandafter\copy + \csname\string#1box\endcsname}} + +\def\makekey#1{\expandafter\defkey% + \csname#1\endcsname{#1}} +\endverbatim + +\input keys + +Then, we can declare |\makekey{Alt}|\makekey{Alt} to +typeset {\Alt} simply via |\Alt|. It is also possible to +declare |\defkey\escape{\tt\char92}|\defkey\escape{\tt\char92} and then +|\escape| results in \escape. + +%%%%%%%%%%%%%%%%%%% + +\subhead * Baroque tables * + +Baroque periods are the result of new technical achievements providing +unexplored possibilities and hence the urgent need to experiment with them, +frequently far away from what discretion might recommend. This explains +the time of baroque software that we live in, and increases the value of +\MTeX, because it provides the means to easily draw baroque tables. I am not +a baroque man, so my baroque table example is not baroque but, and this +is the point, it is at least not built with straight lines. + +\MTcode +def tablebox = + pickup pencircle scaled 1.6pt; + x0 = 5pt; y0 = 5pt; + draw (0,h) ... (w/2,h+y0) ... (w,h) ... (w+x0,(h-d)/2) ... (w,-d) ... + (w/2,-d-y0) ... (0,-d) ... (-x0,(h-d)/2) ... cycle; +enddef; + +\def\beginbaroquetable{\setbox0=\vbox\bgroup + \halign\bgroup##\hfil&&\quad##\hfil\cr} +\def\endbaroquetable{\crcr\egroup\egroup + \MTbeginchar(\the\wd0,\the\ht0,\the\dp0);% + \MTline{ tablebox;}% + \MTendchar;% + $$\rlap{\box\MTbox}\box0$$} + +\beginbaroquetable + This is not a straight table\cr + but it's only an example\cr + and therefore not so ample\cr + of what's {\MTeX}-able! +\endbaroquetable + +%%%%%%%%%%%%%%%%%%% + +\MTcode +def leftbrace = + pickup penrazor scaled 2pt rotated 30; + x3 = 0; x0 = x6 = w; x1 = x5 = w/5; x2 = x4 = w-x1; + y0 = 0; y1 = h/8; y2 = h/3; y3 = h/2; + y4 + y2 = h; y1 + y5 = h; y6 = h; + draw z0 .. z1 .. z2 .. z3; + draw z6 .. z5 .. z4 .. z3; +enddef; + +\def\beginbracedpar{\setbox0=\vbox\bgroup + \leftskip=20pt } +\def\endbracedpar{\strut\par\egroup + \MTbeginchar(20pt,\the\ht0,0pt);% + \MTline{ leftbrace;}% + \MTendchar;% + \hbox to\hsize{\rlap{\box\MTbox}\box0\hss}} + +%\subhead * Ornate paragraphs * +\bigskip % \subhead skip + +\beginbracedpar\noindent +{\bf Ornate paragraphs.} Only if you are truly baroque can you get the +most from {\MTeX}. If, for example, you like ornate paragraphs, you are +in your element. Just put the material in a |\vbox| to get the height +and the depth, and pass these dimensions to {\MF} to draw a right sized +embellishment. Ah!, but be aware that Computer Modern is a neoclassical +font, so it won't mix well with your elaborations. +\endbracedpar + +%%%%%%%%%%%%%%%%%%% + +% To fill unused space! +\MTcode + def tribar(expr alpha) = + pickup pencircle scaled 0.8pt; + % draw (0,0)--(w,0)--(w,h)--(0,h)--cycle; + save u, v; u = w/2; v = 12; + z1 = (w/2,h/2) + u*(right rotated alpha); + z2 = (w/2,h/2) + u*(right rotated (alpha+120)); + z3 = (w/2,h/2) + u*(right rotated (alpha-120)); + z1r = (w/2,h/2) + u*(right rotated (alpha+v)); + z2r = (w/2,h/2) + u*(right rotated (alpha+120+v)); + z3r = (w/2,h/2) + u*(right rotated (alpha-120+v)); + draw z1 .. z1r; draw z2 .. z2r; draw z3 .. z3r; + draw z1 .. z3r; draw z2 .. z1r; draw z3 .. z2r; + z1m = whatever[z1,z2r]; z1m = whatever[z1r,z3]; + z2m = whatever[z2,z3r]; z2m = whatever[z2r,z1]; + z3m = whatever[z3,z1r]; z3m = whatever[z3r,z2]; + draw z1 .. z2m; draw z2 .. z3m; draw z3 .. z1m; + z1ra = z1 reflectedabout (z1r,z1m); + z2ra = z2 reflectedabout (z2r,z2m); + z3ra = z3 reflectedabout (z3r,z3m); + draw z1m .. z1ra; draw z2m .. z2ra; draw z3m .. z3ra; + z3x - z1x = whatever*(z3-z1m); + z2x - z3x = whatever*(z2-z3m); + z1x - z2x = whatever*(z1-z2m); + z1ra - z1x = whatever*(z3-z1m); + z3ra - z3x = whatever*(z2-z3m); + z2ra - z2x = whatever*(z1-z2m); + z1y = whatever[z1m,z3]; z1y = whatever[z1x,z2x]; + z2y = whatever[z2m,z1]; z2y = whatever[z2x,z3x]; + z3y = whatever[z3m,z2]; z3y = whatever[z3x,z1x]; + draw z1x .. z3y; + draw z2x .. z1y; + draw z3x .. z2y; + enddef; + +\def\tribar#1#2{% #1=ht, #2=angle + \MTbeginchar(#1,#1,0pt);\MTline{tribar(#2);}\MTendchar;\box\MTbox} + +\newcount\angle \angle=-36 +\newdimen\tribarht \tribarht=75pt + +%\subhead * Exercice * +\bigskip % \subhead skip + + \noindent + {\bf Exercise.}\footnote*{The real exercise is to fill the rest of the + page with tribars. A clue: let {\TeX} to calculate how many are needed, + so you can concentrate your efforts in drawing the figure.} + Take three equal bars and build as shown. + Ask Roger Penrose if you don't find the solution. + \vskip1pc + + \loop + \vfil + \line{\tribar{\the\tribarht}{\the\angle}\hfil \global\advance\angle5 + \tribar{\the\tribarht}{\the\angle}\hfil \global\advance\angle5 + \tribar{\the\tribarht}{\the\angle}\global\advance\angle5 } + \dimen0=\pagegoal \advance\dimen0 by-\pagetotal + \ifdim\dimen0>\tribarht + \repeat + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\head * {\PS} * + +By taking advantage of {\MP}, we can make {\PS} versions of the +{\MTeX} files. Simply execute |mpost &plain auxiliar.mf| instead of +{\MF} and, after {\TeX}'s second pass, execute |dvips| ({\MTeX} uses +|dvips| specials). This works because |auxiliar.mf| is valid code +for both {\MF} and {\MP}, and because, in the second {\TeX} pass, +{\MTeX} checks which one was used and adapts itself to the situation. + +And thanks to {\PDF\TeX} and the Con{\TeX}t files |supp-mis.tex| and +|supp-pdf.tex|, it is also possible to get \acro{PDF} output. Just +execute {\PDF\TeX} twice, instead of {\TeX}, and once {\MP}, instead of +{\MF}. (In practice, {\MTeX} uses its own macro file |mtmp2pdf.tex| for +this, instead of the Con{\TeX}t files. I extracted all that {\MTeX} +needs from the Con{\TeX}t files into |mtmp2pdf.tex|.) + +This works because, if {\MTeX} determines that {\MP} was employed to +draw the figures, it then checks which program, {\TeX} or {\PDF\TeX}, is +executing. If {\TeX}, then it includes the files produced by {\MP} using +the |dvips| specials. If {\PDF\TeX}, it translates from |ps| to |pdf|. + +Therefore, the same {\MTeX} source file generates at will any of the +three output formats---|dvi|, |ps|, or |pdf|---just by running the +appropriate programs. In the appendix, as an example, there is a +\acro{DOS} batch file that shows how to get the |pdf| version of a file +|filename.ext|. + + +\head * Other graphical tools * + +There are other tools to include pictures in a {\TeX} document. +{\LaTeX}'s |picture| environment, {\PiCTeX}, and |mfpic|, are three of +them. {\MTeX} is similar to |mfpic|, in that both use {\MF} to draw. + +The aim of |mfpic| is to overcome the difficulties of {\LaTeX}'s +|picture| environment and of {\PiCTeX}. {\LaTeX}'s |picture| environment +uses four pre-cooked special fonts, and its drawings are just +compositions of these characters (as well as {\TeX}'s builtin |\hrule|s and +|\vrule|s). {\PiCTeX} only uses a tiny point to compose the pictures, so +it is more general. But letting {\TeX} to draw the figures setting point +after point is painful, as noted above. The |mfpic| solution uses a +better tool for drawing: {\MF}. + +With these origins, for |mfpic|, {\MF} is a hidden back-end processor, +and |mfpic| imposes only two requirements on its users: to know {\TeX}, +and to know |mfpic|. On the other hand, {\MTeX}'s approach is +minimalist, at the cost of being more demanding with its users. A +{\MTeX} user has to know {\TeX}, {\MF}, and {\MTeX}\Dash although this +last requirement is small, because {\MTeX} only builds the necessary +bridges to use {\TeX} and {\MF} in a cooperative way. + +A feature that shows the different strategies employed in designing +|mfpic| and {\MTeX} is label positioning. {\MTeX} labels are located by +{\MF}, so {\TeX} has to read the {\MF} log file to learn where to +typeset them. For |mfpic|, {\TeX} itself locates the labels, +but by doing so |mfpic| has to give up some nice {\MF} characteristics, +such as its equation solving capabilities. + +% |mfpic| is to {\LaTeX} as {\MTeX} is to |plain| {\TeX}. +In summary, |mfpic|'s aim is to draw pictures in {\TeX} documents in a +better way than using {\LaTeX}'s |picture| environment or {\PiCTeX}; +while {\MTeX}'s intention is to coordinate the work of {\TeX} and +{\MF}. In this way, {\MTeX} provides the full raw power of {\TeX} and +{\MF}, and it is up to you to harness them. + + +\head * Final remarks * + +I have been using {\MTeX} for some years. The first version was dated +1994, but it has been used only for personal purposes. For this reason, +it is not truly a straightforward end-user tool, as for example {\LaTeX} packages +should be. It has to be used knowledgeably and with care. And though +most tasks can be automated, by chaining {\TeX} and {\MF} errors are +even more difficult to pinpoint than in {\TeX} or {\MF} alone. + +Nevertheless, {\MTeX} serves to validate the feasibility of a closer +collaboration between {\TeX} and {\MF} and to appraise the interest of +such a collaboration. And, of course, if you dare, you can get lots of +fun, and at least an equal amount of frustration, using {\MTeX}. Try it! + +The {\MTeX} package is available from {\CTAN} in +\acro{CTAN}|:/macros/plain/contrib/metatex|. + +Happy {\MTeX}ing! + + +\makesignature + + +\newpage + + +\onecol % Annex in one column, can't switch to \twocol on the same page + % with current plain tugboat macros. + +\figure[\caption{Figure 2: Two-column diagram}] +\input diagram +\endfigure + +\head * Appendix: Pseudo-batch example * + +This is an example based on \acro{DOS} batch files that can be adapted for +other operating systems. It processes the file |filename.ext|, generating +|filename.pdf|. We will comment each line of pseudo-code. + +\list[\numbered] +\item We go to the directory where our working files are. + ||cd c:\dir\subdir\mydir|| +\item We set environment variables (if necessary). In this case we are +using a |web2c| system, so it is enough to set one. In |web2c|, by +default, all programs look for files in the current dir, ``|.|'', and +that is enough for us. + ||set TEXMFCNF=c:\tex\texmf.local\web2c;c:\tex\texmf\web2c;d:\texmf\web2c|| +\item We tell the operating system where to find the programs. + ||path=$path$;c:\tex\bin\dos|| +\item After the settings, we force the first {\TeX} pass. + ||if exist auxiliar.mf del auxiliar.mf|| +\item Then, we execute the first {\TeX} pass (in this case, it is {\PDF\TeX}). + ||pdftex &plain filename.ext|| +\item If {\MTeX} was not used, and no |auxiliar.mf| was written, then we +are done. + ||if not exist auxiliar.mf goto end|| +\item Otherwise we run {\MP} with its |&plain| memory (format), +also known as |&mpost|. + ||mpost &plain auxiliar.mf|| +\item Finally, we execute the second {\TeX} pass. + ||pdftex &plain filename.ext|| +\item We now have the complete |filename.pdf| file. + ||:end|| + +\endlist + +\MTline{end.} % METATeX changes \bye +\endarticle + + +% To check labels (ink intensive example!) +\MTbeginchar(5cm,5cm,0cm); +\MT: fill (0,0)--(w,0)--(w,h)--(0,h)--cycle; +\MT: z0 = (w/2,h/2); +\MT: z1 = (w/2,3h/4); z11 = z1; +\MT: z2 = (w/2,h/4); +\MT: z3 = (0,h/2); +\MT: z4 = (0,h/4); +\MTlabel*(0)"Center"; +\MTlabel*(1)tl"."; +\MTlabel*(11)br"."; +\MTlabel*(2)":"; +\MTlabel(3)"Out"; +\MTlabel*(4)"Intruder"; +\MTendchar; +$$\box\MTbox$$ diff --git a/Master/texmf-dist/doc/plain/metatex/mtpaper/shadow.tex b/Master/texmf-dist/doc/plain/metatex/mtpaper/shadow.tex new file mode 100644 index 00000000000..5ac184ef523 --- /dev/null +++ b/Master/texmf-dist/doc/plain/metatex/mtpaper/shadow.tex @@ -0,0 +1,85 @@ +% SHADOW.TEX (RMCG19950401) + +\ifx\MT\undefined \input metatex \fi +\ifx\framebox\undefined \input frame \fi + +\let\TMline=\MTline + +\catcode`\@=11 + +\newdimen\shadowdim \shadowdim=0.3pt % for 600dpi; try 0.85 for 300dpi + +\TMline{\% Defined by SHADOW.TEX} +\TMline{} +\TMline{ if unknown prologues: font_size 12pt\#; fi} +\TMline{} +\TMline{ def shadowall(expr dist) =} +\TMline{ begingroup} +\TMline{ save u,v,distx,disty,zbase,zcur;} +\TMline{ pair zbase,zcur;} +\TMline{ u := floor(w/dist); if odd u: u := u + 1; fi distx = w/u;} +\TMline{ v := floor(h/dist); if odd v: v := v + 1; fi disty = h/v;} +\TMline{ zbase := (1/2distx,1/2disty);} +\TMline{ for i := 0 upto (u-1):} +\TMline{ zcur := zbase if odd i: + (0,disty) fi;} +\TMline{ for j := 0 upto (v-1): if (not odd(i+j)):} +\TMline{ addto currentpicture contour unitsquare shifted zcur;} +\TMline{ zcur := zcur + (0,2disty);} +\TMline{ fi endfor} +\TMline{ zbase := zbase + (distx,0);} +\TMline{ endfor} +\TMline{ endgroup;} +\TMline{ enddef;} +\TMline{} + +\def\shadowbox{\afterassignment\sh@dowbox\count@=} +\def\sh@dowbox{\ifvoid\count@ \let\next=\relax \else + \shadowchar + \ifMTmf \let\next=\MTsh@dow \else + \ifx\pdfliteral\undefined \let\next=\PSsh@dow \else + \let\next=\ACsh@dow \fi \fi \fi + \next} + +\def\shadowchar{\bgroup + \dimen0=\wd\count@ \dimen2=\ht\count@ \advance\dimen2\dp\count@ + \dimen4=16pt \count2=\dimen4 + \count0=\dimen0 \divide\count0 by \count2 \advance\count0 by 1 + \dimen4=\dimen0 \divide\dimen4 by \count0 + \count0=\dimen2 \divide\count0 by \count2 \advance\count0 by 1 + \dimen6=\dimen2 \divide\dimen6 by \count0 + \setbox0=\box\MTbox + \MTbeginchar(\the\dimen4,\the\dimen6,0pt);% + \MTline{ shadowall(\the\shadowdim);}% + \MTendchar;% + \global\setbox\@uxbox=\vtop to \dimen2{\cleaders + \hbox to \dimen0{\cleaders\box\MTbox\hfil}\vfil}% + \global\setbox\MTbox=\box0 \egroup} + +\def\MTsh@dow{\wd\@uxbox=0pt \ht\@uxbox=0pt \dp\@uxbox=0pt + \ifhbox\count@ + \setbox\count@=\hbox{\raise\ht\count@\box\@uxbox\box\count@}\else + \setbox\count@=\vbox{\box\@uxbox\nointerlineskip\box\count@}\fi} + +\def\PSsh@dow{\ifhbox\count@ + \setbox\count@=\hbox{\special{ps:gsave 0.8 setgray}% + \rlap{\vrule width \wd\count@ height \ht\count@ depth \dp\count@}% + \special{ps:0 setgray grestore}% + \unhbox\count@}\else + \setbox\count@=\vbox{\special{ps:gsave 0.8 setgray} + \vtop to 0pt{\vbox to 0pt{ + \hrule width \wd\count@ height \ht\count@ depth \dp\count@ + \vss}\vss} + \special{ps:0 setgray grestore} + \nointerlineskip + \unvbox\count@}\fi} + +\def\ACsh@dow{\ifhbox\count@ + \setbox\count@=\hbox{\pdfliteral{q 0.8 g}% + \rlap{\vrule width \wd\count@ height \ht\count@ depth \dp\count@}% + \pdfliteral{0 g Q}\unhbox\count@}\else + \setbox\count@=\vbox{\pdfliteral{q 0.8 g} + \vtop to 0pt{\vbox to 0pt{ + \hrule width \wd\count@ height \ht\count@ depth \dp\count@ + \vss}\vss}\pdfliteral{0 g Q}\nointerlineskip\unvbox\count@}\fi} + +\catcode`\@=12 diff --git a/Master/texmf-dist/doc/plain/mnras/fonttest.tex b/Master/texmf-dist/doc/plain/mnras/fonttest.tex new file mode 100644 index 00000000000..c84aa89bc44 --- /dev/null +++ b/Master/texmf-dist/doc/plain/mnras/fonttest.tex @@ -0,0 +1,169 @@ +% FONTTEST.TEX +% +% Test all the possible font combinations in the MN design +% +% v0.4 --- released 25th August 1994 (M. Reed) +% v0.3 --- released 22nd February 1994 +% v0.25 --- released 24th July 1992 +% v0.1 --- first released 27th February 1992 +% +% Copyright Cambridge University Press + +% The following line automatically loads the mn macros if you are not +% using a format file. +\ifx\mnmacrosloaded\undefined \input mn\fi + + +% If your system has the AMS fonts version 2.0 installed, MN.tex can be +% made to use them by uncommenting the line: %\AMStwofontstrue +% +% By doing this, you will be able to obtain upright Greek characters. +% e.g. \umu, \upi etc. See the section on "Upright Greek characters" in +% the author guide for further information. + +\newif\ifAMStwofonts +%\AMStwofontstrue + +\ifCUPmtplainloaded + \AMStwofontstrue +\else + \NewTextAlphabet{textbfit} {cmbxti10} {} + \NewTextAlphabet{textbfss} {cmssbx10} {} + \NewMathAlphabet{mathbfit} {cmbxti10} {} % for math mode + \NewMathAlphabet{mathbfss} {cmssbx10} {} % " " " + % + \ifAMStwofonts + \NewSymbolFont{upmath} {eurm10} + \NewSymbolFont{AMSa} {msam10} + \NewMathSymbol{\upi} {0}{upmath}{19} + \NewMathSymbol{\umu} {0}{upmath}{16} + \NewMathSymbol{\upartial}{0}{upmath}{40} + \NewMathSymbol{\leqslant}{3}{AMSa}{36} + \NewMathSymbol{\geqslant}{3}{AMSa}{3E} + \let\oldle=\le \let\oldleq=\leq + \let\oldge=\ge \let\oldgeq=\geq + \let\leq=\leqslant \let\le=\leqslant + \let\geq=\geqslant \let\ge=\geqslant + \fi + % +\fi + +\def\tface{\ifCUPmtplainloaded (Monotype Times)\else (Computer Modern)\fi} + +\parindent=0pt + +\onecolumn + +\pageoffset{-2.5pc}{0pc} + +\begintopmatter +\title{A test file showing all of the possible font combinations} + +\shortauthor{Monthly Notices font test \tface} +\shorttitle{Monthly Notices font test \tface} +\maketitle + +\overfullrule=0pt + +\loadboldmathnames + +% not available in sub, sub sub and super, super super script: +% \it, \sl, \tt, \sc and \sf (Computer Modern version) + +\def\digs{0123456789} +\def\testfont#1{% + \advance\baselineskip by 5pt + {\tenrm #1:}\medskip + {$\rm Roman^{\rm Roman^{\rm Roman}}$}\ \ + {$\bf Boldface^{\bf Boldface^{\bf Boldface}}$}\par +% + \ifCUPmtplainloaded % Times version + {$\it Italic^{\it Italic^{\it Italic}}$}\ \ + {$\sl Slanted^{\sl Slanted^{\sl Slanted}}$}\par + {$\tt Typewriter^{\tt Typewriter^{\tt Typewriter}}$}\ \ + {$\sc Small\ Caps^{\sc Small\ Caps^{\sc Small\ Caps}}$}\par + {$\sf Sans\ Serif^{\sf Sans\ Serif^{\sf Sans\ Serif}}$}\par + \else + {\it Italic}\ \ + {\sl Slanted}\ \ + {\tt Typewriter}\par + {\sc Small Caps}\ \ + {\sf Sans Serif}\par + \fi + % + {\textbfit{Bold text italic}% + $^{\mathbfit{Bold\ text\ italic^{\mathbfit{Bold\ text\ italic}}}}$}\par + {\textbfss{Bold sans-serif}% + $^{\mathbfss{Bold\ sans-serif}^{\mathbfss{Bold\ sans-serif}}}$}\par + % + \ifAMStwofonts + Upright math, and others $\upi^{\upi^{\upi}}, \umu^{\umu^{\umu}}, + \upartial^{\upartial^{\upartial}}, \le^{\le^{\le}}, \ge^{\ge^{\ge}}$ + \par + \fi + % + {$\cal CALAGRAPHIC^{\cal CALAGRAPHIC^{\cal CALAGRAPHIC}}$}\par + {$\bmath{\cal BOLD\ CALAGRAPHIC^{\cal BOLD\ CALAGRAPHIC^{\cal BOLD\ CALAGRAPHIC}}}$}\par + + {$Math\ italic^{Math\ italic^{Math\ italic}}$}\par + {$\bmath{Bold\ math\ italic^{Bold\ math\ italic^{Bold\ math\ italic}}}$}\par + + {${\rm Oldstyle}\ \oldstyle \digs^{\oldstyle \digs^{\oldstyle \digs}}$}\par + {${\rm Bold\ oldstyle}\ \bmath{\oldstyle \digs^{\oldstyle \digs^{\oldstyle \digs}}}$}\par + + {\rm Math symbols}\ \ + $\gamma^{\gamma^{\gamma}}\quad \theta^{\theta^{\theta}} + \quad \nu^{\nu^{\nu}}\quad \nabla^{\nabla^{\nabla}}$\par + {\rm Bold math symbols}\ \ + $\bgamma^{\bgamma^{\bgamma}}\quad \btheta^{\btheta^{\btheta}} + \quad \bnu^{\bnu^{\bnu}}\quad \bnabla^{\bnabla^{\bnabla}}$\par +% $$ +% \bar x_1-\bar x_2-\left (t_{1-{\alpha\over 2}} +% \ \times \ s\sqrt{{1\over n_1}+{1\over n_2}}\right )\ {\rm to} \ \bar +% x_1-\bar x_2+\left (t_{1-{\alpha\over 2}} +% \times s\sqrt{{1\over n_1}+{1\over n_2}}\right ) +% $$ +% }% + Special symbols: + $\la$\ $\ga$\ $\getsto$\ $\cor$\ $\lid$\ $\gid$\ $\sol$\ $\sog$\ + $\lse$\ $\gse$\ $\grole$\ $\leogr$\ $\loa$\ $\goa$\ \sun\ \degr\ + \diameter\ $\sq$\ \fd\ \fh\ \fm\ \fs\ \fdg\ \fp\ \farcs\ \farcm\ + \arcsec\ \arcmin\ $\bbbr$ $\bbbm$ $\bbbn$ $\bbbf$ $\bbbh$ $\bbbk$ + $\bbbp$ $\bbbone$ $\bbbc$ $\bbbq$ $\bbbt$ $\bbbs$ $\bbbz$\par + % + \ifCUPmtplainloaded + \Half + \noindent (Monotype Times version only)\par + \noindent AMS symbol fonts: + $\boxplus$, $\boxtimes$, $\blacksquare$, $\centerdot$, $\lozenge$, + $\blacklozenge$, $\yen$, $\checkmark$, $\circledR$, $\maltese$, + $\nleqq$, $\ngeqq$, + $\precneqq$, $\succneqq$, $\precnapprox$, $\succnapprox$, $\lnapprox$, + $\gnapprox$\par + \noindent Blackboard Bold: $\Bbb{A}\ldots\Bbb{Z}$\par + \fi + \Two +} + + +\eightpoint\testfont{8 point}% + +\ninepoint\testfont{9 point}% + +\vfil\eject + +\tenpoint\testfont{10 point}% + +\elevenpoint\testfont{11 point}% + +\vfil\eject + +\fourteenpoint\testfont{14 point}% + +\vfil\eject + +\seventeenpoint\testfont{17 point}% + +\bye + +% end of fonttest.tex diff --git a/Master/texmf-dist/doc/plain/mnras/mnguide.tex b/Master/texmf-dist/doc/plain/mnras/mnguide.tex new file mode 100644 index 00000000000..f68e7a06bef --- /dev/null +++ b/Master/texmf-dist/doc/plain/mnras/mnguide.tex @@ -0,0 +1,1988 @@ +% MNGUIDE.TEX +% +% Authors' guide for the plain TeX MN macros +% +% v1.5 --- released 25th August 1994 (M. Reed) +% v1.4 --- released 22nd February 1994 +% v1.3 --- released 21st December 1992 +% +% Copyright Cambridge University Press + +% The following line automatically loads the mn macros if you are not +% using a format file. +\ifx\mnmacrosloaded\undefined \input mn\fi + +% If your system has the AMS fonts version 2.0 installed, MN.tex can be +% made to use them by uncommenting the line: %\AMStwofontstrue +% +% By doing this, you will be able to obtain upright Greek characters. +% e.g. \umu, \upi etc. See the section on "Upright Greek characters" in +% this guide for further information. + +\newif\ifAMStwofonts +%\AMStwofontstrue + + +%%%%%%%%%%%%%%%%%%%%%%%%% Macros for this guide %%%%%%%%%%%%%%%%%%%%%%%%%%% +\makeatletter +\newskip\ttglue \ttglue=0pt + +\chardef\other=12 +\def\ttverbatim{\begingroup \catcode`\\=\other \catcode`\{=\other + \catcode`\}=\other \catcode`\$=\other \catcode`\&=\other + \catcode`\#=\other \catcode`\%=\other \catcode`\~=\other + \catcode`\_=\other \catcode`\^=\other + \obeyspaces \obeylines \tt}% +{\obeyspaces\gdef {\ }} + +\outer\def\begintt{$$\let\par=\endgraf \ttverbatim \parskip=0pt% + \catcode`\|=0 \rightskip=-5pc \ttfinish} + +{\catcode`\|=0 |catcode`|\=\other + |obeylines + |gdef|ttfinish#1^^M#2\endtt{#1|vbox{#2}|endgroup$$}} + +\catcode`\|=\active +{\obeylines\gdef|{\ttverbatim\spaceskip=\ttglue\let^^M=\ \let|=\endgroup}} + +\newdimen\macind \macind=1em % the default indent + +\def\beginlines{\par\begingroup\nobreak\Half + \leftskip=\macind + \parindent=0pt% + \nobreak \obeylines \everypar{\strut}% +} +\def\endlines{\endgroup\Half\noindent} + +\def\hang#1#2{% + \par\hangindent=70pt% + \advance\hangindent by 1em + \noindent\hskip 1em \rlap{\tt #1}\hskip 70pt\relax + #2\par% +} + +\def\beginexhang#1{\par\bgroup\let\item=\ex@hang} + +\def\ex@hang#1{% + \everypar{}\par + \Half + \everypar{\noindent \ignorespaces}% + \noindent %\hskip-\hangindent + \boxw{\tt\char"5C #1}\quad\ignorespaces +} + +\def\endexhang{\par\egroup\Half} + +\def\beginquote{\bgroup\par\Half\leftskip=2em \rightskip=2em + \eightpoint\noindent\ignorespaces} +\def\endquote{\par\Half\egroup\noindent} + +\newdimen\fboxrule \fboxrule=.4pt +\newdimen\fboxsep \fboxsep=3pt +\newdimen\tempdimA +\newbox\BoxA + +\newif\ifnocr +\def\boxw#1{{\global\nocrtrue \fboxsep=2pt \boxit{#1}}} + +\long\def\boxit#1{% + \setbox\BoxA=\hbox{\kern\fboxsep #1\kern\fboxsep}% + \tempdimA=\fboxrule + \advance\tempdimA by \fboxsep + \advance\tempdimA by \dp\BoxA + \noindent \hbox{\lower\tempdimA + \hbox{% + \vbox{% + \hrule height \fboxrule + \hbox{% + \vrule width \fboxrule \hskip-\fboxrule + \vbox{\vskip\fboxsep \box\BoxA\vskip.5\fboxsep}% + \hskip -\fboxrule \vrule width \fboxrule + }% + \hrule height \fboxrule + }% + }% + }% + \ifnocr \global\nocrfalse\else \par\medskip\noindent\ignorespaces\fi +} + +\def\multi{\vbox\bgroup\advance\hsize by -2\fboxsep \def\\{\hfil\break}} +\def\endmulti{\egroup} + +\def\Notes{% + \if@nobreak \everypar{}\half \else \addpen{\gds@cbrk}\addvspace{\half}\fi + \noindent\@nohdbrk {\em Notes}\par + \nobreak \vskip\half \nobreak \@noafterindent +} + + +\def\LaTeX{La\TeX} +\makeatother +%%%%%%%%%%%%%%%%%%%%%% End of macros for guide %%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifCUPmtplainloaded \else + \NewTextAlphabet{textbfit} {cmbxti10} {} + \NewTextAlphabet{textbfss} {cmssbx10} {} + \NewMathAlphabet{mathbfit} {cmbxti10} {} % for math mode + \NewMathAlphabet{mathbfss} {cmssbx10} {} % " " " + % + \ifAMStwofonts + % + \NewSymbolFont{upmath} {eurm10} + \NewSymbolFont{AMSa} {msam10} + \NewMathSymbol{\upi} {0}{upmath}{19} + \NewMathSymbol{\umu} {0}{upmath}{16} + \NewMathSymbol{\upartial}{0}{upmath}{40} + \NewMathSymbol{\leqslant}{3}{AMSa}{36} + \NewMathSymbol{\geqslant}{3}{AMSa}{3E} + \let\oldle=\le \let\oldleq=\leq + \let\oldge=\ge \let\oldgeq=\geq + \let\leq=\leqslant \let\le=\leqslant + \let\geq=\geqslant \let\ge=\geqslant + \else + \def\umu{\mu} + \def\upi{\pi} + \def\upartial{\partial} + \fi +\fi + +% Marginal adjustments using \pageoffset maybe required when printing +% proofs on a Laserprinter (this is usually not needed). +% Syntax: \pageoffset{ +/- hor. offset}{ +/- vert. offset} +% e.g. \pageoffset{-3pc}{-4pc} + +\pageoffset{-2.5pc}{0pc} + +\loadboldmathnames + +\begintopmatter % start the two spanning material + +\title{Monthly Notices of the Royal Astronomical Society:\hfil\break + plain \TeX\ style guide for authors} +\author{M. A. Reed} +\affiliation{Cambridge University Press, Shaftesbury Road, + Cambridge CB2 2BS} + +\shortauthor{M. A. Reed} +\shorttitle{Monthly Notices: plain \TeX\ guide for authors} + +\acceptedline{Accepted 1993 December 11. Received 1993 March 17} + +\abstract {This guide is for authors who are preparing papers for the +Monthly Notices of the Royal Astronomical Society using the +Monthly Notices plain \TeX\ macros.} + +\keywords {Plain \TeX, {\tt mn.tex} -- sample text -- user guide.} +\pagerange{1--13}%% +\pubyear{1994} + +\maketitle + +% Start of main text + +\section{Introduction} + +In addition to the standard submission of hardcopy from authors, +Monthly Notices accepts machine-readable forms of papers in \TeX. +The layout design for Monthly Notices has been implemented as a +\TeX\ format. This guide is not a substitute for the \TeX\ manual +itself. Authors planning to submit their papers in \TeX\ are advised +to use |mn.tex| as early as possible in the creation of their files. + + +\subsection{The MN macros} + +MN is a set of plain \TeX\ macros for the Monthly Notices design, +incorporating both the single- and double-column formats. +MN.STY is the corresponding \LaTeX\ style file. +The MN design package consists of the following files; do not edit these +files in any way. +\Half +\hang{MN.TEX} {the macro definitions} +\hang{MNGUIDE.TEX} {the input file for this guide} +\hang{MNSAMPLE.TEX} {the input file for a sample article} +\hang{MNLAND.TEX} {a landscape figure for use with the sample article} +\hang{FONTTEST.TEX} {a file to test all of the fonts used in MN} +\Half +\noindent The input files for the guide, sample pages, landscape sample and +fonttest automatically call in the MN macros if you haven't preloaded them +by using a format file. +Therefore, this guide can be typeset by typing: |tex MNGUIDE|, or +|tex &mn MNGUIDE|. + +When your article is printed in the Monthly Notices journal, it is typeset +in Monotype Times. As most authors do not have this font, it is likely that +the make-up will change with the change of font. For this reason, we ask +you to ignore details such as slightly long lines, page stretching, or +figures falling out of synchronization, because these details can be dealt with at a later stage. + + +\subsection{General style issues} + +For general style issues, authors are referred to the `Instructions for +Authors' on the inside back cover of Monthly Notices. Authors who are +interested in the details of style are referred to Butcher (1992) and +The Chicago Manual (1982). The language of the journal is British +English and spelling should conform to this. + + +\subsection{Submission of \TeX\ articles to the journal} + +Authors are urged to state that electronic submission is intended when +first submitting their paper. Papers should initially be submitted in the +usual way to the Executive Secretary, Royal Astronomical Society, Burlington +House, London W1V~0NL, as set out on the inside front cover of each issue +of Monthly Notices. Three hard copies should be supplied. One of these +copies should be single-sided and double-spaced throughout, while the other +two should be weight-reduced, by being either single-spaced or double-sided. +Note that articles, or revised versions thereof, may not be submitted by +electronic mail. Appropriate gaps should be left for figures, original +versions and copies of which should also be supplied. Authors should ensure +that their figures are suitable (in terms of lettering, size, etc.) for the +reduction they intend. + +Authors who wish to include PostScript artwork dir\-ectly into their +articles can do so, by using either Tomas Rokicki's {\sf EPSF} macros +or Trevor Darrell's {\sf PSFIG} macros (both of which are supplied with +the DVIPS PostScript driver). Please remember to supply any additional +figure macros you use with your article. +Please also supply hard copies of your figures, for the use of production +editors and as a back-up. +Authors should not attempt to +use implementation specific |\special|'s directly. + +The correct Monthly Notices House +Style should be used -- details are given in the Instructions for Authors, +in the Style Guide published in the 1~January 1993 issue (\hbox{MNRAS}, +260,~1), and in Appendix C of this guide. +No disk should be submitted at this initial stage. When the paper has been +accepted, the double-spaced copy will be marked up by the subeditors at +Blackwell Science (BS) and returned to you for correction. +When the requested corrections have been made, you should send the following +material to BS: +\beginlist +\item (i) a 3.5-inch or 5.25-inch disk for PC (double or high density or +Apple Mac), containing the {\em corrected\/} version of the paper; the file +for the final version should be text-only, with no source-dependent control +codes (i.e. an ASCII file); + +\item (ii) two hard copies of the corrected version, plus the original +marked up copy of the article; {\em any further author corrections should +be clearly indicated on the latter\/}; + +\item (iii) a signed statement that the revised hard copy and the disk do +indeed correspond. +\endlist +In addition, you should submit the following information concerning the disk +and its contents: +\beginlist +\item (i) the disk format (e.g. PC 360k); + +\item (ii) how many files the disk contains, their names, a description of +the file contents and the number of pages each file will produce when +printed; details of any user-defined macros; + +\item (iii) the computer system and implementation of \TeX\ used (e.g. +IBM~PC-386, PC\TeX~v3.14). +\endlist +Unless the layout of the paper has to be significantly changed by the +typesetter (for example, if the gaps left for figures are not suitable), it +will not be necessary to send you a typeset proof to check, as the paper +will be set directly from your submitted disk. However, you should note +that, if serious problems are encountered with the coding of your paper +(missing author-defined macros, for example), it may prove necessary to +divert the paper to conventional typesetting. + + +\section{General instructions for installation} + +The simplest way to use this macro package is to copy the above files into a +suitable directory or work area on your computer. Write your +article using the macros described below (or use the sample article as a +template) and ensure that the following is included at the very beginning of your input file: +\beginlines +|\ifx\mnmacrosloaded\undefined \input mn\fi| +\endlines + +When you typeset your article using |tex <article file name>| the macro +definitions will be loaded automatically before your text is processed. +This will happen rather slowly on a small computer and you may find it much +faster to work with the \TeX\ format file for the MN macros. +This can be created by using the program INITEX: +\beginlines +|initex &plain mn| +\endlines +This usage of this command will vary from one installation of \TeX\ to +another. In {\sc Unix} implementations of \TeX\ the `|&|' character must +be `escaped' with a `|\|` because it is a magic character, +e.g. |initex \&plain mn|. +In PC\TeX\ you type the following (seek local advice if you +are not sure how to use INITEX on your system): +\beginlines +|tex &plain mn /i| +\endlines + +When the process is complete type |\dump| at the \TeX\ prompt. +This creates the format file |MN.FMT|. Type the following command to +typeset your article: +\beginlines +|tex &mn <article file name>| +\endlines +\TeX\ will process your article at high speed. + + +\subsection{The font test and sample pages} + +Once you have installed the MN macros, run the following test. The file +|FONTTEST.TEX| produces a sample of each font size used in the MN design. +To use this do |tex FONTTEST| or |tex &mn FONTTEST| (after creating the +|MN.FMT| format file). +Preview the resulting |DVI| file on-screen and generate hard copy output on +your facilities. It will show you whether any of the fonts selected by the +Monthly Notices design are going to cause problems on your system. + +As a final test of the installation, typeset the sample article, using +|tex MNSAMPLE| or |tex &mn MNSAMPLE|. +Use this article in conjunction with the instructions in this guide to +work out how to typeset an article for Monthly Notices. + + +\subsubsection{Page margins} + +Some \TeX\ sites may find that pages from the MN design are positioned +incorrectly on the paper from local laserprinters. This can be corrected by the +use of the |\pageoffset| macro. It takes two parameters, the first being +the horizontal offset, the second the vertical offset, e.g. +\beginlines +|\pageoffset{-1pc}{2pc}| +\endlines +The above example will shift the output one pica to the left, and two picas +down the page. Usually there is no need to use this macro; only use it if +required. + + +\subsubsection{Author macro names} + +For efficiency, some authors may wish to write their own macros. Those who +intend to do this will be aware of the problem of creating unique +identifiers (macro names). The most common way around this problem has been +to include |@| somewhere in the identifier, e.g. |\@utput| or |\sec@tion|. +Knuth, the creator of \TeX, has adopted this method in the plain \TeX\ +definitions and it can also be found in other format packages such as +\LaTeX. + +However, use of this method can cause problems if the internals of plain +\TeX\ or the MN macros get `over-ridden'. There is a simpler method which is +much safer. Simply prefix your macro names with your initials, +e.g.\ |\MARmacro|. + + +\section{The design macros} + +Refer to the source code of the sample pages for examples of the following +design macros in use. It is very important that the article should end +with a |\bye| as this typesets `This paper$\ldots$' at the very end. + + +\subsection{Article opening} + +There are certain macros that should appear near the top of your input file. +The following is the recommended way to begin your article. +% +\beginexhang{begintopmatter} +\item{onecolumn} Selects single-column output (default = two-column). + The |\onecolumn| command {\em must\/} be used before |\begintopmatter| + for the article opening to work correctly. + + You should not use |\onecolumn| unless your article has a high + mathematical content which won't fit into the two-column measure easily. + Selection of one-column output also affects the actions of other macros, + particularly those controlling figures and tables. + +\item {Referee} This selects referee mode (double spaced) if required + (default = not selected). Figure captions and Tables are not double + spaced by this option. + +\item {authorcomment} This creates a catchline at the bottom of the page + which authors may wish to use to keep track of the versions of their + article. + +\item {begintopmatter} This macro should be used just before defining the + article title and author names. If you omit this macro \TeX\ will + complain loudly when it reaches the |\maketitle| macro. + +\item {title} Set the article title, e.g. +\beginlines +|\title{Dust envelopes around RV Tauri stars}| +\endlines + +\item {author} Set the article author(s), e.g. +\beginlines +|\author{A. V. Raveendran}| +\endlines + +\item {affiliation} Set the author affiliation(s), e.g. +\beginlines +|\affiliation{Indian Institute of Astrophysics..}| +\endlines +Multiple author names should be set as follows. Do not use +`\&' between names, always use `and'. Each author name is +listed, followed by a reference mark (usually a superscripted +number). The reference mark refers to each author's +respective affiliations in a list which follows afterwards. +For example, +\beginlines +\vbox{% +|\author{A.~Moorhouse,$^{1,2}$| +| P.~W.~J.~L.~Brand,$^1$| +| T.~R.~Geballe$^3$ and M.~G.~Burton$^4$}| +|\affiliation{$^1$ Department of Astronomy, ...}| +|\affiliation{$^2$ Present address: Dublin| +| Institute for ...}| +|\affiliation{$^3$ Joint Astronomy Centre ...}| +|\affiliation{$^4$ NASA Ames Research Center ...}| +}% +\endlines +Note that the `present address' in +the above example is treated as though it were an affiliation. Similarly, +fellowships or other posts, for example `Visiting Observer, Mount John +University Observatory \dots' should be listed in the acknowledgments. + +\item {shortauthor} Define the even-page running head. +\beginlines +|\shortauthor{R. A. Stathakis and E. M. Sadler}| +\endlines +Initials only should be used in running heads; use `and', +not~`\&', to separate the final two names. When there is a +long list of authors (four or more) use the form +\beginlines +|\shortauthor{D.~T.~Wickramasinghe et al.}| +\endlines + +\item {shorttitle} Define the odd-page running head. +\beginlines +|\shorttitle{The H\,{\eightit I} spectra}| +\endlines +Notice the use of the |\,| (thinspace) after the `H' in the above example. +The |\eightit| simulates the effect of an italic small-caps. +If you require roman (upright) text in the short-title, say for `IRAS', +you would use: +\beginlines +|\shorttitle{...{\rm IRAS}...}| +\endlines +It may also be necessary to add an italic correction |\/| before the |\rm| +to improve the spacing. + +\item {abstract} Set the abstract information, e.g. +\beginlines +|\abstract {This is the text of the abstract ...}| +\endlines +This design macro requires that the text (which can be +longer than one paragraph) is enclosed in braces. +The abstract must fit on to the +first page of the article when typeset. + +\item {keywords} Set any article key words, e.g. +\beginlines +|\keywords {circumstellar matter| +| -- infrared: stars.}| +\endlines +The same applies for |\keywords| as for the |\abstract| macro. + +\item {maketitle} This macro must be used just before the first section + or the first text paragraph. +\endexhang + + +\subsection{Headings} + +Some headings are capitalized. Where this is true the design macro will +automatically capitalize whatever you key. As a rule, it is advisable to +capitalize the first letter, and any words that normally start with a capital, +i.e. proper nouns, abbreviations, but key all other words in lower case. + +The |\section|, |\subsection| and |\subsubsection| mac\-ros are +automatically numbered. To produce unnumbered headings, `star' forms of +these macros exist, e.g. |\section*|. +% +\beginexhang{subsubsection} +\item {section} Start a new section, e.g. +\beginlines +|\section{Introduction}| +\endlines +For main section headings such as `Acknowledgments' and +`References' use the |\section*| macro, e.g. +\beginlines +|\section*{Acknowledgments}| +\endlines +The |\section| command is also used to produce appendices +(see Subsection~3.11 for more information).%% + +\item {subsection} Start a new subsection, e.g. +\beginlines +|\subsection{Colour--colour diagram}| +\endlines + +\item {subsubsection} Start a new subsubsection, e.g. +\beginlines +|\subsubsection{Correlation with subgroups}| +\endlines + +\item {paragraph} Start a new subsubsubsection, e.g. +\beginlines +|\paragraph{Correlation with subgroups.} Text| +| runs on after heading...| +\endlines +It is important to note that text runs on after a +|\paragraph|. There should be no break between this heading +and the next paragraph. +\endexhang + +\noindent The macro |\section| forces the text of the heading into upper +case, and |\subsection| emboldens the text. When headings contain names +with lowercase or small capital letters, place these letters in the +argument of |\lowercase|, e.g. +\beginlines +|N\lowercase{a}\,{\sixbf I}/%| +|C\lowercase{a}\,{\sixbf II}| +\endlines +to get `\dots\ {\bf Na\,{\sixbf I}/Ca\,{\sixbf II}}\ \dots' in a section +heading. The |\sixbf| commands produce a simulated bold small-caps. +This technique can also be applied to the running heads; see the example in +|\shorttitle|. + +The paragraph indent on any text following a |\section|, |\subsection| +or |\subsubsection| is automatically removed by the macros. + + +\subsection{Lists} +\subsubsection{Numbered lists} + +Numbered lists are keyed in a simple and straightforward way. They begin +with a |\beginlist| command. Each item is marked with |\item| with its +number (in round braces) followed by the text for the item. The number +should be in lower case roman numerals. The list is ended with |\endlist|. +For example, +\beginlines +|\beginlist| +|\item (i) the attenuated and diluted stellar| +| radiation;| +|\item (ii) scattered radiation, and| +|\item (iii) reradiation from other grains.| +|\endlist| +\endlines + +\Notes + +\beginlist +\item (i) Extra white space is automatically added above and below the list. +\item (ii) Outside the scope of the |\beginlist| and |\endlist| commands the + |\item| command reverts to its plain \TeX\ definition. Don't use the + plain \TeX\ |\item| command on its own, as the spacing and indents will + be incorrect. +\item (iii) The paragraph indentation on the first paragraph following the + |\endlist| command is removed automatically if you leave no blank + line between the |\endlist| and the text. +\endlist + + +\subsubsection{Unnumbered lists} + +These should be keyed in the same way as numbered lists (described above), +except that each item in the list has no number in round braces. + + +\subsection{Illustrations (or figures)} + +Figures should be keyed as follows: +\beginlines +|\beginfigure{|{\em n\/}|}| +| \vskip 3cm| +| \caption{{\bf Figure |{\it f}|.} An example figure in| +| which space has been left for the artwork.}| +|\endfigure| +\endlines +Figure captions should be below the figure itself, therefore +the |\caption| command should appear after the figure or space +left for an illustration. +The {\em n\/} value is the logical figure number. This number determines +the output order of the figure (in two-column mode). +It must start at~1 and increase with each successive figure. +\beginfigure{1} + \vskip 3cm + \caption{{\bf Figure 1.} An example figure in which space has been + left for the artwork.} +\endfigure +The |\caption| macro is only valid in the scope of +|\beginfigure|$\ldots$|\endfigure|. + +The example above will produce a single-column figure in two-column mode. +To produce a double-spanning figure use: +\beginlines +|\beginfigure*{|{\em n\/}|}| +| |$\ldots$ +| \caption{|$\ldots$|}| +|\endfigure| +\endlines +Notice that |\beginfigure*| ends with |\endfigure|. If the text in the +caption is less than one line long it is centred automatically, otherwise +it is set full-out. + +\Notes + +\beginlist +\item (i) If there is more than one figure panel to a caption, the depth + value should increase by 13pt (4.5mm) for every extra figure (if they are + one above another). This allows for a gap between each figure panel. + +\item (ii) If a figure occupies one complete page, insert a depth that does + not completely fill the page, otherwise the figure may be output at the + end of the paper (or not at all)! +\endlist + +See `Instructions for Authors' in Monthly Notices for submission of +artwork. + +\subsubsection{Points to note for figures in one-column articles} + +\beginlist +\item (i) All figures (and their captions) will be set to full width even + if they are keyed using |\beginfigure|$\ldots$|\endfigure|. + Captions shorter than one line will be centred as normal. + +\item (ii) The logical figure number is ignored in one-column mode. + Therefore the figures are output in the order in which they appear in + the source. + +\item (iii) If a figure is placed very early in the source code, + it is possible for it to float to the top of the first page + (above the title). In this case, move the figure one paragraph down and + try again. It may be necessary to do this with other figures to keep the + output order correct. +\endlist + + +\subsection{Tables} + +Tables should be keyed something like this: +\beginlines +|\begintable{|{\em n\/}|}| +| \caption{{\bf Table |{\em t\/}|.} |$\ldots$|}| +| \halign{| $<$alignment$>$ |}| +| \tabletext{| text below table, table footnotes, etc. |}| +|\endtable| +\endlines +The {\em n\/} value is the logical table number, and {\em t\/} is the +table number. The logical table number determines the output order of the +table (in two-column mode). +It must start at~1 and increase with each successive table. + +The table caption should appear before the body of the table. +The |\tabletext| macro is provided for table notes, and table footnotes. +It can contain more than one paragraph of text. Ten points of space are +automatically added above |\tabletext|. Only one |\tabletext| is allowed +per table. The usage of |\tabletext| is optional. + +If you wish to insert non-aligned text into the body of the alignment do +not use |\noalign{|{\em text\/}|}| as this will make the table appear to +be full width to the macros, resulting in the table being set flush left. +In this case you can either use |\multispan| or use +|\noalign{\hbox{|{\em text\/}|}}|. + +The caption, and any text below the table will be set to the table +width, when the table is centred by the macros. +The |\caption| and |\tabletext| macros are only valid in the scope of the +|\begintable|$\ldots$|\endtable|. + +Table~1 is produced with the following code: +\beginlines +|\begintable{1}| +| \caption{{\bf Table 1.} Radio-band beaming| +| model parameters for FSRQs and BL Lacs.}| +| \halign{#\hfil & \quad \hfil#\hfil\quad &| +| \hfil#\hfil\quad & \hfil#\hfil\quad &| +| \hfil#\hfil\quad & \hfil#\hfil\quad &| +| \hfil#\hfil\cr| +| Class & $\gamma_1$ & $\gamma_2$ & $\langle| +| \gamma \rangle$ & $G$ & $f$| +| & $\theta_{\rm c}$ \cr| +| BL Lacs & 5 & 36 & 7 & $-4.0$ & $1.0\times| +| 10^{-2}$ & 10$^\circ$ \cr| +| FSRQs & 5 & 40 & 11 & $-2.3$ & $0.5\times| +| 10^{-2}$ & 14$^\circ$ \cr| +| }| +| \tabletext{{\em G} is the slope of the Lorentz| +| factor distribution, i.e. $n(\gamma)\propto| +| \gamma^G$, extending between $\gamma_1$| +| and $\gamma_2$, with mean value $\langle| +| \gamma\rangle$, {\em f\/} is the ratio| +| between the intrinsic jet luminosity and the| +| extended, unbeamed luminosity, while| +| $\theta_{{\rm c}}$ is the critical angle| +| separating the beamed class from the parent| +| population.}| +|\endtable| +\endlines + +\begintable{1} + \caption{{\bf Table 1.} Radio-band beaming model parameters + for FSRQs and BL Lacs.} + \halign{#\hfil&\quad \hfil#\hfil\quad& \hfil#\hfil\quad& + \hfil#\hfil\quad& \hfil#\hfil\quad& \hfil#\hfil\quad& + \hfil#\hfil\cr + Class & $\gamma_1$ & $\gamma_2$ & $\langle \gamma \rangle$ & $G$ & $f$ + & $\theta_{\rm c}$ \cr + BL Lacs & 5 & 36 & 7 & $-4.0$ & $1.0\times 10^{-2}$ & 10$^\circ$ \cr + FSRQs & 5 & 40 & 11 & $-2.3$ & $0.5\times 10^{-2}$ & 14$^\circ$ \cr + } + \tabletext{{\em G} is the slope of the Lorentz factor distribution, i.e. + $n(\gamma)\propto \gamma ^G$, extending between $\gamma _1$ and + $\gamma_2$, with mean value $\langle \gamma \rangle$, {\em f\/} is the + ratio between the intrinsic jet luminosity and the extended, unbeamed + luminosity, while $\theta_{{\rm c}}$ is the critical angle separating + the beamed class from the parent population.} +\endtable + +\noindent The example above will produce a single-column table in two-column +mode. To produce a double-spanning table use: +\beginlines +|\begintable*{|{\em n\/}|}| +| \caption{|$\ldots$|}| +| \halign{|$\ldots$|}| +| \tabletext{|$\ldots$|}| +|\endtable| +\endlines +Notice that |\begintable*| ends with |\endtable|. + +Tables are allowed to have single horizontal rules, at the head +and foot only. Horizontal rules should have 3pt of space above and below +them. Vertical rules should not be used. + +If a table occupies one complete page, you may find it necessary to reduce +its depth slightly, so that it doesn't completely fill the page, otherwise +the table may be output at the end of the paper (or not at all)! + + +\subsubsection{Points to note for tables in one-column articles} + +\beginlist +\item (i) Tables that will fit into a column in two-column mode will be + centred on the full page width in one-column mode. + +\item (ii) The logical table number is ignored in two-column mode. + Therefore the tables are output in the order in which they appear in + the source. + +\item (iii) If a table is placed very early in the source code, + it is possible for it to float to the top of the first page + (above the title). In this case, move the table one paragraph down and + try again. It may be necessary to do this with other tables to keep the + output order correct. +\endlist + + +\subsection{Captions for continued figures and tables} + +If a very large figure or table does not fit on one page, +it must be split into two floats; the second float should use a +continued caption in the form: +\smallskip +\centerline{{\bf Figure 6} -- {\it continued}} +\smallskip +\noindent The figure or table number in the continued caption should be +the same as in the original caption. These captions should be keyed as +follows: +\beginlines +|\begintable{|{\it n\/}|}| +| \caption{{\bf Table |{\it t\/}|} -- {\it continued}}| +| :| +|\endtable| +\endlines +Notice that there is no full-point after the figure/table number. + + +\subsection{Landscape pages} + +If a table or illustration is too wide to fit the standard measure, it +must be turned, with its caption, through 90 degrees anticlockwise. +Landscape illustrations and/or tables cannot be produced directly +using the MN macros because \TeX\ itself cannot turn the +page, and not all device drivers provide such a facility. + +The first step is to produce blank pages (with a running head) in the +output, so that the landscape material can be pasted in later. How +this is done depends on whether your article is in one or two columns. + +For one-column articles use the following: +\beginlines +|\pageinsert| +| \vfil\centerline{{\bf Figure |{\em f\/}|.} Landscape| +| figure to go here.}\vfil| +|\endinsert| +\endlines +otherwise use +\beginlines +|\beginfigure*{|{\em n\/}|}| +| \vbox to 646pt{\vfil \caption{{\bf Figure |{\em f\/}|.}| +| Landscape figure to go here.}\vfil}| +|\endfigure| +\endlines +for two-column articles. You may find it necessary to move the above code +up or down the source code until the blank page appears on the page after +the first reference. + +Next create a separate document containing the command |\landscape| near +the top (or use |mnland.tex| as a template). +In this file include the complete tables and illustrations (with captions) +using the figure and table macros provided, remembering to number the +captions in the correct sequence, e.g. +\ifCUPmtplainloaded \else \eject\fi %% +\beginlines +|\ifx\mnmacrosloaded\undefined \input mn\fi| +\smallskip +|% use the following if your driver supports it| +|% \special{landscape}| +\smallskip +|% you may require \pageoffset for landscape| +|% \pageoffset{0pc}{-1.5pc}| +\smallskip +|\landscape| +|\authorcomment{Landscape material to be pasted| +| into the article.}| +\smallskip +|\begintopmatter| +|\maketitle| +\smallskip +|\beginfigure{1}| +|\caption{{\bf Figure 4.} Photometric| +| comparisons |$\ldots$|}| +|\endfigure| +\smallskip +|:| +\smallskip +|\bye| +\endlines +Once you have successfully processed the new file with the MN macros, you +can pass the resulting output through your dvi printer driver. Because the +output of the MN macros is wider than it is deep, the page has to be printed +landscape on your output device. + +Some dvi printer drivers will understand the `landscape' |\special| command +and will automatically rotate the output, while others need to be told from +the command line. Consult your local documentation if you don't know how to +do this. + + +\subsection{Plate pages} + +These are provided for tip-in plates, and should only be used for +these. The plate page macros create a blank page with a special running +head; its contents can be set using the |\plate| command. The text in the +head should be keyed as shown below. The {\em no\/} and {\em vol\/} +numbers will be determined by the typesetter. +\beginlines +|\beginplatepage| +| \plate{Opposite p.~|{\em no\/}|, MNRAS, {\bf |{\em vol\/}|}}| +| \caption{{\bf Figure |{\em f\/}|.} |$\ldots$|}| +|\endplatepage| +\endlines +If the plate is a `landscape' plate its caption (if any) should be set +using a separate `landscape' file (as described above). If the plate is +to be placed `portrait' its caption can be set by using the |\caption| +command as shown above. The style of the caption should be the same as for +normal figure captions. If the plate fills most of the page, it is advisable +to place the caption at the very bottom of the page -- this can be achieved +by using |\vfill| above the caption. + +Plate pages will always appear on the page following the one on which the +|\endplatepage| command is encountered. At present it is impossible to have +two plate pages side by side, since there must be at least one page between +them. If a new plate page is started before a previous one is output the +first plate page is lost. + + +\subsection{Footnotes} + +Footnotes are only available in the one-column format. They should be +keyed in the standard plain \TeX\ way using |\footnote|, e.g. +\beginlines +|text\footnote {|{\em symbol\/}|}{|{\em footnote text}$\ldots$|} text| +\endlines +where {\em symbol\/} should be in the sequence: +$\star$ (|\star|), \dag, \ddag, \S, \P, $\|$, $\star\star$ (|\star\star|), +\dag\dag, \ddag\ddag, \S\S, \P\P, $\|\|$. +The |\footnote| command should only be used for footnotes in the main text. + + +\subsection{Bibliography} + +References to published literature should be quoted in text by author +and date: e.g.\ Draine (1978) or (Begelman, Blandford \& Rees 1984). +Where more than one reference is cited having the same author(s) and date, +the letters a,b,c, $\ldots$ should follow the date: e.g.\ Smith (1988a), +Smith (1988b), etc. + + +\subsubsection{References in the text} + +References in the text are given by author and date, and, whichever +method is used to produce the bibliography, the references in the text +are done in the same way. +When you introduce a three-author paper, you should list all +three authors at the first citation, and thereafter use et al. + +\subsubsection{The list of references} + +The following listing shows how references should be keyed in the style of +the journal. +\beginlines +|\section*{References}| +\smallskip +|\beginrefs| +|\bibitem Butcher J., 1992, Copy-editing:| +| The Cambridge Handbook, 3rd edn.| +| Cambridge Univ. Press, Cambridge| +|\bibitem The Chicago Manual of Style, 1982.| +| Univ. Chicago Press, Chicago| +|\bibitem Blanco P., 1991, PhD thesis,| +| Edinburgh University| +|\bibitem Brown A. B., Jones C. D., 1989,| +| in Robinson E. F., Smith G. H., eds,| +| Proc. IAU Symp. 345, Black Dwarfs.| +| Kluwer, Dordrecht, p. 210| +|\bibitem Edelson R. A., 1987, ApJ, 313, 651| +|\bibitem Lamport L., 1986, \LaTeX: A Document| +| Preparation System. Addison--Wesley,| +| New York| +|\bibitem Mirabel I. F., Sanders D. B., 1989,| +| ApJ, 340, L53| +|\bibitem Misner C. W., Thorne K. S.,| +| Wheeler J. A., 1973, Gravitation.| +| Freeman, San Francisco| +|\bibitem Sopp H. M., Alexander P., 1991,| +| MNRAS, 251, 112| +|\bibitem Stella L., Campana S., 1991, in| +| Treves A., Perola G. C., Stella L., eds,| +| Iron Line Diagnostic in X-ray Sources.| +| Springer--Verlag, Berlin, p. 230| +|\endrefs| +\endlines +The following rules apply for the ordering of your references: +\beginlist +\item (i) if an author has written several papers, some with other authors, + the rule is that the single-author papers precede the two-author + papers, which, in turn, precede the multi-author papers; +\item (ii) within the two-author paper citations, the order is determined + by the second author's surname, regardless of date; +\item (iii) within the multi-author paper citations, the order is + chronological, regardless of author surnames. +\endlist + +\Notes + +\beginlist +\item (i) The |\bibitem| command is undefined unless it is used in the + scope of the |\beginrefs|$\ldots$|\endrefs|. +\item (ii) Bibliographical items can be longer than one paragraph. +\item (iii) The paragraph indentation on the first paragraph following the + |\endrefs| command is removed automatically if you leave no blank + line between the |\endrefs| and the text. +\endlist + + +\subsection{Appendices} + +The appendices section of your article should start with a |\appendix|, +after which each |\section| starts a new appendix. For example, +\beginlines +|\appendix| +|\section{for authors}| +\endlines +will yield:\par +\smallskip +\centerline{\bf APPENDIX A:\enskip FOR AUTHORS}\par +\smallskip +\noindent The |\appendix| macro should only be used once. + +If the appendix has no subtitle, the parameter to the |\section| command +should be left empty. For example, +\beginlines +|\section{}| +\endlines +will produce:\par +\smallskip +\centerline{\bf APPENDIX B}\par +\smallskip +\noindent Any subsections or subsubsections in the appendix are +automatically numbered. +You should also note that displayed equations in appendices should be +numbered (A1), (A2) for Appendix A, and (B1), (B2) for Appendix B, etc. + +The numbering for displayed equations can be made automatic by using the +|\stepeq| macros described in Subsubsection~3.13.2.%% + +Figures and Tables should also be numbered in a similar way, +e.g. Fig. A1, A2, Table A1, A2 in appendices. + + +\subsection{Typeface selection} + +The normal plain \TeX\ typeface conventions apply. The following faces +are available as normal: |\rm|, |\it|, |\bf|, |\sl|, |\sf|, |\sc|, +|\tt|, |\mit|, |\cal| and |\oldstyle|. + +Bold versions of |\cal| and |\oldstyle| can be produced in +combination with |\bmath|. Use of |\bmath| on its own will provide bold +math italic letters. + +A new |\em| command provides {\em emphasis\/} for important words. +The |\em| command will automatically switch the face of the emphasized +words to make them stand out. So, +\beginlines +|\rm this is an {\em emphasized\/} word.| +|\it this is an {\em emphasized} word.| +\endlines +gives\par +\centerline{\rm this is an {\em emphasized\/} word.} +\centerline{\it this is an {\em emphasized\/} word.} +\Half +\noindent Notice the use of the italic correction command (|\/|) in the +above example. + +The following are fully loaded in text, script and scriptscript sizes: +|\rm|, |\bf|, math italic, math symbol, bold math italic and bold symbol. +The faces |\it|, |\sl|, |\tt|, |\sc| and |\sf| are loaded at text size only. +See |fonttest.tex| for a better idea of how these work. + + +\subsection{Typesetting mathematics} +\subsubsection{Displayed mathematics} + +Equations should be keyed using normal plain \TeX\ macros. +Display mathematics are automatically set flush left by the macros. +The standard plain \TeX\ math commands |\eqalign|, |\eqalignno| will +work as before. The |\leqalignno| command is switched automatically +to |\eqalignno| to prevent the equation number from crashing into the +equation. If you wish to use |\displaylines|, this has to be handled +in a slightly different way. For example, +$$ +\displaylines{% + \hbox to \hsize{}\cr + [\nu_1]-[\nu_2]=-2.5\log [f(\nu_1)/f(\nu_2)],\hfill\stepeq\cr + \alpha=-(1+Q)\beta-3,\hfill\stepeq\cr + q=2+\gamma -Q.\hfill\stepeq\cr} +$$ +was produced with: +\beginlines +|$$| +|\displaylines{%| +| \hbox to \hsize{}\cr| +| [\nu_1]-[\nu_2]=-2.5\log [f(\nu_1)/f(\nu_2)],| +| \hfill\stepeq\cr| +| \alpha=-(1+Q)\beta-3,\hfill\stepeq\cr| +| q=2+\gamma -Q.\hfill\stepeq\cr}| +|$$| +\endlines +Notice the |\hbox to \hsize{}| to ensure that the equation is set to the +full width. The |\hfill|'s ensure that the equations are set flush left +and the equation numbers are set flush right. + +If the equations in |\displaylines| are unnumbered, you still need the +|\hfill|'s to ensure the equations are set flush left. + + +\subsubsection{Automatic equation numbering} + +Displayed equations can be numbered automatically by the use of |\stepeq|. +For example, +\beginlines +|$$| +| \alpha=-(1+Q)\beta-3,\eqno\stepeq| +|$$| +\endlines +which produces: +$$ +\alpha=-(1+Q)\beta-3,\eqno\stepeq +$$ +The |\stepeq| macro can be used in any of the places where a equation +number is normally expected. Sub-equation numbering is also provided, +allowing equation numbers in the form (2a) to be produced. For example, +$$ +\eqalignno{% + \alpha & =-(1+Q)\beta-3, & \startsubeq\cr + q & =2+\gamma -Q. & \stepsubeq\cr + [\nu_1]-[\nu_2] & =-2.5\log [f(\nu_1)/f(\nu_2)] & \stepsubeq\cr} +$$ +was produced by: +\ifCUPmtplainloaded \else \eject\fi %% +\beginlines +|$$| +|\eqalignno{%| +| \alpha & =-(1+Q)\beta-3, & \startsubeq\cr| +| q & =2+\gamma -Q. & \stepsubeq\cr| +| [\nu_1]-[\nu_2] & =-2.5\log [f(\nu_1)/f(\nu_2)]| +| & \stepsubeq\cr}| +|$$| +\endlines +The sub-equation number is reset each time a |\stepeq| is used. Equation +numbering is automatically reset to `(A1)' when a |\appendix| is used. + + +\subsubsection{Bold math italic} + +To obtain bold math italic, you should use |\bmath|. +So to obtain: +$$ + d(\bmath{s_{t_u}}) = \langle [RM(\bmath{X_y} + + \bmath{s_t}) - RM(\bmath{x_y})]^2 \rangle +$$ +you would key: +\beginlines +|$$| +| d(\bmath{s_{t_u}}) = \langle [RM(\bmath{X_y}| +| + \bmath{s_t}) - RM(\bmath{x_y})]^2 \rangle| +|$$| +\endlines +This facility is available in all typesizes. + + +\subsubsection{Bold Greek and other bold symbols} + +Bold lowercase Greek characters can be obtained by prefixing +the normal (unbold) symbol name with a `b', e.g.\ |\bgamma| gives $\bgamma$. +This rule does not apply to bold |\eta|, as this would lead to a name +clash with |\beta|. Instead use |\boldeta| for bold eta. Note that there +is no |\omicron| (so there is no |\bomicron|), just use `o' in math mode +for omicron and `|\bmath{o}|' for bold omicron. + +Bold versions of most of the other symbols in appendix~F in the \TeX book +can be obtained in the same way. + +For bold uppercase Greek, prefix the unbold character name with |\bf|, +e.g.\ |\bf\Gamma| gives $\bf\Gamma$. +Upper and lowercase Greek characters are available in all typesizes. + +You can then use these definitions in math mode, as you would normal Greek +characters: +% +\beginlines +|$$| +| \balpha_{\bmu} = {\bf\Theta} \alpha.| +|$$| +\endlines +% +will produce +% +$$ + \balpha_{\bmu} = {\bf\Theta} \alpha. +$$ +To save \TeX's valuable memory the symbol names for the bold math +characters are not loaded automatically. To load them simply type +\beginlines +| \loadboldmathnames| +\endlines +in the document. Alternatively, if you only need one or two of them, +simply copy the appropriate definitions from |mn.tex| +to your document. For a complete list of the bold math symbols +supplied, see the file |mn.tex|. + + +\subsubsection{Upright Greek characters} + +You can obtain upright Greek characters if you have access to the +American Maths Society Euler fonts (version 2.0), but you may not +have these. In this case, you will have to use the normal math italic +symbols and the typesetter will substitute the corresponding upright +characters. You will make this easier if you can use the macros |\upi|, +|\umu| and |\upartial| etc.\ in your text to indicate the need for upright +characters, together with the following definitions in the preamble +(before |\begintopmatter|): + +\subsubsection*{Authors with AMS fonts} + +\beginlines +|\ifCUPmtplainloaded \else| +| \NewSymbolFont{upmath} {eurm10}| +| \NewMathSymbol{\upi} {0}{upmath}{19}| +| \NewMathSymbol{\umu} {0}{upmath}{16}| +| \NewMathSymbol{\upartial}{0}{upmath}{40}| +|\fi| +\endlines + +\subsubsection*{Authors without AMS fonts} + +\beginlines +|\ifCUPmtplainloaded \else| +| \def\umu{\mu}| +| \def\upi{\pi}| +| \def\upartial{\partial}| +|\fi| +\endlines +Wether you have AMS fonts or not, the |\if..| and |\fi| are required in the +above examples to ensure that when your article is typeset in Monotype +Times, the correct definitions for these symbols are used. + +The sample pages, guide and fonttest can be made to use AMS fonts if you +have them. To use them, just uncomment the following line in the preamble +of |mnguide.tex|, |mnsample.tex| and |fonttest.tex|: +% +\beginlines +|%\AMStwofontstrue| +\endlines +% +If you do this, the following upright symbols are used in the +sample pages, guide and fonttest: |\upi|, |\umu| and |\upartial|. + + +\subsubsection{Special symbols} + +The macros for the special symbols in Tables~2 and~3 have been taken from +the Springer Verlag `Astronomy and Astrophysics' design, with their +permission. They are directly compatible and use the same macro names. +These symbols will work in all text sizes, but are only guaranteed to work +in text and displaystyles. Some of the symbols will not get any smaller +when they are used in sub- or superscripts, and will therefore be displayed +at the wrong size. Don't worry about this as the typesetter will be able to +sort it out. +% +\begintable*{2} +\caption{{\bf Table 2.} Special symbols which can only be used in +math mode.} +\advance\baselineskip by 2pt +\halign{#\hfil\quad&#\hfil\quad&#\hfil\qquad\qquad + &#\hfil\quad&#\hfil\quad&#\hfil\cr +Input & Explanation & Output & Input & Explanation & Output\cr +\noalign{\vskip 3pt\hrule\vskip 3pt} +|\la| & less or approx & $\la$ & + |\ga| & greater or approx & $\ga$\cr +|\getsto| & gets over to & $\getsto$ & + |\cor| & corresponds to & $\cor$\cr +|\lid| & less or equal & $\lid$ & + |\gid| & greater or equal & $\gid$\cr +|\sol| & similar over less & $\sol$ & + |\sog| & similar over greater & $\sog$\cr +|\lse| & less over simeq & $\lse$ & + |\gse| & greater over simeq & $\gse$\cr +|\grole| & greater over less & $\grole$ & + |\leogr| & less over greater & $\leogr$\cr +|\loa| & less over approx & $\loa$ & + |\goa| & greater over approx & $\goa$\cr +|\bbbr| & Blackboard bold R & $\bbbr$ & + |\bbbm| & Blackboard bold M & $\bbbm$ \cr +|\bbbn| & Blackboard bold N & $\bbbn$ & + |\bbbf| & Blackboard bold F & $\bbbf$ \cr +|\bbbh| & Blackboard bold H & $\bbbh$ & + |\bbbk| & Blackboard bold K & $\bbbk$ \cr +|\bbbp| & Blackboard bold P & $\bbbp$ & + |\bbbone| & Blackboard bold 1 & $\bbbone$ \cr +|\bbbc| & Blackboard bold C & $\bbbc$ & + |\bbbq| & Blackboard bold Q & $\bbbq$ \cr +|\bbbt| & Blackboard bold T & $\bbbt$ & + |\bbbs| & Blackboard bold S & $\bbbs$ \cr +|\bbbz| & Blackboard bold Z & $\bbbz$ \cr +% +\noalign{\vskip 3pt\hrule} +} +\endtable + +\begintable*{3} +\caption{{\bf Table 3.} Special symbols which don't have to be +used in math mode.} +\advance\baselineskip by 2pt +\halign{#\hfil\quad&#\hfil\quad&#\hfil\qquad\qquad + &#\hfil\quad&#\hfil\quad&#\hfil\cr +Input & Explanation & Output & Input & Explanation & Output\cr +\noalign{\vskip 3pt\hrule\vskip 3pt} +|\sun| & sun symbol & $\sun$ & + |\degr| & degree & $\degr$\cr +|\diameter| & diameter & \diameter & + |\sq| & square & $\sq$\cr +|\fd| & fraction of day & \fd & + |\fh| & fraction of hour & \fh\cr +|\fm| & fraction of minute & \fm & + |\fs| & fraction of second & \fs\cr +|\fdg| & fraction of degree & \fdg & + |\fp| & fraction of period & \fp\cr +|\farcs| & fraction of arcsecond & \farcs & + |\farcm| & fraction of arcmin & \farcm\cr +|\arcsec| & arcsecond & \arcsec & + |\arcmin| & arcminute & \arcmin\cr +\noalign{\vskip 3pt\hrule} +} +\endtable + +\ifCUPmtplainloaded +\subsubsection{Extra features in the Monotype Times version} + +This section of the guide will only be included if the guide is \TeX ed +with the Times version of the MN macros (mtmn.tex). The following features +are only available in the Times version: +\beginlist +\item (i) All of the type sizes available are fully loaded. +\item (ii) Most of the symbols in Table~2 will be substituted + with symbols from the |mtxm| font. Only |\sq| is substituted in Table~3. +\item (iii) All of the symbols in the |mtxm| and |mtym| fonts can be used, + at any size (using the normal AMS names). + If the author has used |mssymb.tex| then this can be removed, as most + of this file is now included in MN. If the author has used the new AMS + symbol fonts |msam| and |msbm| -- check the log file for missing + characters (once you've removed |msam| and |msbm|). + You have to do this because |msam| and |msbm| contain a few extra + characters NOT in |mtxm| and |mtym|. If you find missing characters get + help! +\item (iv) Uppercase blackboard bold is available in all sizes. e.g. + \beginlines + |$\Bbb{A}\ldots\Bbb{Z}$|\qquad gives\qquad $\Bbb{A}\ldots\Bbb{Z}$ + \endlines + If the author has made-up their own uppercase blackboard bold characters + you can safely use |\Bbb| instead. +\item (v) If the author has used the simulated Blackboard bold symbols + these are automatically substituted for the real characters, except for + |\bbbone| which is redefined to work better with Times fonts. +\endlist +\fi + +\section{Example of section heading with + S{\sevenbf MALL} C{\sevenbf APS}, + \lowercase{lowercase}, \textbfit{italic}, and bold + Greek such as $\bmu^{\bkappa}$} + +The above heading was produced with: +\beginlines +|\section{Example of section heading with| +| S{\sevenbf MALL} C{\sevenbf APS},| +| \lowercase{lowercase}, \textbfit{italic},| +| and bold Greek such as $\bmu^{\bkappa}$}| +\endlines + +\appendix +\section{for authors} + +Table~A1 is a list of design macros which are unique to |mn.tex|. The list +displays each macro's name and description. +% +\begintable*{4} +\caption{{\bf Table A1.} Authors' notes.} +\vbox to 630pt{% +\halign{#\hfil&\quad #\hfil\cr +Macro name and syntax & Description\cr +\noalign{\vskip 3pt\hrule\vskip 3pt} +|\pageoffset {h-off}{v-off}| & Adjust positioning of text area on paper.\cr +|\Referee| & Enable double-spaced referee mode.\cr +|\onecolumn| & Enable one-column mode (default = + two-column).\cr +|\landscape| & Enable landscape mode (default = portrait).\cr + & The |\landscape| command automatically calls |\onecolumn|.\cr +|\loadboldmathnames| & Enable the use of bold symbols, e.g. |\bgamma|\cr +|\authorcomment| & Catchline for draft version/date.\cr +\noalign{\Half} +|\begintopmatter| & Start the two-spanning topmatter.\cr +|\title {<text>}| & Article title.\cr +|\author {<text>}| & Author(s).\cr +|\affiliation {<text>}| & Author affiliation(s).\cr +|\shortauthor {<text>}| & Set the even-page running head.\cr +|\shorttitle {<text>}| & Set the odd-page running head.\cr +|\abstract {<text>}| & Abstract.\cr +|\keywords {<text>}| & Key words.\cr +|\maketitle| & End the two-spanning topmatter.\cr +\noalign{\Half} +|\section {<text>}| & Heading level A.\cr +|\section* {<text>}| & Unnumbered A-heading.\cr +|\subsection {<text>}| & Heading level B.\cr +|\subsubsection {<text>}| & Heading level C.\cr +|\paragraph {<text>}| & Heading level D.\cr +|\appendix| & Start the articles appendix section. + The |\section| command starts\cr + & a new appendix.\cr +\noalign{\Half} +|\stepeq|, |\startsubeq|, |\stepsubeq| & Automatic equation numbering.\cr +\noalign{\Half} +|\beginlist| & Numbered list:\cr +| \item (i) <text>| & Omit the number and round braces from + each |\item| for an unnumbered list.\cr +| \item (ii) <text>|\cr +\noalign{\vskip-.25\baselineskip} +| |$\ldots$\cr +\noalign{\vskip-.2\baselineskip} +|\endlist|\cr +\noalign{\Half} +|\beginrefs| & Bibliography.\cr +| \bibitem <text>|\cr +\noalign{\vskip-.25\baselineskip} +| |$\ldots$\cr +\noalign{\vskip-.2\baselineskip} +|\endrefs|\cr +\noalign{\Half} +|\beginfigure{n}| & Figures:\cr +| <figure space>| & Use the |\beginfigure*| form for a + double-spanning figure\cr +| \caption{{\bf Figure n.} caption}| & in two-column mode.\cr +|\endfigure|\cr +\noalign{\Half} +|\begintable{n}| & Tables:\cr +| \caption{{\bf Table n.} caption}| + & Use the |\begintable*| form for a double-spanning table\cr +| <alignment>| & in two-column mode.\cr +| \tabletext{<text>}|\cr +|\endtable|\cr +\noalign{\Half} +|\caption{{\bf Figure n} -- {\it continued}}| & Continued captions.\cr +|\caption{{\bf Table n} -- {\it continued}}|\cr +\noalign{\Half} +|\beginplatepage| & Plate pages.\cr +| \plate{Opposite p.\ n, MNRAS, {\bf n}}|\cr +| <figure space>|\cr +| \caption{{\bf Figure n.} caption}|\cr +|\endplatepage|\cr +\noalign{\Half} +|\Two, \OneHalf, \One, \Half| & Extra vertical space: These macros insert + white space, in multiples\cr + & of the linefeed, between paragraphs. Use during page make-up in \cr + & preference to plain \TeX's |\smallskip|, |\medskip| and |\bigskip|.\cr +\noalign{\Half} +|\bmath{math text}|, |\em| & Bold math and emphasized text.\cr +|\textbfit{text}|, |\mathbfit{text}| & Bold text italic (defined in + the preamble of |mnsample.tex|).\cr +|\textbfss{text}|, |\mathbfss{text}|& Bold text sans serif (defined in + the preamble of |mnsample.tex|).\cr +|\umu|, |\upi|, |\upartial| & Upright math characters. These will only + appear upright if you have\cr + & AMS v2.0 fonts. See ``upright greek + characters" for further information.\cr +\noalign{\vskip 3pt\hrule\vskip 3pt} +}} +\endtable + + +\section{for editors} + +The additional features shown in Table~B1 may be used for production +purposes only. +% +\begintable*{5} +\caption{{\bf Table B1.} Editors' notes.} +\halign{#\hfil&\quad #\hfil\cr +Macro name and syntax & Description\cr +\noalign{\vskip 3pt\hrule\vskip 3pt} +|\pageno=000| & to set pagination; default = 1.\cr +|\pagerange{000--000}| & note the use of the en-rule\cr +|\letters| & for short communications (adds L to folios)\cr +|\pagerange{L00--L00}| & for short communications\cr +|\microfiche{MN000/0}| & for articles accompanied by microfiche\cr +|\pubyear{0000}| & catchline date\cr +|\volume{000}| & catchline volume\cr +|\acceptedline{text}| & acceptance date\cr +|\nofloat| & Position a figure or table at the current position + (one-column only).\cr + & The |\nofloat| macro should be positioned directly after the\cr + & |\beginfigure|/|table|, and will cause the macros to use |\midinsert|\cr + & (remember that |\midinsert| will turn into a |\topinsert| if there\cr + & is not enough space).\cr +\noalign{\vskip 3pt\hrule\vskip 3pt} +} +\endtable + + +\section{Monthly Notices journal style} + +Authors submitting \TeX\ or \LaTeX\ papers to Monthly Notices +may wish to note the following points regarding journal style. +Adherence to correct style from the start will obviously save time +and effort later on, in terms of fewer requested subeditorial +corrections. The notes given here relate to common style errors found +in Monthly Notices manuscripts, and are {\it not\/} intended to be +exhaustive. Please see the editorials in issues 257/2 and 260/1, as +well as any recent issue of the journal, for more details. As far +as possible, the subeditor will indicate which of your changes +would be best done globally, thus saving you time. + +\subsection{Punctuation} + +When deciding where to add commas, it may be helpful to read + through the sentence and note where the natural `pauses' occur. +The needs of readers for whom English is not a first language +should be borne in mind when punctuating long sentences. +\ifCUPmtplainloaded \else \vadjust{\eject}\fi %% +For example, consider the following sentence as it +appeared in Monthly Notices: +`When we do not limit ourselves by constraints arising +from the choice of an initial fluctuation spectrum, structures in +an open universe, including the peculiar velocity structure, can +be reproduced in a flat Lema\^{\i}tre universe for a large part of +their evolution.' Now consider the same sentence without commas: +`When we do not limit ourselves by constraints arising +from the choice of an initial fluctuation spectrum structures in +an open universe including the peculiar velocity structure can be +reproduced in a flat Lema\^{\i}tre universe for a large part of their +evolution.' + + +\subsection{Spelling} + +Please use British spelling -- e.g.\ centre not center, labelled +not labeled. The following style regarding -ise and -ize spellings is +followed. -ise: devise, surprise, comprise, revise, +exercise, analyse. -ize: recognize, criticize, minimize, emphasize, organize. + + +\subsection{Titles and section/subsection headings} + +With the exception of section headings (e.g.\ +{\bf INTRO\-DUC\-TION}$\ldots$), +capital letters should be used only where they occur in a normal +sentence -- e.g.\ +`\textbfit{ROSAT\/} {\bf observations of the unusual star}$\ldots$', not +`\textbfit{ROSAT\/} {\bf Observations of the Unusual Star}$\ldots$'. + +\subsection{Key words} + +The list of Monthly Notices key words is published with the 4th +issue of each volume. No other key words should be used. Please +use the correct layout for key words: +\smallskip + +\noindent {\bf Key words:} galaxies: active -- galaxies: Seyfert -- +radio continuum: galaxies. + +\subsection{Hyphens and N-rules} + +\beginlist +\item (i) Hyphens (one dash in \TeX/\LaTeX). Monthly Notices uses hyphens +for compound adjectives (e.g.\ low-density gas, least-squares fit, +two-component model). This also applies to simple units (e.g.\ +1.5-m telescope, 284.5-nm line), but not to complex units or +ranges, which could become cumbersome (e.g.\ 15 km s$^{-1}$ feature, +100--200 $\umu$m observations). + +\item (ii) N-rules (two dashes in \TeX/\LaTeX). These are used (a) to +separate key words, (b) as parentheses (e.g.\ `the results -- +assuming no temperature gradient -- are indicative of$\ldots$), (c) to +denote a range (e.g.\ 1.6--2.2 $\umu$m), and (d) to denote the joining +of two words (e.g.\ Kolmogorov--Smirnov test, Herbig--Haro +object). + +\item (iii) The M-rule (three dashes in \TeX/\LaTeX) is not used in +Monthly Notices. +\endlist + + +\subsection{References} + +It is important to use the correct reference style, details of +which can be found in the editorials cited above, and which is +demonstrated in any recent issue of the journal. The main points +are summarized below. +% +\beginlist +\item (i) In text -- for three-author papers, give all three authors +at first mention, and `et al.' thereafter. + +\item (ii) In references list -- no bold or italic, no commas after +author surnames, and no ampersand between final two author names. +Use simplified abbreviations for frequently used journals (e.g.\ +MNRAS, ApJ, A\&A, PASP -- see full list in editorial in issue +260/1). List all authors if eight or less, otherwise `et al.' For +example, +\endlist + +\beginrefs +\bibitem Biggs J.D., Lyne A.G., 1992, MNRAS, 254, 257 + +\bibitem Brown A.B., Jones C.D., 1989, in Robinson E.F., +Smith G.H., eds, Proc. IAU Symp. 345, Black Dwarfs. Kluwer, Dordrecht, +p.~210 + +\bibitem Felsteiner J., Opher R., 1991, in Treves A., ed., +Iron Line Diagnostics in X-ray Sources. Springer-Verlag, Berlin, p.~209 + +\bibitem Gunn J.E., Knapp G., 1993, in Soifer B.T., ed., ASP +Conf.\ Ser.\ Vol.~43, Sky Surveys. Astron.\ Soc.\ Pac., San Francisco, +p.~267 + +\bibitem Peebles P.J.E., 1980, The Large-Scale Structure of the Universe. Princeton Univ. Press, Princeton, NJ + +\bibitem Pounds K.A. et al., 1993, MNRAS, 260, 77 + +\bibitem Williams B.G., 1992, PhD thesis, Univ.\ Edinburgh +\endrefs + + +\subsection{Maths} + +Scalar variables are italic; vectors are bold italic; matrices +are `bold Univers' font (like bold sans serif). Differential d, +complex i, exponential e, sin, cos, tan, log, etc., are roman. +Sub/superscripts that are physical variables are italic, while +those that are just labels are roman (e.g.\ $C_p$, but $T_{{\rm eff}}$). +Equations should be punctuated as part of the sentence. + + +\subsection{Miscellaneous} + +e.g., i.e., cf., etc., are roman. +Single quotes ` ' not double quotes `` ". +Take care to use correct units -- see recent \hbox{issues} for details. +Use superscript $-1$, not solidus /, for units -- e.g.\ km~s$^{-1}$ not +km/s. The unit of arcseconds is arcsec when used to denote angular +size or separation (e.g.\ `beamsize 12~arcsec', `30~arcsec +west of the star'); use \arcsec\ for positions (e.g.\ +Dec.~$-30^\circ$~29\arcmin~23\arcsec) (similarly for arcminutes). +The unit of magnitudes is mag, +not superscript m. Percentages should be written `per cent', not +\%. Use the degree symbol $^\circ$ (|$^\circ$|) except to denote, e.g., areas, where +`deg$^2$' may be more appropriate (e.g.\ `a survey area of 3~deg$^2$'). +Degree symbols should be positioned above the decimal point if +there is one -- i.e.\ 23\fdg 4 not 23.4$^\circ$ (similarly for +\ifCUPmtplainloaded \vadjust{\eject}\else\fi %% +superscript +h, m, s, and \arcmin, \arcsec\ symbols in coordinates). See guide for coding. +Ionized species should be denoted by small caps, with a thin +space -- e.g.\ \hbox{He\,{\sc ii}}, \hbox{C\,{\sc iv}}, +\hbox{[Fe\,{\sc ii}]} 465.8 nm, \hbox{N\,{\sc iii}} 463.4~nm. If +lack of the correct font at your site prevents this from coming +out on your printout, it would be helpful if you were to indicate +as such on your manuscript so that the subeditor knows that there +is no need for correction. +Computer software (e.g.\ {\sc figaro}) should be in small capitals. +Satellite names should be italic (e.g.\ {\it Ginga, IRAS\/}). +The correct bracket order is $\{[( )]\}$. + + +\section{Trouble-shooting} + +Authors may from time to time encounter problems with the preparation +of their papers in \TeX/\LaTeX. The appropriate action to +take will depend on the nature of the problem -- the following is +intended to act as a guide. +% +\beginlist +\item (i) If a problem is with \TeX/\LaTeX\ itself, rather than with the +actual macros, \ifCUPmtplainloaded \else \vadjust{\eject}\fi %% +please refer to the appropriate handbooks for +initial advice.\footnote{\dag}{\TeX : Knuth D., 1986, The \TeX book. +Addison Wesley; \LaTeX: Lamport L., 1985, \LaTeX\ User's Guide and +Reference Manual. Addison Wesley.} If the +solution cannot be found, and you suspect that the problem lies +with the macros, then please contact the RAS Journal Production +team at Blackwell Science (BS), 23 Ainslie +Place, Edinburgh EH3 6AJ, UK (Tel: 031 226 7232; Fax: 031 226 3803; +omit the first zero if calling from outside the UK). +The BS office will shortly be +accessible by email -- please see the Instructions for Authors on +the inside back cover of Monthly Notices for details. Please +provide precise details of the problem (what you were trying to +do -- ideally, include examples of source code as well -- and +what exactly happened; what error message was received). + +\item (ii) Problems with page make-up, particularly in the two-column +mode (e.g.\ large spaces between paragraphs, or under headings or +figures; uneven columns; figures/tables appearing out of order). +Please do {\it not\/} attempt to remedy these yourself using `hard' page +make-up commands -- the typesetters at Cambridge University Press +(CUP) will sort out problems when typesetting. (You may, if you +wish, draw attention to particular problems when submitting the +final version of your paper.) + +\item (iii) If a required font is not available at your site, allow \TeX\ +to substitute the font and report the problem on your disk +documentation form. +\endlist + + +\subsection{Fixes for coding problems} + +The new versions of the style files and macros have been designed +to minimize the need for user-defined macros to create special +symbols. Authors are urged, wherever possible, to use the following +coding rather than create their own. This will minimize the +danger of author-defined macros being accidentally `over-ridden' +when the paper is typeset in Monotype Times (see Subsection~3.13, %% +`Typesetting mathematics'). +% +\beginlist +\item (i) Fonts in sections and paper titles. The following are examples +of styles that sometimes prove difficult to code. +\endlist + + +\subsection*{\it P\lowercase{aper titles}} + +\boxit{\multi\seventeenpoint\bf + A survey of \textbfit{IRAS\/} galaxies\\ + at $\bmath{\delta > {\bf 50}^\circ}$\endmulti} +% +is produced by: +% +\beginlines +|\title{A survey of \textbfit{IRAS\/} galaxies| +| \hfil\break at $\bmath{\delta>{\bf 50}^\circ}$}| +\smallskip +|\shorttitle{A survey of IRAS galaxies at $\delta| +| > 50^\circ$}| +\endlines +\bigskip + +\boxit{\multi\seventeenpoint\bf\noindent + Observations of compact\\ + H\,{\elevenbf II} regions\endmulti} +% +is produced by: +% +\beginlines +|\title{Observations of compact| +| H\,{\elevenbf II} regions}| +\smallskip +|\shorttitle{Observations of compact| +| H\,{\eightit II} regions}| +\endlines + + +\subsection*{\it S\lowercase{ection headings}} + +\boxit{\bf 1\quad THE \textbfit{IRAS\/} DATA FOR + $\bmath{\delta > {\bf 50}^\circ}$} +% +is produced by: +% +\beginlines +|\section{The \textbfit{IRAS\/} data for| +| $\bmath{\delta>{\bf 50}^\circ}$}| +\endlines +\bigskip + +\boxit{\bf 2\quad H\,{\sevenbf II} GALAXIES AT + $\bmath{\lowercase{z} > {\bf 1.6}}$} +% +is produced by: +% +\beginlines +|\section{H\,{\sevenbf II} galaxies at| +| $\bmath{\lowercase{z}>{\bf 1.6}}$}| +\endlines + + +\subsection*{\it S\lowercase{ubsection headings}} + +\boxit{\multi\bf 2.1\quad The \textbfit{IRAS\/} data for + $\bmath{\delta > {\bf 50}^\circ}$: galaxies\\ + at $\bmath{z > {\bf 1.5}}$\endmulti} +% +is produced by: +% +\beginlines +|\subsection{The \textbfit{IRAS\/} data for| +| $\bmath{\delta > {\bf 50}^\circ}$: galaxies| +| \hfil\break at $\bmath{z > {\bf 1.5}}$}| +\endlines +\bigskip + +\boxit{\bf 2.2\quad Observations of compact H\,{\sevenbf II} regions} +% +is produced by: +% +\beginlines +|\subsection{Observations of compact| +| H\,{\sevenbf II} regions}| +\endlines +\bigskip + +\boxit{\it 2.2.1\quad A survey of radio galaxies + for $\delta > {\it 50}^\circ$} +% +is produced by: +% +\beginlines +|\subsubsection{A survey of radio galaxies| +| for $\delta > {\it 50}^\circ$}| +\endlines +\bigskip + +\boxit{\it 2.2.2\quad Determination of T$_{eff}$ in compact + H\,{\sevenit II} regions} +% +is produced by: +% +\beginlines +|\subsubsection{Determination of T$_{eff}$ in| +| compact H\,{\sevenit II} regions}| +\endlines + +\beginlist +\item (ii) Small capitals and other unusual fonts in table and figure +captions: +\par\smallskip +\boxit{\eightpoint {\bf Figure 1.} Profiles of the H$\alpha$ and + N\,{\sc iii} lines observed.} +% +is produced by: +% +\beginlines +|\caption{Profiles of the H$\alpha$ and| +| N\,{\sc iii} lines observed.}| +\endlines + +\item (iii) Multiple author lists (to get the correct vertical spacing +and wraparound on the title page of a multiple-author paper). +\par\smallskip + +\boxit{\multi + \seventeenpoint\bf\noindent + The variation in the\\ + strength of low-$\bmath{l}$ solar\\ + $\bmath{p}$-modes: 1981--2 + \medskip + \fourteenpoint\noindent + Y. Elsworth, R. Howe, G.R. Isaac,\\ + C.P. McLeod, B.A. Miller, R. New,\\ + C.C. Speake and S.J. Wheeler\endmulti +} +% +is produced by: +% +\beginlines +|\title{The variation in the\hfil\break| +| strength of low-$\bmath{l}$ solar\hfil\break| +| $\bmath{p}$-modes: 1981--2}| +\smallskip +|\shorttitle{The variation in the strength of| +| low-$l$ solar $p$-modes: 1981--2}| +\smallskip +|\author{Y. Elsworth, R. Howe, G.R. Isaac,| +| \hfil\break C.P. McLeod, B.A. Miller, R. New,| +| \hfil\break C.C. Speake and S.J. Wheeler}| +\smallskip +|\shortauthor{Y. Elsworth et al.}| +\endlines + +\item (iv) Ionized species (as used in the examples above). The correct +style calls for the use of small capitals and a thin space after +the symbol for the element: e.g.\ for \hbox{H\,{\sc ii}}, use the code +|\hbox{H\,{\sc ii}}|. The use of the |\hbox| will stop the +H and the {\sc ii} being separated. + +\item (v) Lower case greek pi ($\pi$), mu ($\mu$) and partial ($\partial$). +In certain circumstances, the Monthly Notices style calls for these to be +roman [when pi is used to denote the constant 3.1415$\ldots$, mu is +used to denote `micro' in a unit (e.g.\ $\umu$m, $\umu$Jy), and partial +is a differential symbol]. See Subsubsection~3.13.5 for instructions. + +\item (vi) Decimal degrees, arcmin, arcsec, hours, minutes and seconds. +The symbol needs to be placed vertically above the decimal point. +For example, the sentence +% +\beginquote +The observations were made along position angle +120\fdg 5, starting from the central coordinates +${\rm RA}(1950)=19^{\rm h}~22^{\rm m}~18\fs 2$, +${\rm Dec.}~(1950)=45^\circ~18'~36\farcs 4$ +\endquote +% +uses the following coding: +% +\beginlines +|The observations were made along position angle| +|120\fdg 5, starting from the central coordinates| +|${\rm RA}(1950)=19^{\rm h}~22^{\rm m}~18\fs 2$,| +|${\rm Dec.}~(1950)=45^\circ~18'~36\farcs 4$| +\endlines + +\item (vii) The correct coding for the prime symbol \arcmin\ is +|\arcmin|, and that for \arcsec\ is |\arcsec|; see the two +tables on special symbols. + +\item (viii) N-rules, hyphens and minus signs (see style guide for +correct usage). To create the correct symbols in the sentence +% +\beginquote +The high-resolution observations were made along a +line at an angle of $-15^\circ$ (east from north) +from the axis of the jet, which runs north--south +\endquote +% +you would use the following code: +% +\beginlines +|The high-resolution observations were made along| +|a line at an angle of $-15^\circ$ (east from| +|north) from the axis of the jet, which runs| +|north--south| +\endlines + +\item (ix) Vectors and matrices should be bold italic and bold sans +serif respectively. To create the correct fonts for the vector $\bmath{x}$ +and the matrix \textbfss{P}, you should use |$\bmath{x}$| and +|\textbfss{P}| respectively; |\mathbfss| is for use in +math mode. Bold face text italic can be obtained by using +|\textbfit{..}| and |\mathbfit{..}| for math mode. +\ifCUPmtplainloaded \else \vfil\eject\fi %% +\item (x) Bold italic superscripts and subscripts. To get these +to come out in the correct font and the right size, you need to use +|\bmath|. You can create the output $\bmath{k_x}$ by typing |$\bmath{k_x}$|. +Try to avoid using \TeX\ commands to determine script sizes that are +already defined in the macros. For example, macros such as +% +\beginlines +|\def\th{^\hbox{\sevenrm th}}| +\endlines +% +are generating extra work; +% +\beginlines +|\def\th{^{\rm th}}| +\endlines +% +will do, and will get the size of the superscript right whether in main +text, tables or captions (the use of |\sevenrm| over-rides the macros). +Also, the |\hbox| is not necessary, as \TeX\ won't split a +superscript/subscript from its variable at a line break. + +\item (xi) Calligraphic letters (uppercase only). +% +Normal uppercase calligraphic can be produced with |\cal| as +normal (in math mode). Bold calligraphic can be produced with |\bmath|, +e.g.\ |$\bmath{\cal A}$| gives $\bmath{\cal A}$. + +\item (xii) Automatic scaling of brackets. The codes |\left| and +|\right| should be used to scale brackets automatically to +fit the equation being set. For example, to get +$$ + v = x \left( {N+2}\over {N} \right) +$$ +use the code +% +\beginlines +|$$| +| v = x \left( {N+2}\over {N} \right)| +|$$| +\endlines + +\item (xiii) Roman font in equations. It is often necessary to make some +symbols roman in an equation (e.g.\ units, subscripts). For example, +to get the following output: +$$ + \sigma \simeq (r/13~h^{-1}~{\rm Mpc})^{-0.9}, + \qquad \omega = {{N-N_{\rm s}}\over {N_{\rm R}}}, +$$ +you should use: +% +\beginlines +|$$| +| \sigma\simeq (r/13~h^{-1}~{\rm Mpc})^{-0.9},| +| \qquad\omega={{N-N_{\rm s}}\over {N_{\rm R}}},| +|$$| +\endlines + +\item (xiv) Continuation figure and table captions. +See Subsection~3.6. %% +\endlist + + +\subsection{Springer-Verlag macro names} + +These have been incorporated from the Astronomy \& Astrophysics \LaTeX\ +style file, to aid in the creation of various commonly used +astronomical symbols. Please see Subsubsection~3.13.6 for details. %% + +\bye + +% end of mnguide.tex diff --git a/Master/texmf-dist/doc/plain/mnras/mnland.tex b/Master/texmf-dist/doc/plain/mnras/mnland.tex new file mode 100644 index 00000000000..968077488f8 --- /dev/null +++ b/Master/texmf-dist/doc/plain/mnras/mnland.tex @@ -0,0 +1,82 @@ +% MNLAND.TEX +% +% A landscape figure for the sample plain TeX Monthly Notices article. +% +% v1.1 --- released 25th August 1994 (M. Reed) +% v1.0 --- first released 17th February 1994 +% +% Copyright Cambridge University Press + +% The following line automatically loads the mn macros if you are not +% using a format file. +\ifx\mnmacrosloaded\undefined \input mn\fi + +% If your system has the AMS fonts version 2.0 installed, MN.tex can be +% made to use them by uncommenting the line: %\AMStwofontstrue +% +% By doing this, you will be able to obtain upright Greek characters. +% e.g. \umu, \upi etc. See the section on "Upright Greek characters" in +% this guide for further information. + +% !! AMS fonts are not used in this file. The following code is provided +% for your convenience !! +\newif\ifAMStwofonts +%\AMStwofontstrue + +\ifCUPmtplainloaded \else + \NewTextAlphabet{textbfit} {cmbxti10} {} + \NewTextAlphabet{textbfss} {cmssbx10} {} + \NewMathAlphabet{mathbfit} {cmbxti10} {} % for math mode + \NewMathAlphabet{mathbfss} {cmssbx10} {} % " " " + % + \ifAMStwofonts + % + \NewSymbolFont{upmath} {eurm10} + \NewSymbolFont{AMSa} {msam10} + \NewMathSymbol{\upi} {0}{upmath}{19} + \NewMathSymbol{\umu} {0}{upmath}{16} + \NewMathSymbol{\upartial}{0}{upmath}{40} + \NewMathSymbol{\leqslant}{3}{AMSa}{36} + \NewMathSymbol{\geqslant}{3}{AMSa}{3E} + \let\oldle=\le \let\oldleq=\leq + \let\oldge=\ge \let\oldgeq=\geq + \let\leq=\leqslant \let\le=\leqslant + \let\geq=\geqslant \let\ge=\geqslant + \else + \def\umu{\mu} + \def\upi{\pi} + \def\upartial{\partial} + \fi +\fi + + +%\special{landscape} % only use this if your driver supports it + +% Marginal adjustments using \pageoffset maybe required when printing +% proofs on a Laserprinter (this is usually not needed). +% Syntax: \pageoffset{ +/- hor. offset}{ +/- vert. offset} +% e.g. \pageoffset{-3pc}{-4pc} + +\pageoffset{0pc}{-1.5pc} + +\landscape +\authorcomment{Landscape material to be pasted into the article.} + +\begintopmatter % these must be here +\maketitle % + + +\beginfigure{1} +\caption{{\bf Figure 4.} Photometric comparisons in the overlap areas + between the fields. The differences between photometry of individual images + from different fields for the overlapping fields 52--51, 50--51, 50--28 and + 30--29 are shown for the $B_{\rm J}$ and $R$ wavebands. The axes are as + follows. Left-hand panels: $\Delta B$ ($-1$ to 1) against + $\langle B \rangle$ (13 to 21). Right-hand panels: $\Delta R$ ($-1$ to 1) + against $\langle R \rangle$ (12 to 20).} +\endfigure + + +\bye + +% end of mnland.tex diff --git a/Master/texmf-dist/doc/plain/mnras/mnsample.tex b/Master/texmf-dist/doc/plain/mnras/mnsample.tex new file mode 100644 index 00000000000..b19ea01c605 --- /dev/null +++ b/Master/texmf-dist/doc/plain/mnras/mnsample.tex @@ -0,0 +1,705 @@ +% MNSAMPLE.TEX +% +% A sample plain TeX single/two column Monthly Notices article. +% +% v1.5 --- released 25th August 1994 (M. Reed) +% v1.4 --- released 22nd February 1994 +% v1.3 --- released 8th December 1992 +% +% Copyright Cambridge University Press + +% The following line automatically loads the mn macros if you are not +% using a format file. +\ifx\mnmacrosloaded\undefined \input mn\fi + +% If your system has the AMS fonts version 2.0 installed, MN.tex can be +% made to use them by uncommenting the line: %\AMStwofontstrue +% +% By doing this, you will be able to obtain upright Greek characters. +% e.g. \umu, \upi etc. See the section on "Upright Greek characters" in +% this guide for further information. + +\newif\ifAMStwofonts +%\AMStwofontstrue + +\ifCUPmtplainloaded \else + \NewTextAlphabet{textbfit} {cmbxti10} {} + \NewTextAlphabet{textbfss} {cmssbx10} {} + \NewMathAlphabet{mathbfit} {cmbxti10} {} % for math mode + \NewMathAlphabet{mathbfss} {cmssbx10} {} % " " " + % + \ifAMStwofonts + % + \NewSymbolFont{upmath} {eurm10} + \NewSymbolFont{AMSa} {msam10} + \NewMathSymbol{\upi} {0}{upmath}{19} + \NewMathSymbol{\umu} {0}{upmath}{16} + \NewMathSymbol{\upartial}{0}{upmath}{40} + \NewMathSymbol{\leqslant}{3}{AMSa}{36} + \NewMathSymbol{\geqslant}{3}{AMSa}{3E} + \let\oldle=\le \let\oldleq=\leq + \let\oldge=\ge \let\oldgeq=\geq + \let\leq=\leqslant \let\le=\leqslant + \let\geq=\geqslant \let\ge=\geqslant + \else + \def\umu{\mu} + \def\upi{\pi} + \def\upartial{\partial} + \fi +\fi + + +% Marginal adjustments using \pageoffset maybe required when printing +% proofs on a Laserprinter (this is usually not needed). +% Syntax: \pageoffset{ +/- hor. offset}{ +/- vert. offset} +% e.g. \pageoffset{-3pc}{-4pc} + +\pageoffset{-2.5pc}{0pc} + +\loadboldmathnames + +% \Referee % uncomment this for referee mode (double spaced) + +% \pagerange, \pubyear and \volume are defined at the Journals office and +% not by an author. + +% \onecolumn % enable one column mode +% \letters % for `letters' articles +\pagerange{1--7} % `letters' articles should use \pagerange{Ln--Ln} +\pubyear{1989} +\volume{226} +% \microfiche{} % for articles with microfiche +% \authorcomment{} % author comment for footline + +\begintopmatter % start the two spanning material + +\title{Dust envelopes around RV Tauri stars} +\author{A. V. Raveendran} +\affiliation{Indian Institute of Astrophysics, Bangalore 560034, India} + +\shortauthor{A. V. Raveendran} +\shorttitle{Dust envelopes around RV Tauri stars} + +% \acceptedline is to be defined at the Journals office and not +% by an author. + +\acceptedline{Accepted 1988 December 15. Received 1988 December 14; + in original form 1988 October 11} + +\abstract {In the {\it IRAS\/} [12]--[25], [25]--[60] +colour--colour diagram, RV Tauri stars are found to populate +cooler temperature regions $(T<600\,{\rm K})$, distinctly +different from those occupied by the oxygen and carbon Miras. +The {\it IRAS\/} fluxes are consistent with the dust density in +the envelope varying as the inverse square of the radial +distance, implying that the grain formation processes in these +objects are most probably continuous and not sporadic. It is +found that the spectroscopic subgroups A and B are +well separated in the far-infrared two-colour diagram, with +group B objects having systematically cooler dust envelopes. We +interpret this as being due to a difference in the nature of +grains, including the chemical composition, in the two cases.} + +\keywords {circumstellar matter -- infrared: stars.} + +\maketitle % finish the two spanning material + + +\section{Introduction} + +It has been well established that RV Tauri variables +possess infrared emission far in excess of their expected +blackbody continuum, arising from their extended cool dust +envelopes (Gehrz \& Woolf 1970; Gehrz 1972; Gehrz \& Ney 1972). +Recently, Lloyd Evans (1985) and Goldsmith et~al.\ (1987) +have given detailed descriptions of the near-infrared +properties of RV Tauri stars. In this paper we present an +analysis of the {\it IRAS\/} data of RV Tauri stars with the help +of the far-infrared two-colour diagram and a grid computed +using a simple model of the dust envelope. Such two-colour plots +have already been employed extensively by several investigators +to study the circumstellar envelopes around oxygen-rich and +carbon-rich objects which are in the late stages of stellar +evolution (Hacking et~al.\ 1985; Zuckerman \& Dyck 1986; +van der Veen \& Habing 1988; Willems \& de Jong 1988). + +Table~1 summarizes the basic data on the 17 objects +detected at 60$\,\umu$m. Apart from the {\it IRAS\/} identification +and the flux densities at 12-, 25-, 60- and 100-$\umu$m wavebands, +it gives the spectroscopic groups of Preston et~al.\ (1963), +the light-curve classes of Kukarkin et~al.\ (1969) and the periods of +light variation. The list, which +contains about 20 per cent of all the known RV Tauri stars, +is essentially the same as that given by Jura (1986). The +spectroscopic subgroups are from either Preston et~al.\ (1963) or +Lloyd Evans (1985). +% +\begintable*{1} +\caption{{\bf Table 1.} Data on the RV Tauri stars detected by {\it IRAS}.} +\halign{% +\rm#\hfil&\qquad\rm#\hfil&\qquad\rm\hfil#&\qquad\rm\hfil +#&\qquad\rm\hfil#&\qquad\rm\hfil#&\qquad\rm#\hfil +&\qquad\rm\hfil#&\qquad\rm#\hfil&\qquad\hfil\rm#\cr +Name&&\multispan4\hskip23pt\hss Flux density (Jy)$^a$\hss \cr +Variable&{\it IRAS}&12$\;\umu$m&25$\;\umu$m +&60$\;\umu$m&100$\;\umu$m&Sp.&Period&Light-&$T_0({\rm K})$\cr +&&&&&&group&(d)\hfill&curve\cr +&&&&&&&&type\cr +\noalign{\vskip 10pt} +TW Cam&04166$+$5719&8.27&5.62&1.82&$<$1.73&A&85.6&a&555\cr +RV Tau&04440$+$2605&22.53&18.08&6.40&2.52&A&78.9&b&460\cr +DY Ori&06034$+$1354&12.44&14.93&4.12&$<$11.22&B&60.3&&295\cr +CT Ori&06072$+$0953&6.16&5.57&1.22&$<$1.54&B&135.6&&330\cr +SU Gem&06108$+$2734&7.90&5.69&2.16&$<$11.66&A&50.1&b&575\cr +UY CMa&06160$-$1701&3.51&2.48&0.57&$<$1.00&B&113.9&a&420\cr +U Mon&07284$-$0940&124.30&88.43&26.28&9.24&A&92.3&b&480\cr +AR Pup&08011$-$3627&131.33&94.32&25.81&11.65&B&75.0&b&450\cr +IW Car&09256$-$6324&101/06&96.24&34.19&13.07&B&67.5&b&395\cr +GK Car&11118$-$5726&2.87&2.48&0.78&$<$12.13&B&55.6&&405\cr +RU Cen&12067$-$4508&5.36&11.02&5.57&2.01&B&64.7&&255\cr +SX Cen&12185$-$4856&5.95&3.62&1.09&$<$1.50&B&32.9&b&590\cr +AI Sco&17530$-$3348&17.68&11.46&2.88&$<$45.62&A&71.0&b&480\cr +AC Her&18281$+$2149&41.47&65.33&21.12&7.79&B&75.5&a&260\cr +R Sct&18448$-$0545&20.88&9.30&8.10&$<$138.78&A&140.2&a\cr +R Sge&20117$+$1634&10.63&7.57&2.10&$<$1.66&A&70.6&b&455\cr +V Vul&20343$+$2625&12.39&5.72&1.29&$<$6.96&A&75.7&a&690\cr +} +\tabletext{\noindent $^a$Observed by {\it IRAS}.} +\endtable + + +\section{Description of the envelope model} + +If we assume that the dust grains in the envelope are +predominantly of the same kind and are in thermal equilibrium, +the luminosity at frequency $\nu$ in the infrared is given by +$$ + L(\nu)=\mskip-25mu\int\limits_{\rm envelope}\mskip-25mu + \rho(r)Q_{{\rm abs}} + (\nu)B[\nu,T_{\rm g}(r)]\exp [-\tau(\nu,r)]\> {\rm d}V, \eqno\stepeq +$$ +where +$Q_{{\rm abs}}(\nu)$ is the absorption efficiency at frequency $\nu$, +$\rho(r)$ is the dust grain density, +$T_{\rm g}(r)$ is the grain temperature, +$B[\nu,T_{\rm g}(r)]$ is the Planck function and +$\tau(\nu,r)$ is the optical depth at distance {\it r\/} from the +centre of the star. + +The temperature $T_{\rm g}(r)$ is determined by the condition of +energy balance: amount of energy radiated = amount of energy +absorbed. The amount of energy absorbed at any point is +proportional to the total available energy at that point, which +consists of: +\beginlist +\item (i) the attenuated and diluted stellar radiation; +\item (ii) scattered radiation, and +\item (iii) reradiation from other grains. +\endlist + +Detailed solutions of radiative transfer in circumstellar +dust shells by Rowan-Robinson \& Harris (1983a,b) indicate that +the effect of heating by other grains becomes significant only at +large optical depths at the absorbing frequencies $[\tau({\rm +UV})\gg 10]$, and at optical depths $\tau({\rm UV})<1$ the grains +have approximately the same temperature that they would have if +they were seeing the starlight unattenuated and no other +radiation. + +The Planck mean optical depths of circumstellar envelopes +around several RV Tauri stars, derived from the ratios of the +luminosities of the dust shell (at infrared wavelengths) and +the star, range from 0.07 to 0.63 (Goldsmith et~al.\ 1987). +There is much uncertainty in the nature of the optical +properties of dust grains in the envelope. The carbon-rich RV +Tauri stars are also reported to show the 10-$\umu$m silicate +emission feature typical of oxygen-rich objects (Gehrz \& Ney +1972; Olnon \& Raimond 1986). The pure terrestrial silicates or +lunar silicates are found to be completely unsuitable to account +for the infrared emission from circumstellar dust shells around +M-type stars (Rowan-Robinson \& Harris 1983a). We assume that +the absorption efficiency $Q_{{\rm abs}} (\nu)$ in the infrared +varies as $\nu^{\gamma}$. ${\gamma}=1$ appears to provide a +reasonable fit in a variety of sources (Harvey, Thronson \& +Gatley 1979; Jura 1986). Under these circumstances the +condition of energy balance implies that the dust temperature +$T_{\rm g}$ will vary as $r^{\beta}$. + +In view of the low value of the observed Planck mean optical +depth for the stellar radiation and the nature of the assumed +frequency dependence of the absorption efficiency, the +extinction of the infrared radiation by the dust envelope can +be neglected. If we consider the envelope to be spherically +symmetric, equation (1) reduces to +$$ + L(\nu)=\!\!\int_{r_{1}}^{r_{2}}\!\!4\upi r^2\rho(r)\> Q_{{\rm abs}} + (\nu)B[\nu,T_{\rm g}(r)]\> {\rm d}r, \eqno\stepeq +$$ +where $r_1$ and $r_2$ are the inner and outer radii of the +shell. For a dusty density distribution $\rho(r)\propto +r^{\alpha}$ and $r_2\gg r_1$, equation (2) reduces to +$$ + L(\nu)\propto \nu^{2+\gamma-Q} + \int_{X_0}^{\infty}{{x^Q}\over{{\rm e}^x-1}}{\rm d}x, \eqno\stepeq +$$ +where $Q=-(\alpha+\beta+3)/\beta$ and $X_0=(h\nu /kT_0)$. +$T_0$ represents the temperature at the inner boundary of the +dust shell where grains start condensing. In a steady radiation +pressure driven mass outflow in the optically thin case, values of +$\alpha$ lie near $-2$ (Gilman 1972). $\gamma$ and $\beta$ are +related by $\beta=-2/(\gamma+4)$. + +In the {\it IRAS\/} Point Source Catalog (PSC, Beichman et~al.\ 1985a), +the flux densities have been quoted at the effective +wavelengths 12, 25, 60 and 100$\,\umu$m, assuming a flat energy +spectrum $[\nu F(\nu)=1]$ for the observed sources. For each model +given by equation (3), using the relative system response, the +colour-correction factors (Beichman et~al.\ 1985b) in each +of the {\it IRAS\/} passbands were calculated and the fluxes +were converted into flux densities expected for a flat energy +distribution, as assumed in the {\it IRAS\/} PSC, so that the +computed colours can be directly compared with the colours +determined from the catalogue quantities. Such a procedure +is more appropriate than correcting the {\it IRAS\/} +colours for the energy distribution given by a particular model +and then comparing them with those computed by the model. + + +\subsection{Colour--colour diagram} + +The IR colour is defined as +$$ + [\nu_1]-[\nu_2]=-2.5\log [f(\nu_1)/f(\nu_2)], +$$ +where $\nu_1$ and $\nu_2$ are any two wavebands and +$f(\nu_1)$ and $f(\nu_2)$ are the corresponding flux densities +assuming a flat energy spectrum for the source. +% +\beginfigure{1} +\vskip 91mm +\caption{{\bf Figure 1.} Plot of [25]--[60] colours of +RV Tauri stars against their [12]--[25] colours after normalizing +as indicated in Beichman et~al.\ (1985b). Some of the objects +are identified by their variable-star names. Typical error bars +are shown in the bottom right-hand corner. The lines represent +the loci for constant inner shell temperature and the quantity +$Q$. Note the separation of group A and B stars at $T_0 \sim$ +460$\,$K. Positions occupied by a sample of carbon and oxygen +Miras are also shown. The $Q=1.0$ line differs from the +blackbody line by a maximum of $\sim 0.05$.} +\endfigure + +In Fig.~1, we have plotted the [25]--[60] colours of +RV Tauri stars against their corresponding [12]--[25] colours +derived from the {\it IRAS\/} data. Filled circles represent +stars of group A and open circles stars of group B. The two +sets of near-parallel lines represent the loci of constant +inner shell temperature $T_0$ and the quantity $Q$ defined +above. The models correspond to the case of absorption +efficiency $Q_{{\rm abs}}(\nu)$ varying as $\nu$ (with +$\gamma=1$ and hence $\beta=-0.4$). We have omitted R Sct in +Fig.~1 because it shows a large deviation from the average +relation shown by all the other objects. R Sct has a +comparatively large excess at 60$\,\umu$m, but the extent of a +possible contamination by the infrared cirrus (Low et~al.\ 1984) +is unknown. Goldsmith et~al.\ (1987) found no +evidence of the presence of a dust envelope at near-IR +wavelengths and the spectrum was consistent with a stellar +continuum. This explains why R Sct lies well below the mean +relation shown by stars of groups A and C between the +[3.6]--[11.3] colour excess and the photometrically determined +(Fe/H) (Dawson 1979). R Sct has the longest period of 140$\,$d +among the RV Tauri stars detected at far-infrared wavelengths +and does not have the 10-$\umu$m emission feature seen in other +objects (Gehrz 1972; Olnon \& Raimond 1986). R Sct is probably +the most irregular RV Tauri star known (McLaughlin 1932). + +The inner shell temperatures $(T_0)$ derived for the various +objects are also given in Table~1 and we find the majority of +them to have temperatures in the narrow range 400--600$\,$K. If +the dependences of $Q_{{\rm abs}}(\nu)$ on $\nu$ and $\rho(r)$ on +$r$ are similar in all the objects considered, then in the +colour--colour diagram they all should lie along a line +corresponding to different values of $T_0$ and in Fig.~1 we find +that this is essentially the case. In view of the quoted +uncertainties in the flux measurements, we cannot attach much +significance to the scatter in Fig.~1. +% +\beginfigure*{2} +\vskip 5.9cm +\caption{{\bf Figure 2.} Plot of the [60]--[100] colours +of RV Tauri stars against their [25]--[60] colours after normalizing +as indicated in Beichman et~al.\ (1985b). The solid lines +represent the loci for constant inner shell temperature and the +quantity $Q$. The dashed line shows the locus for a blackbody +distribution.} +\endfigure + +At 100$\,\umu$m the infrared sky is characterized by emission, +called infrared cirrus, from interstellar dust on all spatial +scales (Low et~al.\ 1984), thereby impairing the +measurements at far-infrared wavelengths. In Fig.~2, we have +plotted the [60]--[100] colours of the six RV Tauri stars +detected at 100$\,\umu$m against their [25]--[60] colours, along +with the grid showing the regions of different values for inner +shell temperature $T_0$ and the quantity $Q$, as in Fig.~1. The +results indicated by Fig.~2 are consistent with those derived +from Fig.~1. AR Pup shows a large excess at 100$\,\umu$m but, in +view of the large values for the cirrus flags given in the +catalogue, the intrinsic flux at 100$\,\umu$m is uncertain. + + +\subsection{Radial distribution of dust} + +From Fig.~1, it is evident that all RV Tauri stars lie +between the lines corresponding to $Q=1.5$ and $0.5$. With +$$ + \alpha=-(1+Q)\beta-3, +$$ +these values suggest limits of $r^{-2.0}$ and $r^{-2.4}$ +for the dust density variation, indicating a near-constant +mass-loss rate. Jura (1986) has suggested that the density in +the circumstellar envelope around RV Tauri stars varies as +$r^{-1}$, implying a mass-loss rate that was greater in the +past than it is currently. By fitting a power law to the +observed fluxes, such that $f(\nu)$ varies as $\nu^q$, values +of $q$ determined by him for the various objects given in +Table~1 lie in the range 0.6--1.2, with a mean $\bar q=0.98$. The +assumption of a power law corresponds to the case of $X_0=0$ in +equation (3) and hence we get +$$ + q=2+\gamma -Q. +$$ +Since we assume that $Q_{{\rm abs}}(\nu)$ varies as $\nu$, +the resulting value for $Q$=2.0. None of the objects is found +to lie in the corresponding region in the colour--colour +diagram. Even this extreme value for $Q$ implies a density +which varies as $r^{-1.8}$. + +Goldsmith et~al.\ (1987) have reported that the +simultaneous optical and near-IR data of AC Her can be fitted +by a combination of two blackbodies at 5680 and 1800$\,$K, +representing, respectively, the stellar and dust shell +temperatures, and suggested that in RV Tauri stars the grain +formation is a sporadic phenomenon and not a continuous +process. Apparently, they have been influenced by the remark by +Gehrz \& Woolf (1970) that their data in the 3.5--11$\,\umu$m +region of AC Her indicated a dust temperature of $\sim300\,$K. We +find that the {\it K--L\/} colours given by Gehrz (1972), Lloyd +Evans (1985) and Goldsmith et~al.\ (1987) are all +consistent with each other. Surely, hot dust ($\sim 1800\,$K), if +present at the time of observations by Goldsmith et~al.\ (1987), +would have affected the {\it K--L\/} colour +significantly. AC Her, like other members of its class, is +found to execute elongated loops in the ({\it U--B\/}), ({\it +B--V\/}) plane (Preston et~al.\ 1963), indicating that +significant departure of the stellar continuum from the +blackbody is to be expected. Further, their data show only a +marginal excess at the near-IR wavelengths. We feel that the +case for the existence of hot dust around AC Her and hence for +the sporadic grain formation around RV Tauri stars is not +strong. In Fig.~3 we find that AC Her and +RU Cen lie very close to R Sct which, according to Goldsmith +et~al.\ (1987), shows no evidence for the presence of a hot +dust envelope. + + +\subsubsection{Comparison with oxygen and carbon Miras} + +In Fig.~1 we have also shown the positions of a sample of +oxygen-rich and carbon-rich Miras. At the low temperatures +characteristic of the Miras, a part of the emission at 12$\,\umu$m +comes from the photosphere. For a blackbody at 2000$\,$K, the ratio +of fluxes at wavelengths of 12 and 2$\,\umu$m $(f_{12}/f_{2})\sim +0.18$. The Miras shown in Fig.~1 have $(f_{12}/f_{2})$ +ratios larger than twice the above value. It is clear that the +three groups of objects populate three different regions of the +diagram. Hacking et~al.\ (1985) have already noticed that +there are distinct differences between the {\it IRAS\/} colours +of oxygen-rich and carbon-rich objects. On the basis of an +analysis, using a bigger sample of bright giant stars in the +{\it IRAS\/} catalogue, this has been interpreted by Zuckerman \& +Dyck (1986) as being due to a systematic difference in the dust +grain emissivity index. U Mon shows the 10-$\umu$m silicate +emission convincingly and, in most of the other objects for +which low-resolution spectra in the near-infrared have been +reported (Gehrz 1972; Olnon \& Raimond 1986), the 10-$\umu$m +emission may be partly attributed to silicates. Hence it is +reasonable to expect that, in the envelopes around at least some +of the RV Tauri stars, the dust grains are predominantly of +silicates, as in the case of oxygen Miras (Rowan-Robinson \& +Harris 1983a). The fact that none of the RV Tauri stars is +found in the region of the two-colour diagram occupied by the +oxygen Miras indicates that the emissivity indices of the +silicate grains in the two cases are different. Because of the +higher temperatures and luminosities, the environment of grain +formation will be different in RV Tauri stars. + + +\subsubsection{Correlation with subgroups} + +Preston et~al.\ (1963) have identified three spectroscopic +subgroups, which are designated as groups A, B and C. Objects of +group A are metal-rich; group C are metal-poor; group~B objects are +also metal-poor, but show carbon enhancements (Preston et~al.\ 1963; +Lloyd Evans 1974; Dawson 1979; Baird 1981). It is interesting +to see that Table~1 contains no group C objects and that in Fig.~1 +there is a clear separation of the two spectroscopic subgroups A +and B, with the demarcation occurring at an inner shell +temperature of about 450$\,$K, group~B stars having lower +temperatures than group A. SX Cen is the only exception. Lloyd +Evans (1974) has reported that metal lines are stronger in SX Cen +than in other group~B objects. It may be worth noting that SX Cen +has the shortest period among the 100 or so objects with the RV +Tauri classification. RU Cen has the coolest inner shell +temperature, as already suggested by the near-infrared spectrum +(Gehrz \& Ney 1972). +% +\beginfigure{3} +\vskip 59mm +\caption{{\bf Figure 3.} Plot of $(K$--$L)$ colours of +RV Tauri stars detected by {\it IRAS\/} against their corresponding +$(J$--$K)$ colours. The position of AR Pup is indicated. The three +objects lying close to the blackbody line are AC Her, RU Cen and R Sct.} +\endfigure + +Group~B objects follow a different mean relationship from those +of group~A, having systematically larger 11-$\umu$m excess for a +given excess at 3$\,\umu$m (Lloyd Evans 1985). For a general +sample of RV Tauri stars, the distinction between the +oxygen-rich and carbon-rich objects is not that apparent in the +{\it JHKL\/} bands. In Fig.~3 we have plotted the near-IR +magnitudes of the objects given in Table~1 (except V Vul which +has no available measurements) in the {\it J--K, K--L\/} plane. +The colours, taken from Lloyd Evans (1985) and Goldsmith +et~al.\ (1987), are averaged if more than one observation +exists, because the internal agreements are found to be often +of the order of observational uncertainties, in accordance with +the earlier finding by Gehrz (1972) that variability has +relatively little effect on colours. Barring RU Cen and AC Her, +it is evident that stars belonging to group~B show +systematically larger excesses at {\it L\/}~band for a given +excess at {\it K}. The low excesses at near-IR wavelengths for +AC Her and RU Cen are consistent with the very low dust +temperatures indicated by the far-infrared colours. +% +\ifsinglecol + \pageinsert + \vfil + \centerline{Landscape figure to go here. This figure was not + part of the original paper and is inserted here for illustrative + purposes.} + \centerline{See the author guide for details on how to handle landscape + figures or tables, and {\tt mnland.tex}.} + \centerline{{\bf Figure 4.}} + \vfil + \endinsert +\else + \beginfigure*{4} + \vbox to 646pt{\vfil + \centerline{Landscape figure to go here. This figure was not + part of the original paper and is inserted here for illustrative + purposes.} + \centerline{See the author guide for details on how to handle landscape + figures or tables, and {\tt mnland.tex}.} + \caption{{\bf Figure 4.}} + \vfil} + \endfigure +\fi + +It is already well established that from {\it UBV\/} photometry +one can distinguish between groups A and~B, members of group~A +being significantly redder than those of group~B (Preston +et~al.\ 1963). Similarly, Dawson (1979) has found that the two +spectroscopic groups are well separated in the DDO +colour--colour diagrams when mean colours are used for the +individual objects. + +The clear separation of the spectroscopic subgroups A and~B in +the IR two-colour diagram suggests that the natures of dust +grains in the envelopes in the two cases are not identical. +This is to be expected because of the differences in the +physical properties of the stars themselves. The average +colours of group~B stars are bluer than group A, but the +envelope dust temperatures of B are cooler than those of~A. The +near-IR spectra of AC Her and RU Cen are extremely similar +(Gehrz \& Ney 1972). The striking similarities in the optical +spectra of AC Her and RU Cen have been pointed out by Bidelman +(O'Connell 1961). We feel that the physical properties, +including the chemical composition, of the grains formed in +the circumstellar envelope strongly depend on those of the +embedded star. This, probably, explains the diversity of the +energy distributions of RV Tauri stars in the near-infrared +found by Gehrz \& Ney (1972). On the basis of the observed +differences in chemical abundances and space distribution of RV +Tauri stars, Lloyd Evans (1985) has already pointed out that +there is no direct evolutionary connection between group~A and +group~B objects, thus ruling out the possibility that group~B +objects are the evolutionary successors of group~A, in which +grain formation has stopped and the cooler temperatures for the +former are caused by an envelope expansion. + +Kukarkin et~al.\ (1969) have subdivided RV Tauri stars +into two classes, RVa and RVb, on the basis of their light +curves; the former shows a constant mean brightness, whereas +the latter shows a cyclically varying mean brightness. +Extensive observations in the near-infrared show that, on +average, RVb stars are redder than RVa stars, and Lloyd Evans +(1985) has suggested that in RVb stars dust shells are denser +in the inner regions and hence radiate strongly in the +1--3$\,\umu$m region. Fig.~3 confirms this; RVb objects show +systematically larger ({\it J--K\/}) and ({\it K--L\/}) colours than RVa +objects. Apparently, there is no distinction between objects of +the two light-curve types at far-infrared wavelengths (Fig.~1). + + +\section{Conclusions} + +In the [12]--[25], [25]--[60] colour diagram, RV Tauri +stars populate cooler temperature regions $(T<600\,\rm {K})$, +distinctly different from those occupied by the oxygen and +carbon Miras. Using a simple model in which +\beginlist +\item (i) the envelope is spherically symmetric, +\item (ii) the IR-emitting grains are predominantly of the same kind, and +\item (iii) in the IR the absorption efficiency $Q_{{\rm abs}} (\nu)\propto\nu$, +\endlist +we find that the {\it IRAS\/} fluxes +are consistent with the density in the envelope $\rho(r)\propto +r^{-2}$, where {\it r\/} is the radial distance. Such a +dependence for the dust density implies that the mass-loss +rates in RV Tauri stars have not reduced considerably during +the recent past, contrary to the suggestion by Jura (1986). In +the two-colour diagram, the blackbody line and the line +corresponding to $\rho(r)\propto r^{-2.2}$ nearly overlap and +the present data are insufficient to resolve between the two +cases. The latter case is more physically reasonable, however. + +The spectroscopic subgroups A and B are well separated in +the {\it IRAS\/} two-colour diagram, with group B objects having +systematically cooler dust envelopes. If we consider only the +objects detected by {\it IRAS}, we find that stars +belonging to group B show systematically larger excess at {\it +L\/}~band for a given excess at {\it K}. Apparently, there is no +correlation between the light-curve types (RVa and RVb) and the +far-infrared behaviour of these objects. It is fairly certain +that the physical properties, including the chemical +composition, of the embedded stars are directly reflected by +those of the dust grains. Most probably, the grain formation +process in RV Tauri stars is continuous and not sporadic as +suggested by Goldsmith et~al.\ (1987). + + +\section*{Acknowledgments} + +I thank Professor N. Kameswara Rao for some helpful +suggestions, Dr H. C. Bhatt for a critical reading of the +original version of the paper and an anonymous referee for +very useful comments that improved the presentation of the paper. + + +\section*{References} + +\beginrefs +\bibitem Baird S.R., 1981, ApJ, 245, 208 +\bibitem Beichman C.A., Neugebauer G., Habing H.J., Clegg P.E., + Chester T.J., 1985a, {\it IRAS\/} Point Source Catalog. Jet + Propulsion Laboratory, Pasadena +\bibitem Beichman C.A., Neugebauer G., Habing H.J., Clegg P.E., + Chester T.J., 1985b, {\it IRAS\/} Explanatory Supplement. Jet + Propulsion Laboratory, Pasadena +\bibitem Dawson D.W., 1979, ApJS, 41, 97 +\bibitem Gerhz R.D., 1972, ApJ, 178, 715 +\bibitem Gerhz R.D., Ney E.P., 1972, PASP, 84, 768 +\bibitem Gerhz R.D., Woolf N.J., 1970, ApJ, 161, L213 +\bibitem Gilman R.C., 1972, ApJ, 178, 423 +\bibitem Goldsmith M.J., Evans A., Albinson J.S., Bode M.F., 1987, MNRAS, + 227, 143 +\bibitem Hacking P. et al., 1985, PASP, 97, 616 +\bibitem Harvey P.M., Thronson H.A., Gatley I., 1979, ApJ, 231, 115 +\bibitem Jura M., 1986, ApJ, 309, 732 +\bibitem Kukarkin B.V. et al., 1969, General Catalogue of Variable Stars. + Moscow +\bibitem Lloyd Evans T., 1974, MNRAS, 167, 17{\sc p} +\bibitem Lloyd Evans T., 1985, MNRAS, 217, 493 +\bibitem Low F.J. et al., 1984, ApJ, 278, L19 +\bibitem McLaughlin D.B., 1932, Publ. Univ. Obs. Mich., 4, 135 +\bibitem O'Connell J.K., 1961, Specola Vaticana Ric. Astron., 6, 341 +\bibitem Olnon F.M., Raimond E., 1986, A\&AS, 65, 607 +\bibitem Preston G.W., Krzeminski W., Smak J., Williams J.A., + 1963, ApJ, 137, 401 +\bibitem Rowan-Robinson M., Harris S., 1983a, MNRAS, 202, 767 +\bibitem Rowan-Robinson M., Harris S., 1983b, MNRAS, 202, 797 +\bibitem van der Veen W.E.C.J., Habing H.J., 1988, A\&A, 194, 125 +\bibitem Willems F.J., de Jong T., 1988, A\&A, 196, 173 +\bibitem Zuckerman B., Dyck H.M., 1986, ApJ, 311, 345 +\endrefs + + +\appendix + +\section{Large gaps in {$\bf L\lowercase{y}\balpha$} forests + due to fluctuations in line distribution} + +(This appendix was not part of the original paper by A.V.~Raveendran and is +included here just for illustrative purposes.) + +Spectroscopic\looseness=1\ observations of bright quasars show that the mean number +density of ${\rm Ly}\alpha$ forest lines, which satisfy certain criteria, +evolves +like ${\rm d}N/{\rm d}z=A(1+z)^\gamma$, where $A$ and~$\gamma$ are two +constants. Given +the above intrinsic line distribution we examine the probability of finding +large gaps in the ${\rm Ly}\alpha$ forests. We concentrate here only on +the statistics and neglect all observational complications such as the line +blending effect (see Ostriker, Bajtlik \&~Duncan 1988). + +Suppose we have observed a ${\rm Ly}\alpha$ forest between redshifts $z_1$ +and~$z_2$ +and found $N-1$ lines. For high-redshift quasars $z_2$~is usually the emission +redshift $z_{\rm em}$ and $z_1$ is set to $(\lambda_{\rm Ly\beta}/\lambda_{\rm +Ly\alpha})(1+z_{\rm em})=0.844(1+z_{\rm em})$ to avoid contamination by +Ly$\beta$ lines. We want to know whether the largest gaps observed in the +forest are significantly inconsistent with the above line distribution. To do +this we introduce a new variable~$x$: +$$ + x={(1+z)^{\gamma+1}-(1+z_1)^{\gamma+1} \over + (1+z_2)^{\gamma+1}-(1+z_1)^{\gamma+1}}. \eqno\stepeq +$$ +$x$ varies from 0 to 1. We then have ${\rm d}N/{\rm d}x=\lambda$, +where $\lambda$ is the mean number of lines between $z_1$ and $z_2$ and is +given by +$$ + \lambda\equiv{A[(1+z_2)^{\gamma+1}-(1+z_1)^{\gamma+1}]\over\gamma+1}. + \eqno\stepeq +$$ +This means that the ${\rm Ly}\alpha$ forest lines are uniformly distributed +in~$x$. +The probability of finding $N-1$ lines between $z_1$ and~$z_2$, $P_{N-1}$, is +assumed to be the Poisson distribution. +% +\beginfigure{5} +\vskip 11pc +\caption{{\bf Figure A1.} $P(>x_{\rm gap})$ as a function of +$x_{\rm gap}$ for, from left to right, $N=160$, 150, 140, 110, 100, 90, 50, +45 and~40.} +\endfigure + +\subsection{Subsection title} + +We plot in Fig.~A1 $P(>x_{\rm gap})$ for several $N$ values. +We see that, for $N=100$ and $x_{\rm gap}=0.06$, $P(>0.06)\approx 20$ +per cent. This means that the +\ifsinglecol\else \vadjust{\vfill\eject}\fi +probability of finding a gap with a size +larger than six times the mean separation is not significantly small. +When the mean number of lines is large, $\lambda\sim N>>1$, our +$P(>x_{\rm gap})$ approaches the result obtained by Ostriker et~al.\ (1988) +for small (but still very large if measured in units of the mean separation) +$x_{\rm gap}$, i.e., $P(>x_{\rm gap})\sim N(1-x_{\rm gap})^{N-1}\sim N +{\rm exp}(-\lambda x_{\rm gap})$. + + +\bye + +% end of mnsample.tex diff --git a/Master/texmf-dist/doc/plain/mnras/readme.txt b/Master/texmf-dist/doc/plain/mnras/readme.txt new file mode 100644 index 00000000000..167ae336a0c --- /dev/null +++ b/Master/texmf-dist/doc/plain/mnras/readme.txt @@ -0,0 +1,15 @@ +% readme.txt (v1.1 released 2nd September 1994) +% for Monthly Notices (plain TeX) +% +% The files for MN are as follows: +% +% README.TXT this file +% FONTTEST.TEX a file to test all of the fonts used in the MN design +% with your output device +% MN.TEX the design macros +% MNGUIDE.TEX authors' instructions +% MNSAMPLE.TEX sample pages +% MNLAND.TEX landscape page for sample pages +% +% Typeset MNGUIDE.TEX, MNSAMPLE.TEX and MNLAND.TEX for instructions +% and examples. diff --git a/Master/texmf-dist/doc/plain/newsletr/READ.ME b/Master/texmf-dist/doc/plain/newsletr/READ.ME new file mode 100644 index 00000000000..53d258b0d55 --- /dev/null +++ b/Master/texmf-dist/doc/plain/newsletr/READ.ME @@ -0,0 +1,76 @@ +% Save file as: AAAREAD.ME Source: FILESERV@SHSU.BITNET + + NEWSLETR - A newsletter format for Plain TeX + Hunter Goatley + August 21, 1991 + +NEWSLETR is a file of plain TeX macros that has been used for the last few +years to publish a newsletter about a horror author (Robert R. McCammon). +Most of the macros are original, but some came from _The TeXbook_ and other +sources; most of these have been either rewritten or modified. The following +files should be found here (and the names are short for people using MS-DOS): + + AAAREAD.1ST This file + NEWSLETR.TEX The newsletter format + NEWSLETR.TXT List of commands in newsletter format + NEWSSAMP.TEX Sample newsletter file + NEWSSAMP.UUE Uuencoded sample .DVI file + LODRIVER.TEX Sample newsletter driver (part of a real newsletter) + LOSAMPLE.TEX Sample newsletter title page, articles, etc. + +The format is for plain TeX, not LaTeX---real TeXies don't use LaTeX! 8-) +Seriously, I developed my newsletter format because LaTeX wasn't flexible +enough for the stuff I wanted to do---namely multiple columns (1--6 columns), +switching columns on the same page, and including figures. + +When you see it, some of the stuff will look kludged---but it sounds like +what some of you are using now was kludged, so it shouldn't be much worse! + +Because the format file (NEWSLETR.TEX) is pretty big, I'd suggest that you +create a new TeX format file that contains it. Under VMS using DECUS TeX, +the command would be: + + $ TEX/INIT/NOFORMAT "&plain \input newsletr \dump" + $ TEX/FORMAT=newsletr + +NEWSLETR is set up so that it can be used as an extended plain TeX (you have +access to the macros, with all of TeX's default settings). When building +a newsletter, you can execute \newspage to use pages that are a little taller +and wider (7" x 9") and to change some of TeX's penalties, etc. + +Finally, I would like to point out a couple of features that I think would be +useful for anybody who uses TeX for any reason. I've extracted these two +pieces into separate files so that you can easily include them in other +documents. + +As you all know, TeX requires that you use `` and '' instead of " to get +proper double-quotes. I have written a macro that will let the double-quote +character (") work like `` and ''. It assumes that they come in pairs, except +that a " as the first character of a paragraph is treated as ``. To enable +the double-quote recognition, simply add \begindoublequotes to your file. +(You can disable it using \enddoublequotes.) Proper spacing after '' is +maintained. (QUOTE.TEX) + +I've also included macros \ital and \slant for typesetting text in the +italic (\it) and slanted (\sl) fonts, respectively. A lot of people don't +seem to know about---or forget to use---the italic correction (\/) when +switching among fonts. The \ital and \slant macros look at the next character +following the parameter and add the italic correction unless the next character +is a period or a comma, as recommended on page 14 of _The TeXbook_. Using +these macros, you should never need to type \/ again. (ITALIC.TEX) + +I would appreciate being kept informed of bug fixes or improvements you make +to the file. To that end, I've created a mailing list that can be used to +discuss the NEWSLETR format. Feel free to post questions, problems, or +solutions to the list; as usually with freeware, I can't promise support, +but I use these macros too, and I'm willing to help whenever/wherever I can. +To subscribe to the list, send e-mail with the body SUBSCRIBE NEWSLETR to +LISTSERV@WKUVX1.BITNET. Note that this isn't a real LISTSERV, so commands +other than UNSUBSCRIBE and REVIEW won't work. + +Questions, comments, or suggestions are welcome. + +Hunter Goatley, VAX Systems Programmer E-mail: goathunter@WKUVX1.BITNET +Academic Computing, STH 226 Voice: (502) 745-5251 +Western Kentucky University +Bowling Green, KY 42101 diff --git a/Master/texmf-dist/doc/plain/newsletr/losample.tex b/Master/texmf-dist/doc/plain/newsletr/losample.tex new file mode 100644 index 00000000000..660019319ee --- /dev/null +++ b/Master/texmf-dist/doc/plain/newsletr/losample.tex @@ -0,0 +1,380 @@ +% Save file as: LOSAMPLE.TEX Source: FILESERV@SHSU.BITNET +%% TITLE.TEX %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\begingroup +\font\HUGE=cmss17 %scaled\magstep2 + +\pageheader{}{}{} +\pagefooter{}{}{} + +\setbox0=\vbox{\hsize=2.25in + \vskip4.25in + {\baselineskip=21pt + \centerline{\HUGE Vol.\ 1\ \ No.\ 4} + \centerline{\HUGE June 1990} + } + } + +\vbox to9in{\unvbox0 + +\vskip 1.75in +\vfil +\vbox{\hbox to\hsize{\hfill +\leftshadowbox{ + \hsize=6in + \vsize=1.75in + \vbox to\vsize{ + \vfil + {\baselineskip=19pt + \centerline{\HUGE Inside This Issue:} + } + \vfil + \centerline{$\bullet$\ "The State of Where," by \RRM} + \centerline{$\bullet$\ An interview with Jeffrey Sackett, by Hunter Goatley} + \centerline{$\bullet$\ Interviews with Al Sarrantonio and Kazue Tanaka, + by \RRM} + \centerline{$\bullet$\ A letters column} + \centerline{$\bullet$\ Reports on NECON X and the 1990 WFC} + \centerline{$\bullet$\ A Joe R. Lansdale update} + \centerline{$\bullet$\ News of \McC's new novel \book{Boy's Life}} + \vfil + }} +\hfill} +\vfil +}} % End of \vbox + +\eject +\endgroup + +%% EDITORIAL.TEX %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% Lights Out! Vol. 2 No. 1 +% Editorial page +% +\newbox\edboxone \newbox\edboxtwo % \newbox\edbox3 \newbox\edbox4 +\newdimen\edcolwidth + +% +%\edcolwidth=\pagewidth +%\advance\edcolwidth by -\wd\edboxone +%\advance\edcolwidth by -\columnsep +%\advance\edcolwidth by -\columnsep +% +%\setbox\edboxtwo=\vbox to 9in{\hsize\edcolwidth +%%{\hsize 4in +\articletitle{"And Now, the End Is Near\edots"}{A Look at the Future by Hunter +Goatley} + +\begincolumns{2} +\ninepoint \rm + +\noindent +Well, once again, finally! As you all know, I think, +this issue has been delayed because my family and I moved again, this +time from Knoxville to Bowling Green, KY. Again, I appreciate your +patience and understanding. + +Each time I go to press, the issue seems to change from what I originally +intended. I've been telling you for awhile that this issue would feature a new +McCammon short story---well, it doesn't. It does, however, have an essay +entitled "The State of Where," written by \McC\ exclusively for \LO\ \ The +essay describes where McCammon is in his career, and where he's going. I think +you'll find it interesting. + +Now the bad news. As you probably gathered from the title above, I'm +extinguishing the lights on \LO\ \ Despite my best efforts, finding the time to +devote to the newsletter is becoming more and more difficult. +The fact that I've only been able to do three +issues in the last 13 months shows that something's not right. +There are several reasons that I won't be able to keep up \LO: + +\beginlist\parindent=18pt +\item{1.)} Production costs have steadily risen as I've moved around the + country. The last issue and this one were more expensive than + the previous three issues had been; in fact, much of the + subscription renewals went to pay for those issues. I also + severely + over-estimated the growth of \LO---the renewals since June + will not cover the cost of four more issues; more on that in + a minute. +\item{2.)} I \slant{like} my job now. In the beginning, \LO\ was a + much-needed diversion from a programming job that had become + unbearable---only I didn't realize it at the time. Now that + I'm out of the "hell-job," I find myself less willing to spend + my free time working on \LO +\item{3.)} I've been stepping up my writing for the technical journal + \book{VAX Professional}. Since 1986 I've written 16 articles + for them; this year I'm to start a series of programming + articles that will probably be published as a book. +\item{4.)} I'm going to be teaching some programming classes this fall at + Western Kentucky University. +\item{5.)} And most importantly, my almost-two-year-old daughter Margaret + wants---and should have---more + time to spend with Daddy. Lately, between work and \LO\ she + and Dana have had to spend too much time without me---and vice + versa. +\endlist + +Since renewals have been lower than anticipated and new subscriptions have been +virtually non-existent, I cannot afford to publish four more issues of +\LO---instead of offering refunds, I've decided that there will be one more +issue of \LO\ sometime later this year. This special issue will be longer than +previous issues and will be available to \slant{current subscribers only}. +Book dealers will not be selling them and I won't have any extra copies for +sale. + +Rick McCammon has been a joy to work with, and when I told him of my plans +to discontinue \LO\ he offered to help me make the last issue very special +for you. Therefore, the next and final issue of \LO\ will feature not one, +but \slant{two} excerpts from abandoned \RRM\ novels! + +Though Rick once told me that he would never show \book{The Address} to anyone, +he has volunteered to let me publish what he had written at the time he shelved +the book. That's about 50 manuscript pages. Rick is also providing me with the +beginning of \book{The Midnight Man}, a novel he started last year. In addition, +the issue will feature a brand-new interview with Rick, where we'll discuss +\book{Boy's Life} and more about Rick's plans for the future. I'll be driving +to Birmingham in March or April to sit down and talk with Rick, so if you have +any questions you want me to ask him, please send them soon. + +As you can see, I'm planning for \LO\ to go with a {\ss BANG!} And since the +next issue is for current subscribers only, there won't be very many copies. +I've got plenty of back issues of issues 2 and 3 sitting around being a fire +hazard; if you'd like extra copies of those issues, send \$1 for each copy and +I'll mail them out immediately. The \$1 will cover postage and the envelope(s). +There are no limits, except that the offer is available only to current +subscribers. I still have some of issues 1 and 4, but I'm not sure how many; +let me know if you want those issues and I'll include them as long as they last. +Please send all correspondence to the address at the bottom of this page. And +thanks for your patience---the last issue will be out this summer. + +\vskip.5\baselineskip \hrule \vskip.5\baselineskip +{\eightpoint\ss\noindent +On the cover: the artwork for McCammon's upcoming novel, \book{Boy's Life}, +and a magazine illustration accompanying a Japanese translation of "The Thang." +\eoa} +\endcolumns + + +\vfill + +\setbox0=\vbox to 1.25in{\hsize=125pt% + \vfil\elevenpoint + \centerline{\bf Lights Out!} + \vfil\hrule\vfil + \centerline{The} + \centerline{\RRM} + \centerline{Newsletter} + \vfil \hrule \vfil\ninepoint + \line{Vol.~2\ \ No.~1\hfill February 1991\hskip2pt} + \vfil + } + +\setbox1=\vbox to 1.25in{\hsize=120pt% + \vfil\vfil + \centerline{\ss Published by:} + \centerline{\bf Hunter Goatley} + \vfil \hrule \vfil + \centerline{\LO} + \centerline{\POBox} + \centerline{\CityState} + \centerline{\ZipCode} + \vfil\vfil + } + +\setbox2=\vbox to 1.25in{\hsize=120pt% + \vfil\noindent\eightpoint\ss\parindent=6pt\narrower + Thanks to Paddy McKillop, Jodi Strissel, Paul Schulz, Adam Rothberg, + \& you. + Thanks especially to Jeffrey Sackett, Kazue Tanaka, Al Sarrantonio, + Joe Lansdale, and Rick \& Sally McCammon. + Incredibly special thanks to Dana \& Margaret Goatley! + % for putting up with me! + \par + \vfil} + +\setbox3=\vbox to 1.25in{\hsize=125pt% + \vfil\noindent\eightpoint\ss\leftskip=6pt + This newsletter was typeset on a Digital VAX 6320, using the \TeX\ + typesetting system developed by Donald~E. Knuth. + \par + \vfil \hrule \vfil + \noindent\smallcopyright\ 1991 by Hunter Goatley. All rights reserved. + Permission to reprint required.\par + \vfil} + + +\setbox\edboxone=\vbox{\hbox{\box0\vrule\box1\vrule\box2\vrule\box3}} + +\setbox\edboxone=\vbox to1.5in{ + \boxitspace=6pt + \vfill + \boxit{\unvbox\edboxone} + \vfill + } + +\box\edboxone + +\eject % Force a page break + +%% KAZUE.TEX %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% TeX file: KAZUE.TEX +% +% Desc: Interview with Kazue Tanaka, by Robert R. McCammon +% +% Interview Date: 03-NOV-1990 +% Transcription Date: 24-NOV-1990 +% +\articletitle{Interview: Kazue Tanaka}{Conducted by \RRM; transcribed by Hunter Goatley} + +\begincolumns{2} +\definefigs{2} % Define figures for up to 7 pages + +%\definefig{2}{2}{top}{\Certo} + +%\definefig{3}{2}{middle}{\Quote{% +% I think it's a challenge to see the world +% through different eyes. And I think that's what writing, in a way, is +% all about.\qRM}} + +%\handlefigures +% +% "RM:" in 10pt roman is 22.xx pts wide, so let's put these things in boxes +% that size with about 5pts whitespace following them. +% +\def\RM:{\vskip6pt\noindent\hbox to27pt{\bf RM:\hfil}} +\def\KT:{\vskip6pt\noindent\hbox to27pt{\bf KT:\hfil}} + + +\ednote{Ms.~Kazue Tanaka is a Japanese writer/translator who has translated +\RRM's stories from \book{Night Visions IV} into Japanese. The following +interview was conducted at the 1990 World Fantasy Convention, where Ms.~Tanaka +finished up a month-long visit to the United States. Ms.~Tanaka is currently +at work translating \McC's 1981 vampire epic, \book{They Thirst}. +%\hfill\break\vskip-12pt +} + +\RM: I'd like to know how you go about translating, say, one of my books. +Do you read the book first? + +\KT: Yes. Usually I read the book a couple of times and then I start +translating. Maybe you know that we have a completely different grammatical +diction from English, so we can't put a word in the same order in Japanese. +Usually I read a sentence and grasp the meaning of it and reconstruct it in +Japanese. + +\RM: I would think that would be very difficult to do. + +\KT: It is! + +\RM: I'm sure it is, because there's such a great difference in the grammatical +form. You have to be very careful, I guess, in terms of reading in English and +translating to Japanese. That seems to me to be very difficult. How did you +train to do this? + +\KT: Usually we have some kind of mentor or teacher. + +\RM: Were you like an apprentice, and someone teaches you to do this? + +\KT: Yes. We put the original stories [beside] the translations and compare +the sentences. + +\RM: How long would it take you to translate \book{They Thirst}? + +\KT: It depends on how long the story is. \book{They Thirst} will take at +least three months. How long did it take you to write~it? + +\RM: Well, it took about six or seven months to write. + +\KT: Maybe I'll need that kind of time, too! + +\RM: But it's almost like, if you're interpreting, you're almost doing some +writing yourself. If you're making something more concise, or---do you do that? +Are you abridging? Do you think anything gets changed in the translation? + +\KT: We try not to change, but sometimes a little change is necessary. We +don't have some things that you have here in America. For instance, some brand +names. We don't have the culture of your country, and the Japanese readers +don't know if I translated correctly, but it is impossible for Japanese readers +to understand that culture. Maybe, in that case, things get changed sometimes. + +\RM: Do you feel that you interpret the story more so your countrymen can +understand what's going on in the book? Do you think you add more of your +culture to the story? + +\KT: Basically, we don't add anything, we don't take away anything. But in +that case, we explain [the cultural differences] after the story in an +afterword. + +\RM: How many books have you translated? + +\KT: Maybe twelve, or something. Among them, \book{Brain Child}, by John Saul, +and some mysteries. I'm going to translate some stories of Orson Scott Card's. + +\RM: I think it would be very interesting, if I could read Japanese, to read my +book and see what the changes are. Or how it's geared toward that culture. + +\KT: Conversation---when people talk---is very difficult to put +into Japanese. If the character is a woman, a man, a boy, or a girl, Japanese +has a very distinctive way of speaking. Especially between a man and woman. +English does not have as much difference. + +\RM: Well, that's fascinating. I think it would be a very tough thing to +do---to translate something into an entirely different culture and still have +the flavor of the American version, at least. I wouldn't want to do it---I +don't think I could do it very well. + +\KT: Your stories are very American---that may be why they appeal to Japanese +readers. + +\RM: Really? I was going to ask you why my stories appeal---if they do +appeal---to Japanese readers. Well, first, I didn't know that horror fiction +was so popular in Japan. Is it? Is it becoming more popular? What do you +think the situation is? + +\KT: Your [novels] have not been translated at all yet. So, apart from you, +Stephen King and Dean~R. Koontz are very popular---they are as popular as +other big writers. Other horror writers are not so well-known. Some very keen +fans like American horror. + +\RM: Why do you think that is? King and Koontz are definitely very American +writers. Do you think that's their appeal---the American style? + +\KT: Yes, I do. + +\RM: Not necessarily because of the story being told, but because maybe it's +told in an American voice? + +\KT: Yes, sometimes. I'm still trying to [learn] the American voice---it's +very hard to do. + +\RM: Well, I know that's very tough to do, and I'm looking forward to seeing +the books when they are translated. + +\KT: I'm looking forward to it too!\eoa + +\endcolumns + +%% NEXTTIME.TEX %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\vfill + +\begingroup +\font\HUGE=cmss17 %scaled\magstep2 +\setbox0=\vbox{\hsize=5in + \twelvepoint\ss\noindent% + The final issue of \LO\ will feature excerpts from \RRM's unpublished + novels \book{The Address} and \book{The Midnight Man}, a brand-new + interview with \McC\ about \book{Boy's Life}, more author + interviews, and the latest news! Coming Summer 1991! + \vfill% + } + +\centerline{\shadowbox{\vbox to 1in{% + \hsize=6in + \vfil + \offinterlineskip + \noindent\hfil\box0\hfil + \vfil + }}} + +\endgroup diff --git a/Master/texmf-dist/doc/plain/newsletr/newsletr.txt b/Master/texmf-dist/doc/plain/newsletr/newsletr.txt new file mode 100644 index 00000000000..df802b00264 --- /dev/null +++ b/Master/texmf-dist/doc/plain/newsletr/newsletr.txt @@ -0,0 +1,134 @@ +% Save file as: NEWSLETR.TXT Source: FILESERV@SHSU.BITNET + Help for NEWSLETTER_FORMAT.TEX + Hunter Goatley + August 21, 1991 + +\newspage - Sets up larger page for newsletter (taller/wider) +\DATE - Include current month and year (July 1989) +\include{file.ext} - Include a .TeX file (prints message) +\say{Message} - Writes a message to the terminal +\newpage - Begin a new page +\nullpage - Creates an empty page with header/footer in place +\nullline - Creates an empty line + +\ignoreunderfill - Avoids undervfill and underhfill messages + +\articlesep - Article separator; creates hrule = \hsize + +\ital{text} - Set in \it font (with proper italic correction) +\slant{text} - Set in \sl font (with proper italic correction) +\book{Title} - Book titles (uses \ital) + +\Quote{quote}{quotee} - Insert a quote with the quotee in small caps font +\beginquote - Begins a quote; draws hrule, indents, larger font +\endquote - Ends a quote; resets font to original size + +\articletitle{Title}{Byline} + - Builds an articletitle box (see example) +\coltitle{Title} - Builds boxed title for use in double-column format + +\headfootrule=Xpt - Define height of rule in header & footer +\columnsep=Xpt - Amount of space between columns in multi-column mode +\columnwidth=Xpt - Width of a column in multi-column mode (calc. by def.) +\columnseprule=Xpt - Width of vertical rule between columns (can be 0pt) +\begincolumns{x} - Begins multiple-column mode (1 < X < 7) +\endcolumns - Ends multiple-column mode + +\definefigs{#ofPages} - Initializes figures for multi-column mode +\handlefigures - Must be specified right after \definefigs (bug) +\definefig{Page}{Col}{Pos}{box} + - Defines a figure +\abovedisplayskip - Amount of vskip before middle and bottom figures +\belowdisplayskip - Amount of vskip below top and middle figures + +\shadowbox{some_box} - Draw a shadow box around an hbox or vbox +\leftshadowbox{somebox} - Draw a left-hand shadow box around an hbox or vbox +\centerbox{somebox} - Center a \vbox on a page +\boxshadowsize=Xpt - Width of shadow boxes +\boxit{some_box} - Draw a box around an hbox or vbox +\boxitrule=Xpt - Width of rules used to draw boxes +\boxitspace=Xpt - Space between box rules and box contents +\bestbreak - Tell TeX that this is a pretty good place to break +\ednote - Do editor's note in a box + +\listindent - Specify the amount to indent lists +\beginlist - Begin a simple list of dotted items +\endlist - End item list +\beginlistt{title} - Begin list with a title (attached with vglue) +\endlistt - End list with title (ends with \par) +\dotitem - Item list with a bullet + +\beginbibliography - Begin a bibliography - main setup +\endbibliography - End a bibliography +\beginbiblist - Begin a list of references +\beginanotherlist - Begin a dotitem list inside a \beginbiblist +\endbiblist - End a bibliography list of references +\ENUM item - Number items in a list +\ENum item - Don't number, but indent as if number is present +\NoENUM item - Don't number; start text where number would appear +\bibshort{Title} - Short story entry +\bibbook{Title} - Book entry +\bibview{The...} - Interview entry +\subbib{Subheading} - Subtitle for an entry +\bibsectitle{title} - Adds a bibliography section title (BOOKS, etc.) + +\begindoublequote - Enable double-quote as a macro +\enddoublequote - Disable double-quote as a macro +" - Alternates between `` and '' +\eoa - End of Article; draws black rectangle at right of line +\smallcopyright - Insert a small (7pt) copyright character +\farright{text} - Place text flush against the right-margin, possibly + on a new line if it won't fit. +\ellip - Insert ellipsis with proper spacing (word\ellip word) +\edots - Insert ellipsis at end of sentence (4 dots) + +The font commands below redefine \sl, \it, \bf, \rm, \ss, and \ssi for that font + +\twelvepoint - Switch to twelve-point fonts +\elevenpoint - Switch to eleven-point fonts +\tenpoint - Switch to ten-point fonts +\ninepoint - Switch to nine-point fonts +\eightpoint - Switch to eight-point fonts + +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + These macros implement the headers and footers for the newsletter format. + The macros accept three parameters: text that is to appear flush-left on + the line, text that should be centered, and text that should be flush-right + on the line. Parameters can be omitted by specifying empty braces ({}). + + The following macros are defined for headers and footers: + + \evenpageheader{LEFT}{CENTER}{RIGHT} + \oddpageheader{LEFT}{CENTER}{RIGHT} + \evenpagefooter{LEFT}{CENTER}{RIGHT} + \oddpagefooter{LEFT}{CENTER}{RIGHT} + + If the headers/footers are the same for even & odd pages, the following + macros can be used instead of the four above: + + \pageheader{LEFT}{CENTER}{RIGHT} + \pagefooter{LEFT}{CENTER}{RIGHT} + + Additional header/footer definitions: + + \pageheaderlinetrue - A line should extend below header text + \pageheaderlinefalse - Header does NOT have a line + \pagefooterlinetrue - A line should extend above footer text + \pagefooterlinefalse - Footer does NOT have a line + \headfootrule=Xpt - Thickness of header/footer lines + \pageheaderskip=Xpt - \vskip between header and line + \pagefooterskip=Xpt - \vskip between footer and line + \headfont=\fontname - Font to use for header text + \footfont=\fontname - Font to use for footer text + + Example: + + \pageheader{}{My Newsletter}{} + \pagefooter{#1}{}{\pageno} + + Defaults: + + \pageheaderlinefalse \pagefooterlinefalse + \pageheaderskip=4pt \pageheaderskip=4pt + \pageheader{}{}{} \pagefooter{}{}{} + diff --git a/Master/texmf-dist/doc/plain/newsletr/newssamp.tex b/Master/texmf-dist/doc/plain/newsletr/newssamp.tex new file mode 100644 index 00000000000..006946ed2d9 --- /dev/null +++ b/Master/texmf-dist/doc/plain/newsletr/newssamp.tex @@ -0,0 +1,267 @@ +% Save file as: NEWSSAMP.TEX Source: FILESERV@SHSU.BITNET +% +% File: NEWSLETTER_SAMPLE.TEX +% +% Functional description: +% +% This file is a sample TeX file to demonstrate the functionality of the +% NEWSLETTER_FORMAT macros. +% +% It depends on the file NEWSLETTER_FORMAT.TEX. +% +% Author: Hunter Goatley +% +% Date: August 15, 1991 +% +\ifx\undefined\eoa\input newsletr \fi % Include macro definitions +\say{Producing sample newsletter} +% +% Define the page headers and footers. Different for even/odd pages. +% +\pageheaderlinetrue \pagefooterlinetrue +\evenpageheader{}{Goat Droppings!}{} +\oddpageheader{}{My Newsletter}{} +\evenpagefooter{August\ 1991}{}{Page\ \folio} +\oddpagefooter{Page \folio}{}{Vol.\ 1\ \ No.\ 1} + +\begindoublequotes % Handle double quotes + +\ignoreunderfill % Ignore undervfill errors +\parskip=0pt % Don't skip between paragraphs +\parindent=18pt % Indent paragraphs 18pt +\rm % Use tenpoint roman + +% +% Define a few commands to make typing easier. +% +\def\RRM{Robert~R. McCammon} +\edef\TeX{\TeX\null} +\def\LaTeX{{\rm L\kern-.36em\raise.3ex\hbox{\quoteefont a}\kern-.15em + T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}} +% +% Now define a short verbatim, which can be used for short strings: +% +\def\cmd#1{{\tt\string#1}} + +% +% Setup for newsletter page (a little taller and wider, with increased +% \tolerance, etc.) +% +\newspage + +%\nullpage % Null page w/ head/foot + +% +% Now start the first article. Do the article in double-column format. +% +% The title and by-line are written in a double-box. +% +\articletitle{Using \TeX\ to Do A Newsletter}{By Hunter Goatley} + +\begincolumns{2} % Begin double-columns + +% +% Reserve boxes for up to 3 pages of figures. +% +\definefigs{3} + +% +% Define a quote as a figure in the middle of column 2 on page 1 of this +% article. +% +\definefig{1}{2}{middle}{\Quote{% + Nothing beats \TeX\null. Nothing.}{Hunter Goatley}} +% +% Now do one that extends across the whole page. +% +\definefig{2}{0}{top}{\hsize=\normalhsize% +\vbox{\centerline{\shadowbox{% + \hsize=5in + \vsize=.5in + \vbox to\vsize{ + \vfill + \centerline{This is inside a \cmd{\shadowbox}.} + \vfill + } %End vbox + } %End shadowbox + }} %End vbox + \vskip12pt + \centerline{This is a figure across the whole page.} + } %End definefig + +\handlefigures % Necessary, but shouldn't be. +\noindent +This document attempts to describe how my plain \TeX\ newsletter format works. +The documentation is sparse, but I hope to let it speak for itself through +the use of examples. Will they be meaningful examples? Probably not. But, +hey, I'll give it a shot. + +I started producing {\it Lights Out!---The \RRM\ Newsletter\/} +in June 1989. For those who don't know, \RRM\ is a very popular author whose +books have primarily been categorized in the horror genr\'e. His latest, +\book{Boy's Life}, was published in hardcover by Pocket Books in August 1991. +\book{Boy's Life} is {\sl not\/} horror---it's a wonderful tale of how 1964 +looked to a 12-year-old boy. There's a mystery, but the book is primarily +about remembering life when you were young. I urge you to find the book and +give it a try. Here are quotes from a couple of reviews of McCammon's previous +novel, \book{Mine}: + +% +% A sample \dotitem'ed list. +% +\bgroup % Start a new group to keep \listindent local +\listindent{10pt}\beginlist +\dotitem "\book{Mine} grips you tightly by the throat, right at the + start, and squeezes\edots" \farright{---\book{The New York Daily + News}} +\dotitem "McCammon at his very best\ \dots\ and then some." + \farright{---\book{The Birmingham News}}% +\endlist +\egroup + +\noindent % Don't indent the paragraph after the quotes. +Well, enough about \RRM. Even if you don't like horror, I think you'll like +McCammon's work. Other titles include \book{Swan Song}, \book{Blue World}, +and \book{Mystery Walk}. + +I'll now break and we'll start a new sub-article under this main +article. I used this approach in a regular column entitled "Things Unearthed," +which consisted of various news items about new book releases and other +news items. + +% +% Begin a new sub-article. \coltitle draws a box around the title. This +% one has two centered lines, with a box around it. +% +\articlesep +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\coltitle{\centerline{Why I Chose \TeX\ Over}\break + \centerline{Ventura and PageMaker}} + +When I decided I was going to start producing a newsletter, I started looking +at the options I had available to me. Because I'm a VAX systems programmer, +I preferred to use something on the VAX. I had had some exposure to \TeX\ and +knew that it would do the job, but I thought I'd look at PC-based choices. + +I played around with PageMaker some, and read about Ventura---and decided that +they were way too clumsy to do what I wanted. I liked the fact that \TeX\ used +regular text files with embedded commands---I could use the editor I was +accustomed to, \TeX\ was available for a variety of platforms, and \TeX\ was +incredibly flexible. + +So I decided on \TeX, I had to decide if I was going to use \TeX\ or \LaTeX. +But that's another sub-article. + +\articlesep % Line to separate arts +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\coltitle{\centerline{Why I Chose Plain \TeX}\break % Column title box + \centerline{Instead of \LaTeX}} + +I had originally intended to use \LaTeX, because that's what the technical +writing group of my employer-at-the-time was using to produce their manuals. +I knew that I wanted multiple columns and to be able to switch back and forth +between single- and double-columns on the same page at will. After trying +many variations of the \LaTeX\ double-column style, I finally decided I +couldn't easily do it. (This was before Frank Mittelbach's \LaTeX\ macros +appeared in {\it The TUGboat\/}.) + +So, once I decided on \TeX, I decided I better learn about \TeX\ so I could +write my own macros. Two years later, I still modify the file some, but it +has been lots of fun and I learned a whole lot about \TeX. + +I've since learned that, apparently, not many people use plain \TeX. +Personally, I don't know why everybody flocks to \LaTeX---plain \TeX\ is +so much more flexible. It is true that you need a default set of macros +to get you going, but once they're there, I believe \TeX\ is actually +easier to use than \LaTeX. + +An aside here: if you haven't seen \book{\TeX\ for the Impatient}, by Paul~W. +Abrahams, I strongly recommend a copy. It's a great reference book for +plain \TeX, and his {\tt eplain.tex} (Extended Plain \TeX) provides some +very useful macros. It was published last year by Addison-Wesley. + +\articlesep +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\coltitle{\centerline{Some of the Highlights}\break + \centerline{of the Newsletter Format}} + +There are variety of commands provided by my newsletter format. Because +{\it Lights Out!\/} covered a horror author, some of the commands are +specifically designed to handle books and interviews. While I was developing +the format, I tried to make sure that I kept things as generic as possible +so that it could be used to generate other newsletters. It remains to be +seen if whether or not I was successful. + +%The next page features a list of some of the commands that are available +%and how they're used. + +I've included the commands \cmd{\twelvepoint}, \cmd{\elevenpoint}, +\dots, \cmd{\eightpoint} to change font sizes. I didn't do these +the "official" \TeX\ way (font families) out of laziness. To get the +eight-point font {\tt cmss8} you simply type: \cmd{\eightpoint\string\ss}, +probably within a group. + +My multiple columns command supports up to 6 columns on a page. When you +increase the number of columns on a page, you usually need to change +the font size (for three columns, I switched to the {\tt cmss8} font---it +seemed to work out OK because the sans serif font helped differentiate +between the "Letters" column and the rest of the newsletter). + +One of the things that seems to be hardest in \TeX---especially when multiple +columns are involved---is the insertion of figures. I like things to be +very structured---the mathematical side of me, I guess---so when I added +figure support to my macros, I did it by setting up my multiple column +output routine to place figures in certain locations on a page. You can +specify that a figure is inserted across the entire page at the top and +bottom of the page, or at the top, middle, or bottom of each column. +Here comes the really kludgy part of my format. + +The macro \cmd{\definefigs} must be executed to tell \TeX\ how many pages +are following that may contain figures. What happens is that a large block +of boxes is allocated. I tried various combinations to make it more dynamic, +but had little luck. Because of time constraints, I went with the way that +worked. This shouldn't really cause a problem, because you define figures +within an article, and most articles aren't so long that you exceed the number +of boxes \TeX\ has. The command to define a figure is: +\vskip\baselineskip +\centerline{\cmd{\definefig\string{Page\string}\string{Column\string}% + \string{Position\string}\string{Box\string}}} +\vskip\baselineskip +where \cmd{Box} is a \cmd{\vbox} containing your figure. This can be an empty +\cmd{\vbox} \cmd{\vfill}'ed to the correct size for later pasting. The quote +on the previous page was inserted with a \cmd{\Quote} as the argument to +the \cmd{\definefig} command. + +That's all I'm going to say about the commands for now. Notice that when +you end the double columns, they are automatically balanced.\eoa + +\endcolumns % End of double columns + + +\articlesep % Separate the articles w/ rule + +% +% Now do another article in single column format. +% +\articletitle{This Is Another Article}{By Me, Of Course} + +\begincolumns{3} + +This is more just to show that you can also do three-columns on the same page +with single- and double-column formats without \TeX\ complaining about it. +I hope this example has been of some use to you. + +Note that balancing these columns still has a few glitches---but nothing adding +or subtracting a few words won't fix. I've been using this format to generate +five newsletters so far. + +\endcolumns + +\articlesep + +This is more just to show that you can keep both single-, double-, and +triple-column formats on the same page. \TeX\ won't complain about it +at all (usually).\eoa + + +\bye diff --git a/Master/texmf-dist/doc/plain/patch/patch.doc b/Master/texmf-dist/doc/plain/patch/patch.doc new file mode 100644 index 00000000000..9f70895d02f --- /dev/null +++ b/Master/texmf-dist/doc/plain/patch/patch.doc @@ -0,0 +1,543 @@ +%\iffalse This is patch.doc, and it's -*-LaTeX-*- text +%% patch.doc/patch.tex +%% (c) 1994 by David Kastrup (dak@pool.informatik.rwth-aachen.de) +%% Version 0.91 +%% Redistribution of patch.doc is allowed, provided it is not modified +%% in any way. The stripped version patch.tex may only be distributed +%% as part of other packages, and only if the unstripped version +%% is distributed on demand. +% Stripping is to be done by removing all lines starting with a single +% percent sign. +% You may extract a driver file for printing the documentation with +% the doc style package by extracting all lines starting with +% %<+driver>, while removing the %<+driver> directive. +%\fi +% \CheckSum{360} +% \title{Using {\tt patch.tex}} +% \author{David Kastrup\\dak@pool.informatik.rwth-aachen.de} +% \date{January 22, 1994} +% \maketitle +% \MakeShortVerb\" +% \begin{abstract} +% Often one has the need to use a preestablished format, such +% as~\LaTeX, but with some slight changes to some of the macros. +% Of~course, it is possible to just copy the offendin maco +% definitions into your application or style file, and~modify them +% there. This can lead to parts of your macros being from different +% versions of \LaTeX{} resp.~\TeX. +% +% This input file is a tool for replacing just parts of existing macros +% by user defined parts. If those parts are no longer recognizable, +% an~error message is produced, calling the user to~attention. +% \end{abstract} +% \tableofcontents +% \section{User Interface} +% The macros defined here will allow ``patching'' up already existing +% macros. A~typical example, included from a~style file used for +% typesetting Greek text (to~appear in "kdgreek") is the following: +%\begin{verbatim} +%\input patch.tex +%\ifx\descriptionlabel\undefined\else +%\gpatch\descriptionlabel#1{{#1}}{% +% \bf {\grbf}} \fi +%\ifx\@part\undefined\else +%\gpatch\@part[#1]#2{[#1]{#2}}{% +% \bf\partname~{\grbf\partname\nobreak\ }% +% \bf {\grbf}} \fi +%... +%\endpatch +%\end{verbatim} +%This shows almost all features that are really there. You start by +%inputting "patch.tex". This, among other things, opens a~local +%group in which all of the definitions of~"patch.tex" are read~in. +%In~order not to use up unnecessary hash~space, almost all local +%commands are in the form~"\^^80" and upwards. For this reason, +%you cannot {\em use\/} any macros of yours with such names +%(Note: they are {\em +%not\/} active characters, but rather regular one-letter control +%sequences), and you should not patch them, but you can patch any +%macros containing them, or patch them into macros. +% +%One macro is {\em very\/} special and must not appear in any macro +%you patch, nor in any arguments to~"\patch": this is~"\@ndp@tch". +% +%\DescribeMacro{\patch} +%\DescribeMacro{\gpatch} +%You follow the "\input" by several "\patch" or "\gpatch" +%commands. These commands +%consist of several parts: +%\begin{itemize} +%\item[Optional "\bslash long"] for definition of macros possibly containing +% "\par" tokens in their arguments. Note that the prefixes "\global" +% and~"\outer" are not supported. "\global"ness is achieved by~usage +% of~"\gpatch" as opposed to~"\patch", and is explained later, and +% "\outer" macros are detestable. +%\item ["\bslash patch" or "\bslash gpatch"] To be expected. +%\item [\meta{Argument list}] which is the argument list the macro will +% have in the patched version (usually the same as the original one). +% It~is terminated by the opening brace of +%\item [\meta{Argument replacement}] which is enclosed in braces. This +% is fed as an argument list into the old macro, in order to get the +% replacement text for the new macro. Basically this means that you +% will have to use, say, "{#1}" for an undelimited parameter~"#1", +% "#1@" for a delimited parameter "#1@", and "@$#!?!!" for a brace +% delimited parameter "#1#{" (don't try patching any macros like +% that. Presume you have never heard of~them). +%\item [\meta{Substitution list}] This contains a~brace enclosed list +% of~replacements. Each replacement consists of +% \begin{itemize} +% \item [\meta{Matching sequence}] which is a sequence of tokens not +% containing any braces. If really need to match braces, you can +% match by using implicit braces you get by saying something like +% "\let\openbrace={". If you think of using the default implicit +% braces "\bgroup" and~"\egroup", forget~it. They are used in +% several macros we might want to~patch, and thus are disabled +% by~default. +% \item [\meta{Replacement sequence}] which is enclosed in~braces. +% Again, if you want braces to appear in your replacement, you can +% make that happen by using implicit braces. Matched braces, +% however, you may include explicitly. +% \end{itemize} +%\end{itemize} +%\DescribeMacro{\endpatch} +%Then the patches are followed by~"\endpatch", which closes the group +%opened by~"\input", thus freeing up almost all \TeX{} space +%"patch.tex" took up. Since~mismatched patches can be hard to +%diagnose, "\endpatch" is defined as being~"\outer". As~long as +%the "\outer" nuisance prevails, we~might use it for what it~is +%useful~for. +% +%That's all there is to it! Except for the "\global" issue we promised +%to explain\dots{} +%Usually you will be patching macros of some style, and there will be no +%point in using~"\patch" instead of~"\gpatch". So~mostly "\gpatch" does +%no harm, and will cause a~global definition. "\patch", on the other +%hand, has the problem that its definitions should hold in the group +%ended by~"\endpatch", but not globally. So~"\patch" cannot just make +%the definitions. Instead, it collects the new definitions, and~does +%them all at~"\endpatch". +% +%\DescribeMacro{\globaldefs} +%Here is one friendly feature: If "\globaldefs" is negative, +%"\gpatch"~will invoke "\patch" instead of its own behaviour, so that +%local patches will be performed instead of none at~all (since the then +%non-global definition would disappear at~"\endpatch"). This feature was +%deemed desirable\footnote{Reason: +%I~made an example file showing the effects of several +%"\bslash documentstyle" commands with my Greek macro set. The Greek style +%patched up some \LaTeX{} macros, and this was wanted only +%locally, namely for the length of the demonstration of one particular +%document style.}. +%\subsection{Things to beware of (aka bugs)} +%"patch.doc" is a very simple package (sort~of). It can fail for +%a~number of reasons, and is not applicable in every situation. You +%will have problems if +%\begin{enumerate} +%\item You use implicit tokens which are implicit at the time the +% patches are applied. "\bgroup" and~"\egroup" are explicitly disabled +% for this reason. Implicit spaces will be regarded as explicit ones +% by~"\patch". Implicit macro parameter characters I~am not so sure +% about. \TeX~behaves pretty wierd with regard to them anyhow. Other +% implicits should do no~harm. "\patch"~will take the problematic +% implicit +% tokens for explicit ones while it is analyzing tokens. It analyzes +% both matching and replacement tokens, and all tokens in the original +% macro up to the last replacement performed. This means that, for +% example, matching implicit braces in locations where you did not +% intend it can lead to mismatched explicit braces and lots +% of~confusion. +%\item You use outer tokens in any respect. +% "\patch" does not care for them. +%\item When "\@ndp@tch" appears anywhere, namely in a~macro to be +% patched, or in a matching or replacement sequence. It~is used for +% internal purposes, and you can cause lots of confusion when +% using~it. This means, for one thing, that you should not try +% "\patch"ing up any macros of this package with itself. +%\item And this is harsh: if the macro you patch contains "#" marks +% (which originally were produced by writing "##") these will not be +% reduplicated, leading to missing parameter number errors (which will +% do the right thing if you ignore them, but that's ugly), or to +% recombination with a following number, which is plain wrong. You can +% work around this ugliness in an~ugly way: specify a~replacement +% "#{##}" for any such token. I~am pretty much afraid I~know no +% better way around this one. +%\item Since "\bgroup" and~"\egroup" are disabled, using any macro that +% in turn uses those will not work while in patch~mode. What +% I~guarantee to keep working in future versions is "\let" (locally, +% for making implicit tokens), +% all expandable constructs (like conditionals) not +% using any of the macros of this package, and~"\patch"es. +% Other things are not necessarily supported in patch~mode. +% Specifically, do not use "\def" or~"\gdef", since manipulation of +% localness might unnecessarily be thwarted if you~do. +%\item Do not change "\toks@" in any way, or use a~macro changing it. +% Cannot happen really, if you listen to the last advice. +%\item Do not rely on the patches either taking place or not before the +% final "\endpatch"! This means, do not use a~patched macro before +% "\endpatch" in ways which require specifically the patched or +% the unpatched version. For example, do not patch one and the same macro +% with two separate "\patch" commands in the same patch session! The +% reason for this is the collecting behaviour for non-global patches. +% And you never really know when a~package of yours might come handy +% non-globally. +%\item For similar reasons, +% do not use "\input patch.tex" in a local group when you are doing +% "\gpatch"es (unless you know what you are doing, as in the case of +% negative~"\globaldefs"). It~might get to~being a~problem sometime. +%\item Never set "\globaldefs" to a~non-zero {\em positive\/} value +% while working with~"\patch", since it will interfere disastrously with +% "patch.tex"'s internals, which heavily work with local groups. +% Anyway, "patch.tex" is by its nature intended for local use only. +%\item Just as a note aside: it is a~very bad idea to set "\globaldefs" +% to non-zero values longer than strictly necessary. It is especially +% a~bad idea to set it to a~negative value while {\em typesetting\/} +% anything, +% because the output routine (implicitly enclosed in a~group) will +% never be able to get anything done permanently, and will therefore +% be repeated over and~over. +%\end{enumerate} +% +%Ok, this should be all there really is to it. If I~look that list over +%again, it seems like groups really occupy my fantasy. +% +%Happy "\patch"ing! +%\StopEventually{\PrintIndex} +%\section{The Implementation} +%We begin by opening our local group and making private control +%sequences accessible: +% \begin{macrocode} +\begingroup +\catcode`@=11 +% \end{macrocode} +%We then set "\toks@" to the initial set of~actions to~perform at the +%end of the~patches. +% \begin{macrocode} +\toks@={\endgroup} +% \end{macrocode} +% \begin{macro}{\endpatch} +% Rather simple. "\outer"~seems not to do much harm here. It might +% help better pinpointing severe failures when using~"\patch". +% \begin{macrocode} +\outer\def\endpatch{\the\toks@} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\futuredef} +% This is somewhat similar to "\futurelet", only not at~all. It +% defines the macro which is its first argument as~code which can +% by use of~"\aftergroup" reproduce the third argument~token, +% and after doing that it will call the second argument. +% All~arguments are removed from the input, unlike "\futurelet"'s +% behaviour. +% \begin{macrocode} +\def\futuredef#1#2{\begingroup +% \end{macrocode} +% We do this locally, and set up a few things to do after the +% group. Since a~"\def" is going to finish what we want, we can +% insert the ``do-after'' token via "\afterassignment". +% \begin{macrocode} + \aftergroup\afterassignment \aftergroup#2% + \aftergroup\def \aftergroup#1% + \futurelet\next\^^90} +% \end{macrocode} +% \end{macro} +% We still have the token in our input stream, but also a copy of +% its meaning in "\next". We first try out some cases which will +% not allow us to treat the next token as an undelimited macro +% parameter. Of course we cannot distinguish explicit from implicit +% tokens, but we rely on the user to explicitly unimplicate possibly +% implicit characters. We will do this ourselves with the following +% two ones: +% \begin{macrocode} +\let\bgroup\relax \let\egroup\relax +% \end{macrocode} +% Now we start checking all problematic cases. +% "\^^90" will substitute an appropriate definition given +% explicitly instead of the following token. If we can, however, we +% rather use the token we get. If you wonder about this name, here +% is why: we have to use hosts of macros because of various +% "\futurelet"-like constructions. Patches occur just in a local group, +% and should not permanently require resources. If we did not use +% one-letter control sequences here, the hash table size would be +% somewhat reduced, permanently, because entries never leave the +% hash table. One letter control sequences, however, are not +% hashed, and can disappear without a trace again. +% \begin{macrocode} +\def\^^90{% + \ifcat\noexpand\next{% + \^^91{\aftergroup{\iffalse}\fi}% + \else\ifcat\noexpand\next}% + \^^91{\iffalse{\fi\aftergroup}}% + \else\ifcat\noexpand\next\space + \^^91{\expandafter\aftergroup\space}% + \else\ifcat\noexpand\next## + \^^91{\aftergroup########}% + \else + \let\next\^^93% + \fi\fi\fi\fi\next} +% \end{macrocode} +% "\^^91" is rather simple. We save the definition in +% "\next@", and we'll call upon this after disposing of the next +% token. +% \begin{macrocode} +\def\^^91#1{\def\next@{\endgroup{#1}}% + \let\next\^^92} +\def\^^92{\afterassignment\next@ \let\next= } +% \end{macrocode} +% "\^^93" will actively get the next token, and produce an +% "\aftergroup" definition from that. It is "\long" in case we are +% dealing with a "\par" token. +% \begin{macrocode} +\long\def\^^93#1{\endgroup{\aftergroup#1}} +% \end{macrocode} +% \begin{macro}{\@ndp@tch} +% This is supposed to be used as a delimiter. So that we may +% check for its appearance conveniently, we define it as its own +% "\futuredef" expansion. +% \begin{macrocode} +\def\@ndp@tch{\aftergroup\@ndp@tch} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\gpatch} +% This is it. If you are in doubt as to what the "\def\next{}" is +% supposed to~achieve, this is~easy. We want to detect whether you +% want a~long macro to be~patched. In that case, you say +% "\long\gpatch"\dots. We can figure this out by comparing +% "\next" to the non-long~"\empty". Of course, we do not +% explicitly check for "\outer"ness. You should not even think of +% wanting to make an "\outer" definition. +% +% We start by defining~"\gpatch", which will in the case +% of~disabled "global"ness revert to~"\patch". Both~"\patch" +% and~"\gpatch" define "\next" as a~macro getting one +% "\@ndp@tch"-delimited argument: +% it is all what should appear after a~"\def". +% "\next"~should make all necessary actions for doing +% the~definition. After setting~up "\next", "\^^a0"~is called, for +% which we wrap up the argument list as a~separate argument. +% \begin{macrocode} +\def\gpatch{\ifnum\globaldefs<\z@ + \expandafter\patch + \else + \expandafter\^^98% + \fi} +\long\def\^^98#1#2#{\def\next{}% + \long\edef\next##1\@ndp@tch% + {\ifx\next\empty\else\long\fi\gdef##1}% + \^^a0#1{#2}} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\patch} +% "\patch"~is a~bit more complicated, because we need to~make +% additions to the current "\toks@"~list. +% \begin{macrocode} +\def\patch#1#2#{\def\next{}% + \long\edef\next##1\@ndp@tch + {\toks@ \noexpand\expandafter {\noexpand\the \toks@ + \ifx\next\empty\else\long\fi \def##1}}% + \^^a0#1{#2}} +% \end{macrocode} +% \end{macro} +% +% Now the real fun starts. We get the argument replacement list, +% and the macro body replacement list. We define a~macro~"\^^e0" +% (the "e" means error) just for knowing the proper macro name for +% error messages. +% +% We prepare in a local +% "\toks@" the definition (because we could not simply +% "\aftergroup" the argument replacement, which could consist of +% any number of~tokens). Note that we start yet another group, +% making the definitions of "\toks@" and "\next" stable. +% +% \begin{macrocode} +\long\def\^^a0#1#2#3#4{\begingroup + \def\^^e0{#1}% + \toks@{\endgroup\next#1#2}% + \begingroup + \aftergroup\the\aftergroup\toks@ +% \end{macrocode} +% We collect the replacement in a continually shrinking token list. +% Do not get annoyed, but we'll use "\toks@" for that, too. +% When we are through with replacements, we'll say "\endgroup", +% after which the definition takes place. +% +% The replacement needs +% to be in a token list instead of a macro in order not to break upon +% encountering hash marks. The use of "\toks@" for this does not +% conflict with its other uses due to the grouping. +% +% After that, we are ready to start the fun by expanding our macro, +% and putting~"\p@check" to~work. +% \begin{macrocode} + \toks@{#4}% + \expandafter\p@check\expandafter{#1#3}\@ndp@tch} +% \end{macrocode} +% \begin{macro}{\p@match} +% \begin{macro}{\p@replace} +% These are token lists holding the current string to be matched +% next, and its replacement string. We +% use token lists~1 and~2 for that. +% \begin{macrocode} +\toksdef\p@match=\@ne +\toksdef\p@replace=\tw@ +% \end{macrocode} +% \end{macro} +% \end{macro} +% \begin{macro}{\p@check} +% We check for any remaining replacements. If there are none, we +% may quit. "\toks@"~is the list of +% remaining substitutions. "\endgroup"~stops and makes the +% definition (check~"\^^a0" to~see~why), "\^^a1"~continues. By the +% way, in case of an~error, we will later use~"\next@" in order to +% tell what replacements were not carried out. +% \begin{macrocode} +\def\p@check{\edef\next@{\the\toks@}% + \ifx\empty\next@ \expandafter\endgroup + \else \expandafter\^^a1\fi} +% \end{macrocode} +% \end{macro} +% \begin{macro}{\p@first} +% This sets "\p@first" to the "\futuredef" expansion of the first +% token we want to~match. "\^^a2"~will rewrap the rest of~"\toks@", +% and needs an (as~to~yet) unmatched closing brace for that. +% It~will provide the matching open one by~itself. +% \begin{macrocode} +\def\^^a1{\iffalse{\fi + \expandafter\futuredef \expandafter\p@first + \expandafter\^^a2\the\toks@}} +% \end{macrocode} +% \end{macro} +% Ok, we rewrap the rest to be matched into~"\p@match", and the +% replacement into~"\p@replace", after which we continue with~"\^^a3". +% \begin{macrocode} +\def\^^a2#1#{\p@match{#1}\afterassignment\^^a3\p@replace} +% \end{macrocode} +% The remaining substitutions we repack into~"\toks@". Now we need to +% insert the matching opening brace for the closing one we put~before. +% \begin{macrocode} +\def\^^a3{\afterassignment\^^a4\toks@\expandafter{\iffalse}\fi} +% \end{macrocode} +% We now get the first (or next) token of the original macro. +% \begin{macrocode} +\def\^^a4{\futuredef\next\^^a5} +% \end{macrocode} +% If this token matches~"\p@first", we check the rest in~"\^^a6". We +% collect in~"\toks@" all tokens matched so far (excluding "\p@first"), +% so that we can +% reinsert them if the match cannot be completed successfully. This~is +% done in a~separate group. If~"\next" turns out to +% be~"\@ndp@tch", however, +% this is an~error indication. It~means that the end of patchable +% material was reached. We call then~"\^^e1", which quits in that +% case in a somewhat unusual (but relatively fast) way, reinserting +% the gotten~"\@ndp@tch". +% +% It does not do any harm that "\next" is contained in conditional +% context. Coming from~"\futuredef", it cannot be "\let" to an +% unmatched conditional, and will correctly be~skipped. +% \begin{macrocode} +\def\^^a5{\ifx\next\p@first + \begingroup \toks@{}\expandafter\^^a6% + \else\ifx\next\@ndp@tch \^^e1\fi + \next \expandafter \^^a4% + \fi} +% \end{macrocode} +% In case of an error, we give the original macro (which has not yet +% been patched). And at definition time, we will show how the macro +% looks like afterwards. +% \begin{macrocode} +\def\^^e1{\let\^^a4\endgroup + \newlinechar`\^^J + \toks@\expandafter{\next@}% + \errorcontextlines\m@ne + \errhelp{I am ignoring inapplicable patches. Go on.}% + \errmessage{When trying to patch + \expandafter\string\^^e0, which was defined as^^J% + \expandafter\meaning\^^e0^^J% + the following patches remained inapplicable:^^J% + \the\toks@^^J% + I will show the results of the succeeded patches as soon^^J% + as I can without further comment, so do not be surprised.}% + \aftergroup\show \expandafter\aftergroup\^^e0% +} +% \end{macrocode} +% Ok, we look whether there are any tokens remaining to be matched. If +% there are not, replacement can go~forth. In~that case, we end our +% local group, and go over to~"\^^ac". If~there are, we continue +% with~"\^^a7". +% \begin{macrocode} +\def\^^a6{\edef\next{\the\p@match}% + \ifx\next\empty \endgroup\expandafter\^^ac% + \else \expandafter\^^a7\fi} +% \end{macrocode} +% We get the next token to be matched into~"\next@" from~"\p@match". +% We~will have to adjust "\p@match" again with a token list +% reassignment. For this we need to insert an unmatched closing brace +% after its expansion, which will again be matched later. +% \begin{macrocode} +\def\^^a7{\iffalse{\fi + \expandafter\futuredef\expandafter\next@ + \expandafter\^^a8\the\p@match}} +% \end{macrocode} +% Ok, here we gather the rest into~"\p@match" and~continue. +% \begin{macrocode} +\def\^^a8{\afterassignment\^^a9\p@match\expandafter{\iffalse}\fi} +% \end{macrocode} +% Now we get the next token from the original macro into~"\next". +% \begin{macrocode} +\def\^^a9{\futuredef\next\^^aa} +% \end{macrocode} +% In case of a match, we continue with~"\^^ab". Otherwise, if~we have +% reached the illegal end of~macro ("\next" set to~"\@ndp@tch"), +% we~stop. +% If~we have no match legally, we reinsert~"\p@first", continue +% scanning with~"\^^a4", reinserting everything matched with the help +% of the "\futuredef" generated "\aftergroup"-sequence in~"\toks@". +% This will hapen also if "\@ndp@tch" indicates something went +% haywire, because "\@ndp@tch" cannot be in a~match sequence (if you +% do not put it there, and you are not allowed to). +% this we do also in the case of error, as you can easily see. +% \begin{macrocode} +\def\^^aa{\ifx\next@\next + \expandafter\^^ab% + \else \aftergroup\p@first + \aftergroup\^^a4% + \the\toks@\next\expandafter\endgroup\fi} +% \end{macrocode} +% We now have to append the "\aftergroup" sequence of the next matched +% token in~"\next" to~"\toks@". After that, we can loop. +% \begin{macrocode} +\def\^^ab{\toks@\expandafter\expandafter\expandafter{% + \expandafter\the\expandafter\toks@\next}% + \^^a6} +% \end{macrocode} +% Ok, here follows the code if a~match {\em was\/} completed. We +% insert the tokens of~"\p@replace". We~have to scan "\p@replace" +% token by~token, so that implicit braces work like in the match +% code sequences. We do this until "\p@replace" is exhausted. Which we +% can detect by finding "\@ndp@tch". +% \begin{macrocode} +\def\^^ac{\expandafter\^^ad\the\p@replace\@ndp@tch} +% \end{macrocode} +% The following analysis loop is about as straight as it can get. +% \begin{macrocode} +\def\^^ad{\futuredef\next\^^ae} +\def\^^ae{\ifx\next\@ndp@tch + \expandafter\p@check + \else + \next \expandafter\^^ad% + \fi} +% \end{macrocode} +% We end here by giving the driver file for the documentation, which +% will typically be extracted using~"docstrip.sty". +% \begin{macrocode} +%<+driver>\documentstyle[doc]{article} +%<+driver> \EnableCrossrefs +%<+driver>% \DisableCrossrefs +%<+driver> +%<+driver> \CodelineIndex +%<+driver>\begin{document} +%<+driver> \DocInput{patch.doc} +%<+driver>\end{document} +% \end{macrocode} +%\Finale diff --git a/Master/texmf-dist/doc/plain/pdcmac/00readme.txt b/Master/texmf-dist/doc/plain/pdcmac/00readme.txt new file mode 100644 index 00000000000..5739d05b91d --- /dev/null +++ b/Master/texmf-dist/doc/plain/pdcmac/00readme.txt @@ -0,0 +1,21 @@ +00readme.txt -*-text-*- Time-stamp: <pdc 1995-03-20> + + PDCMAC, a collection of macros for plain TeX documents. + Release 1.0 -- Spring 1995 + +This is collection of TeX definition files which may be useful for +setting documents using plain TeX (as opposed to more complex formats +like LaTeX). See "install.txt" for installation hints. + +This software may be used and distributed without fee under certain +conditions. While I would like it to be useful, I cannot offer any +guarantee or warranty. See "pdcguide.tex" for more information. + +Please send reports of problems, comments and suggestions to the address +below. If you find pdcmac useful or amusing, please send me a pretty +postcard. + +P. Damian Cugley * * * * * * * * * * * * * * * <damian.cugley@comlab.ox.ac.uk> +Oxford University Computing Laboratory, Parks Road, Oxford OX1 3QD, UK +Alleged Literature, c/o Damian Cugley, 255B Banbury Road, Oxford OX2 7HN, UK +http://boothp1.ecs.ox.ac.uk:5705/people/pdc.html * My other computer is a Linux diff --git a/Master/texmf-dist/doc/plain/pdcmac/copying.txt b/Master/texmf-dist/doc/plain/pdcmac/copying.txt new file mode 100644 index 00000000000..87bc9146ac2 --- /dev/null +++ b/Master/texmf-dist/doc/plain/pdcmac/copying.txt @@ -0,0 +1,358 @@ + GNU GENERAL PUBLIC LICENSE + ************************** + + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 675 Mass Ave, Cambridge, MA 02139, USA + + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + +Preamble +======== + + The licenses for most software are designed to take away your freedom +to share and change it. By contrast, the GNU General Public License is +intended to guarantee your freedom to share and change free software--to +make sure the software is free for all its users. This General Public +License applies to most of the Free Software Foundation's software and +to any other program whose authors commit to using it. (Some other Free +Software Foundation software is covered by the GNU Library General +Public License instead.) You can apply it to your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it if +you want it, that you can change the software or use pieces of it in new +free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 1. This License applies to any program or other work which contains a + notice placed by the copyright holder saying it may be distributed + under the terms of this General Public License. The "Program", + below, refers to any such program or work, and a "work based on the + Program" means either the Program or any derivative work under + copyright law: that is to say, a work containing the Program or a + portion of it, either verbatim or with modifications and/or + translated into another language. (Hereinafter, translation is + included without limitation in the term "modification".) Each + licensee is addressed as "you". + + Activities other than copying, distribution and modification are + not covered by this License; they are outside its scope. The act + of running the Program is not restricted, and the output from the + Program is covered only if its contents constitute a work based on + the Program (independent of having been made by running the + Program). Whether that is true depends on what the Program does. + + 2. You may copy and distribute verbatim copies of the Program's source + code as you receive it, in any medium, provided that you + conspicuously and appropriately publish on each copy an appropriate + copyright notice and disclaimer of warranty; keep intact all the + notices that refer to this License and to the absence of any + warranty; and give any other recipients of the Program a copy of + this License along with the Program. + + You may charge a fee for the physical act of transferring a copy, + and you may at your option offer warranty protection in exchange + for a fee. + + 3. You may modify your copy or copies of the Program or any portion of + it, thus forming a work based on the Program, and copy and + distribute such modifications or work under the terms of Section 1 + above, provided that you also meet all of these conditions: + + a. You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b. You must cause any work that you distribute or publish, that + in whole or in part contains or is derived from the Program or + any part thereof, to be licensed as a whole at no charge to + all third parties under the terms of this License. + + c. If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display + an announcement including an appropriate copyright notice and + a notice that there is no warranty (or else, saying that you + provide a warranty) and that users may redistribute the + program under these conditions, and telling the user how to + view a copy of this License. (Exception: if the Program + itself is interactive but does not normally print such an + announcement, your work based on the Program is not required + to print an announcement.) + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the + Program, and can be reasonably considered independent and separate + works in themselves, then this License, and its terms, do not apply + to those sections when you distribute them as separate works. But + when you distribute the same sections as part of a whole which is a + work based on the Program, the distribution of the whole must be on + the terms of this License, whose permissions for other licensees + extend to the entire whole, and thus to each and every part + regardless of who wrote it. + + Thus, it is not the intent of this section to claim rights or + contest your rights to work written entirely by you; rather, the + intent is to exercise the right to control the distribution of + derivative or collective works based on the Program. + + In addition, mere aggregation of another work not based on the + Program with the Program (or with a work based on the Program) on a + volume of a storage or distribution medium does not bring the other + work under the scope of this License. + + 4. You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms + of Sections 1 and 2 above provided that you also do one of the + following: + + a. Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of + Sections 1 and 2 above on a medium customarily used for + software interchange; or, + + b. Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a + medium customarily used for software interchange; or, + + c. Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with + such an offer, in accord with Subsection b above.) + + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete + source code means all the source code for all modules it contains, + plus any associated interface definition files, plus the scripts + used to control compilation and installation of the executable. + However, as a special exception, the source code distributed need + not include anything that is normally distributed (in either source + or binary form) with the major components (compiler, kernel, and so + on) of the operating system on which the executable runs, unless + that component itself accompanies the executable. + + If distribution of executable or object code is made by offering + access to copy from a designated place, then offering equivalent + access to copy the source code from the same place counts as + distribution of the source code, even though third parties are not + compelled to copy the source along with the object code. + + 5. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense or distribute the Program is + void, and will automatically terminate your rights under this + License. However, parties who have received copies, or rights, + from you under this License will not have their licenses terminated + so long as such parties remain in full compliance. + + 6. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify + or distribute the Program or its derivative works. These actions + are prohibited by law if you do not accept this License. + Therefore, by modifying or distributing the Program (or any work + based on the Program), you indicate your acceptance of this License + to do so, and all its terms and conditions for copying, + distributing or modifying the Program or works based on it. + + 7. Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject + to these terms and conditions. You may not impose any further + restrictions on the recipients' exercise of the rights granted + herein. You are not responsible for enforcing compliance by third + parties to this License. + + 8. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent + issues), conditions are imposed on you (whether by court order, + agreement or otherwise) that contradict the conditions of this + License, they do not excuse you from the conditions of this + License. If you cannot distribute so as to satisfy simultaneously + your obligations under this License and any other pertinent + obligations, then as a consequence you may not distribute the + Program at all. For example, if a patent license would not permit + royalty-free redistribution of the Program by all those who receive + copies directly or indirectly through you, then the only way you + could satisfy both it and this License would be to refrain entirely + from distribution of the Program. + + If any portion of this section is held invalid or unenforceable + under any particular circumstance, the balance of the section is + intended to apply and the section as a whole is intended to apply + in other circumstances. + + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of + any such claims; this section has the sole purpose of protecting + the integrity of the free software distribution system, which is + implemented by public license practices. Many people have made + generous contributions to the wide range of software distributed + through that system in reliance on consistent application of that + system; it is up to the author/donor to decide if he or she is + willing to distribute software through any other system and a + licensee cannot impose that choice. + + This section is intended to make thoroughly clear what is believed + to be a consequence of the rest of this License. + + 9. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, + the original copyright holder who places the Program under this + License may add an explicit geographical distribution limitation + excluding those countries, so that distribution is permitted only + in or among countries not thus excluded. In such case, this + License incorporates the limitation as if written in the body of + this License. + + 10. The Free Software Foundation may publish revised and/or new + versions of the General Public License from time to time. Such new + versions will be similar in spirit to the present version, but may + differ in detail to address new problems or concerns. + + Each version is given a distinguishing version number. If the + Program specifies a version number of this License which applies to + it and "any later version", you have the option of following the + terms and conditions either of that version or of any later version + published by the Free Software Foundation. If the Program does not + specify a version number of this License, you may choose any + version ever published by the Free Software Foundation. + + 11. If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the + author to ask for permission. For software which is copyrighted by + the Free Software Foundation, write to the Free Software + Foundation; we sometimes make exceptions for this. Our decision + will be guided by the two goals of preserving the free status of + all derivatives of our free software and of promoting the sharing + and reuse of software generally. + + NO WARRANTY + + 12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO + WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE + LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS + AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY + OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS + FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND + PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE + DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR + OR CORRECTION. + + 13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN + WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY + MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE + LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, + INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR + INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF + DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU + OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY + OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN + ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + +How to Apply These Terms to Your New Programs +============================================= + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these +terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least the +"copyright" line and a pointer to where the full notice is found. + + ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES. + Copyright (C) 19YY NAME OF AUTHOR + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) 19YY NAME OF AUTHOR + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the +appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and `show +c'; they could even be mouse-clicks or menu items--whatever suits your +program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + SIGNATURE OF TY COON, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications +with the library. If this is what you want to do, use the GNU Library +General Public License instead of this License. + diff --git a/Master/texmf-dist/doc/plain/pdcmac/install.txt b/Master/texmf-dist/doc/plain/pdcmac/install.txt new file mode 100644 index 00000000000..51455322ef0 --- /dev/null +++ b/Master/texmf-dist/doc/plain/pdcmac/install.txt @@ -0,0 +1,91 @@ +install.txt -*-text-*- Time-stamp: <pdc 1995-02-23> + + INSTALLING PDCMAC + +1. GNERIC INSTALLATION + + The file "contents.txt" gives a list of all the files (except + itself) with their sizes in bytes. + + The macro files are packaged with their documentation in "dtx" + files (the LaTeX 2e distribution uses files with the same suffix + for a similar purpose). + + You do not need Docstrip or LaTeX to unpack these files; all you + need is a copy of "pdccode.tex". Just run plain TeX on the + "dtx" files to generate the macro files and the printed + documentation all at the same time. + + Then put the macro files somewhere where TeX can find them. For + systems with the new TeX Directory Structure this directory + might be "$texmf/tex/plain/pdcmac/"; for UNIXTeX 6.1 it might be + "$texmf/tex/plain/"; for older TeX it might be "$tex/inputs" or + "$tex/macros". + + You may want to put the DVI files and the DTX files together in + a documentation directory if you have one. On TDS systems this + might be "$texmf/doc/pdcmac/". + + +2. UNIX SYSTEMS + + For the benefit of people on UNIX systems I can supply a + Makefile template and a configuration script. The conventions + for the config scriopt are based on the GNU Coding Standards. + +(1) Configuration. Run the command "./configure" (you may need to say + "sh configure"); this is a shell script that attempts to guess + sensible values for things like "texdir" (the directory to put + TeX macro files). It generates a shellscript "config.status" + which records the current configuration; running it recreates + the "Makefile". + + The "configure" script understands the following options. + *You should not need to specify any of these.* + + -n, -nocreate, --nocreate + Make "config.status" but don't run it to generate "Makefile". + + -h, -help, --help + Print a summary of options. + + -pDIR, -prefix DIR, --prefix=DIR + Set the "prefix" for directory names. FOr example, "-p/usr" + indcates that TeX files are under "/usr/texmf" or "/usr/tex" or + somesuch. + + -sDIR, -srcdir DIR, --srcdir=DIR + Tell "configure" where the source files are. This is used when + building the package in a different directory. Normally even + in this case "configure" can guess the cirrect dierctory by + examining $0. + + -tDIR, -texdir DIR, --texdir=DIR + Tell "configure" where TeX files are (this makes -p redundant). + For example "-t/usr/texmf". + + -wtds, -with tds, --with-tds + Tell "configure" you have a new-style TeX Directory Structure. + Usually "configure" can guess correctly. + + Other options are ignored. + +(2) Run "make". The makefile generated by "configure" is tested with + GNU "make". The makefile understands the following conventional + targets: + + "make" + Generates all the "tex" macro files, and runs TeX on the other + documentation files. + + "make install" + Copies the macro files into TeX's macros directory, and the DVI + files into the $docdir. + + "make uninstall" + Deletes the files that would be created by "make install". + + "make mostlyclean|clean|distclean|realclean" + Delete files made from source files. "mostlyclean" removes the + ones that are generated most often; "realclean" removes even + those that are rarely deleted. diff --git a/Master/texmf-dist/doc/plain/pdcmac/news.txt b/Master/texmf-dist/doc/plain/pdcmac/news.txt new file mode 100644 index 00000000000..79c7dc241d0 --- /dev/null +++ b/Master/texmf-dist/doc/plain/pdcmac/news.txt @@ -0,0 +1,14 @@ +news.txt -*-text-*- Time-stamp: <pdc 1995-04-06> + + +Changes to the PDCMAC package since Release 1.0 + +* Support for Emacs tags added + +The shellscript "dtxtags" generates a tags file in the style of etags(1). + +* Bug fixes + +** Nested numbered lists will work beyond (e) +** partial pages don't have spurious space added +** Maamac.tex can be used on its own (it lacked a definition of \toksa) diff --git a/Master/texmf-dist/doc/plain/pdcmac/oput01.eps b/Master/texmf-dist/doc/plain/pdcmac/oput01.eps new file mode 100644 index 00000000000..78056236005 --- /dev/null +++ b/Master/texmf-dist/doc/plain/pdcmac/oput01.eps @@ -0,0 +1,423 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: oput01.fig +%%Creator: fig2dev +%%CreationDate: Thu Apr 6 12:42:28 1995 +%%For: pdc@booth35.ecs (Damian Cugley,MC86,S.E.H.,N) +%%BoundingBox: 0 0 424 499 +%%Pages: 1 +%%EndComments +/mtrx matrix def +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def +%%EndProlog + +%%Page: 1 1 + +0 setlinecap 0 setlinejoin +-8 27 translate +0.0 499.0 translate 0.900 -0.900 scale +0.500 setlinewidth +% Polyline +n 89 329 m 224 329 l gs s gr +0.000 setlinewidth +% Polyline +n 224 329 m 224 317 l 89 317 l 89 329 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 299 m 224 299 l gs s gr +0.000 setlinewidth +% Polyline +n 224 299 m 224 287 l 89 287 l 89 299 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 284 m 224 284 l gs s gr +0.000 setlinewidth +% Polyline +n 224 284 m 224 272 l 89 272 l 89 284 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 269 m 224 269 l gs s gr +0.000 setlinewidth +% Polyline +n 224 269 m 224 257 l 89 257 l 89 269 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 254 m 224 254 l gs s gr +0.000 setlinewidth +% Polyline +n 224 254 m 224 242 l 89 242 l 89 254 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 239 m 224 239 l gs s gr +0.000 setlinewidth +% Polyline +n 224 239 m 224 227 l 89 227 l 89 239 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 224 m 224 224 l gs s gr +0.000 setlinewidth +% Polyline +n 224 224 m 224 212 l 89 212 l 89 224 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 209 m 224 209 l gs s gr +0.000 setlinewidth +% Polyline +n 224 209 m 224 197 l 89 197 l 89 209 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 194 m 224 194 l gs s gr +0.000 setlinewidth +% Polyline +n 224 194 m 224 182 l 89 182 l 89 194 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 179 m 224 179 l gs s gr +0.000 setlinewidth +% Polyline +n 224 179 m 224 167 l 89 167 l 89 179 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 164 m 224 164 l gs s gr +0.000 setlinewidth +% Polyline +n 224 164 m 224 152 l 89 152 l 89 164 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 149 m 224 149 l gs s gr +0.000 setlinewidth +% Polyline +n 224 149 m 224 137 l 89 137 l 89 149 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 134 m 224 134 l gs s gr +0.000 setlinewidth +% Polyline +n 224 134 m 224 122 l 89 122 l 89 134 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 119 m 224 119 l gs s gr +0.000 setlinewidth +% Polyline +n 224 119 m 224 107 l 89 107 l 89 119 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 104 m 224 104 l gs s gr +0.000 setlinewidth +% Polyline +n 224 104 m 224 92 l 89 92 l 89 104 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 89 89 m 224 89 l gs s gr +0.000 setlinewidth +% Polyline +n 224 89 m 224 77 l 89 77 l 89 89 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 149 m 374 149 l gs s gr +0.000 setlinewidth +% Polyline +n 374 149 m 374 137 l 239 137 l 239 149 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 134 m 374 134 l gs s gr +0.000 setlinewidth +% Polyline +n 374 134 m 374 122 l 239 122 l 239 134 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 119 m 374 119 l gs s gr +0.000 setlinewidth +% Polyline +n 374 119 m 374 107 l 239 107 l 239 119 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 104 m 374 104 l gs s gr +0.000 setlinewidth +% Polyline +n 374 104 m 374 92 l 239 92 l 239 104 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 89 m 374 89 l gs s gr +0.000 setlinewidth +% Polyline +n 374 89 m 374 77 l 239 77 l 239 89 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 224 m 374 224 l gs s gr +0.000 setlinewidth +% Polyline +n 374 224 m 374 212 l 239 212 l 239 224 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 209 m 374 209 l gs s gr +0.000 setlinewidth +% Polyline +n 374 209 m 374 197 l 239 197 l 239 209 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 194 m 374 194 l gs s gr +0.000 setlinewidth +% Polyline +n 374 194 m 374 182 l 239 182 l 239 194 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 179 m 374 179 l gs s gr +0.000 setlinewidth +% Polyline +n 374 179 m 374 167 l 239 167 l 239 179 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 164 m 374 164 l gs s gr +0.000 setlinewidth +% Polyline +n 374 164 m 374 152 l 239 152 l 239 164 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 299 m 374 299 l gs s gr +0.000 setlinewidth +% Polyline +n 374 299 m 374 287 l 239 287 l 239 299 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 284 m 374 284 l gs s gr +0.000 setlinewidth +% Polyline +n 374 284 m 374 272 l 239 272 l 239 284 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 269 m 374 269 l gs s gr +0.000 setlinewidth +% Polyline +n 374 269 m 374 257 l 239 257 l 239 269 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 254 m 374 254 l gs s gr +0.000 setlinewidth +% Polyline +n 374 254 m 374 242 l 239 242 l 239 254 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 239 m 374 239 l gs s gr +0.000 setlinewidth +% Polyline +n 374 239 m 374 227 l 239 227 l 239 239 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 374 m 374 374 l gs s gr +0.000 setlinewidth +% Polyline +n 374 374 m 374 362 l 239 362 l 239 374 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 359 m 374 359 l gs s gr +0.000 setlinewidth +% Polyline +n 374 359 m 374 347 l 239 347 l 239 359 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 344 m 374 344 l gs s gr +0.000 setlinewidth +% Polyline +n 374 344 m 374 332 l 239 332 l 239 344 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 329 m 374 329 l gs s gr +0.000 setlinewidth +% Polyline +n 374 329 m 374 317 l 239 317 l 239 329 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 314 m 374 314 l gs s gr +0.000 setlinewidth +% Polyline +n 374 314 m 374 302 l 239 302 l 239 314 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 449 m 374 449 l gs s gr +0.000 setlinewidth +% Polyline +n 374 449 m 374 437 l 239 437 l 239 449 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 434 m 374 434 l gs s gr +0.000 setlinewidth +% Polyline +n 374 434 m 374 422 l 239 422 l 239 434 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 419 m 374 419 l gs s gr +0.000 setlinewidth +% Polyline +n 374 419 m 374 407 l 239 407 l 239 419 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 404 m 374 404 l gs s gr +0.000 setlinewidth +% Polyline +n 374 404 m 374 392 l 239 392 l 239 404 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 389 m 374 389 l gs s gr +0.000 setlinewidth +% Polyline +n 374 389 m 374 377 l 239 377 l 239 389 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 494 m 374 494 l gs s gr +0.000 setlinewidth +% Polyline +n 374 494 m 374 482 l 239 482 l 239 494 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 479 m 374 479 l gs s gr +0.000 setlinewidth +% Polyline +n 374 479 m 374 467 l 239 467 l 239 479 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 239 464 m 374 464 l gs s gr +0.000 setlinewidth +% Polyline +n 374 464 m 374 452 l 239 452 l 239 464 l + clp gs 0.85 setgray fill gr +% Polyline +n 449 59 m 449 47 l 89 47 l 89 59 l + clp gs 0.80 setgray fill gr +% Polyline +n 449 524 m 449 512 l 89 512 l 89 524 l + clp gs 0.80 setgray fill gr +0.500 setlinewidth +n 254 344 m 254 344 l gs s gr + [4.000000] 0 setdash +% Polyline +n 449 494 m 449 77 l 389 77 l 389 494 l + clp gs s gr + [] 0 setdash + [4.000000] 0 setdash +% Polyline +n 299 494 m 299 77 l 239 77 l 239 494 l + clp gs s gr + [] 0 setdash + [4.000000] 0 setdash +% Polyline +n 149 494 m 149 77 l 89 77 l 89 494 l + clp gs s gr + [] 0 setdash + [4.000000] 0 setdash +% Polyline +n 374 494 m 374 77 l 314 77 l 314 494 l + clp gs s gr + [] 0 setdash + [4.000000] 0 setdash +% Polyline +n 224 494 m 224 77 l 164 77 l 164 494 l + clp gs s gr + [] 0 setdash +% Polyline +n 308 569 m 317 581 l 320 581 l gs s gr +1.000 setlinewidth +% Polyline +n 479 554 m 479 29 l 59 29 l 59 554 l + clp gs s gr +% Polyline +n 89 308 m 224 308 l gs s gr +0.500 setlinewidth +% Polyline +n 89 59 m 449 59 l gs s gr +% Polyline +n 29 344 m 83 308 l gs s gr +n 75.234 310.774 m 83.000 308.000 l 77.453 314.102 l gs 2 setlinejoin s gr +% Polyline +n 269 563 m 269 569 l 344 569 l 344 563 l gs s gr +% Polyline +n 89 524 m 449 524 l gs s gr +/Times-Roman findfont 12.00 scalefont setfont +113 326 m +gs 1 -1 scale (caption) show gr +/Times-Roman findfont 12.00 scalefont setfont +146 215 m +gs 1 -1 scale (column 0) show gr +/Times-Roman findfont 12.00 scalefont setfont +311 218 m +gs 1 -1 scale (column 1) show gr +/Times-Roman findfont 12.00 scalefont setfont +275 53 m +gs 1 -1 scale (headline) show gr +/Times-Roman findfont 12.00 scalefont setfont +359 515 m +gs 1 -1 scale (footline) show gr +/Times-Roman findfont 12.00 scalefont setfont +323 584 m +gs 1 -1 scale (grid cell) show gr +/Times-Roman findfont 12.00 scalefont setfont +8 371 m +gs 1 -1 scale (separator) show gr +/Times-Roman findfont 12.00 scalefont setfont +8 359 m +gs 1 -1 scale (caption) show gr +/Times-Roman findfont 12.00 scalefont setfont +104 419 m +gs 1 -1 scale (illustration) show gr +/Times-Roman findfont 12.00 scalefont setfont +419 404 m +gs 1 -1 scale 90.0 rotate (illustration) show gr +showpage diff --git a/Master/texmf-dist/doc/plain/pdcmac/oput02.eps b/Master/texmf-dist/doc/plain/pdcmac/oput02.eps new file mode 100644 index 00000000000..b36b202cea1 --- /dev/null +++ b/Master/texmf-dist/doc/plain/pdcmac/oput02.eps @@ -0,0 +1,404 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Title: oput02.fig +%%Creator: fig2dev +%%CreationDate: Thu Apr 6 12:42:30 1995 +%%For: pdc@booth35.ecs (Damian Cugley,MC86,S.E.H.,N) +%%BoundingBox: 0 0 443 499 +%%Pages: 1 +%%EndComments +/mtrx matrix def +/l {lineto} bind def +/m {moveto} bind def +/s {stroke} bind def +/n {newpath} bind def +/gs {gsave} bind def +/gr {grestore} bind def +/clp {closepath} bind def +/graycol {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul +4 -2 roll mul setrgbcolor} bind def +/col0 {0 0 0 setrgbcolor} bind def +/col1 {0 0 1 setrgbcolor} bind def +/col2 {0 1 0 setrgbcolor} bind def +/col3 {0 1 1 setrgbcolor} bind def +/col4 {1 0 0 setrgbcolor} bind def +/col5 {1 0 1 setrgbcolor} bind def +/col6 {1 1 0 setrgbcolor} bind def +/col7 {1 1 1 setrgbcolor} bind def +%%EndProlog + +%%Page: 1 1 + +0 setlinecap 0 setlinejoin +-54 27 translate +0.0 499.0 translate 0.900 -0.900 scale +0.000 setlinewidth +% Polyline +n 254 329 m 254 317 l 179 317 l 179 329 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 179 329 m 254 329 l gs s gr +0.000 setlinewidth +% Polyline +n 254 344 m 254 332 l 179 332 l 179 344 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 179 344 m 254 344 l gs s gr +0.000 setlinewidth +% Polyline +n 254 299 m 254 287 l 179 287 l 179 299 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 179 299 m 254 299 l gs s gr +0.000 setlinewidth +% Polyline +n 254 284 m 254 272 l 179 272 l 179 284 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 179 284 m 254 284 l gs s gr +0.000 setlinewidth +% Polyline +n 254 269 m 254 257 l 179 257 l 179 269 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 179 269 m 254 269 l gs s gr +0.000 setlinewidth +% Polyline +n 254 254 m 254 242 l 179 242 l 179 254 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 179 254 m 254 254 l gs s gr +0.000 setlinewidth +% Polyline +n 254 239 m 254 227 l 179 227 l 179 239 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 179 239 m 254 239 l gs s gr +0.000 setlinewidth +% Polyline +n 254 224 m 254 212 l 179 212 l 179 224 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 179 224 m 254 224 l gs s gr +0.000 setlinewidth +% Polyline +n 254 209 m 254 197 l 179 197 l 179 209 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 179 209 m 254 209 l gs s gr +0.000 setlinewidth +% Polyline +n 254 194 m 254 182 l 179 182 l 179 194 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 179 194 m 254 194 l gs s gr +0.000 setlinewidth +% Polyline +n 254 179 m 254 167 l 179 167 l 179 179 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 179 179 m 254 179 l gs s gr +0.000 setlinewidth +% Polyline +n 344 359 m 344 347 l 269 347 l 269 359 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 359 m 344 359 l gs s gr +0.000 setlinewidth +% Polyline +n 344 329 m 344 317 l 269 317 l 269 329 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 329 m 344 329 l gs s gr +0.000 setlinewidth +% Polyline +n 344 344 m 344 332 l 269 332 l 269 344 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 344 m 344 344 l gs s gr +0.000 setlinewidth +% Polyline +n 344 299 m 344 287 l 269 287 l 269 299 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 299 m 344 299 l gs s gr +0.000 setlinewidth +% Polyline +n 344 284 m 344 272 l 269 272 l 269 284 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 284 m 344 284 l gs s gr +0.000 setlinewidth +% Polyline +n 344 269 m 344 257 l 269 257 l 269 269 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 269 m 344 269 l gs s gr +0.000 setlinewidth +% Polyline +n 344 254 m 344 242 l 269 242 l 269 254 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 254 m 344 254 l gs s gr +0.000 setlinewidth +% Polyline +n 344 239 m 344 227 l 269 227 l 269 239 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 239 m 344 239 l gs s gr +0.000 setlinewidth +% Polyline +n 344 224 m 344 212 l 269 212 l 269 224 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 224 m 344 224 l gs s gr +0.000 setlinewidth +% Polyline +n 344 209 m 344 197 l 269 197 l 269 209 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 209 m 344 209 l gs s gr +0.000 setlinewidth +% Polyline +n 344 194 m 344 182 l 269 182 l 269 194 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 194 m 344 194 l gs s gr +0.000 setlinewidth +% Polyline +n 344 179 m 344 167 l 269 167 l 269 179 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 179 m 344 179 l gs s gr +0.000 setlinewidth +% Polyline +n 344 374 m 344 362 l 269 362 l 269 374 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 374 m 344 374 l gs s gr +0.000 setlinewidth +% Polyline +n 344 389 m 344 377 l 269 377 l 269 389 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 389 m 344 389 l gs s gr +0.000 setlinewidth +% Polyline +n 344 314 m 344 302 l 269 302 l 269 314 l + clp gs 0.85 setgray fill gr +0.500 setlinewidth +% Polyline +n 269 314 m 344 314 l gs s gr +% Polyline +n 254 389 m 254 164 l 179 164 l 179 389 l + clp gs s gr + [4.000000] 0 setdash +% Polyline +n 164 389 m 164 164 l 89 164 l 89 389 l + clp gs s gr + [] 0 setdash +% Polyline +n 344 389 m 344 164 l 269 164 l 269 389 l + clp gs s gr + [4.000000] 0 setdash +% Polyline +n 434 164 m 434 74 l 89 74 l 89 164 l + clp gs s gr + [] 0 setdash +0.000 setlinewidth +% Polyline +n 434 59 m 434 47 l 89 47 l 89 59 l + clp gs 0.80 setgray fill gr +% Polyline +n 434 524 m 434 512 l 89 512 l 89 524 l + clp gs 0.80 setgray fill gr +0.500 setlinewidth + [4.000000] 0 setdash +% Polyline +n 434 389 m 434 164 l 359 164 l 359 389 l + clp gs s gr + [] 0 setdash +n 97.000 571.000 m 89.000 569.000 l 97.000 567.000 l gs 2 setlinejoin s gr +% Polyline +n 89 569 m 434 569 l gs s gr +n 426.000 567.000 m 434.000 569.000 l 426.000 571.000 l gs 2 setlinejoin s gr +n 522.000 502.000 m 524.000 494.000 l 526.000 502.000 l gs 2 setlinejoin s gr +% Polyline +n 524 494 m 524 554 l gs s gr +n 526.000 546.000 m 524.000 554.000 l 522.000 546.000 l gs 2 setlinejoin s gr +n 537.000 37.000 m 539.000 29.000 l 541.000 37.000 l gs 2 setlinejoin s gr +% Polyline +n 539 29 m 539 554 l gs s gr +n 541.000 546.000 m 539.000 554.000 l 537.000 546.000 l gs 2 setlinejoin s gr +n 67.000 586.000 m 59.000 584.000 l 67.000 582.000 l gs 2 setlinejoin s gr +% Polyline +n 59 584 m 479 584 l gs s gr +n 471.000 582.000 m 479.000 584.000 l 471.000 586.000 l gs 2 setlinejoin s gr +n 522.000 37.000 m 524.000 29.000 l 526.000 37.000 l gs 2 setlinejoin s gr +% Polyline +n 524 29 m 524 74 l gs s gr +n 526.000 66.000 m 524.000 74.000 l 522.000 66.000 l gs 2 setlinejoin s gr + [4.000000] 0 setdash +% Polyline +n 425 89 m 515 89 l gs s gr + [] 0 setdash +% Polyline +n 449 59 m 449 74 l gs s gr +n 451.000 66.000 m 449.000 74.000 l 447.000 66.000 l gs 2 setlinejoin s gr +% Polyline +n 449 104 m 449 89 l gs s gr +n 447.000 97.000 m 449.000 89.000 l 451.000 97.000 l gs 2 setlinejoin s gr +% Polyline +n 329 158 m 344 158 l gs s gr +n 336.000 156.000 m 344.000 158.000 l 336.000 160.000 l gs 2 setlinejoin s gr +% Polyline +n 374 158 m 359 158 l gs s gr +n 367.000 160.000 m 359.000 158.000 l 367.000 156.000 l gs 2 setlinejoin s gr +n 507.000 67.000 m 509.000 59.000 l 511.000 67.000 l gs 2 setlinejoin s gr +% Polyline +n 509 59 m 509 89 l gs s gr +n 511.000 81.000 m 509.000 89.000 l 507.000 81.000 l gs 2 setlinejoin s gr +n 492.000 502.000 m 494.000 494.000 l 496.000 502.000 l gs 2 setlinejoin s gr +% Polyline +n 494 494 m 494 527 l gs s gr +n 496.000 519.000 m 494.000 527.000 l 492.000 519.000 l gs 2 setlinejoin s gr + [4.000000] 0 setdash +% Polyline +n 431 59 m 515 59 l gs s gr + [] 0 setdash +n 492.000 82.000 m 494.000 74.000 l 496.000 82.000 l gs 2 setlinejoin s gr +% Polyline +n 494 74 m 494 494 l gs s gr +n 496.000 486.000 m 494.000 494.000 l 492.000 486.000 l gs 2 setlinejoin s gr +% Polyline +n 89 524 m 434 524 l gs s gr +% Polyline +n 89 59 m 434 59 l gs s gr +1.000 setlinewidth +% Polyline +n 479 554 m 479 29 l 59 29 l 59 554 l + clp gs s gr +0.500 setlinewidth +% Polyline +n 155 284 m 155 299 l gs s gr +n 157.000 291.000 m 155.000 299.000 l 153.000 291.000 l gs 2 setlinejoin s gr +% Polyline +n 155 329 m 155 314 l gs s gr +n 153.000 322.000 m 155.000 314.000 l 157.000 322.000 l gs 2 setlinejoin s gr +n 187.000 160.000 m 179.000 158.000 l 187.000 156.000 l gs 2 setlinejoin s gr +% Polyline +n 179 158 m 254 158 l gs s gr +n 246.000 156.000 m 254.000 158.000 l 246.000 160.000 l gs 2 setlinejoin s gr +n 363.000 172.000 m 365.000 164.000 l 367.000 172.000 l gs 2 setlinejoin s gr +% Polyline +n 365 164 m 365 389 l gs s gr +n 367.000 381.000 m 365.000 389.000 l 363.000 381.000 l gs 2 setlinejoin s gr +1.000 setlinewidth +% Polyline +n 170 164 m 170 389 l gs s gr +% Polyline +n 179 308 m 254 308 l gs s gr +% Polyline +n 260 164 m 260 389 l gs s gr +% Polyline +n 350 164 m 350 389 l gs s gr +0.500 setlinewidth + [4.000000] 0 setdash +% Polyline +n 89 389 m 89 494 l 434 494 l 434 389 l + clp gs s gr + [] 0 setdash +/Times-Italic findfont 10.00 scalefont setfont +269 566 m +gs 1 -1 scale (bodywd) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +269 581 m +gs 1 -1 scale (paperwd) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +521 524 m +gs 1 -1 scale 90.0 rotate (botmg) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +491 509 m +gs 1 -1 scale 90.0 rotate (footlineskip) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +491 284 m +gs 1 -1 scale 90.0 rotate (bodyht) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +536 284 m +gs 1 -1 scale 90.0 rotate (paperht) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +506 74 m +gs 1 -1 scale 90.0 rotate (headlineskip) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +521 53 m +gs 1 -1 scale 90.0 rotate (topmg) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +449 86 m +gs 1 -1 scale (topskip) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +350 155 m +gs 1 -1 scale (colsep) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +269 119 m +gs 1 -1 scale (topbox) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +269 464 m +gs 1 -1 scale (botbox) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +269 518 m +gs 1 -1 scale (footline) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +254 56 m +gs 1 -1 scale (headline) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +218 266 m +gs 1 -1 scale (column 0) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +305 266 m +gs 1 -1 scale (column 1) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +125 221 m +gs 1 -1 scale (leftbox) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +218 338 m +gs 1 -1 scale (caption) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +215 374 m +gs 1 -1 scale (illo) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +215 152 m +gs 1 -1 scale (colwd) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +374 284 m +gs 1 -1 scale 90.0 rotate (colht) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +407 251 m +gs 1 -1 scale (rightbox) dup stringwidth pop 2 div neg 0 rmoveto show gr +/Times-Italic findfont 10.00 scalefont setfont +152 308 m +gs 1 -1 scale 90.0 rotate (capsep) dup stringwidth pop 2 div neg 0 rmoveto show gr +showpage diff --git a/Master/texmf-dist/doc/plain/pdcmac/version.txt b/Master/texmf-dist/doc/plain/pdcmac/version.txt new file mode 100644 index 00000000000..bb3870108d0 --- /dev/null +++ b/Master/texmf-dist/doc/plain/pdcmac/version.txt @@ -0,0 +1,19 @@ +* pdcmac release 1.0, patch level 01 * +Version ID list generated 1995-04-06 + +maamac.dtx = 1.5 1995/04/06 13:33:44 pdc Exp +magrmac.dtx = 1.3 1995/03/29 16:32:24 pdc Exp +pdcadobe.dtx = 1.3 1995/03/30 16:07:31 pdc Exp +pdccode.dtx = 1.6 1995/03/30 16:08:32 pdc Exp +pdcfmt2.dtx = 2.4 1995/04/06 11:55:16 pdc Exp +pdcfsel.dtx = 3.5 1995/03/28 19:05:54 pdc Exp +pdcl1maa.dtx = 1.3 1995/03/30 16:09:52 pdc Exp +pdcmisc.dtx = 1.4 1995/03/30 16:13:08 pdc Exp +pdcoput5.dtx = 5.3 1995/04/06 11:51:03 pdc Exp +pdcsty.dtx = 1.2 1995/03/30 16:12:17 pdc Exp + +configure = 1.0 Time-stamp: <pdc 1995-03-24> +dtxtags = 1.1 Time-stamp: <pdc 1995-04-06> +fig2epsf = 1.0 Time-stamp: <pdc 1995-03-24> +pinstall = 1.1 Time-stamp: <pdc 1995-03-24> +pmkdir = 1.0 Time-stamp: <pdc 1995-03-27> diff --git a/Master/texmf-dist/doc/plain/plgraph/00readme.txt b/Master/texmf-dist/doc/plain/plgraph/00readme.txt new file mode 100644 index 00000000000..ccabe9f77ca --- /dev/null +++ b/Master/texmf-dist/doc/plain/plgraph/00readme.txt @@ -0,0 +1,105 @@ + +Graphics code for non-LaTeX users. +================================== + +This directory provides a small wrapper file such that users of +formats based on plain TeX may make use of some of the parts of the +standard LaTeX distribution. + +These files are *NOT* supported by the LaTeX3 project, and any +problems with them should *NOT* be reported to the LaTeX bugs system. + +Currently problems may be reported to me, david@dcarlisle.demon.co.uk +although as I only ever use LaTeX for documents, these files have not +been extensively tested. If some plain TeX user wants to `adopt' them +and take over their support then they are welcome to it:-) + +David Carlisle 1995/01/29 + 1996/11/13 + +Copyright 1995 1996 David Carlisle + + All the files in this directory may be redistributed and/or modified + under the terms of the LaTeX Project Public License distributed from + CTAN archives in directory macros/latex/base/lppl.txt; either + version 1 of the License, or (at your option) any later version. + + + +This directory contains + +00readme.txt This file. + +exmplpic.tex + A plain TeX document using LaTeX' `picture mode': a portable + means of producing simple diagrams. + +exmplgrf.tex + A plain TeX document using the LaTeX graphicx package, for + rotating and scaling text, and include PostScript and other + graphics formats. (This will include the file a.ps available + in the LaTeX graphics distribution.) + +exmplcol.tex + A plain TeX document using the LaTeX color package, for + producing colour. + +exmplpfg.tex + A plain TeX document using the contributed LaTeX psfrag package, + for including PostScript documents, while replacing certain text + strings with TeX typeset replacements. This uses the example.eps + figure from the psfrag 3.0 distribution. + +miniltx.tex + A small `miniLaTeX' that defines fakes or otherwise hacks + sufficient bits of LaTeX internals so that the packages can load. + +picture.tex + The user interface to the picture environment. + \input picture. + Normally a plain-style syntax is used, viz + \picture(100,100) + .... + \endpicture + + However if the command \LaTeXbegin is issued, then a LaTeX + syntax of + \begin{picture}(100,100) + .... + \end{picture} + May be used. this may be prefered if the picture is being copied + from a LaTeX document, or if it is produced automatically from + a drawing tool such as xfig or texcad. + +autopict.ins + picture.tex requires the use of the Standard LaTeX file + autopict.sty. To generate this, either run the autoload.ins + install file in the main LaTeX distribution, which will make + autopict.sty along with some other files (not needed here) or + alternatively just obtain obtain ltpictur.dtx and docstrip.tex + from the LaTeX distribution, and TeX the file autopict.ins that + is included in this distribution. + + +graphicx.tex + The user interface to the graphicx package. + \input graphicx + See the documentation in grfguide.ps in the LaTeX graphics + distribution. + This file sets the driver to be dvips. If you + use another driver, edit accordingly. + +color.tex + The user interface to the color package. + \input color + See the documentation in grfguide.ps in the LaTeX graphics + distribution. + This file sets the driver to be dvips. If you + use another driver, edit accordingly. + + +psfrag.tex + The user interface to the psfrag package. + \input psfrag + See the documentation in pfgguide.tex in the psfrag distribution, + and the example document pfgexmpl.tex included here.
\ No newline at end of file diff --git a/Master/texmf-dist/doc/plain/plgraph/autopict.ins b/Master/texmf-dist/doc/plain/plgraph/autopict.ins new file mode 100644 index 00000000000..f6cc2fc7814 --- /dev/null +++ b/Master/texmf-dist/doc/plain/plgraph/autopict.ins @@ -0,0 +1,102 @@ +%% +%% docstrip install file for autopict.sty (only) +%% based on autoload.ins in the LaTeX distribution. + +%% +\def\batchfile{autopict.ins} +\input docstrip + +\let\interactive\relax + +{\ifx\generate\undefined +\Msg{**********************************************} +\Msg{*} +\Msg{* This installation requires docstrip} +\Msg{* version 2.3c or later.} +\Msg{*} +\Msg{* An older version of docstrip has been input} +\Msg{*} +\Msg{**********************************************} +\errhelp{Move or rename old docstrip.tex.} +\errmessage{Old docstrip in input path} +\batchmode +\csname @@end\endcsname +\fi} + +\keepsilent +\declarepreamble\mainpreamble + +This is a generated file. + +Copyright 1993 1994 1995 1996 +The LaTeX3 Project and any individual authors listed elsewhere +in this file. + +For further copyright information, and conditions for modification +and distribution, see the file legal.txt, and any other copyright +notices in this file. + +This file is part of the LaTeX2e system. +---------------------------------------- + This system is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + + For error reports concerning UNCHANGED versions of this file no + more than one year old, see bugs.txt. + + Please do not request updates from us directly. Primary + distribution is through the CTAN archives. + + +IMPORTANT COPYRIGHT NOTICE: + +You are NOT ALLOWED to distribute this file alone. + +You are allowed to distribute this file under the condition that it +is distributed together with all the files listed in manifest.txt. + +If you receive only some of these files from someone, complain! + + +Permission is granted to copy this file to another file with a +clearly different name and to customize the declarations in that +copy to serve the needs of your installation, provided that you +comply with the conditions in the file legal.txt. + +However, NO PERMISSION is granted to generate or to distribute a +modified version of this file under its original name. + +You are NOT ALLOWED to change this file. + + +MODIFICATION ADVICE: + +If you want to customize this file, it is best to make a copy of +the source file(s) from which it was produced. Use a different +name for your copy(ies) and modify the copy(ies); this will ensure +that your modifications do not get overwritten when you install a +new release of the standard system. You should also ensure that +your modified source file does not generate any modified file with +the same name as a standard file. + +You can then easily distribute your modifications by distributing +the modified and renamed copy of the source file, taking care to +observe the conditions in legal.txt; this will ensure that other +users can safely use your modifications. + +You will also need to produce your own, suitably named, .ins file to +control the generation of files from your source file; this file +should contain your own preambles for the files it generates, not +those in the standard .ins files. + +The names of the source files used are shown above. + + + +\endpreamble +\usepreamble\mainpreamble + +\generate{\file{autopict.sty}{\from{ltpictur.dtx}{def}}} + + diff --git a/Master/texmf-dist/doc/plain/plgraph/exmplcol.tex b/Master/texmf-dist/doc/plain/plgraph/exmplcol.tex new file mode 100644 index 00000000000..0442ed9a404 --- /dev/null +++ b/Master/texmf-dist/doc/plain/plgraph/exmplcol.tex @@ -0,0 +1,6 @@ + +\input color + +a \textcolor{red}{bbb} \colorbox{green}{one two} + +\bye diff --git a/Master/texmf-dist/doc/plain/plgraph/exmplgrf.tex b/Master/texmf-dist/doc/plain/plgraph/exmplgrf.tex new file mode 100644 index 00000000000..d1a51b8ef10 --- /dev/null +++ b/Master/texmf-dist/doc/plain/plgraph/exmplgrf.tex @@ -0,0 +1,10 @@ + +\input graphicx + +\includegraphics{a} + +\includegraphics[scale=2]{a} + +hello\rotatebox[origin=c]{180}{hello}hello + +\bye diff --git a/Master/texmf-dist/doc/plain/plgraph/exmplpfg.tex b/Master/texmf-dist/doc/plain/plgraph/exmplpfg.tex new file mode 100644 index 00000000000..0026cd0ee68 --- /dev/null +++ b/Master/texmf-dist/doc/plain/plgraph/exmplpfg.tex @@ -0,0 +1,17 @@ + +\input psfrag + +First without psfrag: + + \includegraphics[width=3.5in]{example.eps} + +and now with: + + \psfragscanon + \psfrag{p1}[][l]{$\ast$} + \psfrag{p2}[][l]{$\ast$} + \psfrag{p3}{$\cos(t)$} + \includegraphics[width=3.5in]{example.eps} + + +\bye diff --git a/Master/texmf-dist/doc/plain/plgraph/exmplpic.tex b/Master/texmf-dist/doc/plain/plgraph/exmplpic.tex new file mode 100644 index 00000000000..cb8852123be --- /dev/null +++ b/Master/texmf-dist/doc/plain/plgraph/exmplpic.tex @@ -0,0 +1,15 @@ +\input picture + +\picture(100,100) +\put(0,0){\line(1,1){50}} +\endpicture + +\LaTeXbegin + +\begin{picture}(40,40) +\put(0,0){\vector(1,1){40}} +\multiput(0,5)(10,10){4}{a} +\end{picture} + +\bye + diff --git a/Master/texmf-dist/doc/plain/plnfss/LPPL.txt b/Master/texmf-dist/doc/plain/plnfss/LPPL.txt new file mode 100644 index 00000000000..bfe13a27b8b --- /dev/null +++ b/Master/texmf-dist/doc/plain/plnfss/LPPL.txt @@ -0,0 +1,405 @@ +The LaTeX Project Public License +=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- + +LPPL Version 1.3a 2004-10-01 + +Copyright 1999 2002-04 LaTeX3 Project + Everyone is allowed to distribute verbatim copies of this + license document, but modification of it is not allowed. + + +PREAMBLE +======== + +The LaTeX Project Public License (LPPL) is the primary license under +which the the LaTeX kernel and the base LaTeX packages are distributed. + +You may use this license for any work of which you hold the copyright +and which you wish to distribute. This license may be particularly +suitable if your work is TeX-related (such as a LaTeX package), but +you may use it with small modifications even if your work is unrelated +to TeX. + +The section `WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE', +below, gives instructions, examples, and recommendations for authors +who are considering distributing their works under this license. + +This license gives conditions under which a work may be distributed +and modified, as well as conditions under which modified versions of +that work may be distributed. + +We, the LaTeX3 Project, believe that the conditions below give you +the freedom to make and distribute modified versions of your work +that conform with whatever technical specifications you wish while +maintaining the availability, integrity, and reliability of +that work. If you do not see how to achieve your goal while +meeting these conditions, then read the document `cfgguide.tex' +and `modguide.tex' in the base LaTeX distribution for suggestions. + + +DEFINITIONS +=========== + +In this license document the following terms are used: + + `Work' + Any work being distributed under this License. + + `Derived Work' + Any work that under any applicable law is derived from the Work. + + `Modification' + Any procedure that produces a Derived Work under any applicable + law -- for example, the production of a file containing an + original file associated with the Work or a significant portion of + such a file, either verbatim or with modifications and/or + translated into another language. + + `Modify' + To apply any procedure that produces a Derived Work under any + applicable law. + + `Distribution' + Making copies of the Work available from one person to another, in + whole or in part. Distribution includes (but is not limited to) + making any electronic components of the Work accessible by + file transfer protocols such as FTP or HTTP or by shared file + systems such as Sun's Network File System (NFS). + + `Compiled Work' + A version of the Work that has been processed into a form where it + is directly usable on a computer system. This processing may + include using installation facilities provided by the Work, + transformations of the Work, copying of components of the Work, or + other activities. Note that modification of any installation + facilities provided by the Work constitutes modification of the Work. + + `Current Maintainer' + A person or persons nominated as such within the Work. If there is + no such explicit nomination then it is the `Copyright Holder' under + any applicable law. + + `Base Interpreter' + A program or process that is normally needed for running or + interpreting a part or the whole of the Work. + A Base Interpreter may depend on external components but these + are not considered part of the Base Interpreter provided that each + external component clearly identifies itself whenever it is used + interactively. Unless explicitly specified when applying the + license to the Work, the only applicable Base Interpreter is a + "LaTeX-Format". + + + +CONDITIONS ON DISTRIBUTION AND MODIFICATION +=========================================== + +1. Activities other than distribution and/or modification of the Work +are not covered by this license; they are outside its scope. In +particular, the act of running the Work is not restricted and no +requirements are made concerning any offers of support for the Work. + +2. You may distribute a complete, unmodified copy of the Work as you +received it. Distribution of only part of the Work is considered +modification of the Work, and no right to distribute such a Derived +Work may be assumed under the terms of this clause. + +3. You may distribute a Compiled Work that has been generated from a +complete, unmodified copy of the Work as distributed under Clause 2 +above, as long as that Compiled Work is distributed in such a way that +the recipients may install the Compiled Work on their system exactly +as it would have been installed if they generated a Compiled Work +directly from the Work. + +4. If you are the Current Maintainer of the Work, you may, without +restriction, modify the Work, thus creating a Derived Work. You may +also distribute the Derived Work without restriction, including +Compiled Works generated from the Derived Work. Derived Works +distributed in this manner by the Current Maintainer are considered to +be updated versions of the Work. + +5. If you are not the Current Maintainer of the Work, you may modify +your copy of the Work, thus creating a Derived Work based on the Work, +and compile this Derived Work, thus creating a Compiled Work based on +the Derived Work. + +6. If you are not the Current Maintainer of the Work, you may +distribute a Derived Work provided the following conditions are met +for every component of the Work unless that component clearly states +in the copyright notice that it is exempt from that condition. Only +the Current Maintainer is allowed to add such statements of exemption +to a component of the Work. + + a. If a component of this Derived Work can be a direct replacement + for a component of the Work when that component is used with the + Base Interpreter, then, wherever this component of the Work + identifies itself to the user when used interactively with that + Base Interpreter, the replacement component of this Derived Work + clearly and unambiguously identifies itself as a modified version + of this component to the user when used interactively with that + Base Interpreter. + + b. Every component of the Derived Work contains prominent notices + detailing the nature of the changes to that component, or a + prominent reference to another file that is distributed as part + of the Derived Work and that contains a complete and accurate log + of the changes. + + c. No information in the Derived Work implies that any persons, + including (but not limited to) the authors of the original version + of the Work, provide any support, including (but not limited to) + the reporting and handling of errors, to recipients of the + Derived Work unless those persons have stated explicitly that + they do provide such support for the Derived Work. + + d. You distribute at least one of the following with the Derived Work: + + 1. A complete, unmodified copy of the Work; + if your distribution of a modified component is made by + offering access to copy the modified component from a + designated place, then offering equivalent access to copy + the Work from the same or some similar place meets this + condition, even though third parties are not compelled to + copy the Work along with the modified component; + + 2. Information that is sufficient to obtain a complete, unmodified + copy of the Work. + +7. If you are not the Current Maintainer of the Work, you may +distribute a Compiled Work generated from a Derived Work, as long as +the Derived Work is distributed to all recipients of the Compiled +Work, and as long as the conditions of Clause 6, above, are met with +regard to the Derived Work. + +8. The conditions above are not intended to prohibit, and hence do +not apply to, the modification, by any method, of any component so that it +becomes identical to an updated version of that component of the Work as +it is distributed by the Current Maintainer under Clause 4, above. + +9. Distribution of the Work or any Derived Work in an alternative +format, where the Work or that Derived Work (in whole or in part) is +then produced by applying some process to that format, does not relax or +nullify any sections of this license as they pertain to the results of +applying that process. + +10. a. A Derived Work may be distributed under a different license + provided that license itself honors the conditions listed in + Clause 6 above, in regard to the Work, though it does not have + to honor the rest of the conditions in this license. + + b. If a Derived Work is distributed under this license, that + Derived Work must provide sufficient documentation as part of + itself to allow each recipient of that Derived Work to honor the + restrictions in Clause 6 above, concerning changes from the Work. + +11. This license places no restrictions on works that are unrelated to +the Work, nor does this license place any restrictions on aggregating +such works with the Work by any means. + +12. Nothing in this license is intended to, or may be used to, prevent +complete compliance by all parties with all applicable laws. + + +NO WARRANTY +=========== + +There is no warranty for the Work. Except when otherwise stated in +writing, the Copyright Holder provides the Work `as is', without +warranty of any kind, either expressed or implied, including, but not +limited to, the implied warranties of merchantability and fitness for +a particular purpose. The entire risk as to the quality and performance +of the Work is with you. Should the Work prove defective, you +assume the cost of all necessary servicing, repair, or correction. + +In no event unless required by applicable law or agreed to in writing +will The Copyright Holder, or any author named in the components of +the Work, or any other party who may distribute and/or modify the Work +as permitted above, be liable to you for damages, including any +general, special, incidental or consequential damages arising out of +any use of the Work or out of inability to use the Work (including, +but not limited to, loss of data, data being rendered inaccurate, or +losses sustained by anyone as a result of any failure of the Work to +operate with any other programs), even if the Copyright Holder or said +author or said other party has been advised of the possibility of such +damages. + + +MAINTENANCE OF THE WORK +======================= + +The Work has the status `author-maintained' if the Copyright Holder +explicitly and prominently states near the primary copyright notice in +the Work that the Work can only be maintained by the Copyright Holder +or simply that is `author-maintained'. + +The Work has the status `maintained' if there is a Current Maintainer +who has indicated in the Work that they are willing to receive error +reports for the Work (for example, by supplying a valid e-mail +address). It is not required for the Current Maintainer to acknowledge +or act upon these error reports. + +The Work changes from status `maintained' to `unmaintained' if there +is no Current Maintainer, or the person stated to be Current +Maintainer of the work cannot be reached through the indicated means +of communication for a period of six months, and there are no other +significant signs of active maintenance. + +You can become the Current Maintainer of the Work by agreement with +any existing Current Maintainer to take over this role. + +If the Work is unmaintained, you can become the Current Maintainer of +the Work through the following steps: + + 1. Make a reasonable attempt to trace the Current Maintainer (and + the Copyright Holder, if the two differ) through the means of + an Internet or similar search. + + 2. If this search is successful, then enquire whether the Work + is still maintained. + + a. If it is being maintained, then ask the Current Maintainer + to update their communication data within one month. + + b. If the search is unsuccessful or no action to resume active + maintenance is taken by the Current Maintainer, then announce + within the pertinent community your intention to take over + maintenance. (If the Work is a LaTeX work, this could be + done, for example, by posting to comp.text.tex.) + + 3a. If the Current Maintainer is reachable and agrees to pass + maintenance of the Work to you, then this takes effect + immediately upon announcement. + + b. If the Current Maintainer is not reachable and the Copyright + Holder agrees that maintenance of the Work be passed to you, + then this takes effect immediately upon announcement. + + 4. If you make an `intention announcement' as described in 2b. above + and after three months your intention is challenged neither by + the Current Maintainer nor by the Copyright Holder nor by other + people, then you may arrange for the Work to be changed so as + to name you as the (new) Current Maintainer. + + 5. If the previously unreachable Current Maintainer becomes + reachable once more within three months of a change completed + under the terms of 3b) or 4), then that Current Maintainer must + become or remain the Current Maintainer upon request provided + they then update their communication data within one month. + +A change in the Current Maintainer does not, of itself, alter the fact +that the Work is distributed under the LPPL license. + +If you become the Current Maintainer of the Work, you should +immediately provide, within the Work, a prominent and unambiguous +statement of your status as Current Maintainer. You should also +announce your new status to the same pertinent community as +in 2b) above. + + +WHETHER AND HOW TO DISTRIBUTE WORKS UNDER THIS LICENSE +====================================================== + +This section contains important instructions, examples, and +recommendations for authors who are considering distributing their +works under this license. These authors are addressed as `you' in +this section. + +Choosing This License or Another License +---------------------------------------- + +If for any part of your work you want or need to use *distribution* +conditions that differ significantly from those in this license, then +do not refer to this license anywhere in your work but, instead, +distribute your work under a different license. You may use the text +of this license as a model for your own license, but your license +should not refer to the LPPL or otherwise give the impression that +your work is distributed under the LPPL. + +The document `modguide.tex' in the base LaTeX distribution explains +the motivation behind the conditions of this license. It explains, +for example, why distributing LaTeX under the GNU General Public +License (GPL) was considered inappropriate. Even if your work is +unrelated to LaTeX, the discussion in `modguide.tex' may still be +relevant, and authors intending to distribute their works under any +license are encouraged to read it. + +A Recommendation on Modification Without Distribution +----------------------------------------------------- + +It is wise never to modify a component of the Work, even for your own +personal use, without also meeting the above conditions for +distributing the modified component. While you might intend that such +modifications will never be distributed, often this will happen by +accident -- you may forget that you have modified that component; or +it may not occur to you when allowing others to access the modified +version that you are thus distributing it and violating the conditions +of this license in ways that could have legal implications and, worse, +cause problems for the community. It is therefore usually in your +best interest to keep your copy of the Work identical with the public +one. Many works provide ways to control the behavior of that work +without altering any of its licensed components. + +How to Use This License +----------------------- + +To use this license, place in each of the components of your work both +an explicit copyright notice including your name and the year the work +was authored and/or last substantially modified. Include also a +statement that the distribution and/or modification of that +component is constrained by the conditions in this license. + +Here is an example of such a notice and statement: + + %% pig.dtx + %% Copyright 2003 M. Y. Name + % + % This work may be distributed and/or modified under the + % conditions of the LaTeX Project Public License, either version 1.3 + % of this license or (at your option) any later version. + % The latest version of this license is in + % http://www.latex-project.org/lppl.txt + % and version 1.3 or later is part of all distributions of LaTeX + % version 2003/12/01 or later. + % + % This work has the LPPL maintenance status "maintained". + % + % This Current Maintainer of this work is M. Y. Name. + % + % This work consists of the files pig.dtx and pig.ins + % and the derived file pig.sty. + +Given such a notice and statement in a file, the conditions +given in this license document would apply, with the `Work' referring +to the three files `pig.dtx', `pig.ins', and `pig.sty' (the last being +generated from `pig.dtx' using `pig.ins'), the `Base Interpreter' +referring to any "LaTeX-Format", and both `Copyright Holder' and +`Current Maintainer' referring to the person `M. Y. Name'. + +If you do not want the Maintenance section of LPPL to apply to your +Work, change "maintained" above into "author-maintained". +However, we recommend that you use "maintained" as the Maintenance +section was added in order to ensure that your Work remains useful to +the community even when you can no longer maintain and support it +yourself. + + +Important Recommendations +------------------------- + + Defining What Constitutes the Work + + The LPPL requires that distributions of the Work contain all the + files of the Work. It is therefore important that you provide a + way for the licensee to determine which files constitute the Work. + This could, for example, be achieved by explicitly listing all the + files of the Work near the copyright notice of each file or by + using a line such as: + + % This work consists of all files listed in manifest.txt. + + in that place. In the absence of an unequivocal list it might be + impossible for the licensee to determine what is considered by you + to comprise the Work and, in such a case, the licensee would be + entitled to make reasonable conjectures as to which files comprise + the Work. + diff --git a/Master/texmf-dist/doc/plain/plnfss/plnfss.txt b/Master/texmf-dist/doc/plain/plnfss/plnfss.txt new file mode 100644 index 00000000000..1f60345b574 --- /dev/null +++ b/Master/texmf-dist/doc/plain/plnfss/plnfss.txt @@ -0,0 +1,132 @@ +plnfss-1.1 + +Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +This file is part of plnfss. License: LPPL, version 1.3 or newer, +according to http://www.latex-project.org/lppl.txt + + +Description +=========== +plnfss is a set of macros to provide easy font access (somewhat similar to +NFSS but with some limitations) with plain tex. + +plnfss can automatically make use of PSNFSS fd files, ie. when a postscript +font is used the relevant fd file will be loaded automatically. +For cmr-like fonts (ec, vnr, csr or plr fonts), a special format called pfd +(plain fd) is required and must be loaded manually. + + +Authors +======= +The authors of plnfss are + + Han The Thanh <HanTheThanh@gmx.net> and + Michal Konecny <mik@konecny.aow.cz>. + + +License +======= +All files are under LPPL, version 1.3 or newer. + +See + http://www.latex-project.org/lppl.txt + + +Support +======= +The current maintainer is + + Reinhard Kotucha <Reinhard.Kotucha@web.de> + + +Recent Changes +============== +The current version contains + + * Copyright messages in all files, + + * a bugfix provided by Hartmut Henkel to avoid spurious white spaces, + + * additional .pfd files. + + +Installation +============ +plnfss.zip is supposed to be extracted in the root of a TDS compliant +texmf tree. In most cases texmf-local is an appropriate place. + +On web2c based systems you have to update the file database. Read the +documentation of the TeX system you are using for details. + +------------------------- +You only need plnfss.zip. +------------------------- + + +Usage Example +============= +______________________________________________________________________ +\input plnfss +\input ot1cm.pfd % plain font description file for CM fonts + +\setfontsize{12pt} % set the default font size to 12pt +\selectfont % activate the font with requested attributes + +%% default attributes: +% \setfontencoding{OT1} +% \setfontfamily{cmr} +% \setfontseries{m} +% \setfontshape{n} +% \setfontsize{10pt} +% \setrmdefault{cmr} +% \setttdefault{cmtt} +% \setsfdefault{cmss} + +... +some text and some \textit{italic} and some {\bfseries bold}. + +\usefont{OT1}{ptm}{m}{n} % switch to Times; the fd file ot1ptm.fd will + % be loaded automatically +... +______________________________________________________________________ + + +Supported Encodings +=================== +The following encoding files are provided: + + ams.pfd + il2cm.pfd + ly1lm.pfd + ot1cm.pfd + ot4cm.pfd + qxlm.pfd + t1lm.pfd + t5cm.pfd + t5lm.pfd + ts1lm.pfd + +Using the files + + il2cmr.pfd + ot1cmr.pfd + t5cmr.pfd + +is deprecated, they are provided for backward compatibility only. + + +Supported Commands +================== +\rmfamily \sffamily \ttfamily \mdseries +\bfseries \upshape \itshape \slshape \scshape +\normalfont +\textrm \textsf \texttt \textmd \textbf \textup \textit \textsl \textsc +\rm \sf \tt \md \bf \up \it \sl \sc + + +What is missing? +================ +- size commands: \large, \huge etc. Use \fontsize{20pt} instead. +- scaling +- math support is poor + diff --git a/Master/texmf-dist/doc/plain/plnfss/test-plnfss.tex b/Master/texmf-dist/doc/plain/plnfss/test-plnfss.tex new file mode 100644 index 00000000000..9edcfa22a76 --- /dev/null +++ b/Master/texmf-dist/doc/plain/plnfss/test-plnfss.tex @@ -0,0 +1,40 @@ +% plnfss-1.1 + +% Copyright 2003-2005 Han The Thanh <hanthethanh@gmx.net>. +% This file is part of plnfss. License: LPPL, version 1.3 or newer, +% according to http://www.latex-project.org/lppl.txt + +\input plnfss +\input ot1cm.pfd + +\def\testfontdecl#1#2{% + \expandafter\setfont#1/10pt/% + \leftline{% + \hbox to 4cm{\setfont OT1/cmtt/m/n/10pt/#1\hss}% + The quick brown fox jumps over a lazy dog + } + \smallskip +} + +\def\testpfd#1{{% + \centerline{\setfont OT1/cmr/m/n/15pt/Test of \texttt{#1}} + \bigskip + \input #1 + \let\DeclareFont=\testfontdecl + \input #1 + \vfil\eject +}} + +\testpfd{il2cm.pfd} +\testpfd{ly1lm.pfd} +\testpfd{ot1cm.pfd} +\testpfd{ot4cm.pfd} +\testpfd{qxlm.pfd} +\testpfd{t1lm.pfd} +\testpfd{t5cm.pfd} +\testpfd{t5lm.pfd} + +% \testpfd{ot1cmr.pfd} +% \testpfd{t5cmr.pfd} +% \testpfd{ams.pfd} +\bye diff --git a/Master/texmf-dist/doc/plain/treetex/epodd.bbl b/Master/texmf-dist/doc/plain/treetex/epodd.bbl new file mode 100644 index 00000000000..0d07cfe5fb8 --- /dev/null +++ b/Master/texmf-dist/doc/plain/treetex/epodd.bbl @@ -0,0 +1,107 @@ +\begin{thebibliography}{10} + +\bibitem{BaezaTrees} +R.~A. Baeza-Yates. +\newblock On embedding a binary tree on a hypercube. +\newblock Submitted for publication, November 1988. + +\bibitem{Tables} +R.~J. Beach. +\newblock {\em Setting Tables and Illustrations with Style}. +\newblock PhD thesis, University of Waterloo, 1985. + +\bibitem{Karlsruhe} +A.~Br{\"u}ggemann-Klein, P.~Dolland, and A.~Heinz. +\newblock How to please authors and publishers: A versatile document + preparation system at {K}arlsruhe. +\newblock In J.~D\'esarm\'enien, editor, {\em {\TeX{}} for Scientific + Documentation}, pages 8--31, Strasbourg, France, June 1986. +\newblock Springer-Verlag Lecture Notes in Computer Science~236. + +\bibitem{Exeter} +A.~Br{\"u}ggemann-Klein and D.~Wood. +\newblock Drawing trees nicely with {\TeX}. +\newblock In M.~Clark, editor, {\em Proceedings of the Third European + \TeX{}-Conference}, Exeter, England, July 1988. +\newblock To appear. + +\bibitem{BinarySearchTrees} +L.~Devroye. +\newblock A note on the height of binary search trees. +\newblock {\em Journal of the ACM}, 33(3):489--498, July 1986. + +\bibitem{BinaryTrees} +Ph. Flajolet and A.~Odlyzko. +\newblock The average height of binary trees and other simple trees. +\newblock {\em Journal of Computer and System Sciences}, 25:171--213, 1982. + +\bibitem{DocumentFormatting} +R.~Furuta, J.~Scofield, and A.~Shaw. +\newblock Document formatting systems: Surveys, concepts, issues. +\newblock {\em Computing Surveys}, 14(3):417--472, 1982. + +\bibitem{GML} +Ch.~F. Goldfarb. +\newblock A generalized approach to document markup. +\newblock {\em SIGPLAN Notices of the ACM}, 16(6):68--73, June 1981. + +\bibitem{KWIFIP} +R.~Klein and D.~Wood. +\newblock On binary trees. +\newblock In G.~Ritter, editor, {\em Proceedings of the 11th World Computer + Congress}, San Francisco, USA, 1989. +\newblock To appear. + +\bibitem{ACP} +D.~E. Knuth. +\newblock {\em Fundamental Algorithms}, volume~1 of {\em The Art of Computer + Programming}. +\newblock Addison-Wesley, Reading, Massachusetts, 1973. + +\bibitem{TeXbook} +D.~E. Knuth. +\newblock {\em The {\TeX{}}book}, volume~A of {\em Computers \& Typesetting}. +\newblock Addison-Wesley, Reading, Massachusetts, 1986. + +\bibitem{LaTeX} +L.~Lamport. +\newblock {\em {\LaTeX}, User's Guide \& Reference Manual}. +\newblock Addison-Wesley, Reading, Massachusetts, 1986. + +\bibitem{OAPD} +Th. Ottmann and P.~Widmayer. +\newblock {\em Algorithmen und Datenstrukturen}. +\newblock Bibliographisches Institut, Mannheim, 1989. +\newblock To appear. + +\bibitem{Grif} +V.~Quint, I.~Vatton, and H.~Bedor. +\newblock Grif: An interactive environment for {\TeX{}}. +\newblock In J.~D\'esarm\'enien, editor, {\em {\TeX{}} for Scientific + Documentation}, pages 145--158, Strasbourg, France, June 1986. +\newblock Springer-Verlag Lecture Notes in Computer Science~236. + +\bibitem{Scribe} +B.~K. Reid. +\newblock {\em Scribe: A Document Specification Language and its Compiler}. +\newblock PhD thesis, Carnegie Mellon University, 1980. + +\bibitem{TidierTrees} +E.~M. Reingold and J.~S. Tilford. +\newblock Tidier drawings of tree. +\newblock {\em IEEE Transactions on Software Engineering}, 7(2):223--228, March + 1981. + +\bibitem{Complexity} +K.~J. Supowit and E.~M. Reingold. +\newblock The complexity of drawing trees nicely. +\newblock {\em Acta Informatica}, 18(4):377--392, 1983. + +\bibitem{TidyTrees} +Ch. Wetherell and A.~Shannon. +\newblock Tidy drawings of trees. +\newblock {\em IEEE Transactions on Software Engineering}, 5(5):514--520, + September 1979. + +\end{thebibliography} + diff --git a/Master/texmf-dist/doc/plain/treetex/epodd.tex b/Master/texmf-dist/doc/plain/treetex/epodd.tex new file mode 100644 index 00000000000..06d5b65bd9f --- /dev/null +++ b/Master/texmf-dist/doc/plain/treetex/epodd.tex @@ -0,0 +1,1189 @@ +% This is epodd.tex, the description of the treetex macro package as it will +% appear in EP-ODD in summer 89. It is in some aspects more general +% than tree_doc.tex and corrects an error in the computation of +% the number of registers used by treetex. The user interface of +% treetex is explained in more detail in tree_doc.tex. + +\documentstyle[12pt,fullpage]{article} + +\clubpenalty=10000 +\widowpenalty=10000 + +\def\addcontentsline#1#2#3{\relax}% Some captions are too long for some + % TeX installations (buffer size too small) + +\newenvironment{lemma}{\begingroup\samepage\begin{lemmma}\ }{\end{lemmma}% + \endgroup} +\newtheorem{lemmma}{Lemma}[section] +\newenvironment{proof}{\begin{prooof}\rm\ \nopagebreak}{\end{prooof}} +\newcommand{\proofend}{\qquad\ifmmode\Box\else$\Box$\fi} +\newtheorem{prooof}{Proof} +\renewcommand{\theprooof}{} % makes shure that prooof doesn't get numbers +\newenvironment{Figure}{\begin{figure}\vspace{1\baselineskip}}% + {\vspace{1\baselineskip}\end{figure}} +\newlength{\figspace} % space between figures in a single +\setlength{\figspace}{30pt} % Figure environment + +\newcommand{\var}[1]{{\it #1\/}} % use it for names of variables +\renewcommand{\emph}[1]{{\em #1\/}} % use it for emphazided text + % (This notion sticks to the + % applicative style of markup.) +\renewcommand{\O}{{\rm O}} % O-notation, also for math mode +\newcommand{\T}{{\cal T}} % the set T in math mode +\newcommand{\TreeTeX}{Tree\TeX} +\newcommand{\fig}[1]{Figure~\ref{#1}} +\let\p\par + +\input treetex +\Treestyle{\vdist{20pt}\minsep{16pt}} +\dummyhalfcenterdim@n=2pt + +% \def\Tree#1\end#2{\end{Tree}} % Trees are not processed +% \let\endTree\relax % + +\def\Node(#1,#2){\put(#1,#2){\circle*{4}}} +\def\Edge(#1,#2,#3,#4,#5){\put(#1,#2){\line(#3,#4){#5}}} + +\def\enode{\node{\external\type{dot}}} +\def\inode{\node{\type{dot}}} + +\def\e{\node{\external\type{dot}}} +\def\i{\node{\type{dot}}} +\def\il{\node{\type{dot}\leftonly}} +\def\ir{\node{\type{dot}\rightonly}} + +\newcommand{\stack}[3]{% + \vtop{\settowidth{\hsize}{#1}% + \setlength{\leftskip}{0pt plus 1fill}% + \setlength{\baselineskip}{#2}#3}} + +\let\multic\multicolumn + +\newlength{\hd} % hidden digit +\setbox0\hbox{1} +\settowidth{\hd}{\usebox{0}} +\newcommand{\ds}{\hspace{\hd}} % digit space + +\newcommand{\ccol}[1]{\multicolumn{1}{c}{#1}} + +\hyphenation{post-or-der sym-bol Karls-ruhe bool-ean} + +\begin{document} + +\bibliographystyle{plain} + +\title{Drawing Trees Nicely with \TeX\thanks{This work was supported by + a Natural Sciences and Engineering Research Council of Canada + Grant~A-5692, a Deutsche Forschungsgemeinschaft Grant~Sto167/1-1, + and a grant from the Information Technology Research Centre. + It was begun during the first author's stay with + the Data Structuring Group in Waterloo.}} +\author{Anne Br\"uggemann-Klein\thanks{Institut f\"ur Informatik, + Universit\"at Freiburg, Rheinstr.~10--12, 7800~Freiburg, + West~Germany}\ \and Derick Wood\thanks{Data + Structuring Group, Department of Computer Science, University of + Waterloo, Waterloo, Ontario N2L~3G1, Canada}} +\date{} +\maketitle + +\begin{abstract} + +We present a new solution to the tree drawing problem that +integrates an excellent tree drawing algorithm into one of the best text +processing systems available. More precisely, we present a \TeX{} macro package +called \TreeTeX{} that produces drawings of trees from a purely logical +description. Our approach has three advantages: Labels +for nodes can be handled in a reasonable way; porting +\TreeTeX{} to any site running \TeX{} is a trivial operation; and +modularity in the description of a tree and \TeX{}'s macro capabilities +allow for libraries of subtrees and tree classes. + +In addition, \TreeTeX{} has an option that produces +drawings that make the +\emph{structure} of the trees more obvious to the human eye, +even though they may not be as aesthetically pleasing. + +\end{abstract} + +\section{Introduction} + +The problem of successfully integrating pictures and text in a +document processing environment is tantalizing and difficult. +Although there are systems available that allow such integration, they +fall short in many ways, usually in document quality. Furthermore, +most authors using document preparation systems are neither book +designers nor graphic artists. Just as modern document preparation +systems do not expect an author to be a book designer, so we would +prefer that they do not expect an author to be a graphic artist. The +second author, Wood, needed to draw many trees in a series of papers +on trees and in a projected book on trees. This problem enabled us +to tackle the integration issue for one subarea of graphics, namely, +tree drawing. We had the decided advantage that there already existed good +algorithms to draw trees {\em without any author intervention}. +Previous experience of the integration of pictures and text had been +uninspiring; the systems expected the author to prepare each picture +in total. For example, a tree could be built up from smaller +subtrees but the relative placement of them was left to the author. +This situation continues to hold today with the drawing facilities +available on most personal computers, and, because of this, the +resulting figures still appear to be ``hand-drawn.'' Additionally, +they are of inferior quality when compared with the quality of +the surrounding text. + +In this paper we present an entirely new solution that integrates +a tree drawing algorithm into one of the best text processing +systems available. More precisely, we describe \TreeTeX{}, a +\TeX{} macro package that produces an aesthetically pleasing +drawing of a tree from a purely logical description. +We made two fundamental design +decisions that heavily influenced the method of implementation. +First, we wanted to allow an author to label the nodes of a tree. +This decision means that the tree drawing package must be able to +typeset labels exactly as they would be typeset by the typesetting +program. There are two reasons for this. Text should be typeset +consistently, wherever it appears in a document, and the tree +drawing program needs to know the dimensions of the typeset labels. +Second, we wanted to ensure that the program could be ported +easily to other installations and sites, so that other, putative +users would be able to use it easily. +Indeed, \TreeTeX{} has been used successfully to typeset trees in +\cite{BaezaTrees}, \cite{KWIFIP}, and \cite{OAPD}. + +By basing our package on \TeX{}, which for more subjective +reasons we preferred over other typesetting systems such as +troff, we could ensure wide interest +in the package. By implementing it as a \TeX{} macro package +instead of a preprocessor +we made porting trivial and, furthermore, this also ensured +consistency of typeset text within a document. +The down side of this decision is that we had to program with +\TeX{} macros, not an experience to be recommended, and we had to live +with the inherent register limitations of \TeX{}. + +This paper consists of a further nine sections. In Sections~2, 3 and~4, +we discuss the aesthetics of tree drawing and the algorithm of +Reingold and Tilford~\cite{TidierTrees}. In Sections~5, 6, and~7, we +describe our method of incorporating tree drawing into \TeX{}. Then, +in the last three short sections, we consider the expected number of +registers \TeX{} needs to draw a tree, the user interface (and three +\TreeTeX{} examples), and discussion of, among other things, the +performance of \TreeTeX{}. + +\section{Aesthetical criteria for drawing trees} + +In this paper, we are dealing with ordered +trees in the sense of~\cite{ACP}, specifically binary and unary-binary +trees. A {\em binary tree\/} is a finite set of nodes that either +is empty, or consists of a root and two disjoint binary trees called +the left and right subtrees of the root. A {\em unary-binary tree\/} is +a finite set of nodes that either is empty, or consists of a root and +two disjoint unary-binary trees, or consists of a root and one +nonempty unary-binary tree. An {\em extended binary tree\/} is a binary tree +in which each node has either two nonempty subtrees or two +empty subtrees. + +There are some basic agreements on how such trees should be drawn, reflecting +the top-down and left-right ordering of nodes in a tree. +In \cite{TidierTrees} and \cite{TidyTrees} these basic agreements were +formalized as the following axioms. + +\begin{enumerate} +\item[1.] Trees impose a distance on the nodes; no node + should be closer to the root than any of its + ancestors. +\item[2.] Nodes on the same level should lie on a straight + line, and the straight lines defining the levels should be + parallel. +\item[3.] The relative order of nodes on any level should be the same + as in the level order traversal of the tree. +\end{enumerate} + +These axioms guarantee that trees are drawn as planar graphs: edges do +not intersect except at nodes. Two further axioms improve the aesthetical +appearance of trees. + +\begin{enumerate} +\item[4.] In a unary-binary tree, each left child should be positioned + to the left of its parent, each + right child to the right of its parent, and each unary child + should be positioned below its parent. +\item[5.] A parent should be centered over its children. +\end{enumerate} + +An additional axiom deals with the problem of tree drawings becoming too wide +and therefore exceeding the physical limit of the output medium: + +\begin{enumerate} +\item[6.] Tree drawings should occupy as little width as possible without + violating the other axioms. +\end{enumerate} + +In \cite{TidyTrees}, Wetherell and Shannon introduce two algorithms for +tree drawings, the first of which fulfills axioms~1--5, and the second +1--6. However, as Reingold and Tilford in \cite{TidierTrees} +point out, there is a lack of symmetry in the algorithms of +Wetherell and Shannon which may lead to unpleasant results; +therefore, Reingold and Tilford introduce a new structured +axiom. + +\begin{enumerate} +\item[7.] A subtree of a given tree should be + drawn the same way regardless of where it occurs in the tree. +\end{enumerate} + +Axiom~7 allows the same tree to be drawn differently only when it occurs as +a subtree in different trees. +Reingold and Tilford give an algorithm which fulfills axioms~1--5 +and~7. Although +this algorithm doesn't fulfill axiom~6, +the aesthetical improvements are well worth the additional space. +\fig{algorithms} illustrates the benefits of axiom~7, and \fig{narrowtrees} +shows that the algorithm of Reingold and Tilford violates axiom~6. + +\begin{Figure} +\centering +\leavevmode\noindent +\begin{Tree} +\enode +\enode\enode\inode\enode\enode\inode\inode\inode +\node{\external\type{dot}\rght{\unskip\hskip2\mins@p\hskip2\dotw@dth}} +\enode\enode\inode\enode\enode\inode\inode\inode +\inode +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\qquad +\begin{Tree} +\enode +\enode\enode\inode\enode\enode\inode\inode\inode +\enode +\enode\enode\inode\enode\enode\inode\inode\inode +\inode +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\ +\caption{The left tree is drawn by the algorithm of Wetherell and Shannon, +and the tidier right one is drawn by the algorithm of Reingold and Tilford.} +\label{algorithms} + +\vspace{\figspace} +\centering +\leavevmode\noindent +\begin{Tree} +\enode\enode\enode\enode\enode\enode\enode\enode\enode +\enode\inode\inode\inode +\enode\inode\inode\inode +\enode\inode\inode\inode +\enode\inode\inode\inode +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\qquad +\begin{Tree} +\enode\enode\enode\enode\enode\enode\enode\enode +\node{\external\type{dot}\rght{\unskip\hskip\mins@p\hskip\dotw@dth}} +\enode\inode\inode\node{\type{dot}\rght{\unskip\hskip\mins@p\hskip\dotw@dth}} +\enode\inode\inode\node{\type{dot}\rght{\unskip\hskip\mins@p\hskip\dotw@dth}} +\enode\inode\inode\node{\type{dot}\rght{\unskip\hskip\mins@p\hskip\dotw@dth}} +\enode\inode\inode\inode +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\ +\caption{The left tree is drawn by the algorithm of Reingold and Tilford, but +the right tree shows that narrower drawings fulfilling all aesthetic axioms +are possible.} +\label{narrowtrees} +\end{Figure} + + +\section{The algorithm of Reingold and Tilford} + +The algorithm of Reingold and Tilford (hereafter called ``the RT~algorithm'') +takes a modular approach to the +positioning of nodes. The relative positions of the nodes in a subtree +are calculated independently of the rest of the tree. After the +relative positions of two subtrees have been calculated, they can be +joined as siblings in a larger tree by placing them as close +together as possible and centering the parent node above them. +Incidentally, this modular approach is the reason that the +algorithm fails to fulfill axiom~6; see~\cite{Complexity}. +Two sibling subtrees are placed as close together as possible, +during a postorder traversal, as follows. +Imagine that the two subtrees of a binary node +have been drawn and cut out of paper along +their contours. Then, starting with the two subtrees superimposed at their +roots, move them apart until a minimal agreed upon distance +between the trees is obtained at each level. This can be done gradually. +Initially, their roots are separated by some agreed upon minimum +distance; then, at the next level, they are pushed +apart until the minimum separation is established there. +This process is continued at successively lower levels until the +last level of the shorter subtree is reached. At some levels no movement may be +necessary, but at no level are the two subtrees moved closer +together. When the process is complete, the position of the +subtrees is fixed relative to their parent, which is centered over them. +Assured that the subtrees will never be placed closer together, +the postorder traversal is continued. + +A nontrivial implementation of +this algorithm has been obtained by Reingold and Tilford in~\cite{TidierTrees} +that runs in time $\O(N)$, where $N$ is the number of +nodes of the tree to be drawn. +Their crucial idea is to keep track of the contour of the subtrees +by special pointers, called threads, such that whenever +two subtrees are joined, only the +top part of the trees down to the lowest level of the +smaller tree need to be taken into account. + +The nodes are positioned on a fixed grid and are +considered to have zero width; labeling is not provided. +Although the algorithm only draws binary trees, it is easily +extended to multiway trees. + +\section{Improving human perception of trees} + +It is common understanding in book design that aesthetics and readability +don't necessarily coincide, and---as Lamport (\cite{LaTeX}) puts it---% +``documents are meant to be read, not hung in museums.'' +Therefore, readability is more important than aesthetics. + +When it comes to tree drawings, readability means that the structure of +a tree must be easily recognizable. This criterion is not always met +by the RT~algorithm. As an example, there are trees whose structure is +different even though they have the same number +of nodes on each level. The RT~algorithm might assign identical positions to +these nodes making it very hard to perceive the structural differences. +Hence, we have modified the RT~algorithm such that additional white space +is inserted between subtrees of +\emph{significant} nodes. Here a binary node +is called significant if the minimum distance +between its two subtrees is achieved \emph{below} their root level. +Setting the amount of additional white space to zero retains the original RT~% +placement. The effect of having nonzero additional white space between +the subtrees of significant +nodes is illustrated in \fig{addspace}. + +Another feature we have added to the RT~algorithms is the possibility to draw +an unextended binary tree with the same placement of nodes as its +associated extended version; +this makes the structure of a tree more prominent; see \fig{extended}. +We define the \emph{associated extended version} +of a binary tree to be the binary tree obtained by replacing each empty subtree +having a nonempty sibling with a subtree consisting of one node. + +\begin{Figure} +\centering +\leavevmode\noindent +\begin{Tree} +\e\il\e\e\i\i\il % the left subtree +\e\ir\il % the right subtree +\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\qquad +\begin{Tree} +\e\il\il\il % the left subtree +\e\e\i\e\i\il % the right subtree +\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\qquad +\adds@p10pt +\begin{Tree} +\e\il\e\e\i\node{\type{dot}\lft{$\longrightarrow$}}\il % the left subtree +\e\ir\il % the right subtree +\node{\type{dot}\lft{$\longrightarrow$}} +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\qquad +\begin{Tree} +\e\il\il\il % the left subtree +\e\e\i\e\i\il % the right subtree +\node{\type{dot}\lft{$\longrightarrow$}} +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\ +\adds@p0pt + +\caption{The nodes of the first two trees are placed in the same positions +by the RT~algorithm, although the structure of the two trees is different. +The alternative drawings highlight the structural differences +of the trees by adding additional white space between the subtrees of +($\longrightarrow$) significant nodes.} +\label{addspace} +\end{Figure} + +\begin{Figure} +\centering +\leavevmode\noindent +\begin{Tree} +\e\e\i\il\e\e\i\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\hbox{}\qquad +\begin{Tree} +\e\e\i\e\i\e\ir\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\hbox{}\\ +\extended +\begin{Tree} +\e\e\i\il\e\e\i\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\hbox{}\qquad +\begin{Tree} +\e\e\i\e\i\e\ir\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\hbox{}\\ +\noextended +\begin{Tree} +\e\e\i\e\i\e\e\i\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\ +\caption{As in the previous figure, the nodes of the first two trees +are placed in the same position by the RT algorithm, +although their structure is different. The modified +RT~algorithms highlights the structural differences of the trees by +drawing them like their identical extended +version (given in the third row), but suppressing the additional nodes.} +\label{extended} +\end{Figure} + + +\section{Trees in a document preparation environment} + +Drawings of trees do not usually appear by themselves, +but are included in some text +that is itself typeset by a text processing system. Therefore, a typical +scenario is a pipe of three stages. First, we have a tree drawing +program that calculates the positioning of the nodes of the tree to +be drawn and outputs a description of the tree drawing in +some graphics language; this is followed by +a graphics system that transforms this +description into an intermediate language that can be interpreted by the output +device; and, finally, we have the +text processing system that integrates the output of the +graphics system into the text. + +This scenario loses its linear structure once nodes have to be labeled, since +the labeling influences the positioning of the nodes. Labels usually occur +inside, to the left of, to the right of, or beneath nodes (the latter only for +external nodes). Their widths should certainly be taken into account +by the tree drawing algorithm. But the labels have to be typeset first +to determine their extensions, +preferably by the typesetting program that +is used for the regular text, because this ensures uniformity in the textual +parts of the document and provides the author with the full power of a +text processing system for composing the labels. Hence, a more complex +communication scheme than a simple pipe is required. + +Although a system of two processes running simultaneously might be the most +elegant solution, we wanted a system that is easily portable to +widely different machines at our sites +including personal computers with single process +operating systems. +Therefore, we decided to use a text processing system +having programming facilities powerful enough to +program a tree drawing algorithm and graphics facilities powerful enough +to draw a tree. One text processing system +rendering outstanding typographic quality and satisfactory programming +facilities is \TeX, developed by Knuth at Stanford University; +see~\cite{TeXbook}. +The \TeX{} system includes the following programming facilities. + +\begin{enumerate} +\item[1.] Datatypes:\\ + integers~(256), dimensions\footnote{The term \emph{dimension} is used + in \TeX\ to describe physical measurements of typographical objects; + for example, the length of a word.}~(512), + boxes~(256), tokenlists~(256), and + boolean variables~(unrestricted). +\item[2.] Elementary statements:\\ + $a:=\rm const$, $a:=b$ (all types);\\ + $a:=a+b$, $a:=a*b$, $a:=a/b$ (integers and dimensions); and\\ + horizontal and vertical nesting of boxes. +\item[3.] Control constructs:\\ + if-then-else statements testing relations between integers, + dimensions, boxes, or boolean variables. +\item[4.] Modularization constructs:\\ + macros with up to 9~parameters (can be viewed as procedures without + the concept of local variables). +\end{enumerate} + +Although the programming +facilities of \TeX{} hardly exceed the abilities of a Turing machine, +they are sufficient to +handle small programs. How about the graphics facilities? +Although \TeX{} has no built-in graphics facilities, it +allows the placement of characters in arbitrary positions on +the page. Therefore, complex pictures can be synthesized from elementary +picture elements treated as characters. Lamport has included such +a picture drawing environment in his macro package \LaTeX, using +quarter circles of different sizes and line segments (with and without +arrow heads) of different slopes as basic elements; see~\cite{LaTeX}. +These elements are sufficient for drawing trees. + +This survey of \TeX's capabilities implies that \TeX{} may be a suitable +text processing system to implement a tree drawing algorithm directly. +We base our algorithm on the RT~algorithm, because this algorithm +gives, aesthetically, the most pleasing results. In the first version +presented here, we +restrict ourselves to unary-binary trees, although our method is +applicable to arbitrary multiway trees. But to take advantage +of the text processing environment, we expand the algorithm to allow +labeled nodes. + +In contrast to previous tree drawing programs, we feel no necessity to +position the nodes of a tree on a fixed grid. While this may be +reasonable for a plotter with a coarse resolution, it is certainly not +necessary for \TeX, a system that is capable of handling +arbitrary dimensions +and producing device \emph{independent} output. + + +\section{A representation method for \TeX{}trees} + +The first problem to be solved in implementing our tree drawing algorithm +is how to choose a good internal representation +for trees. A straightforward adaptation +of the implementation by Reingold and Tilford requires, for each node, +at least: +% +\begin{enumerate} +\item two pointers to the children of the node, +\item two dimensions for the offset to the left and the right child (these + may be different once there are labels of different widths to the + left and right of the nodes), +\item two dimensions for the $x$- and $y$-coordinates of the final + position of the nodes, +\item three or four labels, and +\item one token to store the geometric shape (circle, square, framed text, etc.) + of the node. +\end{enumerate} +% +Because these data are used frequently in calculations, they should be +stored in registers (that's what variables are called in \TeX) +rather than being recomputed, to obtain +reasonably fast performance. This gives a total of $10N$ registers for +a tree with $N$ nodes, which quickly exceeds +\TeX's limited supply of registers. Therefore, we present a +modified algorithm hand-tailored to the abilities of \TeX{}. +We start with the following observation. +Suppose a unary-binary tree is built bottom-up, using a postorder +traversal. This can be done by repeating the following three steps in +an order determined by the tree to be built. + +\begin{enumerate} +\item Create a new subtree consisting of one external node. +\item Create a new subtree by appending the two subtrees last created + to a new binary node; see \fig{Construct}. +\item Create a new subtree by appending the subtree created last as a left, + right, or unary subtree of a new node; see \fig{Construct}. +\end{enumerate} + +(A pointer to) each subtree that has been +created in steps 1--3 is pushed onto a stack, and +steps 2 and 3 remove two trees or one tree, respectively, +from the stack before the push +operation is carried out. The tree to be built is +the tree remaining on the stack. + +\begin{Figure} +\centering +\begin{Tree} +\treesymbol{\lvls{2}}% +\hspace{-\l@stlmoff}\usebox{\l@sttreebox}\hspace{\l@strmoff} +$+$ +\treesymbol{\lvls{2}}% +\hspace{-\l@stlmoff}\usebox{\l@sttreebox}\hspace{\l@strmoff}\quad +$\Longrightarrow$\quad +\treesymbol{\lvls{2}}% +\treesymbol{\lvls{2}}% +\node{\type{dot}}% +\hspace{-\l@stlmoff}\raisebox{\vd@st}{\usebox\l@sttreebox}\hspace{\l@strmoff}% +\end{Tree} + +\vskip\baselineskip + +\begin{Tree} +\treesymbol{\lvls{2}}% +\hspace{-\l@stlmoff}\usebox{\l@sttreebox}\hspace{\l@strmoff}\quad +$\Longrightarrow$\quad +\treesymbol{\lvls{2}}% +\node{\leftonly\type{dot}}% +\hspace{-\l@stlmoff}\raisebox{\vd@st}{\usebox\l@sttreebox}\hspace{\l@strmoff}% +\quad or\quad +\treesymbol{\lvls{2}}% +\node{\unary\type{dot}}% +\hspace{-\l@stlmoff}\raisebox{\vd@st}{\usebox\l@sttreebox}\hspace{\l@strmoff}% +\quad or\quad +\treesymbol{\lvls{2}}% +\node{\rightonly\type{dot}}% +\hspace{-\l@stlmoff}\raisebox{\vd@st}{\usebox\l@sttreebox}\hspace{\l@strmoff}% +\end{Tree} + +\caption{Construction steps 2 and 3} +\label{Construct} +\end{Figure} + +This tree traversal is performed twice in the RT~algorithm. +During the first pass, +at each execution of steps 2 or~3, the relative positions of the +subtree(s) and of the new node are computed. +A closer examination of the RT~algorithm reveals that information about the +subtree's coordinates is not needed during this pass; the contour information +alone is sufficient. Complete information is only needed in the second +traversal, when the tree is really drawn. This is where we can use +a special feature of \TeX{} that allows us to save registers. +Unlike Pascal, \TeX{} has the capability of +storing a drawing in a single box register that can be positioned freely in +later drawings. This means that in our implementation the two passes +of the original RT~algorithm can be woven into a single pass, +storing the contour and drawing of each subtree on the stack. +Although the latter is a complex object, it takes only one of +\TeX's precious registers. + + +\section{The internal representation} + +Given a tree, the corresponding \TeX{}tree is a box containing +the ``drawing'' of the tree, together with some additional +information about the contour of the tree. +The reference point of a \TeX{}tree-box is always in the root of the +tree. The height, depth, and width of the box of a \TeX{}tree are +of no importance in this context. + +The additional information about the contour of the tree is stored in some +registers for numbers and dimensions and +is needed in order to put subtrees together to form a larger tree. +An array \var{loff} of dimensions contains for each +level of the tree the horizontal offset between the +left end of the leftmost node at the current level and the +left end of the leftmost node at the next level. +The horizontal offset between the root +and the leftmost node of the whole tree is hold in \var{lmoff}, and +the horizontal offset between the root and the leftmost node at +the bottom level of the tree is hold in \var{lboff}. +Finally, \var{ltop} holds the distance between the reference point +of the tree and the leftmost end of the root. +We use +\var{roff}, \var{rmoff}, \var{rboff}, and \var{rtop} +as the corresponding variables for ``left'' replaced by ``right.'' Finally, +\var{height} holds the height of the tree, and \var{type} holds the +geometric shape of the root of the tree. \fig{TeXtree} shows an example +\TeX{}tree, that is a tree drawing and the corresponding additional information. + +\begin{Figure} +\centering +\begin{Tree} +\e\ir\ir\e + \node{\type{dot}\rightonly\rght{\unskip\vrule height.8pt width5pt depth0pt}}% + \i % A +\end{Tree} +\leavevmode +\stack{-10pt}{\vd@st}{% + -10pt\\10pt\\10pt\\\var{loff}}% +\hspace{1em}% +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}% +\hspace{1em}% +\stack{-10pt}{\vd@st}{% + 15pt\\5pt\\-10pt\\\var{roff}}% + +\vskip\baselineskip\raggedright +height:~3, type:~dot, ltop:~2pt, rtop:~2pt, lmoff:~-10pt, rmoff:~20pt, lboff:~10pt, +rboff:~10pt. + +\caption{A \TeX{}tree consists of the drawing of the tree and the additional +information. The width of the dots is 4pt, the minimal separation between +adjacent nodes is 16pt, making for a distance of 20pt center to center. +The length of the small rule labeling +one of the nodes is 5pt. The column left (right) +of the tree drawing is the array \var{loff} (\var{roff}), +describing the left (right) contour of the tree. At each level, +the dimension given is the horizontal +offset between the border at the current and +at the next level. The offset between +the left border of the root node and the leftmost node at level~1 is -10pt, +the offset between the right border of the root node and the rightmost node at +level~1 is 15pt, etc.} +\label{TeXtree} +\end{Figure} + +Given two \TeX{}trees \var{A} and \var{B}, +how can a new \TeX{}tree \var{C} be built that +consists of a new root and has \var{A} and \var{B} as subtrees? +An example is given in \fig{AddInfo}. +First we determine which tree is higher; this is +\var{B} in the example. +Then we have to compute the minimal distance +between the roots of \var{A} and \var{B}, such that at all levels +of the trees there is free space of at least \var{minsep} between +the trees when they are drawn side by side. +For this purpose we keep track of two values, \var{totsep} and +\var{currsep}. The variables \var{totsep} and \var{currsep} +hold the total distance between the roots and the distance +between the rightmost node of \var{A} and the leftmost node +of \var{B} at the current level. To calculate +\var{totsep} and \var{currsep}, we start at level 0 and +visit each level of the trees until we reach the bottommost level +of the smaller tree; this is \var{A} in our example. + +\begin{Figure} +\centering +\begin{Tree} +\e\ir\ir\e + \node{\type{dot}\rightonly\rght{\unskip\vrule height.8pt width5pt depth0pt}}% + \i % A +\end{Tree} +\leavevmode +A: \stack{-10pt}{\vd@st}{% + -10pt\\10pt\\10pt\\\ \\\var{loff}(\var{A})}% +\hspace{1em}% +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}% +\hspace{1em}% +\stack{-10pt}{\vd@st}{% + 15pt\\5pt\\-10pt\\\ \\\var{roff}(\var{A})}% +\qquad +\begin{Tree} +\e\il\e\i\il\il\ir % B +\end{Tree} +\leavevmode +B: \stack{-10pt}{\vd@st}{% + 10pt\\-10pt\\-10pt\\-10pt\\-10pt\\\ \\\var{loff}(\var{B})}% +\hspace{1em}% +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}% +\hspace{1em}% +\stack{-10pt}{\vd@st}{% + 10pt\\-10pt\\-10pt\\10pt\\-30pt\\\ \\\var{roff}(\var{B})}% +\\[\figspace] +\begin{Tree} +\e\ir\ir\e + \node{\type{dot}\rightonly\rght{\unskip\vrule height.8pt width5pt depth0pt}}% + \i % A +\e\il\e\i\il\il\ir % B +\i % C +\end{Tree} +\leavevmode +C: \stack{-10pt}{\vd@st}{% + -20\\-10pt\\% + \makebox[0pt][r]{\var{loff}(\var{A})$\smash{\left\{\vrule height\vd@st + depth\vd@st width0pt\right.}$ }% + 10pt\\10pt\\% + \makebox[0pt][r]{$\longrightarrow$ }% + 10pt\\% + \makebox[0pt][r]{\raisebox{-.5\vd@st}{\var{loff}(\var{B})$\smash + {\left\{\vrule height.5\vd@st + depth.5\vd@st width0pt\right.}$ }}% + \makebox[0pt][r]{-}10pt\\\ \\\var{loff}(\var{C})}% +\hspace{1em}% +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}% +\hspace{1em}% +\stack{-10pt}{\vd@st}{% + 20pt\\10pt\\-10pt\\-10pt% + \makebox[0pt][l]{\raisebox{-.5\vd@st}{ + $\smash{\left\}\vrule height2.5\vd@st + depth2.5\vd@st width0pt\right.}$\var{roff}(\var{B})}}% + \\10pt\\-30pt\\\ \\\var{roff}(\var{C})}% + +\vspace{\figspace} +\centering +\begin{tabular}{|l|r|r|r|} +\hline +&\multic{1}{c|}{\var{A}}&\multic{1}{c|}{\var{B}}&\multic{1}{c|}{\var{C}}\\ +\hline +height&\multic{1}{c|}{3}& \multic{1}{c|}{5}& \multic{1}{c|}{6}\\ +type& \multic{1}{c|}{dot}&\multic{1}{c|}{dot}&\multic{1}{c|}{dot}\\ +ltop& 2pt& 2pt& 2pt\\ +rtop& 2pt& 2pt& 2pt\\ +lmoff& -10pt& -30pt& -30pt\\ +rmoff& 20pt& 10pt& 30pt\\ +lboff& 10pt& -30pt& -10pt\\ +rboff& 10pt& -30pt& -10pt\\ +\hline +\end{tabular}\qquad +\begin{tabular}{|c|r|r|} +\hline +\multic{1}{|c|}{level}&\multic{1}{c|}{\var{totsep}}& + \multic{1}{c|}{\var{currsep}}\\ +\hline +0&20pt&0/16pt\\ +1&25pt&11/16pt\\ +2&40pt&1/16pt\\ +3&40pt&16pt\\ +\hline +\end{tabular} +\caption{The \TeX{}trees \var{A} and~\var{B} are combined to form the +larger \TeX{}\-tree~\var{C}. The first table gives the additional +information of the three \TeX{}trees, +and the second table gives the +history of the computation for \var{totsep} and \var{currsep}.} +\label{AddInfo} +\end{Figure} + +At level 0, the distance between the roots of \var{A} and \var{B} +should be at least \var{minsep}. Therefore, we set +$\var{totsep}:=\var{minsep} + \var{rtop}(\var{A}) ++ \var{ltop}(\var{B})$ and $\var{currsep}:=\var{minsep}$. +Using $\var{roff}(\var{A})$ and $\var{loff}(\var{B})$, we can +calculate \var{currsep} for the next level. +If $\var{currsep} < \var{minsep}$, we have to increase \var{totsep} by +the difference and update \var{currsep}. This process is +repeated until we reach the lowest level of \var{A} +at which point \var{totsep} holds the final distance between the +nodes of \var{A} and \var{B}, as calculated by the RT~algorithm. +If the root of \var{C} is a significant node, then the additional space, +which is 0pt by default, is added to \var{totsep}. +However, the approach of synthesizing +drawings from simple graphics characters allows only a finite +number of orientations for the tree edges; therefore, \var{totsep} +must be increased slightly to fit the next orientation +available. + +Now we are ready to build the box of \TeX{}tree~\var{C}. +Simply put \var{A} and~\var{B} side by side, with the reference +points \var{totsep}~units apart, insert a new node +above them, and connect the parent and children by edges. +Next, we compute the additional information +for \var{C}. This can be done by using the additional information +for \var{A} and~\var{B}. +Note that most components of $\var{roff}(\var{C})$ and +$\var{lroff}(\var{C})$ are the same as in the higher tree, which +is \var{B} in our case. +So, if we can avoid moving this information around, +the number of counters we have to access to update the additional information +for \var{C} is within a small constant of the height of~\var{A}. +Hence, we can apply the same argument as +in~\cite{TidierTrees}, which gives +us a running time of $\O(N)$ for drawing a tree with N nodes. + +We must design the allocation of storage registers for +the additional information of \TeX{}trees carefully to fulfill the +following requirement. If a new tree is built from +two subtrees, the additional information of the new tree +shares storage with its larger subtree. +Organizational overhead, that is, +pointers that keep track of the locations of different parts of additional +information, must be avoided. +This means that the additional information +for one \TeX{}tree should be stored in a sequence +of consecutive dimension registers +such that only one pointer for access to the first element +in this sequence is needed. On the other hand, each parent +tree is higher and, therefore, needs more storage than its subtrees. +So we must ensure that there is always enough space in the sequence +for more information. + +The obvious way to fulfill these requirements is to use a stack and to +allow only the topmost \TeX{}trees of this stack to be +combined into a larger tree at any time. +This leads to the following allocation of registers: A contiguous sequence of +box registers contains the treeboxes of the subtrees in the stack. A +contiguous sequence of token registers contains the type information for the +nodes of the subtrees in the stack. For each subtree in the stack, +a contiguous sequence of dimension registers contains the contour +information of the subtree. The ordering of these groups of dimension +registers reflects the ordering of the subtrees in the +stack. Finally, a contiguous sequence of counter registers contains +the height and the address of the first dimension register for +each subtree in the stack. Four address counters store the addresses +of the last treebox, type information, height, and address of contour +information. A sketch of the register organization for a stack of \TeX{}trees +is provided in \fig{Registers}. + +\begin{Figure} +Dimension registers\\ +\var{lmoff}(1) \var{rmoff}(1) \var{lboff}(1) \var{rboff}(1) \var{ltop}(1) + \var{rtop}(1)\\ +\var{loff}($h_1$) \var{roff}($h_1$) \dots\ \var{loff}(1) \var{roff}(1)\\ +\dots\\ +\var{lmoff}($n$) \var{rmoff}($n$) \var{lboff}($n$) \var{rboff}($n$) + \var{ltop}($n$) \var{rtop}($n$)\\ +\var{loff}($h_n$) \var{roff}($h_n$) \dots\ \var{loff}(1) \var{roff}(1)\\ +\mbox{}\\ +Counter registers\\ +\var{lasttreebox} \var{lasttreeheight} \var{lasttreeinfo} \var{lasttreetype}\\ +\var{treeheight}(1) \var{diminfo}(1) \dots\ \var{treeheight}($n$) + \var{diminfo}($n$)\\ +\mbox{}\\ +Box registers\\ +\var{treebox}(1) \dots\ \var{treebox}($n$)\\ +\mbox{}\\ +Token registers\\ +\var{type}(1) \dots\ \var{type}($n$) + +\caption{\var{lasttreebox}, \var{lasttreeheight}, \var{lasttreeinfo}, +\var{lasttreetype} contain pointers to \var{treebox}($n$) +\var{treeheight}($n$), \var{lmoff}($n$), \var{type}($n$), +\var{diminfo}($i$) contains a pointer to +\var{lmoff}($i$). Unused dimension registers are +allowed between the dimension registers of subsequent trees. The counter +registers \var{lasttreebox},\ldots,\var{diminfo}($n$) serve as a directory +mechanism to access the \TeX{}trees on the stack.} +\label{Registers} +\end{Figure} + + +When a new node is pushed onto the stack, the treebox, type information, +height, address of contour information, and contour information are +stored in the next free registers of the appropriate type, and the +four address counters are updated accordingly. + +When a new tree is formed from the topmost subtrees on the stack, +the treebox, type information, height, and address of contour information +of the new tree are sorted in the registers formerly used by the bottommost +subtree that has occurred in the construction step, +and the four address registers are +updated accordingly. This means that this information for the subtrees +is no longer accessible. The contour information of the new subtree +is stored in the same registers as the contour information of the larger +subtree used in the construction, apart from the left and right offset +of the root to the left and right child, which are stored in the +following dimension registers. This means that gaps can occur +between the contour information of subtrees in the +stack, namely when the right subtree, which is in a higher position in the +stack, is higher than the left one. To avoid these +gaps, the user can specify an option \verb.\lefttop. when entering a +binary node, which makes the topmost tree in the stack the +left subtree of the node. + +This stack concept also has consequences for the design of the user interface +that is discussed in Section~\ref{Interface}. + +\section{Space cost analysis} + +Suppose we want to draw a unary-binary tree $T$ of height $h$ having +$N$ nodes\footnote{The height $h$ and the number of nodes $N$ refer to the +drawing of the tree. $N$ is the number of circles, squares,~etc., actually +drawn, and $h$ is the number of levels in the drawing minus 1.}. +According to our internal representation, +for each subtree in the stack we need: + +\begin{enumerate} +\item one box register to store the box of the \TeX{}tree; +\item one token register to store the type of the root of the subtree; +\item $2h^\prime+6$ dimension registers to store the additional + information, where $h^\prime$ is the height of the + subtree; and +\item three counter registers to store the register numbers of the + box register, the token register, and the first dimension register above. +\end{enumerate} + +\begin{lemma} +Let $T$ be a unary-binary tree of height~$h$ and size~$N$; then: +\begin{enumerate} +\item at any time, there are at most $h+1$ subtrees of $T$ on the + stack; and +\item for each set $\T$ of subtrees of $T$ that are on the stack + simultaneously we have + $$\sum_{T^\prime\in \T}({\rm ht}(T^\prime)+1) \le N$$ +\end{enumerate} +\end{lemma} + +The lemma implies that our implementation +uses at most $9h+2N$~registers. +To compare this with the +$10N$ registers used in the straightforward implementation, +an estimation of the average height of a tree with $N$ nodes is +needed. Several results, depending on the type of trees and of the +randomization model, are cited in \fig{Stat}, which +compares the number of registers used in a straightforward +implementation with the average number of registers used in our +implementation. This table shows clearly the advantage of our +implementation. + +\begin{Figure} +\centering + +\begin{tabular}{|c|c|c|c|c|} +\hline +®isters&\multicolumn{3}{c|}{average registers}\\ +\cline{3-5} +nodes&(straight-&&unary-binary&binary\\ +&forward)&binary trees&trees&search trees\\ +$N$&&($2\sqrt{\pi N}$) \cite{BinaryTrees}& + ($\sqrt{3\pi N}$) ~\cite{BinaryTrees}& + ($4.311\log N$) \cite{BinarySearchTrees}\\ +\hline +\ds10 & \ds100 & 120.89 & 107.37 & 109.34 \\ +\ds20 & \ds200 & 182.68 & 163.56 & 156.23 \\ +\ds30 & \ds300 & 234.75 & 211.33 & 191.96 \\ +\ds40 & \ds400 & 281.78 & 254.75 & 223.12 \\ +\ds50 & \ds500 & 325.60 & 295.37 & 251.78 \\ +\ds60 & \ds600 & 367.13 & 334.02 & 278.86 \\ +\ds70 & \ds700 & 406.93 & 371.17 & 304.84 \\ +\ds80 & \ds800 & 445.36 & 407.13 & 330.02 \\ +\ds90 & \ds900 & 482.67 & 442.12 & 354.59 \\ +100 & 1000 & 519.04 & 476.30 & 378.68 \\ +\hline +\end{tabular} + +\caption{The numbers of registers used by a straightforward implementation +(second column) and by our modified implementation (third to fifth column) +of the RT~algorithm are +given for different types of trees and randomization models. +The formulas in parentheses indicate the average height of the respective +classes of trees.} +\label{Stat} +\end{Figure} + + +\section{The user interface}\label{Interface} + +The user interface of \TreeTeX{} has been designed in the spirit of +the thorough separation of the logical description of document components +and their layout; see~\cite{DocumentFormatting,GML}. This concept +ensures both uniformity and flexibility of document layout and frees +authors from layout problems that have nothing to do with the +substance of their work. For some powerful implementations and projects +see \cite{Tables,Karlsruhe,LaTeX,Grif,Scribe}. + +The description of a tree consists of a description of its nodes +in postorder. Each description of a node, in turn, has to specify +the outdegree, the geometric shape and the labels of the node. +Defaults are provided for all specifications, +thereby allowing the user to omit many definitions +if the defaults match what he or she wants. + +A separate style command defines layout parameters for tree drawings +that are valid for all trees of a document. +Layout parameters include the font to be used for labels, the diameter +of circle nodes, the vertical distance between two subsequent levels +of the tree, and the minimal horizontal distance between nodes. + +Standard versions of \TeX{} provide only a limited number of +font and circle sizes. Hence, the user of the style command must make +sure that the specified sizes can be realized. This is especially +cumbersome when everything has to be magnified for later reproduction +with reduction. But the style variables can be made parametric for +installations that provide scalable fonts and replace \LaTeX{}'s +circle- and line-drawing commands with routines that provide arbitrary +diameters and slopes. + +Three examples of tree descriptions are given in +Figures~\ref{firstex}--\ref{lastex}. +A more detailed description of the user interface is +given in~\cite{Exeter}. + +\section{Conclusions} + +We hope that, by now, we have convinced the reader of the main advantages +of \TreeTeX{}: It integrates graphics and text; it is portable to all +sites running \TeX{}; +and it is easy to use for the author, because it derives the drawing +of a tree from a purely structural description. But our decision to +implement \TreeTeX{} as a \TeX{} macro package has also some +drawbacks, both for the programmer and for the user of the system. + +>From the programmer's point of view, \TeX{}'s macro language is +a low level programming language. Hence, maintaining and extending +the package is a more tedious task than it would be if we had used +a higher level language with better support for modularization. + +>From the author's point of view, \TreeTeX{}'s limitations lie in +speed, size of trees, and graphical primitives. +Typesetting all the trees in this article takes about two~minutes on +a VAX~750, and typesetting a complete binary tree with 63~internal +and 64~external nodes takes about one~minute on the same machine. +The size of the trees is limited by three factors, namely, +the number of registers, the complexity of the nested boxes that +contain the drawing of a tree, and the limited number of slopes +that are available for the edges, the latter being the most severe +problem at present. Hence, the main area of application for +\TreeTeX{} is modest use such as in textbooks; displaying +large amounts of statistical data, for example, is out of the question. + +Currently edges and circular nodes are drawn from \LaTeX{}'s set of +predefined graphical characters. Hence, \TreeTeX{} cannot draw +arbitrarily wide trees or large circular nodes. We consider +this restriction, however, to be a temporary one, since a committee inside +the \TeX{} Users Group is working on standard graphic +extensions to \TeX{} that will remove these limitations. + +As to further developments of \TreeTeX{}, it would be desirable to +draw larger classes of trees, for example multiway trees, and to allow +labels not only for nodes, but also for edges and whole subtrees. + + +\Treestyle{\vdist{60pt}} +\dummyhalfcenterdim@n=10pt + +\begin{Figure} +\centering +\begin{Tree} +\node{\external\bnth{first}\cntr{1}\lft{Beeton}} +\node{\external\cntr{3}\rght{Kellermann}} +\node{\cntr{2}\lft{Carnes}} +\node{\external\cntr{6}\lft{Plass}} +\node{\external\bnth{last}\cntr{8}\rght{Tobin}} +\node{\cntr{7}\rght{Spivak}} +\node{\leftonly\cntr{5}\rght{Lamport}} +\node{\cntr{4}\rght{Knuth}} +\end{Tree} + +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}\ + +\begin{verbatim} +\begin{Tree} +\node{\external\bnth{first}\cntr{1}\lft{Beeton}} +\node{\external\cntr{3}\rght{Kellermann}} +\node{\cntr{2}\lft{Carnes}} +\node{\external\cntr{6}\lft{Plass}} +\node{\external\bnth{last}\cntr{8}\rght{Tobin}} +\node{\cntr{7}\rght{Spivak}} +\node{\leftonly\cntr{5}\rght{Lamport}} +\node{\cntr{4}\rght{Knuth}} +\end{Tree} + +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist} +\end{verbatim} + +\caption{This is an example of a tree that includes labels.} +\label{firstex} +\end{Figure} + +\begin{Figure} +\centering +\begin{Tree} +\node{\external\type{frame}\bnth{first}\cntr{Beeton}} +\node{\external\type{frame}\cntr{Kellermann}} +\node{\type{frame}\cntr{Carnes}} +\node{\external\type{frame}\cntr{Plass}} +\node{\external\type{frame}\bnth{last}\cntr{Tobin}} +\node{\type{frame}\cntr{Spivak}} +\node{\leftonly\type{frame}\cntr{Lamport}} +\node{\type{frame}\cntr{Knuth}} +\end{Tree} + +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}\ + +\begin{verbatim} +\begin{Tree} +\node{\external\type{frame}\bnth{first}\cntr{Beeton}} +\node{\external\type{frame}\cntr{Kellermann}} +\node{\type{frame}\cntr{Carnes}} +\node{\external\type{frame}\cntr{Plass}} +\node{\external\type{frame}\bnth{last}\cntr{Tobin}} +\node{\type{frame}\cntr{Spivak}} +\node{\leftonly\type{frame}\cntr{Lamport}} +\node{\type{frame}\cntr{Knuth}} +\end{Tree} + +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist} +\end{verbatim} +\caption{This is an example of a tree with framed center labels.} +\end{Figure} + +\begin{Figure} +\Treestyle{\treefonts{\small\it}\nodesize{16pt}\vdist{40pt}\minsep{16pt}} +\centering +\begin{Tree} +\node{\external\bnth{first}\cntr{1}\lft{Beeton}} +\node{\external\cntr{3}\rght{Kellermann}} +\node{\cntr{2}\lft{Carnes}} +\node{\external\cntr{6}\lft{Plass}} +\node{\external\bnth{last}\cntr{8}\rght{Tobin}} +\node{\cntr{7}\rght{Spivak}} +\node{\leftonly\cntr{5}\rght{Lamport}} +\node{\cntr{4}\rght{Knuth}} +\end{Tree} + +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}\ + +\caption{This tree was produced from the same logical description as in +Figure~\ref{firstex}, but with different style parameters} +\label{lastex} +\end{Figure} + +\clearpage +\bibliography{trees} +\end{document} + + diff --git a/Master/texmf-dist/doc/plain/treetex/readme b/Master/texmf-dist/doc/plain/treetex/readme new file mode 100644 index 00000000000..575afc2fe0b --- /dev/null +++ b/Master/texmf-dist/doc/plain/treetex/readme @@ -0,0 +1,19 @@ +TreeTeX is a public domain macro package for drawing +trees with TeX. It may be freely distributed, provided +that the following files are kept together: + + README epodd.bbl epodd.tex tree_doc.bbl tree_doc.tex + classes.tex l_pic.tex treetex.tex + +Copyright is with Anne Brueggemann-Klein and Derick Wood. + +All remarks, bug reports etc. should be directed to + + Dr. Anne Brueggemann-Klein + Institut fuer Informatik + Rheinstr. 10--12 + 7800 Freiburg, West Germany + + email: abk@sun1.ruf.uni-freiburg.dbp.de + + diff --git a/Master/texmf-dist/doc/plain/treetex/tree_doc.bbl b/Master/texmf-dist/doc/plain/treetex/tree_doc.bbl new file mode 100644 index 00000000000..88c540ee0b7 --- /dev/null +++ b/Master/texmf-dist/doc/plain/treetex/tree_doc.bbl @@ -0,0 +1,97 @@ +\begin{thebibliography}{10} + +\bibitem{Tables} +R.~J. Beach. +\newblock {\it Setting Tables and Illustrations with Style}. +\newblock PhD thesis, University of Waterloo, 1985. + +\bibitem{Karlsruhe} +A. Br{\"u}ggemann-Klein, P. Dolland, and A. Heinz. +\newblock How to please authors and publishers: a versatile document + preparation system at {K}arlsruhe. +\newblock In J. D\'esarm\'enien, editor, {\it {\TeX{}} for Scientific + Documentation}, Strasbourg, France, June 1986. +\newblock LNCS~236. + +\bibitem{TreeTeX} +A. Br{\"u}ggemann-Klein and D. Wood. +\newblock {\it Tree{\TeX}: Documentation and User Handbook}. +\newblock Technical Report, University of Waterloo, 1987. + +\bibitem{AverageHeight} +N.G. de~Bruijn, D. Knuth, and S.O. Rice. +\newblock The average height of planted plane trees. +\newblock In R.C. Read, editor, {\it Graph Theory and Computing}, 1972. + +\bibitem{BinarySearchTrees} +L. Devroye. +\newblock A note on the height of binary search trees. +\newblock {\it Journal of the ACM}, 33(3), July 1986. + +\bibitem{BinaryTrees} +Ph. Flajolet and A. Odlyzko. +\newblock The average height of binary trees and other simple trees. +\newblock {\it Journal of Computer and System Sciences}, 25, 1982. + +\bibitem{DocumentFormatting} +R. Furuta, J. Scofield, and A. Shaw. +\newblock Document formatting systems: surveys, concepts, issues. +\newblock {\it Computing Surveys}, 14(3), 1982. + +\bibitem{GML} +Ch.~F. Goldfarb. +\newblock A generalized approach to document markup. +\newblock {\it SIGPLAN Notices of the ACM}, June 1981. + +\bibitem{ACP} +D.~E. Knuth. +\newblock {\it Fundamental Algorithms}. +\newblock Volume~1 of {\it The Art of Computer Programming}, Addison-Wesley, + Reading, Massachusetts, 1973. + +\bibitem{TeXbook} +D.~E. Knuth. +\newblock {\it The {\TeX{}}book}. +\newblock Volume~A of {\it Computers \& Typesetting}, Addison-Wesley, Reading, + Massachusetts, 1986. + +\bibitem{LaTeX} +L. Lamport. +\newblock {\it {\LaTeX}, User's Guide \& Reference Manual}. +\newblock Addison-Wesley, Reading, Massachusetts, 1986. + +\bibitem{Brother} +Th. Ottmann, H.-W. Six. +\newblock Eine neue Klasse ausgeglichener Bin\"arb\"aume. +\newblock {\it Angewandte Informatik}, 9, 1976. + +\bibitem{Grif} +V. Quint, I. Vatton, and H. Bedor. +\newblock Grif: an interactive environment for {\TeX{}}. +\newblock In J. D\'esarm\'enien, editor, {\it {\TeX{}} for Scientific + Documentation}, Strasbourg, France, June 1986. +\newblock LNCS~236. + +\bibitem{Scribe} +B.~K. Reid. +\newblock {\it Scribe: A Document Specification Language and its Compiler}. +\newblock PhD thesis, Carnegie Mellon University, 1980. + +\bibitem{TidierTrees} +E.~M. Reingold and J.~S. Tilford. +\newblock Tidier drawings of tree. +\newblock {\it IEEE Transactions on Software Engineering}, 7(2), March 1981. + +\bibitem{Complexity} +K.~J. Supowit and E.~M. Reingold. +\newblock The complexity of drawing trees nicely. +\newblock {\it Acta Informatica}, 18, 1983. + +\bibitem{TidyTrees} +Ch. Wetherell and A. Shannon. +\newblock Tidy drawings of trees. +\newblock {\it IEEE Transactions on Software Engineering}, 5(5), September + 1979. + +\end{thebibliography} + diff --git a/Master/texmf-dist/doc/plain/treetex/tree_doc.tex b/Master/texmf-dist/doc/plain/treetex/tree_doc.tex new file mode 100644 index 00000000000..635d0dab5d6 --- /dev/null +++ b/Master/texmf-dist/doc/plain/treetex/tree_doc.tex @@ -0,0 +1,1331 @@ +% This is tree_doc.tex, the documentation for the treetex macro package +% as it will appear in the conference proceedings of the third European +% TeX meeting in Exeter, England, 1988. + +\documentstyle[12pt,a4]{article} + +\advance\voffset by -2cm + +\clubpenalty=10000 +\widowpenalty=10000 +\def\addcontentsline#1#2#3{\relax}% Some captions are too long for some + % TeX installations (buffer size too small) + + +\newenvironment{lemma}{\begingroup\samepage\begin{lemmma}\ }{\end{lemmma}% + \endgroup} +\newtheorem{lemmma}{Lemma}[section] +\newenvironment{proof}{\begin{prooof}\rm\ \nopagebreak}{\end{prooof}} +\newcommand{\proofend}{\qquad\ifmmode\Box\else$\Box$\fi} +\newtheorem{prooof}{Proof} +\renewcommand{\theprooof}{} % makes shure that prooof doesn't get numbers +\newenvironment{Figure}{\begin{figure}\vspace{1\baselineskip}}% + {\vspace{1\baselineskip}\end{figure}} +\newlength{\figspace} % space between figures in a single +\setlength{\figspace}{30pt} % Figure environment + +\newcommand{\var}[1]{{\it #1\/}} % use it for names of variables +\renewcommand{\emph}[1]{{\em #1\/}} % use it for emphazided text + % (This notion sticks to the + % applicative style of markup.) +\renewcommand{\O}{{\rm O}} % O-notation, also for math mode +\newcommand{\T}{{\cal T}} % the set T in math mode +\newcommand{\TreeTeX}{Tree\TeX} +\newcommand{\fig}[1]{Figure~\ref{#1}} +\let\p\par + +\input treetex +\Treestyle{\vdist{20pt}\minsep{16pt}} +\dummyhalfcenterdim@n=2pt + +\def\Node(#1,#2){\put(#1,#2){\circle*{4}}} +\def\Edge(#1,#2,#3,#4,#5){\put(#1,#2){\line(#3,#4){#5}}} + +\def\enode{\node{\external\type{dot}}} +\def\inode{\node{\type{dot}}} + +\def\e{\node{\external\type{dot}}} +\def\i{\node{\type{dot}}} +\def\il{\node{\type{dot}\leftonly}} +\def\ir{\node{\type{dot}\rightonly}} + +\newcommand{\stack}[3]{% + \vtop{\settowidth{\hsize}{#1}% + \setlength{\leftskip}{0pt plus 1fill}% + \setlength{\baselineskip}{#2}#3}} + +\let\multic\multicolumn + +\newlength{\hd} % hidden digit +\setbox0\hbox{1} +\settowidth{\hd}{\usebox{0}} +\newcommand{\ds}{\hspace{\hd}} % digit space + +\newcommand{\ccol}[1]{\multicolumn{1}{c}{#1}} + +\hyphenation{post-or-der sym-bol Karls-ruhe bool-ean} + +\begin{document} + +\bibliographystyle{plain} + +\title{Drawing Trees Nicely with \TeX\thanks{This work was supported by + a Natural Sciences and Engineering Research Council of Canada + Grant~A-5692 and a Deutsche Forschungsgemeinschaft Grant~Sto167/1-1. + It was started during the first author's stay with + the Data Structuring Group in Waterloo.}} +\author{Anne Br\"uggemann-Klein\thanks{Institut f\"ur Informatik, + Universit\"at Freiburg, Rheinstr.~10--12, 7800~Freiburg, + West~Germany}\ \and Derick Wood\thanks{Data + Structuring Group, Department of Computer Science, University of + Waterloo, Waterloo, Ontario, N2L~3G1, Canada}} +\maketitle + +\begin{abstract} + +Various algorithms have been proposed for the difficult problem of +producing aesthetically pleasing drawings of trees, see~% +\cite{TidierTrees,TidyTrees} but +implementations only exist as ``special purpose software'', +designed for special environments. Therefore, +many users resort to the +drawing facilities available on most personal computers, but the +figures obtained in this way still look ``hand-drawn''; their quality is +inferior to the quality of the surrounding text that can be realized by +today's high quality text processing systems. + +In this paper we present an entirely new solution that +integrates a tree drawing algorithm into one of the best text +processing systems available. More precisely, we present a \TeX{} macro package +\TreeTeX{} that produces a drawing of a tree from a purely logical +description. Our approach has three advantages. First, labels +for nodes can be handled in a reasonable way. On the one hand, the tree +drawing algorithm can compute the widths of the labels and take +them into account for the positioning of the nodes; on the other hand, +all the textual parts of the document can be treated uniformly. Second, +\TreeTeX{} can be trivially ported to any site running \TeX{}. Finally, +modularity in the description of a tree and \TeX{}'s macro capabilities +allow for libraries of subtrees and tree classes. + +In addition, we have implemented an option that produces +drawings which make the +\emph{structure} of the trees more obvious to the human eye, +even though they may not be as aesthetically pleasing. + +\end{abstract} + +\section{Aesthetical criteria for drawing trees} + +One of the most commonly used data structures in computer science is the tree. +As many people are using trees in their research or just as illustration +tools, they are usually struggling with the problem of +\emph{drawing} trees. We are concerned primarily with ordered +trees in the sense of~\cite{ACP}, especially binary and unary-binary +trees. A binary tree is a finite set of nodes which either +is empty, or consists of a root and two disjoint binary trees called +the left and right subtrees of the root. A unary-binary tree is +a finite set of nodes which either is empty, or consists of a root and +two disjoint unary-binary trees, or consists of a root and one +nonempty unary-binary tree. An extended binary tree is a binary tree +in which each node has either two nonempty subtrees or two +empty subtrees. + +For these trees there +are some basic agreements on how they should be drawn, reflecting +the top-down and left-right ordering of nodes in a tree; +see \cite{TidierTrees} and \cite{TidyTrees}. + +\begin{enumerate} +\item[1.] Trees impose a distance on the nodes; no node + should be closer to the root than any of its + ancestors. +\item[2.] Nodes of a tree at the same height should lie on a straight + line, and the straight lines defining the levels should be + parallel. +\item[3.] The relative order of nodes on any level should be the same + as in the level order traversal of the tree. +\end{enumerate} + +These axioms guarantee that trees are drawn as planar graphs: edges do +not intersect except at nodes. Two further axioms improve the aesthetical +appearance of trees: + +\begin{enumerate} +\item[4.] In a unary-binary tree, each left child should be positioned + to the left of its parent, each + right child to the right of its parent, and each unary child + should be positioned below its parent. +\item[5.] A parent should be centered over its children. +\end{enumerate} + +An additional axiom deals with the problem of tree drawings becoming too wide +and therefore exceeding the physical limit of the output medium: + +\begin{enumerate} +\item[6.] Tree drawings should occupy as little width as possible without + violating the other axioms. +\end{enumerate} + +In \cite{TidyTrees}, Wetherell and Shannon introduce two algorithms for +tree drawings, the first of which fulfills axioms~1--5, and the second +1--6. However, as Reingold and Tilford in \cite{TidierTrees} +point out, there is a lack of symmetry in the algorithms of +Wetherell and Shannon which may lead to unpleasant results. +Therefore, Reingold and Tilford introduce a new structured +axiom: + +\begin{enumerate} +\item[7.] A subtree of a given tree should be + drawn the same way regardless of where it occurs in the given tree. +\end{enumerate} + +Axiom~7 allows the same tree to be drawn differently when it occurs as +a subtree in different trees. +Reingold and Tilford give an algorithm which fulfills axioms~1--5 +and~7. Although +this algorithm doesn't fulfill axiom~6, +the aesthetical improvements are well worth the additional space. +\fig{algorithms} illustrates the benefits of axiom~7, and \fig{narrowtrees} +shows that the algorithm of Reingold and Tilford violates axiom~6. + +\begin{Figure} +\centering +\leavevmode\noindent +\begin{Tree} +\enode +\enode\enode\inode\enode\enode\inode\inode\inode +\node{\external\type{dot}\rght{\unskip\hskip2\mins@p\hskip2\dotw@dth}} +\enode\enode\inode\enode\enode\inode\inode\inode +\inode +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\qquad +\begin{Tree} +\enode +\enode\enode\inode\enode\enode\inode\inode\inode +\enode +\enode\enode\inode\enode\enode\inode\inode\inode +\inode +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\ +\caption{The left tree is drawn by the algorithm of Wetherell and Shannon, +and the tidier right one is drawn by the algorithm of Reingold and Tilford.} +\label{algorithms} + +\vspace{\figspace} +\centering +\leavevmode\noindent +\begin{Tree} +\enode\enode\enode\enode\enode\enode\enode\enode\enode +\enode\inode\inode\inode +\enode\inode\inode\inode +\enode\inode\inode\inode +\enode\inode\inode\inode +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\qquad +\begin{Tree} +\enode\enode\enode\enode\enode\enode\enode\enode +\node{\external\type{dot}\rght{\unskip\hskip\mins@p\hskip\dotw@dth}} +\enode\inode\inode\node{\type{dot}\rght{\unskip\hskip\mins@p\hskip\dotw@dth}} +\enode\inode\inode\node{\type{dot}\rght{\unskip\hskip\mins@p\hskip\dotw@dth}} +\enode\inode\inode\node{\type{dot}\rght{\unskip\hskip\mins@p\hskip\dotw@dth}} +\enode\inode\inode\inode +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\ +\caption{The left tree is drawn by the algorithm of Reingold and Tildford, but +the right tree shows that narrower drawings fulfilling all aesthetic axioms +are possible.} +\label{narrowtrees} +\end{Figure} + + +\section{The algorithm of Reingold and Tilford} + +The algorithm of Reingold and Tilford (hereafter called ``the RT~algorithm'') +takes a modular approach to the +positioning of nodes: The relative positions of the nodes in a subtree +are calculated independently from the rest of the tree. After the +relative positions of two subtrees have been calculated, they can be +joined as siblings in a larger tree by placing them as close +together as possible and centering the parent node above them. +Incidentally, the modularity principle is the reason that the +algorithm fails to fulfill axiom~6; see~\cite{Complexity}. +Two sibling subtrees are placed as close together as possible, +during a postorder traversal, as follows. At each node \var{T}, +imagine that its two subtrees have been drawn and cut out of paper along +their contours. Then, starting with the two subtrees superimposed at their +roots, move them apart until a minimal agreed upon distance +between the trees is obtained at each level. This can be done gradually: +Initially, their roots are separated by some agreed upon minimum +distance. Then, at the next lower level, +they are pushed +apart until the minimum separation is established there. +This process is continued at successively lower levels until the +bottom of the shorter subtree is reached. At some levels no movement may be +necessary; but at no level are the two subtrees moved closer +together. When the process is complete, the position of the +subtrees is fixed relative to their parent, which is centered over them. +Assured that the subtrees will never be placed closer together, +the postorder traversal is continued. + +A nontrivial implementation of +this algorithm has been obtained by Reingold and Tilford that runs +in time $\O(N)$, where $N$ is the number of +nodes of the tree to be drawn. +Their crucial idea is to keep track of the contour of the subtrees +by special pointers, called threads, such that whenever +two subtrees are joined, only the +top part of the trees down to the lowest level of the +smaller tree need to be taken into account. + +The RT algorithm is given in \cite{TidierTrees}. +The nodes are positioned on a fixed grid and are +considered to have zero width. No labelling is provided. The algorithm only +draws binary trees, but is easily extendable to multiway trees. + +\section{Improving human perception of trees} + +It is common understanding in book design that aesthetics and readability +don't necessarily coincide, and---as Lamport (\cite{LaTeX}) puts it---% +books are meant to be read, not to be hung on walls. Therefore, readability is +more important than aesthetics. + +When it comes to tree drawings, readability means that the structure of +a tree must be easily recognizable. This criterion is not always met +by the RT~algorithm. As an example, there are trees whose structure is very +different, the only common thing being the fact that they have the same number +of nodes at each level. The RT~algorithm might assign identical positions to +these nodes making it very hard to perceive the different structures. +Hence, we have modified the RT~algorithm such that additional white space +is inserted between subtrees of +\emph{significant} nodes. Here a binary node +is called significant if the minimum distance +between its two subtrees is taken \emph{below} their root level. +Setting the amount of additional white space to zero retains the original RT~% +placement. The effect of having nonzero additional white space between +the subtrees of significant +nodes is illustrated in \fig{addspace} . + +Another feature we have added to the RT~algorithms is the possibility to draw +an unextended binary tree with the same placement of nodes as its +associated extended version. We define the \emph{associated extended version} +of a binary tree to be the binary tree obtained by replacing each empty subtree +having a nonempty sibling with a subtree consisting of one node. This feature +also makes the structure of a tree more prominent; see \fig{extended}. + +\begin{Figure} +\centering +\leavevmode\noindent +\begin{Tree} +\e\il\e\e\i\i\il % the left subtree +\e\ir\il % the right subtree +\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\qquad +\begin{Tree} +\e\il\il\il % the left subtree +\e\e\i\e\i\il % the right subtree +\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\qquad +\adds@p10pt +\begin{Tree} +\e\il\e\e\i\node{\type{dot}\lft{$\longrightarrow$}}\il % the left subtree +\e\ir\il % the right subtree +\node{\type{dot}\lft{$\longrightarrow$}} +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\qquad +\begin{Tree} +\e\il\il\il % the left subtree +\e\e\i\e\i\il % the right subtree +\node{\type{dot}\lft{$\longrightarrow$}} +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\ +\adds@p0pt + +\caption{The first two trees get the same placement of their nodes +by the RT~algorithm, although the structure of the two trees is very different. +The alternative drawings highlight the structure of the trees by adding +additional white space between the subtrees of +($\longrightarrow$) significant nodes.} +\label{addspace} +\end{Figure} + +\begin{Figure} +\centering +\leavevmode\noindent +\begin{Tree} +\e\e\i\il\e\e\i\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\qquad +\begin{Tree} +\e\e\i\e\i\e\ir\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\qquad +\extended +\begin{Tree} +\e\e\i\il\e\e\i\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\qquad +\begin{Tree} +\e\e\i\e\i\e\ir\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\\ +\noextended +\begin{Tree} +\e\e\i\e\i\e\e\i\i +\end{Tree} +\hskip\leftdist\box\TeXTree\hskip\rightdist\ +\caption{In the first two drawings, the RT~algorithm assigns the same placement +to the nodes of two trees although their structure is very different. The modified +RT~algorithms highlights the structure of the trees by optionally +drawing them like their extended +counterpart, which is given in the second row.} +\label{extended} +\end{Figure} + + +\section{Trees in a document preparation environment} + +Drawings of trees usually don't come alone, but are included in some text +which is itself typeset by a text processing system. Therefore, a typical +scenario is a pipe of three stages. First comes the tree drawing +program which calculates the positioning of the nodes of the tree to +be drawn and outputs a description of the tree drawing in +some graphics language; next comes a graphics system which transforms this +description into an intermediate language which can be interpreted by the output +device; and finally comes the +text processing system which integrates the output of the +graphics system into the text. + +This scenario loses its linear structure once nodes have to be labelled, since +the labelling influences the positioning of the nodes. Labels usually occur +inside, to the left of, to the right of, or beneath nodes (the latter only for +external nodes), and their extensions certainly should be taken into account +by the tree drawing algorithm. But the labels have to be typeset first +in order to determine their extensions, +preferably by the typesetting program that +is used for the regular text, because this method makes for the uniformity in the textual +parts of the document and provides the author with the full power of the +text processing system for composing the labels. Hence, a more complex +communication scheme than a simple pipe is required. + +Although a system of two processes running simultaneously might be the most +elegant solution, we wanted a system that is easily portable to +a large range of hardware at our sites +including personal computers with single process +operating systems. +Therefore, we thought of using a text processing system +having programming facilities powerful enough to program a tree drawing algorithm +and graphics facilities powerful enough +to draw a tree. One text processing system +rendering outstanding typographic quality and good enough programming +facilities is \TeX, developed by Knuth at Stanford University; +see~\cite{TeXbook}. +The \TeX{} system includes the following programming facilities: + +\begin{enumerate} +\item[1.] datatypes:\\ + integers~(256), dimensions\footnote{The term \emph{dimension} is used + in \TeX\ to describe physical measurements of typographical objects, + like the length of a word.}~(512), boxes~(256), tokenlists~(256), boolean + variables~(unrestricted) +\item[2.] elementary statements:\\ + $a:=\rm const$, $a:=b$ (all types);\\ + $a:=a+b$, $a:=a*b$, $a:=a/b$ (integers and dimensions);\\ + horizontal and vertical nesting of boxes +\item[3.] control constructs:\\ + if-then-else statements testing relations between integers, + dimensions, boxes, or boolean variables +\item[4.] modularization constructs:\\ + macros with up to 9~parameters (can be viewed as procedures without + the concept of local variables). +\end{enumerate} + +Although the programming +facilities of \TeX{} hardly exceed the abilities of a Turing machine, +they are sufficient to +handle relatively small programs. How about the graphics facilities? +Although \TeX{} has no built-in graphics facilities, it +allows the placement of characters in arbitrary positions on +the page. Therefore, complex pictures can be synthesized from elementary +picture elements treated as characters. Lamport has included such +a picture drawing environment in his macro package \LaTeX, using +quarter circles of different sizes and line segments (with and without +arrow heads) of different slopes as basic elements; see~\cite{LaTeX}. +These elements are sufficient for drawing trees. + +This survey of \TeX's capabilities implies that \TeX{} may be a suitable +text processing system to implement a tree drawing algorithm directly. +We are basing our algorithm on the RT~algorithm, because this algorithm +gives the aesthetically most pleasing results. In the first version +presented here, we +restrict ourselves to unary-binary trees, although our method is +applicable to arbitrary multiway trees. But in order to take advantage +of the text processing environment, we expand the algorithm to allow +labelled nodes. + +In contrast to previous tree drawing programs, we feel no necessity to +position the nodes of a tree on a fixed grid. While this may be +reasonable for a plotter with a coarse resolution, it is certainly not +necessary for \TeX, a system that is capable of handling +arbitrary dimensions +and produces device \emph{independent} output. + + +\section{A representation method for \TeX{}trees} + +The first problem to be solved in implementing our tree drawing algorithm +is how to choose a good internal representation +for trees. A straightforward adaptation +of the implementation by Reingold and Tilford requires, for each node, +at least the following fields: + +\begin{enumerate} +\item two pointers to the children of the node +\item two dimensions for the offset to the left and the right child (these + may be different once there are labels of different widths to the + left and right of the nodes) +\item two dimensions for the $x$- and $y$-coordinates of the final + position of the nodes +\item three or four labels +\item one token to store the geometric shape (circle, square, framed text etc.) + of the node. +\end{enumerate} + +Because these data are used very frequently in calculations, they should be +stored in registers (that's what variables are called in \TeX), +rather than being recomputed, in order to obtain +reasonably fast performance. This gives a total of $10N$ registers for +a tree with $N$ nodes, which would exceed +\TeX's limited supply of registers. Therefore, we present a +modified algorithm hand-tailored to the abilities of \TeX{}. +We start with the following observation. +Suppose a unary-binary tree is constructed bottom-up, in a postorder +traversal. This is done by iterating the following three steps in +an order determined by the tree to be constructed. + +\begin{enumerate} +\item Create a new subtree consisting of one external node. +\item Create a new subtree by appending the two subtrees created last + to a new binary node; see \fig{Construct}. +\item Create a new subtree by appending the subtree created last as a left, + right, or unary subtree of a new node; see \fig{Construct}. +\end{enumerate} + +(A pointer to) each subtree that has been +created in steps 1--3 is pushed onto a stack, and +steps 2 and 3 remove two trees or one, respectively, +from the stack before the push +operation is carried out. Finally, the tree to be constructed will +be the remaining tree on the +stack. + +\begin{Figure} +\centering +\begin{Tree} +\treesymbol{\lvls{2}}% +\hspace{-\l@stlmoff}\usebox{\l@sttreebox}\hspace{\l@strmoff} +$+$ +\treesymbol{\lvls{2}}% +\hspace{-\l@stlmoff}\usebox{\l@sttreebox}\hspace{\l@strmoff}\quad +$\Longrightarrow$\quad +\treesymbol{\lvls{2}}% +\treesymbol{\lvls{2}}% +\node{\type{dot}}% +\hspace{-\l@stlmoff}\raisebox{\vd@st}{\usebox\l@sttreebox}\hspace{\l@strmoff}% +\end{Tree} + +\vskip\baselineskip + +\begin{Tree} +\treesymbol{\lvls{2}}% +\hspace{-\l@stlmoff}\usebox{\l@sttreebox}\hspace{\l@strmoff}\quad +$\Longrightarrow$\quad +\treesymbol{\lvls{2}}% +\node{\leftonly\type{dot}}% +\hspace{-\l@stlmoff}\raisebox{\vd@st}{\usebox\l@sttreebox}\hspace{\l@strmoff}% +\quad or\quad +\treesymbol{\lvls{2}}% +\node{\unary\type{dot}}% +\hspace{-\l@stlmoff}\raisebox{\vd@st}{\usebox\l@sttreebox}\hspace{\l@strmoff}% +\quad or\quad +\treesymbol{\lvls{2}}% +\node{\rightonly\type{dot}}% +\hspace{-\l@stlmoff}\raisebox{\vd@st}{\usebox\l@sttreebox}\hspace{\l@strmoff}% +\end{Tree} + +\caption{Construction steps 2 and 3} +\label{Construct} +\end{Figure} + +This tree traversal is performed twice in the RT~algorithm. +During the first pass, +at each execution of step 2 or step 3, the relative positions of the +subtree(s) and of the new node are computed. +A closer examination of the RT~algorithm reveals that information about the +subtree's coordinates is not needed during this pass; the contour information +alone would be sufficient. Complete information is only needed in the second +traversal, when the tree is actually drawn. Here a special feature of +\TeX{} comes in that allows us to save registers. +Unlike Pascal, \TeX{} provides the capability of +storing a drawing in a single box register that can be positioned freely in +later drawings. This means that in our implementation the two passes +of the original RT~algorithm can be intertwined into a single pass, +storing for each subtree on the stack its contour and its drawing. +Although the latter is a complex object, it takes only one of +\TeX's precious registers. + + +\section{The internal representation} + +Given a tree, the corresponding \TeX{}tree is a box containing +the ``drawing'' of the tree, together with some additional +information about the contour of the tree. +The reference point of a \TeX{}tree-box is always in the root of the +tree. The height, depth, and width of the box of a \TeX{}tree are +of no importance in this context. + +The additional information about the contour of the tree is stored in some +registers for numbers and dimensions and +is needed in order to put subtrees together to form a larger tree. +\var{loff} is an array of dimensions which contains for each +level of the tree the horizontal offset between the +left end of the +leftmost node at the current level and the +left end of the leftmost node at +the next level. +\var{lmoff} holds the horizontal offset between the root +and the leftmost node of the whole tree. \var{lboff} holds the +horizontal offset between the root and the leftmost node at +the bottom level of the tree. +Finally, \var{ltop} holds the distance between the reference point +of the tree and the leftmost end of the root. +The same is true for +\var{roff}, \var{rmoff}, \var{rboff}, and \var{rtop}; just replace +``left'' by ``right''. Finally, +\var{height} holds the height of the tree, and \var{type} holds the +geometric shape of the root of the tree. \fig{TeXtree} shows an example \TeX{}tree, +i.e. a tree drawing and the corresponding additional information. + +\begin{Figure} +\centering +\begin{Tree} +\e\ir\ir\e + \node{\type{dot}\rightonly\rght{\unskip\vrule height.8pt width5pt depth0pt}}% + \i % A +\end{Tree} +\leavevmode +\stack{-10pt}{\vd@st}{% + -10pt\\10pt\\10pt\\\var{loff}}% +\hspace{1em}% +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}% +\hspace{1em}% +\stack{-10pt}{\vd@st}{% + 15pt\\5pt\\-10pt\\\var{roff}}% + +\vskip\baselineskip\raggedright +height:~3, type:~dot, ltop:~2pt, rtop:~2pt, lmoff:~-10pt, rmoff:~20pt, lboff:~10pt, +rboff:~10pt. + +\caption{A \TeX{}tree consists of the drawing of the tree and the +additional information. The width of the dots is 4pt, the minimal separation between +adjacent nodes is 16pt, making for a distance of 20pt center to center. +The length of the small rule labelling one of the nodes is 5pt. The column left (right) +of the tree drawing is the array \var{loff} (\var{roff}), +describing the left (right) contour of the tree. At each level, +the dimension given is the horizontal +offset between the border at the current and at the next level. The offset between +the left border of the root node and the leftmost node at level~1 is -10pt, +the offset between the right border of the root node and the rightmost node at +level~1 is 15pt, etc.} +\label{TeXtree} +\end{Figure} + +Given two \TeX{}trees \var{A} and \var{B}, +how can a new \TeX{}tree \var{C} be built that +consists of a new root and has \var{A} and \var{B} as subtrees? +An example is given in \fig{AddInfo}. + +\begin{Figure} +\centering +\begin{Tree} +\e\ir\ir\e + \node{\type{dot}\rightonly\rght{\unskip\vrule height.8pt width5pt depth0pt}}% + \i % A +\end{Tree} +\leavevmode +A: \stack{-10pt}{\vd@st}{% + -10pt\\10pt\\10pt\\\ \\\var{loff}(\var{A})}% +\hspace{1em}% +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}% +\hspace{1em}% +\stack{-10pt}{\vd@st}{% + 15pt\\5pt\\-10pt\\\ \\\var{roff}(\var{A})}% +\qquad +\begin{Tree} +\e\il\e\i\il\il\ir % B +\end{Tree} +\leavevmode +B: \stack{-10pt}{\vd@st}{% + 10pt\\-10pt\\-10pt\\-10pt\\-10pt\\\ \\\var{loff}(\var{B})}% +\hspace{1em}% +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}% +\hspace{1em}% +\stack{-10pt}{\vd@st}{% + 10pt\\-10pt\\-10pt\\10pt\\-30pt\\\ \\\var{roff}(\var{B})}% +\\[\figspace] +\begin{Tree} +\e\ir\ir\e + \node{\type{dot}\rightonly\rght{\unskip\vrule height.8pt width5pt depth0pt}}% + \i % A +\e\il\e\i\il\il\ir % B +\i % C +\end{Tree} +\leavevmode +C: \stack{-10pt}{\vd@st}{% + -20\\-10pt\\% + \makebox[0pt][r]{\var{loff}(\var{A})$\smash{\left\{\vrule height\vd@st + depth\vd@st width0pt\right.}$ }% + 10pt\\10pt\\% + \makebox[0pt][r]{$\longrightarrow$ }% + 10pt\\% + \makebox[0pt][r]{\raisebox{-.5\vd@st}{\var{loff}(\var{B})$\smash + {\left\{\vrule height.5\vd@st + depth.5\vd@st width0pt\right.}$ }}% + \makebox[0pt][r]{-}10pt\\\ \\\var{loff}(\var{C})}% +\hspace{1em}% +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}% +\hspace{1em}% +\stack{-10pt}{\vd@st}{% + 20pt\\10pt\\-10pt\\-10pt% + \makebox[0pt][l]{\raisebox{-.5\vd@st}{ + $\smash{\left\}\vrule height2.5\vd@st + depth2.5\vd@st width0pt\right.}$\var{roff}(\var{B})}}% + \\10pt\\-30pt\\\ \\\var{roff}(\var{C})}% + +\vspace{\figspace} +\centering +\begin{tabular}{|l|r|r|r|} +\hline +&\multic{1}{c|}{\var{A}}&\multic{1}{c|}{\var{B}}&\multic{1}{c|}{\var{C}}\\ +\hline +height&\multic{1}{c|}{3}& \multic{1}{c|}{5}& \multic{1}{c|}{6}\\ +type& \multic{1}{c|}{dot}&\multic{1}{c|}{dot}&\multic{1}{c|}{dot}\\ +ltop& 2pt& 2pt& 2pt\\ +rtop& 2pt& 2pt& 2pt\\ +lmoff& -10pt& -30pt& -30pt\\ +rmoff& 20pt& 10pt& 30pt\\ +lboff& 10pt& -30pt& -10pt\\ +rboff& 10pt& -30pt& -10pt\\ +\hline +\end{tabular}\qquad +\begin{tabular}{|c|r|r|} +\hline +\multic{1}{|c|}{level}&\multic{1}{c|}{\var{totsep}}& + \multic{1}{c|}{\var{currsep}}\\ +\hline +0&20pt&0/16pt\\ +1&25pt&11/16\\ +2&40pt&1/16pt\\ +3&40pt&16pt\\ +\hline +\end{tabular} +\caption{The \TeX{}trees \var{A} and~\var{B} are combined to form the +larger \TeX{}\-tree~\var{C}. The small table gives the +history of computation for \var{totsep} and \var{currsep}.} +\label{AddInfo} +\end{Figure} + + +First we determine which tree is higher; this is +\var{B} in the example. +Then we have to compute the minimal distance +between the roots of \var{A} and \var{B}, such that at all levels +of the trees there is free space of at least \var{minsep} between +the trees when they are drawn side by side. +For this purpose we keep track of two values, \var{totsep} and +\var{currsep}. The variables \var{totsep} and \var{currsep} +hold the total distance between the roots and the distance +between the rightmost node of \var{A} and the leftmost node +of \var{B} at the current level. In order to calculate +\var{totsep} and \var{currsep}, we start at level 0 and +visit each level of the trees until we reach the bottom level +of the smaller tree; this is \var{A} in our example. + +At level 0, the distance between the roots of \var{A} and \var{B} +should be at least \var{minsep}. Therefore, we set +$\var{totsep}:=\var{minsep} + \var{rtop}(\var{A}) ++ \var{ltop}(\var{B})$ and $\var{currsep}:=\var{minsep}$. +Using $\var{roff}(\var{A})$ and $\var{loff}(\var{B})$, we can +proceed to calculate \var{currsep} for the next level. +If $\var{currsep} < \var{minsep}$, we have to increase \var{totsep} by +the difference and update \var{currsep}. This process is +iterated until we reach the lowest level of \var{A}. +Then \var{totsep} holds the final distance between the +nodes of \var{A} and \var{B}, as calculated by the RT~algorithm. +If the root of \var{C} is a significant node, then the additional space , +which is 0pt by default, is added to \var{totsep}. +However, the approach of synthesizing +drawings from simple graphics characters allows only a finite +number of orientations for the tree edges; therefore, \var{totsep} +must be increased slightly to fit the next orientation +available. + +Now we are ready to construct the box of \TeX{}tree~\var{C}. +Simply put \var{A} and~\var{B} side by side, with the reference +points \var{totsep}~units apart, insert a new node +above them, and connect the parent and children by edges. + +Next, we update the additional information +for \var{C}. This can be done by using the additional information +for \var{A} and~\var{B}. +Note that most components of $\var{roff}(\var{C})$ and +$\var{lroff}(\var{C})$ are the same as in the higher tree, which +is \var{B} in our case. +So, if we can avoid moving this information around, we only have +to access $\var{height}(\var{A}) + \var{const}$ many counters in +order to update the additional information for \var{C}. +This implies that we can apply the same argument as +in~\cite{TidierTrees}, which gives +us a running time of $\O(N)$ for drawing a tree with N nodes. + +Therefore, we must carefully design the storage allocation for +the additional information of \TeX{}trees in order to fulfill the +following requirements: +If a new tree is built from +two subtrees, the additional information of the new tree should +share storage with its larger subtree. +Organizational overhead, that is, +pointers which keep track of the locations of different parts of additional +information, must be avoided. +This means that all the additional information +for one \TeX{}tree should be stored in a row of consecutive dimension registers +such that only one pointer granting access to the first element +in this row is needed. +On the other hand, each parent +tree is higher and therefore needs more storage than its subtrees. +So we must ensure that there is always enough space in the row +for more information. + +The obvious way to fulfill these requirements is to use a stack and to +allow only the topmost \TeX{}trees of this stack to be +combined into a larger tree at any time. +This leads to the following register allocation: A subsequent number of +box registers contains the treeboxes of the subtrees in the stack. A +subsequent number of token registers contains the type information for the +nodes of the subtrees in the stack. For each subtree in the stack, +a subsequent number of dimension registers contains the contour +information of the subtree. The ordering of these groups of dimension +registers reflects the ordering of the subtrees in the +stack. Finally, a subsequent number of counter registers contains +the height and the address of the first dimension register for +each subtree in the stack. Four address counters store the addresses +of the last treebox, type information, height, and address of contour +information. A sketch of the register organization for a stack of \TeX{}trees +is provided in \fig{Registers}. + +\begin{Figure} +Dimension registers\\ +\var{lmoff}(1) \var{rmoff}(1) \var{lboff}(1) \var{rboff}(1) \var{ltop}(1) + \var{rtop}(1)\\ +\var{loff}($h_1$) \var{roff}($h_1$) \dots\ \var{loff}(1) \var{roff}(1)\\ +\dots\\ +\var{lmoff}($n$) \var{rmoff}($n$) \var{lboff}($n$) \var{rboff}($n$) + \var{ltop}($n$) \var{rtop}($n$)\\ +\var{loff}($h_n$) \var{roff}($h_n$) \dots\ \var{loff}(1) \var{roff}(1)\\ +\ \\ +Counter registers\\ +\var{lasttreebox} \var{lasttreeheight} \var{lasttreeinfo} \var{lasttreetype}\\ +\var{treeheight}(1) \var{diminfo}(1) \dots\ \var{treeheight}($n$) + \var{diminfo}($n$)\\ +\ \\ +Box registers\\ +\var{treebox}(1) \dots\ \var{treebox}($n$)\\ +\ \\ +Token registers\\ +\var{type}(1) \dots\ \var{type}($n$) + +\caption{\var{lasttreebox}, \var{lasttreeheight}, \var{lasttreeinfo}, +\var{lasttreetype} contain pointers to \var{treebox}($n$) +\var{treeheight}($n$), \var{lmoff}($n$), \var{type}($n$), +\var{diminfo}($i$) contains a pointer to +\var{lmoff}($i$). Unused dimension registers are +allowed between the dimension registers of subsequent trees. The counter +registers \var{lasttreebox},\ldots,\var{diminfo}($n$) serve as a directory +mechanism to access the \TeX{}trees on the stack.} +\label{Registers} +\end{Figure} + + +When a new node is pushed onto the stack, the treebox, type information, +height, address of contour information, and contour information are +stored in the next free registers of the appropriate type, and the +four address counters are updated accordingly. + +When a new tree is formed from the topmost subtrees on the stack, +the treebox, type information, height, and address of contour information +of the new tree are sorted in the registers formerly used by the bottommost +subtree that has occured in the construction step, and the four address registers are +updated accordingly. This means that these informations for the subtrees +are no longer accessible. The contour information of the new subtree +is stored in the same registers as the contour information of the larger +subtree used in the construction, apart from the left and right offset +of the root to the left and right child, which are stored in the +following dimension registers. That means that gaps can occur +between the contour information of subsequent subtrees in the +stack, namely when the right subtree, which is on a higher position on the +stack, is higher than the left one. In order to avoid these +gaps, the user can specify an option \verb.\lefttop. when entering a +binary node, which makes the topmost tree in the stack the +left subtree of the node. + +This stack concept also has consequences for the design of the user interface +that is discussed in Section~\ref{Interface}. + +\section{Space cost analysis} + +Suppose we want to draw a unary-binary tree $T$ of height $h$ having +$N$ nodes\footnote{The height $h$ and the number of nodes $N$ refer to the +drawing of the tree. $N$ is the number of circles, squares etc.~actually +drawn, and $h$ is the number of levels in the drawing minus 1.}. +According to our internal representation, +for each subtree in the stack we need + +\begin{enumerate} +\item one box register to store the box of the \TeX{}tree. +\item one token register to store the type of the root of the subtree. +\item $2h^\prime+6$ dimension registers to store the additional + information, where $h^\prime$ is the height of the + subtree. +\item three counter registers to store the register numbers of the + box register, the token register, and the first dimension register above. +\end{enumerate} + +The following lemma relates to $h$ and $N$ the number +of subtrees of $T$ which are on the +stack simultaneously and their heights. + +\begin{lemma} +\begin{enumerate} +\item At any time, there are at most $h+1$ subtrees of $T$ on the + stack. +\item For each set $\T$ of subtrees of $T$ which are on the stack + simultaneously we have + $$\sum_{T^\prime\in \T}({\rm ht}(T^\prime)+1) + \le\min(N,{(h+1)(h+2)\over2}).$$ +\end{enumerate} +\end{lemma} + +\begin{proof} +\begin{enumerate} +\item By induction on $h$.\label{stackdepth} +\item The trees in $\T$ are pairwise disjoint, and each tree of + height $h^\prime$ has at least $h^\prime+1$ nodes. This implies + $$\sum_{T^\prime\in \T}({\rm ht}(T^\prime)+1) + \le N.$$ + The second part is shown by induction on $h$. + The basis $h=0$ is clear. + Assume the assumption holds for all trees of height less than + $h$. If $\T$ + contains only subtrees of either the left or the right subtree + of $T$, we have + $$\sum_{T^\prime\in \T}({\rm ht}(T^\prime)+1)\le + {h(h+1)\over2}\le{(h+1)(h+2)\over2}.$$ + Otherwise, $\T$ contains the left or the right subtree $T_s$ of + $T$. Then all elements of $\T-\{T_s\}$ belong to the other + subtree. This implies + \begin{eqnarray*} + \sum_{T^\prime\in \T}({\rm ht}(T^\prime)+1)&\le& + {\rm ht}(T_s)+1 + +\sum_{T^\prime\in \T-\{T_s\}}({\rm ht}(T^\prime)+1)\\ + &\le& h+{h(h+1)\over2}\le{(h+1)(h+2)\over2}.\proofend + \end{eqnarray*} +\end{enumerate} +\end{proof} + +Therefore, our implementation uses at most $9h+2\min(N,(h+1)(h+2)/2)$ +registers. In order to compare this with the +$10N$ registers used in the straightforward implementation, +an estimation of the average height of a tree with $N$ nodes is +needed. Several results, depending on the type of trees and of the +randomization model, are cited in \fig{Stat}, which +compares the number of registers used in a straightforward +implementation with the average number of registers used in our +implementation. This table shows clearly the advantage of our +implementation. + +\begin{Figure} +\centering +\begin{tabular}{|c|c|c|c|c|} +\hline +®isters&\multicolumn{3}{c|}{average registers}\\ +\cline{3-5} +nodes&(straight-&extended&unary-binary&binary\\ +&forward)&binary trees&trees& + search trees\\ +&&($\sqrt{\pi n}$) \cite{AverageHeight}& + ($\sqrt{3\pi n}$) ~\cite{BinaryTrees}& + ($4.311\log n$) \cite{BinarySearchTrees}\\ +\hline +\ds8& \ds80& \ds61.12& \ds94.15& \ds51.04\\ +\ds9& \ds90& \ds65.86& 100.89& \ds55.02\\ + 10& 100& \ds70.44& 107.37& \ds58.80\\ + 11& 110& \ds74.91& 113.64& \ds62.41\\ + 12& 120& \ds79.26& 119.71& \ds65.87\\ + 20& 200& 111.34& 163.56& \ds90.48\\ + 30& 300& 147.37& 211.33& 117.31\\ + 40& 400& 180.89& 254.75& 132.58\\ + 50& 500& 212.80& 295.37& 143.54\\ +\hline +\end{tabular} + +\caption{The numbers of registers used by a straightforward implementation +(second column) and by our modified implementation (third to fifth column) +of the RT~algorithm are +given for different types of trees and randomization models. +The formula in parentheses indicates the average height of the respective class +of trees, as depending on the number of nodes.} +\label{Stat} +\end{Figure} + + +\section{The user interface}\label{Interface} + +\subsection{General design considerations} + +The user interface of \TreeTeX{} has been designed in the spirit of +the thorough separation of the logical description of document components +and their layout; see~\cite{DocumentFormatting,GML}. This concept +ensures both uniformity and flexibility of document layout and frees +authors from layout problems which have nothing to do with the +substance of their work. For some powerful implementations and projects +see \cite{Tables,Karlsruhe,LaTeX,Grif,Scribe}. + +In this context, the description of a tree is given in a purely +logical form, and layout variations are defined by a separate style +command which is valid for all trees of a document. + +A second design principle is to provide defaults for all specifications, +thereby allowing the user to omit many definitions +if the defaults match what he or she wants. + +The node descriptions of a tree must be entered in postorder. +This fits the internal representation +of \TeX{}trees best. Although this is a natural method of describing a +tree, a user might prefer more flexible description methods. +However, note that instances of well defined tree classes can be described +easily by \TeX{} macros. In section~\ref{ExampleClasses}. we give examples of macros +for complete binary trees and Fibonacci trees. + +\TreeTeX{} uses the picture making macros of \LaTeX. If \TreeTeX{} is used with +any other macro package or format, the picture macros of +\LaTeX{} are included automatically. + +\subsection{The description of a tree} + +The description of a tree is started by the command \verb.\beginTree. +and closed by \verb.\endTree. (or \verb.\begin{Tree}. and +\verb.\end{Tree}. in \LaTeX). The description can be +started in any mode; it defines a box and two dimensions. The +box is stored in the box register \verb.\TeXTree. and contains the +drawing of the tree. The box has zero height and width, and its depth +is the height of the drawing. The reference point is in the +center of the node of the tree. The dimensions are stored in the +registers \verb.\leftdist. and \verb.\rightdist. and describe +the distance between the reference point and the left and +right margin of the drawing. These data can be used to position the +drawing of the tree. + +Note that the \TreeTeX{} macros don't contribute anything to the current +page but only store their results in the registers +\verb.\TeXTree., \verb.\leftdist., and \verb.\rightdist.. It is the +user's job to put the drawing onto the page, using the +commands \verb.\copy. or \verb.\box. (or \verb.\usebox. in \LaTeX). + +Each matching pair of \verb.\beginTree. and \verb.\endTree. must +contain the description for only \emph{one} tree. +Descriptions of trees cannot be nested and +new registers cannot be allocated inside +a matching pair of \verb.\beginTree. and \verb.\endTree.. + +As already stated, each tree description defines the nodes of the tree in +postorder, that is, a tree description is a particular sequence of node +descriptions. + +A node description, in turn, consists of the macro \verb.\node., +followed by a list of node options, included in braces. The list +of node options may be empty. The node options describe the labels, +the geometric shape (type), and the outdegree of the node. Default values are +provided for all options which are not explicitly specified. +The following node options are available: + +\begin{enumerate} +\item[1.] \verb.\lft{<label>}., \verb.\rght{<label>}., + \verb.\cntr{<label>}.,\\\verb.\bnth{<label>}.:\\ + These options describe the labels which are put to the left of, to the + right of, in the + center of, or beneath the node (the latter only makes sense for + external nodes). The arguments of these macros are processed in + internal horizontal mode (LR-mode in \LaTeX), but can consist of + arbitrary nested boxes for more sophisticated labels. For each of + these options, the default is an empty label. + +\item[2.] \verb.\external., \verb.\unary., + \verb.\leftonly., \verb.\rightonly.:\\ + These options describe the outdegree + of the node. + The default is binary (no outdegree option is specified). + +\item[3.] \verb.\type{<type>}.:\\ + This option describes the type or geometric shape of the node. + \verb.<type>. can have the values \verb.square., + \verb.dot., \verb.text., or \verb.frame.. + The default value is \verb.circle. (no type is specified). A node of type + \verb.square. has a fixed width, while a node of type \verb.frame. has its + width determined by the center label. A node of type \verb.text. has no frame + around its center label. The center label can have arbitrary width. + +\item[3.] \verb.\leftthick., \verb.\rightthick.: + These options change the thickness of the left or right outgoing edge of + a binary node. Defaults are thin edges (neither option is specified). + +\item[4.] \verb.\lefttop.:\\ + The node option \verb.\lefttop. in a binary node makes the + last entered subtree the left child of the node (the right child is the + default). This option helps to cut down on the number of dimension registers + used during the construction of a tree. As a rule of thumb, + this option is recommended when the left subtree has a smaller + height than the right subtree, that is, + in this case the right subtree should + be entered before the left one and their parent should be assigned the option + \verb.\lefttop.. +\end{enumerate} + +\subsection{Macros for classes of trees} +\label{ExampleClasses} + +Tree descriptions can be produced by macros. This is especially useful +for trees which belong to a larger class of trees and which can be specified +by some simple parameters. A small library of such +macros is provided in the file \verb!TreeClasses.tex!. + +\begin{enumerate} +\item[1.] \verb.\treesymbol{<node options>}.:\\ + This macro produces a triangular tree symbol which can be included in + a tree description instead of an external node. Labels for these + tree symbols are described as for ordinary nodes. In addition, the + options \verb.\lvls{<number>}. and \verb.\slnt{<number>}. + are provided. \verb.\lvls. defines the number of levels in the + tree over which the triangle extends, and \verb.\slnt. gives + the slant of the sides of the triangle, ranging from 1~(minimal) + to 24~(maximal). On the other hand, + \verb.\treesymbol. does not expand to a tree description, because + a tree symbol cannot be built from subtrees, and, on the other hand, + it is not a node, because it is allowed to extend over several tree + levels and therefore has a longer contour than an ordinary node. + +\item[2.] \verb.\binary{<bin specification>}.:\\ + This macro truly expands to a tree description. It produces + a complete binary tree, that is, an extended binary tree, + where, for a given $h$, all external nodes appear at level $h$ + or $h-1$, and all external nodes at level $h$ lie left of those at + level $h-1$. \verb.<bin specification>. consists of the + following options: + \verb.\no{<number>}. defines the number of internal nodes, + with \verb.<number>. greater than 0, and + \verb.\squareleaves. produces leaves of type + \verb.square.. Defaults are \verb.\no{1}. and + leaves of type \verb.circle.. + +\item[3.] \verb.fibonacci{<fib specification>}.:\\ + This macro produces a Fibonacci tree. + \verb.<fib specification>. allows for the three options + \verb.\hght{<number>}., \verb.\unarynodes., + and \verb.\squareleaves.. + Normally, a Fibonacci tree of height $h+2$ is a binary tree + with Fibonacci trees of height $h$ and $h+1$ as left and + right subtrees. The option \verb.\unarynodes. means that the + Fibonacci tree is augmented by unary nodes such that each + two subtree siblings have the same height. These are examples + of what has been called brother-trees in the literature; + see~\cite{Brother}. Defaults are + \verb.\hght{0}., the unaugmented version of a Fibonacci tree, + and external nodes of type \verb.circle.. +\end{enumerate} + +\subsection{Style options for trees} +\sloppy +The \TreeTeX{} package includes a style command +\verb.\Treestyle{<style option>}., where \verb.<style option>. +contains all the parameter settings the user might want +to change. +Normally, the command \verb.\Treestyle. appears only once at the beginning +of the document and the style options are valid for all trees of the +document. + +\fussy +The changes in the style options are global. A \verb.\Treestyle. command +changes only the specified style options; non-specified options retain +the last specified value or the default value, respectively. The following +style options are available: + +\begin{enumerate} +\item[1.] \verb.\treefonts{<font options>}.:\\ + \sloppy + \verb.\treefonts. is invoked by \verb.\beginTree., and it simply executes + whatever is specified in \verb.<font options>.. Defaults are + \verb.\treefonts{\tenrm}. (or \verb.\treefonts{\normalsize\rm}. in + \LaTeX). + +\fussy +\item[2.] \verb.\nodesize{<size>}.:\\ + \verb.\nodesize. defines the size of the nodes. \verb.<size>. is a + dimension and specifies the diameter of circle nodes. The + width of square nodes is adjusted accordingly to be slightly + smaller than the diameter of circle nodes in order to + balance their appearance. Furthermore, + \verb.\nodesize. adjusts the amount of space by which the + baseline of the labels is placed beneath the center of the node. + The default value of \verb.\nodesize. suits the default of + \verb.\treefonts. (taking into account the size option + of \LaTeX's document style). + +\item[3.] \verb.\vdist{<dimen>}., \verb.\minsep{<dimen>}., + \verb.\addsep{<dimen>}.:\\ + \sloppy + \verb.vdist. specifies the vertical distance between two + subsequent levels of the tree. Default is \verb.\vdist{60pt}.. + \verb.\minsep. specifies the minimal horizontal distance between two + adjacent nodes. Default is \verb.\minsep{20pt}.. + \verb.\addsep. specifies the additional amount of horizontal space + by which two subtree siblings are pushed apart farther than + calculated by the RT~algorithm, + if the level at which they are closest is beneath + their root level. Default is \verb.\addsep{0pt}. + +\fussy +\item[4.] \verb.\extended., \verb.\nonextended.:\\ + With the option \verb.\extended. in effect, the nodes of a binary + tree are placed in exactly the same way as they would be in the + associated extended version of the tree (the missing nodes are + assumed to have no labels). The default is \verb.\nonextended., + that is the usual layout. +\end{enumerate} + +Some examples of tree descriptions +are given in the next figures. +A detailed description of the +\TreeTeX{} macros is given in~\cite{TreeTeX}. + +\Treestyle{\vdist{60pt}} +\dummyhalfcenterdim@n=10pt + +\begin{Figure} +\centering +\begin{Tree} +\node{\external\bnth{first}\cntr{1}\lft{Beeton}} +\node{\external\cntr{3}\rght{Kellermann}} +\node{\cntr{2}\lft{Carnes}} +\node{\external\cntr{6}\lft{Plass}} +\node{\external\bnth{last}\cntr{8}\rght{Tobin}} +\node{\cntr{7}\rght{Spivak}} +\node{\leftonly\cntr{5}\rght{Lamport}} +\node{\cntr{4}\rght{Knuth}} +\end{Tree} + +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}\ + +\begin{verbatim} +\begin{Tree} +\node{\external\bnth{first}\cntr{1}\lft{Beeton}} +\node{\external\cntr{3}\rght{Kellermann}} +\node{\cntr{2}\lft{Carnes}} +\node{\external\cntr{6}\lft{Plass}} +\node{\external\bnth{last}\cntr{8}\rght{Tobin}} +\node{\cntr{7}\rght{Spivak}} +\node{\leftonly\cntr{5}\rght{Lamport}} +\node{\cntr{4}\rght{Knuth}} +\end{Tree} + +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist} +\end{verbatim} + +\caption{This is an example of a tree that includes labels.} +\end{Figure} + +\begin{Figure} +\centering +\begin{Tree} +\node{\external\type{frame}\bnth{first}\cntr{Beeton}} +\node{\external\type{frame}\cntr{Kellermann}} +\node{\type{frame}\cntr{Carnes}} +\node{\external\type{frame}\cntr{Plass}} +\node{\external\type{frame}\bnth{last}\cntr{Tobin}} +\node{\type{frame}\cntr{Spivak}} +\node{\leftonly\type{frame}\cntr{Lamport}} +\node{\type{frame}\cntr{Knuth}} +\end{Tree} + +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}\ + +\begin{verbatim} +\begin{Tree} +\node{\external\type{frame}\bnth{first}\cntr{Beeton}} +\node{\external\type{frame}\cntr{Kellermann}} +\node{\type{frame}\cntr{Carnes}} +\node{\external\type{frame}\cntr{Plass}} +\node{\external\type{frame}\bnth{last}\cntr{Tobin}} +\node{\type{frame}\cntr{Spivak}} +\node{\leftonly\type{frame}\cntr{Lamport}} +\node{\type{frame}\cntr{Knuth}} +\end{Tree} + +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist} +\end{verbatim} +\caption{This is an example of a tree with framed center labels.} +\end{Figure} + +\begin{Figure} +\centering +\begin{Tree} +\binary{\no{6}\squareleaves} +\end{Tree} + +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}\ + +\begin{verbatim} +\begin{Tree} +\binary{\no{6}\squareleaves} +\end{Tree} + +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist} +\end{verbatim} +\caption{This is an example of a complete binary tree.} +\end{Figure} + + +\begin{Figure} +\centering +\begin{Tree} +\fibonacci{\hght{4}\unarynodes\squareleaves} +\end{Tree} + +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist}\ + +\begin{verbatim} +\begin{Tree} +\fibonacci{\hght{4}\unarynodes\squareleaves} +\end{Tree} +\hspace{\leftdist}\usebox{\TeXTree}\hspace{\rightdist} +\end{verbatim} + +\caption{This is an example of a Fibonacci tree.} +\end{Figure} + + +\clearpage +\bibliography{trees} +\end{document} + + + diff --git a/Master/texmf-dist/doc/plain/tugboat/tubguide.pdf b/Master/texmf-dist/doc/plain/tugboat/tubguide.pdf Binary files differnew file mode 100644 index 00000000000..19e97d6f1f0 --- /dev/null +++ b/Master/texmf-dist/doc/plain/tugboat/tubguide.pdf diff --git a/Master/texmf-dist/doc/plain/tugboat/tubguide.tex b/Master/texmf-dist/doc/plain/tugboat/tubguide.tex new file mode 100644 index 00000000000..ef930b2ebaa --- /dev/null +++ b/Master/texmf-dist/doc/plain/tugboat/tubguide.tex @@ -0,0 +1,844 @@ +%% @texfile{ +%% filename="tubguide.sty", +%% version="1.02", +%% date="9-Mar-1992", +%% filetype="TUGboat Authors' Guide", +%% copyright="Copyright (C) TeX Users Group. +%% Copying of this file is authorized only if either: +%% (1) you make absolutely no changes to your copy, OR +%% (2) if you do make changes, you first rename it to some +%% other name.", +%% author="TeX Users Group", +%% address="TeX Users Group", +%% P. O. Box 9506, +%% Providence, RI 02940, +%% USA", +%% telephone="401-751-7760", +%% email="Internet: TUGboat@Math.AMS.com", +%% codetable="ISO/ASCII", +%% checksumtype="line count", +%% checksum="844", +%% keywords="tex users group, tugboat, authors' guide", +%% abstract="This file is an updated version of the file +%% that produced the original Authors' Guide in +%% TUGboat 10, no. 3, November 1989." +%% } +%% ********************************************************* +%% +%% TeXing this file requires the following files: +%% TUGBOAT.STY (version 1.09+) +%% TUGBOAT.CMN (version 1.08+) (loaded by TUGBOAT.STY) +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\input tugboat.sty + +\enablemetacode +\everyverbatim{\enablemetacode} +\def\halfline{\vskip 0.5\baselineskip \ignoreendline} + +% **************************************************************** + +\title *\TUB\/ Authors' Guide* + +\author * Ron Whitney * +\address * \TUG\\ + \POBox 9506\\ + Providence, RI 02940-9506 * +\netaddress * TUGboat@Math.AMS.com * + +\author * Barbara Beeton * +\address * American Mathematical Society\\ + \POBox 6248\\ + Providence, RI 02940-6248 * +\netaddress * TUGboat@Math.AMS.com * + + +\vfootnote{}{Revised March 1992; the original appeared in \tubissue 10(3), +November 1989.} + +\article + +With this article we hope to fill a lacuna (some might say ``void'') +whose existence we have been attributing to the usual factors: tight +schedules, alternative priorities and warty \TeX\ code. We now feel +the macros in use for \TUB\/ have stabilized to the extent that +documentation and suggestions for authors will remain fairly constant, +and we hope this article can serve as a reasonable guide to +preparation of manuscripts for \TUB. Authors who have used the \TUB\/ +macros before will note several changes (including more modern names +for the style files). Suggestions and comments are quite welcome at +the addresses listed below. + +\TUB\/ was originally typeset with a package based only on \plain. +Later, as demand for style files follows wherever +\LaTeX-devotees wander, a \TUB\/ variant of the \LaTeX\ {\tt article} +style was also created. The two macro sets yield +much the same output, differing in certain ways for input. Below we +make comment on various aspects of the \TUB\/ package, first for the +\plain-based macros, then for \LaTeX. The macro sets share +the file |tugboat.cmn|,\footnote{$^1$}{This file used to be named +{\tt tugboat.com}, but that notation was in conflict with conventions +of MS-DOS and other operating systems; no conflicts are known to +exist for the new name.} and users of either style should read the +section entitled ``Common Abbreviations and Utilities''. We conclude +with some general suggestions to help make the lives of those on the +receiving end of (any kind of) electronic copy a little easier. + + +\head * The \plain-based macros: {\tt tugboat.sty} * + +The macros are contained in two files, |tugboat.sty| and |tugboat.cmn|.$^1$ + +\subhead * General description of tags * +We attempt wherever possible to tag the various elements of \TUB\/ +articles in a ``generic'' way, modified in some respects by +convenience. Authors and editors, of course, need tools to shape +their articles to the form they desire, but we also wish to encourage +a tagging style which is appropriate for electronic interchange. It +seems unfair to expect much thought from authors concerning the +markup of their information if we only provide a bag of widgets and +do-hickies to hack and pound an article together. The tags whose use +we encourage are the higher-level tags that mark the logical +document structure. Below these are formatting macros that we +recognize may be essential for certain applications. Both sorts of +tags are described in the following article. + +Generally, to ``mark up'' the data <foo>, a tag |\xxx| will precede +<foo> and |\endxxx| will follow (thus: |\xxx <foo>\endxxx|). We use +the |{...}| form to delimit arguments of lower-level formatting +macros. Optional commands follow tags and are enclosed in +|[\lastoption][...]|, \`a la \LaTeX. Several options may be enclosed +within one set of square brackets, or each +option may be enclosed in its own set of brackets. These ``options'' +are actually just \TeX{} commands, and it is always possible to +insert raw \TeX{} code as an option. Such practice violates truly +generic markup, but it is {\it helpful\/} and at least confines +The Raw and Dirty to a smaller area. +\subtext +Perhaps a little more detail is of use to some readers here. +Upon encountering a tag, the general operational scheme of the +macros is as follows: +\verbatim[\makecomment\%]% +[\def\lquote{`}\def\rquote{'}\makeescape\|\makebgroup\`\makeegroup\']% +[\displaystyle{\everypar{\hangindent2\parindent}\advance\baselineskip by 1pt}] +<read tag> +\begingroup +<set defaults> +\the\every... +<read options> +<branch to appropriate action,|hfil|break|ignoreendline +using `|rm|lquote|lquote'argument|/`|rm|rquote|rquote' as necessary> +<cleanup> +\endgroup +\endverbatim +The scheme shows that code inserted as an option is localized and that +it may be used to override certain defaults and to guide branching. +Things are not always simple, however. Sometimes parameters are set +after a branch is taken (e.g.\ the macros might only call |\raggedright| +after determining whether the mode is ``|\inline|'' or +``|\display|''), and, despite localization, parameter setting might +affect the current paragraph if a branch has yet to be taken. +This is {\it not\/} to say the macros don't work, but rather that +those authors who venture beyond the documented regions of the +macros should do so with their eyes open. +\endtext + +For convenience, we also allow the |*| as a delimiter for the +higher-level tags; thus we could use either +||\title \TUB\/ Authors' Guide \endtitle|| +or +||\title * \TUB\/ Authors' Guide *|| +to indicate the title of this paper. To typeset a \ast{} within text +delimited by |*|, the \plain\ control sequence |\ast| has been extended +to give +\ast{} in text and the usual $\ast$ in math. +\subtext +This markup scheme may suffer at the hands of \TeX's parsing mechanism +when tagged data is nested. In these cases, one may group (|{...}|) +embedded data so that \TeX{} knows to proceed to the next |\end...| +or |*|. +\endtext + +In the cases where we show extra spaces and carriage returns around +arguments in this article, those (discretionary) spaces are +accommodated in the macros. Thus, for example, when the argument to +|\title| above is typeset, |\ignorespaces| and |\unskip| surround it +and the extra spaces have no untoward effect. Spaces are also +gobbled between options. + + +\subhead * Outer form * +At the outermost level, a source file will have the form (using the +|*...*| delimiters): +\verbatim[\makeescape\|] +\input tugboat.sty +|halfline +<perhaps additional macros for article> +|halfline +\title * <title> * +\author * <author> * +\address * <address> * +\netaddress * <network address> * +|halfline +\article +|vellipsis +<body of article> +|vellipsis +\makesignature +\endarticle +\endverbatim + +Data preceding |\article| is saved and typeset when |\article| +is encountered. Each author should have his/her own +|| +\author ... +\address ... +\netaddress ... +|| +block, and the macros will do their best to combine the information +properly in the appropriate places. Explicit linebreaks can be +achieved within any of these items via |\\|. Title and authors are, +of course, set at the beginning of an article; the address +information is listed separately in a ``signature'' near the end of +an article, and is present for the convenience of those who might +photocopy excerpts from an issue of \TUB. |\makesignature| does the +typesetting work. Generally authors are listed separately in the +signature. In cases where authors and addresses are to be combined, +one may use |\signature{...}| and |\signaturemark| with some or all +of +|| +\theauthor {<author number>} +\theaddress {<author number>} +\thenetaddress {<author number>} +|| +to get the desired result. For example, for an article with +\verbatim[\outputtofile{ray.vbm}] +\author * Ray Goucher * +\address * \TUG * +\netaddress *TUG@Math.AMS.com* + +\author * Karen Butler * +\address * \TUG * +\netaddress *TUG@Math.AMS.com* +\endverbatim +we could say +\verbatim[\outputtofile{sig.vbm}] +\signature { + \signaturemark + \theauthor1 and \theauthor2\\ + \theaddress1\\ + \thenetaddress1} +\endverbatim +to obtain the signature +\begingroup +\authornumber=0 +\input ray.vbm +\input sig.vbm +\makesignature +\medskip +\endgroup + +\noindent +Use of at least |\thenetaddress| is recommended for this just so that +the network address gets formatted properly. The optional command +|[\lastoption][\network{...}]| will introduce the network address +with a network name, so +||[\outputtofile{code.vbm}] +\netaddress[\network{Internet}] + * TUGboat@Math.AMS.com * +|| +produces +{\authornumber=1 + \input code.vbm + \figure[\mid\nofloat] \leftline{\kern\parindent\thenetaddress1} \endfigure +} + +\leavevmode|\endarticle| marks the end of input and is defined as +|\vfil\end| for most uses. We redefine it as |\endinput| to +assemble streams of articles in \TUB. + + +\subhead * Section Heads * +Heads of sections, subsections, etc.\ are introduced with |\head|, +|\subhead|, etc., respectively. The underlying macros all use +|\head|, so |\endhead| is the long-form ending for all these tags. +For example, the first two heads of this article could have been +keyed as +|| +\head The \plain-based macros: + {\tt tugboat.sty} \endhead +|| +and +|| +\subhead General description of + tags \endhead +|| + +In \TUB\/ style, the paragraph following a first-level head is not +indented. This is achieved by a look-ahead mechanism which gobbles +|\par|s and calls |\noindent|. Actually all of the |\...head| tags +gobble pars and spaces after their occurrence. This allows one to +enter a blank line in the source file between head and text, such +practice being a visual aid to your friendly \TUB\/ editors (if not to +you). Be careful of that |\noindent| after a first-level head: +you will be in horizontal mode after the |\head *...*|, so spaces +which {\it appear\/} innocuous, may not be so. + + +\subhead * Lists * +Lists are everywhere, of course, and a simple list hierarchy can +transform a one-dimensional typesetting problem into something +nasty. All of which is to say, we are certainly not done with +this area of tagging, but here are the available macros. + +Not surprisingly, |\list| marks the beginning of a list. A list +can be itemized, wherein each item is tagged with |\item|, or +unitemized wherein items are delimited by |^^M| (the end of your +input line). The itemized +style is the default and |[\lastoption][\unitemized]| will get +the other. Tags for the items default to the |\bullet| +($=\bullet$), but can be changed by feeding an argument to +|\tag{...}|. The |[\lastoption][\tag{...}]| option +used with |\list| assigns the tag for each item of the entire +list, while |[\lastoption][\tag{...}]| used with |\item| changes +only the tag for that item. The obvious dynamical tags are available +with options +\verbatim[\makeescape\|\makebgroup\`\makeegroup\'] +\numbered +\romannumeraled +\lettered `|rm(lowercase)' +\Lettered `|rm(uppercase)' +\endverbatim + +Lists can be set in several columns by setting |\cols=...|. The +columns are aligned on their top baselines and the user must +break the columns with |\colsep|. Thus, +\verbatim[\outputtofile{code.vbm}] +\list[\unitemized\numbered][\cols=2] +Fourscore +and seven +years ago +our fathers +\colsep +brought forth +on this +continent +\endlist +\endverbatim +yields +\input code.vbm + +|\everylist| is a token register which is scanned at the beginning +of each list +after the default parameters are set and before +options are read. If you want all your lists numbered, for example, +you might insert ||\everylist{\numbered}|| at the top of your file +rather than giving an option to each list. + +Implementation of sublists is under construction. + +\subhead * Verbatim Modes * + +There are several variations on this theme. In each case, text is +printed in a typewriter font and (almost) all input characters +produce the glyph in the font position of their character-code (i.e.\ +you get what you type, no escaping it). In addition to the long form +||\verbatim...\endverbatim|| the \verbinline|\endverbatim\ character +can be used to enter and leave verbatim mode, acting as a toggle much +as the |$| does with math. \verbinline|...|\endverbatim\space +produces inline verbatim text, while \verbinline||...||\endverbatim +displays its output. |\verbatim| itself defaults to display form, +but |\verbatim[\inline]| and its contraction |\verbinline| (both +terminated by |\endverbatim|) produce the inline form. |^^M| yields +a space inline, and a new paragraph in display. Generally, for +snippets of text we use the \verbinline|...|\endverbatim form, and +for longer items the +||[\makeescape\!] +\verbatim +!vellipsis +\endverbatim +|| +form (although \verbinline||...||\endverbatim is a good way to +display a single line of code). + +In addition to formatting text between |\verbatim| and +|\endverbatim|, |\verbatim| may read and write data from and to +files. We find this variant useful in ({\it almost\/}) guaranteeing +consonance between macros in use and their published listings. +||[\makeescape\!] +\verbatim[\inputfromfile{foo.inp}] +!vellipsis +\endverbatim +|| +will incorporate the contents of file |foo.inp| in the listing before +the text between |\verbatim| and |\endverbatim|. The shortened form +||\verbfile{foo.inp}\endverbatim|| accomplishes the above in the case +that the text is empty. While the code around the data, |foo.inp|, +above looks excessively long, do remember the implementation +uses the basic |\verbatim| macro, so options can also be read after +the filename. For example, +|| +\verbfile{foo.inp}[\numbered] +\endverbatim +|| +would number the lines of the listing. + +We often rearrange code supplied to us so +that it fits in the narrow measure of \TUB's two-column format, and +we sometimes make corrections to macro sets (you thought you were +perfect!). Since errors can (and do\Dash we aren't perfect either) +creep in with these modifications, we use the above technique to +maintain consistency between the listing published in \TUB\/ and the +underlying macros used for examples. + +To write out information, use +||[\makeescape\!] +\verbatim[\outputtofile{foo.out}] +!vellipsis +\endverbatim +|| +An added bonus here is that characters which get internalized as +moribund ``letters'' or ``others'' in the process of listing them, +can return revitalized for perhaps their real use when written out to +another file and read in again. The example above involving Ray +and Karen was coded as +||[\makeescape\/][\makeactive\!][\def!{\VertChar}] +... to get the desired result. For +example, for an article with +\verbatim[\outputtofile{ray.vbm}] +\author * Ray Goucher * +/vellipsis +\endverbatim +we could say +\verbatim[\outputtofile{sig.vbm}] +\signature { + \signaturemark + \theauthor1 and \theauthor2\\ + \theaddress1\\ + \thenetaddress1} +\endverbatim +to obtain the signature +\begingroup +\authornumber=0 +\input ray.vbm +\input sig.vbm +\makesignature +\endgroup +|| +This is perhaps not the most edifying example, but you get the gist. +(We localize the process of storing and retrieving these +authors and addresses so as not to clobber our own.) +We would encourage our authors to use these mechanisms for connecting +verbatim text to external files for the sake of maintaining +consistency between active code and its documentation. + +\leavevmode|\verbatim| scans to |\endverbatim| (a 12-token sequence +since the |\| is of type `other' after |\verbatim| gets going). Only +this sequence of characters will interrupt the scan. On the other +hand, \verbinline|\endverbatim and \verbinline||\endverbatim scan to +the next \verbinline|\endverbatim and \verbinline||\endverbatim, +respectively. Needless to say, one should use forms of |\verbatim| +to set text which contains \verbinline|\endverbatim (and +\verbinline|\endverbatim or \verbinline||\endverbatim to set text +containing |\endverbatim| if you are writing an article like this +one). Both the \verbinline|\endverbatim and |\verbatim| tags scan +ahead for the usual |[\lastoption][| to check for options. In those +rare cases when the |[\lastoption][| is really supposed to be the +first character of the verbatim text, use the option +|[\lastoption][\lastoption]| to stop option parsing. For example, to +show ||[\lastoption][\lastoption]|| we keyed +\verbatim +|[\lastoption][\lastoption]| +\endverbatim + +There are situations where one wants to typeset most things verbatim, +but ``escape'' to format something exceptional. For example, the +insertions of metacode given in the listings above require some +access to the italic font. By giving the option +|[\lastoption][\makeescape\!]| to |\verbatim|, the |!| is made an +escape character in that block. Thus, +||[\makeescape\/] +\verbatim[\makeescape\!] +/vellipsis +...!it... +/vellipsis +\endverbatim +|| +really calls the italic font in the middle of the listing (one might +also want to use |\makebgroup| and |\makeegroup| in the options to define +characters to localize this call; see p.~384). Situations +will dictate preferences for what character may be used as an escape +(we use the \verbinline|\endverbatim, |!|, and |/| in this article). +There is also a means of changing the setup of every occurrence of +verbatim mode. The contents of token register |\everyverbatim| +is scanned after the defaults of verbatim mode +have been set. In this article, for example, we have made +|[\makeother\<]<| active and defined it in such a way that +|[\makeother\<]<...>| typesets as metacode. Since |\verbatim| +ordinarily changes |[\makeother\<]<| to type `other' on startup, we key +||\everyverbatim{\enablemetacode}|| at the beginning of the file +to have the proper adjustment made whenever verbatim is started. + +When ``escaping'' within a verbatim block, one should be aware that +spaces and carriages returns are {\it active\/} and hence not gobbled +as usual. Using the |!| as the active character, one might key +||[\makeescape\/] +\verbatim[\makeescape\!] +/vellipsis +!vskip .5!baselineskip +/vellipsis +\endverbatim +|| +to get an extra half line of space in the middle of the listing. The +space and carriage return on this line, however, cause problems. The +space expands to |\ifvmode\indent\fi\space| and \TeX\ will not like +the |\indent| after |\vskip|. The |^^M| expands to +|\leavevmode\endgraf|, and therefore puts an extra line into the +listing. The solutions, in this case, are to drop the space and to +use |!ignoreendline| (which just gobbles the |^^M|), but one should +be aware, generally, that some thought may be required in these situations. + +The option |[\lastoption][\numbered]| causes the lines of a +verbatim listing to be numbered, while |[\lastoption][\ruled]| +places rules around the whole thing: +\verbatim[\numbered\ruled] +<code> +<more code> +<yet more code> +... +\endverbatim +The option |[\lastoption][\continuenumbers]| picks up the numbering +where it last left off. +\verbatim[\continuenumbers] +<more> +<and more> +... +\endverbatim + +The code underlying |\verbatim| in display style implements each line +as a paragraph and places math-display-size whitespace above and +below the verbatim section. Page and column breaks {\it are\/} +permitted within these listings. To prohibit breaks at specific +points or globally, one must insert penalties or redefine |^^M| to +insert |\nobreak| in the vertical list at the end of each +``paragraph'' (i.e.\ line). We should also note that the bottom of +such a verbatim listing is implemented so that ensuing +text may or may not start a new paragraph depending on whether an +intervening blank line (or |\par|) is or is not present. + + +\subhead * Figures and Page Layout * +Figures are keyed as +\verbatim[\makeescape\|] +\figure +|halfline +<vertical mode material> +|halfline +\endfigure +\endverbatim +These are generally implemented as single-column floating +top-insertions, but the options |[\lastoption][\mid]| and +|[\lastoption][\bot]| can change specific items to be mid- or +bottom-insertions, respectively. Here we recommend that the +long-form terminator be used ({\it not\/} the |*...*| form). One can +think of the information ``passed'' as being ``long'' in the sense of +possibly containing paragraphs, this being a mnemonic device only. +The primary reason for the recommendation is that one is (in some +sense, maybe) more likely to encounter a rogue |*| in longer text +than in shorter text and hence more likely to encounter a surprising +result due to a macro stopping short at the wrong |*|. + +\subtext +Perhaps here is a natural place to mention also that these macros +sometimes read their arguments and then act, and sometimes act on the +fly, not actually storing an argument as a string of tokens at all. +|\title|, for example, is in the former category, while |\figure| is +in the latter. Reasons may vary for the choice in +methods. Storing a string of tokens as an argument does not allow +re-interpretation of the category codes of the underlying +character string. Thus, storing +the ``argument'' of |\figure| all at once might misinterpret some +characters which should appear as verbatim text. For this reason we +set figures as we go and just close off the box with |\endfigure|. On +the other hand, using information in multiple situations (e.g.\ +titles and running heads) requires storing the information as a token +string, not as a typeset list. + +When text delimited by |*...*| is read as an argument, the |*|s are +dropped by the parsing process. When the text is handled on the fly, +the first |*| is gobbled and the second is made active to perform +whatever action is necessary at the close of the macro. When +possible, we prefer to operate on the fly since nested tags are +handled properly in that case and no memory is consumed to store +arguments. Examination of |tugboat.sty| will show which case applies +in a given situation, but this general knowledge may help when trying +to debug those situations in which an unexpected |*| has disrupted +things. +\endtext + + +A primitive |\caption{...}| option is available to |\ulap| +(i.e.\ lap upward) its argument into the figure space, but +formatting of the caption is left to the user. For example, +the code: +\verbatim[\outputtofile{code.vbm}] +\figure[\top] + [\caption{\centerline{Odd Fig.~1}}] +\vbox to 5pc{} +\endfigure +\endverbatim +produces the figure at the top of this column or the next. + +\input code.vbm + +Figures spanning columns at the top and bottom of a page are currently +supported only on the first page of an article, but we expect they +will soon be allowed on any page (a general rewrite of the output +routine is in progress). |\twocolfigure| (terminated by |\endfigure|) +starts up such a figure and currently {\it must\/} occur before any +material has been typeset on the first page (i.e.\ {\it before\/} +|\article|). + + +Macros |\onecol|, |\twocol|, and |\threecol| provide one-, two-, and +three-column layouts, but these cannot currently be intermixed on a +page. We hope to provide automatic column-balancing and convenient +switching between one- and two-column format within a year. +|\newpage| in each format is defined to fill and eject enough columns +to get to the next page. |\newcol| is just |\par\vfill\eject|. + +\subhead * Command List Summary * +Tags are listed in the order discussed. Options are +listed under tags. +|| +\title +\author +\address +\netaddress + \network +\signature +\article +\makesignature +\endarticle +\head +\subhead +\subsubhead +\list + \numbered + \romannumeraled + \lettered + \Lettered + \ruled + \tag{...} +\item + \tag{...} +\everylist +\verbatim + \numbered + \ruled + \inputfromfile{...} + \outputtofile{...} +\verbinline +\verbfile +\figure + \mid + \bot + \caption{...} +\twocolfigure +|| +and, of course, \verbinline|\endverbatim and \verbinline||\endverbatim. + +\head * The \LaTeX\ macros: {\tt ltugboat.sty} * + +|ltugboat.sty| is the primary macro file, and is based on the \LaTeX{} +|article.sty|. |tugboat.cmn|, a collection of items common to both +\LaTeX\ and \plain\ input, is also required. Articles will have +the form:\footnote{$^2$}{{\tt ltugboat} used to be a substyle; it now +stands on its own, by automatically inputting {\tt article.sty}.} +\verbatim[\makeescape\|] +\documentstyle{ltugboat} +|halfline +<perhaps additional macros for article> +|halfline +\title {<title>} +\author{<author>} +\address{<address>} +\netaddress{<netaddress>} + +\begin{document} +\maketitle +|vellipsis +<body of article> +|vellipsis +\makesignature +\end{document} +\endverbatim +This is the usual form for \LaTeX\ documents, of course, except +that now each author will have his/her own +\verbatim +\author{...} +\address{...} +\netaddress{...} +\endverbatim +block. As with the \plain{} style, the author and address +macros will store their information for later display. +See the discussion of |\address|, |\netaddress| and |\makesignature| +on the second page of this article to understand more. Linebreaks +within |\title|, |\author|, and |\...address| are specified with |\\|. + +We refer the user to the \LaTeX\ manual for description of section +heads, verbatim mode, insertions, and movement between one- and +two-column format. The style of printed output has, of course, been +somewhat modified to fit \TUB\/ style. |ltugboat.sty| might be of some +use to others wishing to modify the |article| option in this +direction. + + + +\head * Common Abbreviations and Utilities * + +Definitions of a number of commonly used abbreviations such as |\MF| +and |\BibTeX| are contained in |tugboat.cmn|. Please use these whenever +possible rather than creating your own. We will add to the list as +necessary. + +Several other constructions that we have found useful for both +\plain- and \LaTeX-style input have been incorporated in +|tugboat.cmn|. Various |\*lap|\,s (|\ulap|, |\dlap|, |\xlap|, +|\ylap|, |\zlap|) and |\*smash|\,es provide means of setting type +which ``laps'' into neighboring regions. |\dash| and |\Dash| are en- +and em-dashes that break properly. |\slash| is a breakable slash. +The macro +\verbatim +\makestrut [<ascender dimen>; + <descender dimen>] +\endverbatim +allows {\it ad hoc\/} construction of +struts. + +|\makeatletter| |\catcode|s the |@| for internal control-sequences. +There are also more general functions +\verbatim +\makeescape +\makebgroup +\makeegroup +\makeletter +\makeother +\makeactive +\endverbatim +that change the category of a given character into the type mentioned +at the end of the macro name. For example, |\makeactive\!| changes the +category of the |!| to 13. We have given many other examples of these in +this article. Readers may look at the end of |tugboat.cmn| after the +|\endinput| statement to see further documentation on the contents of the file. + + +\subhead * Issue Makeup * +Constructing an entire issue of \TUB\/ requires use of a few features +that authors may notice when articles are returned for proofing. +|\xrefto| allows for symbolic cross-referencing, but is enabled only +late in the production process. The distribution version of +|tugboat.cmn| defines |\xrefto| so that ``???'' is typeset whenever it +is called. Not to worry. + +We also put notes into the file since there are many things to +remember, and these appear as |\TBremark{...}|. Authors can look for +such things, if they are interested. + + +\head * General Coding Suggestions * + +Probably 90\% of the code we receive is easily handled, and for this +we are most appreciative. We do have suggestions of a general nature +that authors should keep in mind as they create articles for +transmission here or anywhere else. + +Those who create code find it much easier to read and understand their +own code than do others who read the ``finished'' product. In fact, +some people seem to forget that the electronic file will be viewed (in +fact, studied) in addition to the printed copy. Documentation and +uniform habits of presentation always help. Blank lines are easier to +digest by eye than |\par|s. Tables and display math can often be +keyed in such a way that rows and columns are clear in the source file +on a display screen as well as in print. Explanations or warnings of +tricky code can be {\it very} helpful. Authors should place font and +macro definitions in one location at the beginning of an article +whenever possible. + +Authors should anticipate that articles will undergo some +transformation, and that positioning of some elements may change +simply because articles are {\it run together\/} in \TUB. Decisions +on linebreaks, pagebreaks, figure and table placement are generally +made after the text is deemed correct. We avoid inserting ``hard'' +line- and page-breaks whenever possible, and will not do so, in any +case, until the last minute. We also use floating insertions for +figure and table placement when we first receive an article. It is +easier for us to work with a clean file containing some bad breaks, +overfull boxes or other unsightliness, than it is to handle a document +containing {\it ad hoc\/} code dedicated to a beauteous (albeit +narrowly specific) result. + + +When authors proof their articles in formats other than that of \TUB\/ +(for example), they should expect that \TUB's changes in pagewidth and +pagedepth may drastically alter text layout. Paragraphs are rebroken +automatically when |\hsize| and |\vsize| change, but |\centerline| +does not break, and we often see tables and math displays which are +rigidly laid out. When possible, authors might use paragraphing +techniques instead of calls to, say, |\centerline| (Beeton will be +writing up her lectures on paragraphing techniques for a future issue +of \TUB\/), and they should try to code tables in such a way that +widths of columns can be changed easily. Generally, authors should +attempt to anticipate the work that might be necessary if requests for +other reasonable formats of their texts are made. In the case of +\TUB, we make a strong effort to stuff macro listings and tables into +the two-column format. Since these types of items are not generally +susceptible to automatic line-breaking, we give thanks to stuffings +made by authors ahead of time. In this context, we recommend the use +of |\verbfile{...}| (see the section {\bf Verbatim Modes}) to maintain +consistency between documentation and reality. + +Specifically in the domain of \TeX\ macros, we find that many authors +throw in unnecessary |%| characters to end code lines. Except in +cases where the |^^M| means something other than end-of-line, +linebreaks can reliably be placed after control-words and numerical +assignments. We have seen \TeX's buffer size exceeded when |%| +was placed after {\it every\/} line. + +A wider perspective in the matter of naming macros can prevent +problems that occur when definitions are overwritten as articles are +run together. The names of control sequences used in \plain, \LaTeX, +and \AmSTeX\ are documented and authors should avoid using them for +other purposes. It is also wise to avoid commonly used names such as +|\temp|, |\result|, |\1|, and |\mac| in presenting code that might be +cribbed by other users. The frequently used technique of temporarily +|\catcode|ing a character to be a letter (e.g.\ the |@|) provides a +good method of hiding control sequences so that they will not be +clobbered later. Readers are in need of small macros to do little +tricks, and they often try suggestions brought forth in \TUB. A +little extra effort in making these macros consistent with the macros +in wide distribution and in making them robust will be much +appreciated. + +\TBremark{Anything about formatting macros?} + + +\head * Electronic Documentation and Submission Procedure * + +In addition to |tugboat.sty|, |ltugboat.sty|, and |tugboat.cmn|, +a copy of this article, |tubguide.tex|, will be available at +most \TeX{} archives, including those at SHSU, Aston, and Stuttgart. + +Please address all electronic correspondence to the \TUB{} maildrop: +||TUGboat@Math.AMS.com|| +Mail to either of our personal addresses is liable to go unseen if +vacation or illness intervenes. We also request that you supply +an abstract of any expository article. This will be used as the +basis for translation of abstracts to languages other than that +in which the article is published. + + +\makesignature + +\endarticle diff --git a/Master/texmf-dist/doc/plain/typespec/TypeSpec.pdf b/Master/texmf-dist/doc/plain/typespec/TypeSpec.pdf Binary files differnew file mode 100644 index 00000000000..5a63b687b7f --- /dev/null +++ b/Master/texmf-dist/doc/plain/typespec/TypeSpec.pdf diff --git a/Master/texmf-dist/doc/plain/typespec/TypeSpec.tex b/Master/texmf-dist/doc/plain/typespec/TypeSpec.tex new file mode 100644 index 00000000000..5b2f19781c1 --- /dev/null +++ b/Master/texmf-dist/doc/plain/typespec/TypeSpec.tex @@ -0,0 +1,255 @@ +\hsize4.5in +\hoffset6.5in +\advance\hoffset-\hsize +\divide\hoffset2 + +\def\ob{\tt\string{} +\def\cb{\tt\string}} + +\footline={\ifnum\pageno=1 \else \hss\folio\hss\fi} + +\chardef\other=12 +\def\deactivate{% +\catcode`\\=\other \catcode`\{=\other +\catcode`\}=\other \catcode`\$=\other +\catcode`\&=\other \catcode`\#=\other +\catcode`\%=\other \catcode`\~=\other +\catcode`\^=\other \catcode`\_=\other} + +\def\makeactive#1{\catcode`#1=\active \ignorespaces} + +\def\LaTeX{L\kern-.26em \raise.6ex\hbox{\fivei A}% +\kern-.15em TeX}% + +{\makeactive\^^M % +\gdef\obeywhitespace{\makeactive\^^M % +\let^^M=\newline % +\aftergroup\removebox % +\obeyspaces}} + +\def\newline{\par\indent} +\def\removebox{\setbox0=\lastbox} + +{\catcode`\|=\active +\gdef\verbatim{% + \par\begingroup\deactivate\obeywhitespace\tt + \catcode`\|=\active + \def|{\endgroup\par}}} + +\clubpenalty10000 +\widowpenalty10000 +\raggedbottom +\interlinepenalty10000 + +\def\section#1\par{% +\medskip +\noindent\llap{\raise1.25pt\hbox{$\diamond$\enskip}}{\bf#1}\par\nobreak\noindent} + +\section Introduction + +I use a lot of type. I also use \TeX~--~what better medium can there be for showing off type?~--~in +its Macintosh incarnation as Textures. I need samples that I can show clients, and that I can +refer to for the technical details of the typeface. The results are the type specimens you see +here. The code itself has some annotations that you might want to read. The macros are not +complex~--~I don't have time to decode clever macros, and I may need to alter them for unusual +situations as they arise. You are encouraged to do the same. The current distribution of these +specimens includes: This introduction; eight type specimens; an Acrobat PDF file with typeset +examples of the specimens and this introduction. + +Some of the fonts in these examples (particularly {\it Centaur} in {\tt TypeSpc8.tex}) were made \TeX-ready +by using Alan Jeffrey's {\tt fontinst}. The {\tt fontinst} package is discussed in considerable detail in Alan +Hoenig's new book {\it\TeX\ Unbound:\ \LaTeX\ and \TeX\ Strategies for Fonts, Graphics \& More} (Oxford 1998), which +discusses {\tt fontinst} over the course of several chapters and works through numerous examples. If you deal at all with +fonts and +\TeX\ you will need this book. + +Clearly, these specimens will be most easily produced on systems that use outline fonts +as opposed to bitmaps. I have used these specimens on a Mac with Textures using both PostScript and TrueType, and on a PC +with PC\TeX using TrueType. Textures (now at version 2.0) is interesting in that it can create font metrics +``on the fly'' from the Mac's bitmap files. For more demanding work, you will, however, want to stick with {\tt fontinst}. + +\section A word about color + +Blue Sky Research {\it Textures} is a wonderful implementation of \TeX\ that has a very convenient +way to use color through the {\tt\string\special} mechanism. I'm going to describe it so that if +you use a different implementation that can take advantage of color, you will understand the +macros here. Color is invoked by: + +\verbatim\special{color rgb 1.0 0.0 0.0}| + +\noindent This tells \TeX\ to trun everything red from this point on. This specification could +also have been given by: + +\verbatim\special{color cmyk 0.0 1.0 0.1 0.0}| + +\noindent as red in the CMYK model is 100\% of magenta and yellow. To jump back and forth between +colors, Textures has a color stack and you can push colors onto the stack and pop them off. So, a +typical use of color might be something like this: + +\verbatim\special{color push}% Puts current color (black) on stack| +\verbatim%%% Calls red and puts it on stack:| +\verbatim\special{color rgb 1.0 0.0 0.0}| +\verbatim Some text in red.| +\verbatim\special{color pop}% Pops red off stack, restores black| +\verbatim More text in black.| + +\noindent Simple. You can also define a color for later use: + +\verbatim\special{color define red rgb 1.0 0.0 0.0}| + +\noindent and summon it by calling: + +\verbatim\special{color red}| + +\noindent The advantage of this is that you can call colors that downstream processors (separation +software, or a printer) can use to identify color use. You can even screen the color for tints: + +\verbatim\special{color red .5}| + +\noindent which would give a 50\% tint of red, or pink. + +\section TypeSpc1.tex, TypeSpc2.tex, TypeSpc3.tex + +These are essentially variations on a theme, differing only in the display type at the top of the +page. TypeSpc1 has a selection of telltale characters. The top of the {\it A\/} often has a distinctive +treatment; the lower half of the {\it G\/} and the tail of the {\it Q\/} also tend to +be distinctive; the shape and size of the enclosed +areas of the lowercase {\it a\/} and {\it e\/} are also +telltale, and important in that very small such spaces +are likely to close up under less than ideal printing +conditions; the ampersand frequently has a good deal of +creativity lavished upon it. TypeSpc2 sets the +uppercase and lowercase of each letter next to each other. TypeSpc3 has a line of uppercase +characters (not good design, but some people like or expect it) followed by a line of lowercase characters. + +\section Selecting the type + +At the beginning you can insert three items of information: the \TeX\ name of the font; the name +of the font that will appear as the `title' of the specimen; and any comments that you wish to +have at the end of the chart. I like this specimen because the chosen typeface is used for the +whole specimen, including annotations. Clearly, these specimens and macros are more suited to +PostScript and TrueType fonts than bitmaps -- proceed accordingly. + +\section Column width + +Under normal circumstances, a column of type should be about 70 lowercase characters (about 2.5 +lowercase alphabets) in width, or about 4.5 inches in width, which ever comes first. Much longer, and the eye tires, and +loses its place when moving to the next line; much shorter and you increase the level of visual +noise such as hyphenation and highly variable word spacing. This sample shows 10pt type at the +width of 2.5 lowercase alphabets, and calculates the size of type necessay to set 70 characters +to a measure of 4.5 inches. Interestingly, 10pt type +usually comes very close to fitting 4.5 inches with 70 +characters. One of the most common signs of uninformed typography is +column width that pays no attention to the realities of +type and reading. + +\section Leading + +The calculation of leading~--~{\tt\string\baselineskip} in \TeX~--~is based purely on the +physical realities of the type being set. The maximum height and depth of the typeface's characters is found, and then a +percentage of that amount is added to itself to arrive at the leading. The x-height of the font +is also given some influence over the leading. + +\section Choice of text + +I have provided three sample texts in token registers. The first is a simple piece of English +prose. The second is a collection of {\it pangrams}~--~sentences using all twenty-six letters of the alphabet~--~from the large +collection of David Lemon of Adobe Systems, Inc.; so you get to see all of the letters of the alphabet in +use. The third is an amalgam of Latin and semi-Latin texts. In the first place, Latin~--~as +Beatrice Warde pointed out~--~has fewer descenders so the text sits more cleanly on the baseline; +second, as W.\ A.\ Dwiggins pointed out to Beatrice Warde, it is good to have a sample of text in +a language the reader does not read~--~in this way the reader looks at the type itself, and not +through the type to the information it conveys. + +\section Type factor + +The type factor is basically an extension of the the characters per pica concept, but scaled to +the size of the typeface. It is based on a sample of type in which $f=(c\,t)/m$ where $f$ is the +typefactor, $c$ is the number of characters in the sample, $t$ is the type size in points, and $m$ +is the total horizontal width of the sample. The formula can be put to some good use. For +instance, characters per pica, $p$, can be obtained from $p=h/f$ where $h$ is the size of the type +in points; the size of the type, $h$, necessary to place $n$ characters on a column width of $w$ +(in picas) is: $h=(fw)/n$. I have used a sample based on the relative frequency of letters in +English. This gives excellent agreement with published figures, particularly those in {\it Brown's +Index}. It is best not to take figures like characters-per-pica or type factors too seriously. They are very useful for +judging the relative characteristics of typefaces. Before computer typesetting they were far more useful when the actual +typesetting of material was costly and time-consuming. Computers allow us to be able to change typesetting parameters +interactively and quickly, relieving us from having to know precisely ahead of time how the material is going to layout. + +\section The ratio of the x-height to the ascender height + +This is an important characheristic of type. As x-height increases, type tends to look darker, or +more crowded on the page. The antidote to this is to increase the leading slightly. {\it See above.} + +\section TypeSpc4.tex -- a mini-specimen + +The principal attraction of TypeSpc4 is the +{\tt\string\makefontbox} macro which gives a kind miniature specimen that can be as little or as +large as you like. In the examples I give, the grid is certainly optional as is the use of color: +They are merely suggestions to get you started. The five arguments to {\tt\string\makefontbox} are +as follows: + +\medskip + +\vbox{\raggedright\parskip3pt + +\itemitem{\#1}\TeX's name for the desired font + +\itemitem{\#2}The name font name as you want it to print + +\itemitem{\#3}The name of the type's designer, or other salient + piece of information that lends itself to display + +\itemitem{\#4}The size of the type inside the box + +\itemitem{\#5}The overall desired width of the box} + +\section TypeSpc5.tex -- by the numbers + +It is very often useful to know where the characters of a typeface are, and to gain an overall +impression of all of the characters of a font. This specimen is simply an enumeration of the +characters with respect to their character numbers. The macro to notice is +{\tt\string\lineofchars}. You can specify how may characters are to be in the line, and what the +numerical starting point will be. Numerous other design variables can be specified, and they are +discussed in TypeSpc5.tex. + +\section TypeSpc6.tex -- for florid fonts + +There are times when you simply have to see a font in all its splendor. You don't need it at every +imaginable size. And in the case of ornate calligraphic fonts, it does not make any sense at all +to shove uppercase letters together for any reason, not even for display. + +\section TypeSpc7.tex -- homage \`a Caslon + +This ornate example is meant to be both fun and useful. It was inspired by the specimen sheets of +William Caslon. The names of the type sizes~--~Ruby, Minion, Brevier, etc.~--~are traditional and +could be replaced with sizes in points. This is a useful sample for PostScript typefaces which are +often packaged as a family of four fonts: roman, italic, bold and bold-italic. The principle fonts +are the roman and italic, however, and these are the fonts primarily featured in this specimen. The +sample text is in a token list and can be changed at will~--~just make sure that there is enough +of it. + +\section TypeSpc8.tex + +This specimen uses techniques that we have established in earlier samples. Again, this is suitable +for typefaces that exist in pairs (or pairs of pairs) of fonts: roman and italic, bold and +bold-italic. There is also a macro for a single, centered paragraph that could be used, say, for +small caps. The type size, leading and type factor are given for each font. + +\section TypeSpc9.tex + +I combined two formats here to show off the principal characteristics of the roman along with the +fonts of the family as used for text. + +\section TypeSp10.tex + +Another variation using one sample per line. Also notice the very beautiful typeface. + +\bigskip +\hrule + +\section Stephen Moye, 23 IV 1998 + +Stephen\hbox to .5em{\hrulefill}Moye@brown.edu\hfill\break Brown University Graphic Services + +\bye
\ No newline at end of file diff --git a/Master/texmf-dist/doc/plain/vertex/vertex.doc b/Master/texmf-dist/doc/plain/vertex/vertex.doc new file mode 100644 index 00000000000..c5e98292b66 --- /dev/null +++ b/Master/texmf-dist/doc/plain/vertex/vertex.doc @@ -0,0 +1,289 @@ +\magnification=\magstep1 +\input vertex +\input ppt.sty + +\topmatter + \title{Ver\TeX\ User's Manual} + \author{Hal R. Varian} + \affil{University of Michigan} + \abstract{This documentation describes Ver\TeX, a package of \TeX\ +macros that will produce beautiful working papers, and allow you to +simulate final versions in a variety of journal styles.} + \keywords{\TeX, typesetting, economics} + \address{Prof. Hal R. Varian, Department of Economics, University of +Michigan, Ann Arbor, MI 48109, U.S.A.\ \ Internet address: {\tt +Hal\_Varian@UM.CC.UMICH.EDU}} + \thanks{Thanks to Kari Gluski, the participants of {\tt tex:forum}, +the members of the Economics Department at the University of Michigan, +and all the \TeX\ hackers who made this work possible.} \date{August, +1986} + \version{\today} + \prelim + \endtopmatter + \document + +There are several \TeX\ macro packages already available, so why is one +more necessary? Basically I felt that there was a need for a simple, +flexible package that added a minimum amount to {\tt PLAIN.TEX}, and yet +still provided useful features for writing technical reports. + +Ver\TeX\ will help you to {\bf V}isualize {\bf E}conomics {\bf R}eports +using \TeX. Ver\TeX\ will produce nice looking preprints and will aid in +formatting your bibliography, but it will also produce simulated journal +styles for a variety of economics journals. It is very easy to add new +journal styles to Ver\TeX for someone who knows a little bit of \TeX. + +\section Ver\TeX\ Commands + +The easiest way to show you Ver\TeX's commands is to show you the +start of this paper. It looks like something like this: + +\verbatim/ +\magnification=\magstep1 +\input vertex +\input ppt.sty + +\topmatter + \title{Ver\TeX\ User's Manual} + \author{Hal R. Varian} + \affil{University of Michigan} + \abstract{This documentation describes Ver\TeX, a package of \TeX\ +macros that will produce beautiful working papers, and allow you to +simulate final versions in a variety of journal styles.} + \keywords{\TeX, typesetting, economics} + \address{Prof. Hal R. Varian, Department of Economics, University of +Michigan, Ann Arbor, MI 48109, U.S.A.\ \ Internet address: {\tt +Hal\_Varian@UM.CC.UMICH.EDU}} + \thanks{Thanks to Kari Gluski, the participants of {\tt tex:forum}, +the members of the Economics Department at the University of Michigan, +and all the \TeX\ hackers who made this work possible.} \date{August, +1986} + \version{\today} + \prelim + \endtopmatter + \document + +There are several \TeX\ macro packages already available, so why is +one more necessary? Basically I felt that there was a need for a +simple, flexible package that added a minimum amount to {\tt +PLAIN.TEX}, and yet still provided useful features for writing +technical reports./ + +\bigskip + +That's pretty simple, isn't it? The only extra feature that you need to +know is that you can put \verbatim/\cr/ into the \verbatim/\title/ macro if +you want to split the title into two or more lines, as in + $$\verbatim/\title{A very, very, very, very \cr very long title}/$$ + +If there are two authors of a paper, use the commands + $$\verbatim/\authortwo{The Name}\affiltwo{The University}/$$ +The \verbatim/\thanks/ should come {\it before\/} the \verbatim/\author/ +and \verbatim/\title/ keywords, if the style you are using attaches the +thanks as a footnote to the author or title. + +What if there are more than two authors? In that case you are on your +own, except in the preprint style. There you can do something like: + +\verbatim/\author{A. Winken \cr {\it MIT} \cr B. Blinken \cr + {\it University of California} \cr {\rm and} \cr C. Nod \cr + {\it University of Michigan}}/ + +This will set the authors and affiliations up the way you want them. +Be sure to leave the \verbatim/\affil/ box out if you do this trick. +I intend to provide better support for multi-authored papers in the +next release of Ver\TeX. + +When you want to start a new section, you type + $$\verbatim/\section title of the section \par/$$ +and when you want to start a subsection you type + $$\verbatim/\subsection title of the subsection \par/$$ +Ver\TeX\ will handle the section numbers for you, automatically numbering +each section as required. + +You can enter footnotes by using the construction + $$\verbatim/\fnote{This is a footnote}/$$ and you get a +footnote.\fnote{Like this!} If at the end of your document, you type +\verbatim/\PrintEndNotes/, \TeX\ will print out an end page with all your +footnotes on it, for those journals who just have to have it. + +If you want the paper to be double spaced, put \verbatim#\doublespace# +between \verbatim#\endtopmatter# and \verbatim#\document#. This way the +cover will come out single spaced and the document will come out double +spaced, which is what people usually want. + +If you are in doublespace mode and want to put a paragraph in single +spaced mode for some reason, type \verbatim#\singlespace#. The document +will now revert to single spaced mode until you enter \verbatim#\doublespace# +again. + +One common reason to want to use single spacing in a doublespaced document +is for long quotes. Ver\TeX\ provides this via the command +\verbatim/\quote/, as in \verbatim/\quote{Four score and seven $\ldots$}/. + +\section Extra Goodies for Math and Figures + +But there are more goodies in Ver\TeX. For example, you can attach {\it +names\/} to equations, and have \TeX\ automatically number (and renumber!) +them for you. To use this feature you type something like the following +when you first introduce an equation: + $$\verbatim/$$e=mc^2\eqno\Equation\Einstein$$/$$ +and then when you want to reference it, you say + $$\ldots\verbatim/as in equation (\Einstein)./$$ +The same sort of thing works with figures. When you first reference a +figure, called, say \verbatim/\MonaLisa/, you type +\verbatim/\Fig\MonaLisa/. \TeX\ will assign the next figure number to it +and enter ``Figure 2'' (or whatever) in the text. At the end of the +paragraph, or roughly where you want the figure to appear, you +type + $$\verbatim/\Figure\MonaLisa{2in}{The great painting Mona Lisa.}/$$ +The three arguments to the \verbatim/\Figure/ macro are: (1) the +figure name, (2) the vertical size of the figure, and (3) the +caption for the figure. \TeX\ will insert the figure using the +\verbatim/\midinsert/ command, so it will appear on the page you +ask for it if there is room, and otherwise float to the top of the +next page. + +There are couple of things about equation and figure names that are worth +pointing out. First, \TeX\ does not allow you to use {\it numbers\/} as +part of a name. Thus names like \verbatim/\Eq1/ and \verbatim/\Eq2/ are +not allowed. However, you can {\it reuse\/} names as often as you wish. +You can refer to an equation as \verbatim/\A/ in one section of the paper +and later on redefine \verbatim/\A/ to refer to another equation. I find +it convenient to use rather long descriptive names like +\verbatim/\FirstOrderCondition/ for equations that I refer to throughout the +paper and use short names like \verbatim/\A/ for equations that I only +refer to once or twice. + +There a couple of handy math commands. You can type \verbatim/\text{for all}/ +if you want ``for all'' to appear in math mode. You can type +\verbatim/\D{f(x)}{x_i}/ to get + $$\D{f(x)}{x_i}$$ and +\verbatim/d{f(x)}{x_i}/ to get $\d{f(x)}{x_i}$. + +The command \verbatim/\proof/ sets a nice {\it Proof.} The command +\verbatim/\qed/ gives you a box: \qed The command \verbatim/\proclaim/ +works the same as described in {\it The \TeX book}, but the style has been +changed slightly. + +The command \verbatim/\today/ gives today's date nicely spelled out, like: +\today. + +To get verbatim \TeX\ listings, use the construction + + $$\verbatim/\verbatim#This will appear verbatim#/$$ + +Any convenient symbols can be used as a delimiter in place of the +\verbatim/#/ signs. + +\section References + +Ver\TeX\ has nice way to deal with references. You type something +like the following: + +\verbatim/ + +\ref \by{Afriat, S.} \paper{The Construction of a Utility Function from +Expenditure Data} \jour{International Economic Review} \vol{8} +\yr{1967} \pages{67--77}\endref + +\ref \by{Afriat, S.} \paper{On the Constructability of Consistent Price +Indices Between Several Periods Simultaneously} \inbook{Essays in +the Theory and Measurement of Consumer Behavior in Honor of Sir +Richard Stone}\editor{A. Deaton} \publ{Cambridge University Press} +\publaddr{Cambridge, England}\yr{1984}\endref + +\ref \by{Browning, M.}\paper{A Non-Parametric Test of the Life-Cycle +Rational Expectations Hypothesis} \paperinfo{Princeton University +Discussion Paper 64} \yr{1984}\endref + +\ref \by{Varian, H.} \paper{Nonparametric Test of Models of Consumer +Behavior}\jour{Review of Economic Studies} \vol{50} \yr{1982b} \no{3} +\pages{99--110}\endref + +\ref \by{Varian, H.} \book{Microeconomic Analysis} \publ{W. +W. Norton \& Co.} \publaddr{New York} \yr{1984}\endref +/ +\medskip + +and you will get a nice typeset output like: + +\bigskip + +\ref \by{Afriat, S.} \paper{The Construction of a Utility Function from +Expenditure Data} \jour{International Economic Review} \vol{8} +\yr{1967} \pages{67--77}\endref + +\ref \by{Afriat, S.} \paper{On the Constructability of Consistent Price Indices +Between Several Periods Simultaneously} \inbook{Essays in the Theory and +Measurement of Consumer Behavior in Honor of Sir Richard Stone} +\editor{A. Deaton} \publ{Cambridge University Press} \publaddr{Cambridge, +England}\yr{1984}\endref + +\ref \by{Browning, M.}\paper{A Non-Parametric Test of the Life-Cycle Rational +Expectations Hypothesis} \paperinfo{Princeton University Discussion Paper 64} +\yr{1984}\endref + +\ref \by{Varian, H.} \paper{Nonparametric Test of Models of Consumer +Behavior} \jour{Review of Economic Studies} \vol{50} \yr{1982b} \no{3} +\pages{99--110}\endref + +\ref \by{Varian, H.} \book{Microeconomic Analysis} \publ{W. +W. Norton \& Co.} \publaddr{New York} \yr{1984}\endref + +\medskip + +The reference macros are quite complicated and are still being fixed; use +them at your own risk. Currently if you omit a field that is +require---like leaving out the page numbers or something like +that---Ver\TeX\ will sometimes print out excess commas and other +punctuation. Eventually this will be fixed, but for now it is better to +put in a dummy value, like \verbatim#\pages{???}# or something like that. + +If you have a fancy reference that doesn't fit one of the above models, +just use the \verbatim#\ref# macro to start the reference. You'll get +the right hanging indentation and inter-reference spacing that way. + +Refer to the file \verbatim#vertex.hst# for the history of revisions to +Ver\TeX. If you add some peachy macros of your own, I strongly suggest +that you put them in a separate file. Then as new revisions of Ver\TeX\ +come out, you won't have to modify them in any way. + +Ver\TeX\ is in the public domain; please feel free to distribute it however +you want, as long as you indicate the original author. + +\section Journals + +Want to get published quick? Then use Ver\TeX's journal simulation +feature. Instead of using the command \verbatim\input ppt.sty\ use +the style files: + +\medskip + +\verbatim\jpe.sty\ --- for the {\it Journal of Polemical Economy}. + +\verbatim\jep.sty\ --- for the {\it Journal of Economic Perspectives}. + +\verbatim\jet.sty\ --- for the {\it Journal of Economic Theorems}. + +\verbatim\aer.sty\ --- for the {\it Armenian Economic Review}. + +\verbatim\ecnmet.sty\ --- for {\it Economagica}. + +\verbatim\restud.sty\ --- for {\it Review for Economic Students}. + +\verbatim\qje.sty\ --- for the {\it Quartered Journal of Economics}. + +\medskip + +When you use one of these styles, Ver\TeX\ will automatically adjust the +style of the document and the style of the references to be more-or-less +consistent with the journal style. Some fine tuning may be needed, but +the output generally looks pretty good. + +If you want to see a small sample of each output, \TeX\ the file {\tt +vertest.tex}. + +\enddocument + +\bye diff --git a/Master/texmf-dist/doc/plain/yannisgr/00changes.txt b/Master/texmf-dist/doc/plain/yannisgr/00changes.txt new file mode 100644 index 00000000000..9be612e38ba --- /dev/null +++ b/Master/texmf-dist/doc/plain/yannisgr/00changes.txt @@ -0,0 +1,36 @@ + -Files renamed to avoid conflicts with CM: + accent.mf renamed to rgraccent.mf + punct.mf renamed to rgrpunct.mf + + -Files renamed to avoid conflicts with Levy's Greek + gen_acc.mf renamed to rgen_acc.mf + grbase.mf renamed to rgrbase.mf + greek.mf renamed to rgreek.mf + greekmacros.tex renamed to rgreekmacros.tex + grtestfont.tex renamed to rgrtestfont.tex + lig.mf renamed to rgrlig.mf + lower.mf renamed to rgrlower.mf + upper.mf renamed to rgrupper.mf + + -Files renamed to conform to HMC foreign language conventions + rgrhyph.tex renamed to grhypha.tex + + -Files replaced with near-identical files from Levy's Greek + digits.mf + + -Files changed to reflect above renamings: + greekcsc.mf + mrgrbf10.mf + mrgrrg10.mf + mrgrsl10.mf + mrgrti10.mf + m_greek.mf + rgrbf10.mf + rgreek.mf + rgrpaper.tex + rgrrg10.mf + rgrsc10.mf + rgrsl10.mf + rgrtestfont.tex + rgrti10.mf + tomakeformat.txt diff --git a/Master/texmf-dist/doc/plain/yannisgr/00readme.txt b/Master/texmf-dist/doc/plain/yannisgr/00readme.txt new file mode 100644 index 00000000000..9110bf9a1c1 --- /dev/null +++ b/Master/texmf-dist/doc/plain/yannisgr/00readme.txt @@ -0,0 +1,49 @@ + +Directory TEX_ROOT:[BABEL.GREEK.YANNIS] + +00CHANGES.TXT;5 +00README.TXT;1 +CSC_MISCE.MF;1 +DIGITS.MF;2 +GEN_ACC.MF;2 +GEN_M_ACC.MF;1 +GREEKCSC.MF;2 +IT_DIGITS.MF;1 +IT_LIG.MF;1 +IT_LOWER.MF;1 +LIGCSC.MF;1 +MONSYL.TXT;1 +MRGRBF10.MF;2 +MRGRRG10.MF;2 +MRGRSL10.MF;2 +MRGRTI10.MF;2 +M_ACCENT.MF;1 +M_GREEK.MF;2 +RGEN_ACC.MF;1 +RGR.README;2 +RGRACCENT.MF;1 +RGRBASE.MF;1 +RGRBF10.MF;3 +RGREEK.MF;3 +RGREEKMACROS.TEX;1 +RGRHYPH.TEX;1 +RGRLIG.MF;1 +RGRLOWER.MF;1 +RGRPAPER.DVI;1 +RGRPAPER.LIS;2 +RGRPAPER.TEX;3 +RGRPUNCT.MF;1 +RGRRG10.MF;3 +RGRSC10.300GF;1 +RGRSC10.LIS;1 +RGRSC10.MF;2 +RGRSC10.PL;1 +RGRSC10.TFM;1 +RGRSL10.MF;3 +RGRTESTFONT.TEX;2 +RGRTI10.MF;3 +RGRUPPER.MF;1 +SCSC.MF;1 +TOMAKEFORMAT.TXT;2 + +Total of 44 files. diff --git a/Master/texmf-dist/doc/plain/yannisgr/monsyl.txt b/Master/texmf-dist/doc/plain/yannisgr/monsyl.txt new file mode 100644 index 00000000000..b704a49ee7f --- /dev/null +++ b/Master/texmf-dist/doc/plain/yannisgr/monsyl.txt @@ -0,0 +1,456 @@ +% +% This is part of the rgr-package, version 1.0 +% +% LIST OF ONE-SYLLAB WORDS WHICH TAKE NO ACCENT +% IN THE NEW ONE-ACCENT SYSTEM +% +% Source: Dictionnary of Mhqi'wthc (ref. 3 in the paper) +% +% +% Exceptions are: >'h, p~wc, po~u, und mo~u, so~u, to~u etc +% in case of misunderstanding: +% for example o pat'erac mou e'ipe +% can mean: my father said (<o pat'erac mou, e>~ipe) +% or father said to me (<o pat'erac, mo~u e>~ipe). +% In the first case it would be: o pat'erac mou e'ipe +% and in the second one: o pat'erac mo'u e'ipe. +% But if there is no possible misunderstanding, these words get no +% accent. +% +% +>~a +>'a +<'a +>'ai +>'ah +<'alc +>'alt +>'an +>'aq +b'att +b'aq +b'hx +b'olt +bo~u +bo~uc +bg'ec +br'ec +bg~w +bge~ic +bge~i +bgo~un +br'e +b~wx +bi'oc +br~w +bre~ic +bre~i +bro~un +bo~un +g'a +g'ar +g~h +g~hc +g~hn +gi'a +gi'en +gi'wt +gk'el +gk'i +gk'olf +gi'oc +gio~u +gi'o +gio'i +gi~wn +gio'uc +gkro'um +gla~ux +gra~uc +gr'i +gr~u +gr'uy +gk'ol +g'in +gi'angk +gi'ok +g'uy +d'a +da'ic +d'ac +d'e +de~i +de~in +d'en +d'ec +d~w +de~ic +do~un +d'h +d'hx +di'a +d'ic +d'on +do'ux +dr'ax +du'o +dr~w +dr~ac +dr~a +dro~un +dr~uc +>'e +>'ea +e<~ic +>'em +<'en +<'ex +e>~u +ze'uc +ze~i +ze~ic +z~hn +zo~un +z~w +z'en +>~hn +<'h +<~hc +<'hn +j'a +j'in +j'ic +jl~a +jl~ac +jlo~un +jl~w +j'ec +jr'ix +jr'iy +jro~uc +j'wc +jei'oc +jei'a +jeio'i +jeio'uc +jei~wn +jeio~u +jei~ac +jei'ec +>'ic +>'i +ka'i +k>'an +k'ic +k~in +kl~a +kl~ac +klo~un +kl~w +k'itc +k'atc +kr'a +kr'aq +kr'hc +kte'ic +k'ur +k'wk +k~wc +k~w +kla~ic +ka~ic +ka~in +kl'unn +l'a +l'ax +l'iy +l'ugx +l'ec +l'en +l'ok +m'a +ma'itr +m'arc +m~ac +m'at +m'atc +m'e +mo'utc +m'en +m'h +m'hn +m'i +m'ic +mn~an +mn~ac +mn~a +m'orc +mi'a +m'ec +mp~a +mp'a +mp'ar +mp'ac +mp'iz +mpl'e +mpl'ok +mo~u +mp'ec +mplo'um +mplo'uz +mp'ol +mp'ox +mpr'e +mpr'ik +mpr'itz +mp'it +mp'ip +mpr'oc +m~u +m~uc +m'wy +mp'ak +mpo'um +mp'am +n'a +na'i +na~u +na~un +na~uc +n'h +n'i +ni'a +nt'an +n'ok +nt'e +nt'o +nt'ok +nt'on +nto'uc +n~u +n~un +n'ux +n'ec +nt'ip +ntr'in +nto~u +ni'oc +nio~u +ni'o +nio'i +ni~wn +nio'uc +ni~ac +ni'an +ni'ec +>'on +<'oc +o<~u +<'on +<'o +o<'i +o<'uc +o<'u +o>~uc +o>'ust +o>'uf +o>'uq +>'oq +p'a +pa~ic +pa~i +p~an +p'an +p~ac +p'at +p~w +pe~ic +pe~i +po~un +p'ec +p'ik-n'ik +pl'hn +plo~uc +plo~i +plo~un +plo~u +p'i +pi'ec +pie~i +pio~un +pi~w +pie~ic +pn'ux +po'u +po'uc +po'uf +pr'in +pr'o +pro'ix +pi'a +pi'o +pr'oc +p'ux +p~ur +p'w +p'wc +poi'oc +poi'a +poi'o +poio'i +poio'uc +poi~wn +poio~u +poi~ac +poi'an +poi'on +poi'ec +r'ax +r'e +r'ingk +r'ic +ro~uc +ro~u +ro~un +r'wx +r'wc +r~w +r'o +r'ok +re~i +s'an +s'a +s'arx +s~ac +s'e +s'ex +s'er +s'hc +s'hy +s'ef +st'a +st'o +s'ik +sk'i +sk'wr +sk'wy +sn'omp +s'ok +s'oc +so'ut +so~u +sto~u +st'on +sto'uc +spl'hn +sp'or +sp~w +sp~ac +sp~an +st'ar +st'ul +st'ux +s'u +st~hc +st'hn +st~wn +st'h +s'un +s~uc +s~un +sf'hn +sf'hx +sf'igx +st'op +str'ac +st'ok +t'a +ta~u +t'akt +t'an +t~ac +t'e +t'est +tz'in +t'i +ts'ok +tz'im +tz'wn +t'ik +t'ic +t'o +to~u +t'on +to'uc +t~hc +t'hn +t~wn +tr'ak +t'h +tz'ak +tr'am +tr'ast +tre~ic +tr'ic +tr'ik +tr'wc +tr~wc +tr~wn +ts'ak +t'ak +t'ok +ts'e +ts'ek +ts'if +tso'u +ts'a +tso'uf +ts'af +tz'az +t'ost +tz'ast +ts'ingk +f'i +f~ac +f~an +fe~u +fl'ert +fl'ey +fl'it +fl'ux +f'wr +f~wc +f'wc +f'ilm +fl'ac +f'ic +f'on +fto~u +f'ast +fo~unt +q'a +q'i +q'e +qo'u +qe'ir +q'hn +qj'ec +qt'ec +qj'wn +jo~uc +jo~un +jr'h +jr'wc +j'wl +y'i +y'ec +y'hn +y'it +>'w +>~w +>'wm +>'wn +>'wq +>'wy +<'wc + diff --git a/Master/texmf-dist/doc/plain/yannisgr/rgr.readme b/Master/texmf-dist/doc/plain/yannisgr/rgr.readme new file mode 100644 index 00000000000..f7a455b19aa --- /dev/null +++ b/Master/texmf-dist/doc/plain/yannisgr/rgr.readme @@ -0,0 +1,39 @@ +List of files: +accent.mf, csc_misce.mf, digits.mf, gen_acc.mf, gen_m_acc.mf, grbase.mf, +greek.mf, greekcsc.mf, it_digits.mf, it_lig.mf, it_lower.mf, lig.mf, +ligcsc.mf, lower.mf, m_accent.mf, m_greek.mf, punct.mf, scsc.mf, upper.mf, + +rgrrg10.mf, rgrsl10.mf, rgrti10.mf, rgrbf10.mf, rgrsc10.mf, mrgrrg10.mf, +mrgrsl10.mf, mrgrti10.mf, mrgrbf10.mf, + +greekmacros.tex, monsyl.txt, rgrhyph.tex, rgrpaper.tex, tomakeformat.txt, +grtestfont.tex + +************************************************************************* + USERS'S GUIDE +************************************************************************* + +Run all the fonts with \mag:=1; Run rgrrg10 also with \mag:=.9;. Make sure +that the fonts cmssqi8 and mcyr10 are available. Same thing for tugbot.sty +and tugbot.com (version 0.5 at least). Run rgrpaper.tex (this is a NEW version +of "Y. Haralambous, K. Thull, Typesetting modern greek with 128 character +codes, TUGboat 10 (1989) 354-359). + +Read it! + +If you want to make a greek format, remove "\input hyphen.tex" from plain.tex, +and replace by he contents of tomakeformat.txt. + +If you want to make the PASCAL word processor mentionned in rgrpaper, you +will find in monsyl.txt a list of monosyllabes. + +That's it. If you are a satisfied user you can send me a postcard for my +collection (or perhaps some work you have done with this package), else send +me your remarks and complaints. My address is + + Yannis Haralambous + 101/11, rue Breughel + 59650 Villeneuve d'Ascq, France + Tel. (33) 20.05.28.80 + email: (Bitnet) yannis@frcitl71 + (after June, 1, 1990 yannis@frcitl81) diff --git a/Master/texmf-dist/doc/plain/yannisgr/rgreekmacros.tex b/Master/texmf-dist/doc/plain/yannisgr/rgreekmacros.tex new file mode 100644 index 00000000000..3aad8fd1ac0 --- /dev/null +++ b/Master/texmf-dist/doc/plain/yannisgr/rgreekmacros.tex @@ -0,0 +1,159 @@ +\def\lt{<} +\def\gt{>} +\newcount\fontnumber +\fontnumber=0 +\newif\ifoneaccent\oneaccenttrue +\def\ifnextchar#1#2#3{\let\tempe #1\def\tempa{#2}\def\tempb{#3}\futurelet + \tempc\ifnch} +\def\ifnch{\ifx\tempc\tempe\let\tempd\tempa\else\let\tempd\tempb\fi\tempd} +\def\gobble#1{} +\def\greekmode{% +\catcode`\<=13% +\catcode`\>=13% +\catcode`\'=11% +\catcode`\`=13% +\catcode`\~=11% +\catcode`\"=13% +\lccode`\<=`\<% +\lccode`\>=`\>% +\lccode`\'=`\'% +\lccode`\~=`\~% +\lccode`\"=`\"% +\def\rg{\fontnumber=1\tengr}% +\def\sl{\fontnumber=2\tengrsl}% +\def\it{\fontnumber=3\tengrit}% +\def\bf{\fontnumber=4\tengrbf}% +\def\smc{\fontnumber=5\tengrsmc}% +\def\I##1{\setbox0\hbox{##1}\ifdim\ht0=1ex\accent'174 ##1% + \else{\ooalign{\hidewidth\char'174\hidewidth\crcr\unhbox0}}\fi}}% +\newcount\vwl +\newcount\acct +{ + \greekmode + \gdef>{\ifnextchar ~{\expandafter\smoothcircumflex\gobble}{\char\lq\>}} + \gdef<{\ifnextchar ~{\expandafter\roughcircumflex\gobble}{\char\lq\<}} + \gdef\smoothcircumflex#1{\acct=\rq134 \vwl=\lq#1 \dobreathingcircumflex} + \gdef\roughcircumflex#1{\acct=\rq100 \vwl=\lq#1 \dobreathingcircumflex} + \gdef\dobreathingcircumflex{\ifnum\vwl\lt\rq140 %if uppercase + \char\the\acct\kern -.2em\char\the\vwl\else + \doaccent\fi} + \gdef\doaccent{\accent\the\acct \char\the\vwl\relax} + \gdef"{\ifnextchar '{\expandafter\diaeresisacute\gobble}{\accent\lq\"}} + \gdef\diaeresisacute#1{\accent\rq043 #1} + \gdef`{'} +} + +\newif\ifgreek\greekfalse + +\def\begingreek{\bgroup\font\tengr=rgrrg10\font\tengrsl=rgrsl10% +\font\tengrbf=rgrbf10\font\tengrit=rgrti10\font\tengrsmc=rgrsc10% +\greektrue\greekmode\rg} +\def\beginmgreek{\bgroup\font\tengr=mrgrrg10\font\tengrsl=mrgrsl10% +\font\tengrbf=mrgrbf10\font\tengrit=mrgrti10\font\tengrsmc=rgrsc10% +\greektrue\greekmode\rg} +\def\endgreek{\egroup} +\def\endmgreek{\egroup} +\def\monotoniko{% +\font\tengr=mrgrrg10\font\tengrsl=mrgrsl10% +\font\tengrbf=mrgrbf10\font\tengrit=mrgrti10% +\ifnum\fontnumber=5\smc% + \else\ifnum\fontnumber=4\bf% + \else\ifnum\fontnumber=3\it% + \else\ifnum\fontnumber=2\sl% + \else\rg% + \fi% + \fi% + \fi% +\fi% +} +\def\polutoniko{% +\font\tengr=rgrrg10\font\tengrsl=rgrsl10% +\font\tengrbf=rgrbf10\font\tengrit=rgrti10% +\ifnum\fontnumber=5\smc% + \else\ifnum\fontnumber=4\bf% + \else\ifnum\fontnumber=3\it% + \else\ifnum\fontnumber=2\sl% + \else\rg% + \fi% + \fi% + \fi% +\fi% +} +\let\math=$% +{\catcode`\$=13% +\gdef\greekdelims{\catcode`\$=13% +\def${\ifgreek\endgreek\else\begingreek\fi} +\def\display{\math\math}\def\enddisplay{\math\math}}} +\def\grave#1{{\edef\next{\the\font}\smc\accent\rq001\next#1}} +\def\roughgrave#1{{\edef\next{\the\font}\smc\accent\rq002\next#1}} +\def\smoothgrave#1{{\edef\next{\the\font}\smc\accent\rq003\next#1}} +\def\diaeresisgrave#1{{\edef\next{\the\font}\smc\accent\rq004\next#1}} +\def\diaeresiscircumflex#1{{\edef\next{\the\font}\smc\accent\rq005\next#1}} +\def\breve#1{{\edef\next{\the\font}\smc\accent\rq006\next#1}} +\def\macron#1{{\edef\next{\the\font}\smc\accent\rq007\next#1}} +\def\rhorough{{\tengrsmc +\ifnum\fontnumber=5\char\rq162 + \else\ifnum\fontnumber=4\char\rq016 + \else\ifnum\fontnumber=3\char\rq014 + \else\ifnum\fontnumber=2\char\rq012 + \else\char\rq010 + \fi + \fi + \fi +\fi +}} +\def\rhosmooth{{\tengrsmc +\ifnum\fontnumber=5\char\rq162 + \else\ifnum\fontnumber=4\char\rq017 + \else\ifnum\fontnumber=3\char\rq015 + \else\ifnum\fontnumber=2\char\rq013 + \else\char\rq011 + \fi + \fi + \fi +\fi +}} +\def\digamma{{\smc\char\rq135}} +\def\smallDigamma{{\smc\char\rq140}} +\def\Digamma{{\tengrsmc +\ifnum\fontnumber=5\char\rq021 + \else\ifnum\fontnumber=4\char\rq027 + \else\ifnum\fontnumber=3\char\rq025 + \else\ifnum\fontnumber=2\char\rq023 + \else\char\rq021 + \fi + \fi + \fi +\fi +}} +\def\vardigamma{{\tengrsmc +\ifnum\fontnumber=5\char\rq020 + \else\ifnum\fontnumber=4\char\rq026 + \else\ifnum\fontnumber=3\char\rq024 + \else\ifnum\fontnumber=2\char\rq022 + \else\char\rq020 + \fi + \fi + \fi +\fi +}} +\def\understroke{{\smc\char\rq046}} +\def\overstroke{{\smc\char\rq044}} +\def\sanpi{{\smc\char\rq136}} +\def\Sanpi{{\smc\char\rq137}} +\def\qoppa{{\smc\char\rq133}} +\def\varqoppa{{\smc\char\rq134}} +\def\Qoppa{{\smc\char\rq103}} +\def\Tao{{\smc\char\rq177}} +\def\ssh{\breve{s}}\def\SSH{\breve{S}} +\def\dz{\breve{z}}\def\DZ{\breve{Z}} +\def\psh{\breve{y}}\def\PSH{\breve{Y}} +\def\ksh{\breve{x}}\def\KSH{\breve{X}} +\def\inviota{{\smc\char\rq126}} +\def\grMF{{\smc\char\rq030\char\rq031\char\rq032\char\rq033}\-{\smc% +\char\rq034\char\rq036\char\rq037\char\rq032}} +\def\MF{{\smc\char\rq030\char\rq031\char\rq032\char\rq033}\-{\smc% +\char\rq040\char\rq036\char\rq037\char\rq032}} + +\endinput + diff --git a/Master/texmf-dist/doc/plain/yannisgr/rgrhyph.tex b/Master/texmf-dist/doc/plain/yannisgr/rgrhyph.tex new file mode 100644 index 00000000000..5ae489b008c --- /dev/null +++ b/Master/texmf-dist/doc/plain/yannisgr/rgrhyph.tex @@ -0,0 +1,1179 @@ +% +% This is part of the rgr-package version 1.1 +% as of March 2, 1990 Lille (France) +% +% Hyphenation patterns for modern greek language +% ********************************************** +% +\patterns{% +.>a4 +.>'a4 +.>~a4 +.<a4 +.<'a4 +.<~a4 +.'a4 +.>e4 +.>'e4 +.>~e4 +.<e4 +.<'e4 +.<~e4 +.'e4 +.>h4 +.>'h4 +.>~h4 +.<h4 +.<'h4 +.<~h4 +.'h4 +.>i4 +.>'i4 +.>~i4 +.<i4 +.<'i4 +.<~i4 +.'i4 +.>o4 +.>'o4 +.>~o4 +.<o4 +.<'o4 +.<~o4 +.'o4 +.<u4 +.<'u4 +.<~u4 +.'u4 +.>w4 +.>'w4 +.>~w4 +.<w4 +.<'w4 +.<~w4 +.'w4 +a1 +a2i +a2'i +a2~i +a2>i +a2>'i +a2>~i +a2<i +a2<'i +a2<~i +'a3i +a3" +a2u +a2'u +a2~u +a2>u +a2>'u +a2>~u +a2<u +a2<'u +a2<~u +'a3u +e1 +e2i +e2'i +e2~i +e2>i +e2>'i +e2>~i +e2<i +e2<'i +e2<~i +'e3i +e3" +e2u +e2'u +e2~u +e2>u +e2>'u +e2>~u +e2<u +e2<'u +e2<~u +'e3u +h1 +h2u +h2'u +h2~u +h2>u +h2>'u +h2>~u +h2<u +h2<'u +h2<~u +'h3u +h3" +i1 +i2a +i2'a +i2~a +'i3a +~i3a +u2'a +i2e +i2'e +'i3e +~i3e +u2'e +i2o +i2'o +'i3o +~i3o +u2'o +i2w +i2'w +i2~w +'i3w +~i3w +u2'w +'4' +''4' +''4> +''4< +'''a4 +''>a'4 +''<a'4 +''>~a4 +''<~a4 +'''e4 +'''>e'4 +'''<e'4 +'''h4 +''>h'4 +''<h'4 +''>~h4 +''<~h4 +'''i4 +''>i'4 +''<i'4 +''>~i4 +''<~i4 +'''o4 +''>o'4 +''<o'4 +'''u4 +''>u'4 +''<u'4 +''>~u4 +''<~u4 +'''w4 +''>w'4 +''<w'4 +''>~w4 +''<~w4 +o1 +o2i +o2'i +o2~i +o2>i +o2>'i +o2>~i +o2<i +o2<'i +o2<~i +'o3i +o3" +o2u +o2'u +o2~u +o2>u +o2>'u +o2>~u +o2<u +o2<'u +o2<~u +'o3u +u1 +u2i +u2'i +u2~i +u2>i +u2>'i +u2>~i +u2<i +u2<'i +u2<~i +u3" +w1 +~a3i +~a3u +~h3u +a1b +a1g +a1d +a1z +a1j +a1k +a1l +a1m +a1n +a1x +a1p +a1r +a1s +a1t +a1f +a1q +a1y +e1b +e1g +e1d +e1z +e1j +e1k +e1l +e1m +e1n +e1x +e1p +e1r +e1s +e1t +e1f +e1q +e1y +h1b +h1g +h1d +h1z +h1j +h1k +h1l +h1m +h1n +h1x +h1p +h1r +h1s +h1t +h1f +h1q +h1y +i1b +i1g +i1d +i1z +i1j +i1k +i1l +i1m +i1n +i1x +i1p +i1r +i1s +i1t +i1f +i1q +i1y +o1b +o1g +o1d +o1z +o1j +o1k +o1l +o1m +o1n +o1x +o1p +o1r +o1s +o1t +o1f +o1q +o1y +u1b +u1g +u1d +u1z +u1j +u1k +u1l +u1m +u1n +u1x +u1p +u1r +u1s +u1t +u1f +u1q +u1y +w1b +w1g +w1d +w1z +w1j +w1k +w1l +w1m +w1n +w1x +w1p +w1r +w1s +w1t +w1f +w1q +w1y +2b1b +2b1z +2b1j +2b1k +2b1m +2b1n +2b1x +2b1s +2b1t +2b1f +2b1q +2b1y +2g1b +2g1g +2g1z +2g1j +2g1m +2g1x +2g1s +2g1t +2g1f +2g1q +2g1y +2d1b +2d1g +2d1d +2d1z +2d1j +2d1k +2d1l +2d1m +2d1n +2d1x +2d1p +2d1s +2d1t +2d1f +2d1q +2d1y +2z1b +2z1g +2z1d +2z1z +2z1j +2z1k +2z1l +2z1m +2z1n +2z1x +2z1p +2z1r +2z1s +2z1t +2z1f +2z1q +2z1y +2j1b +2j1g +2j1d +2j1z +2j1j +2j1k +2j1m +2j1n +2j1x +2j1p +2j1s +2j1t +2j1f +2j1q +2j1y +2k1b +2k1g +2k1d +2k1z +2k1j +2k1k +2k1m +2k1n +2k1x +2k1p +2k1s +2k1f +2k1q +2k1y +2l1b +2l1g +2l1d +2l1z +2l1j +2l1k +2l1l +2l1m +2l1n +2l1x +2l1p +2l1r +2l1s +2l1t +2l1f +2l1q +2l1y +2m1b +2m1g +2m1d +2m1z +2m1j +2m1k +2m1l +2m1m +2m1x +2m1r +2m1s +2m1t +2m1f +2m1q +2m1y +2n1b +2n1g +2n1d +2n1z +2n1j +2n1k +2n1l +2n1m +2n1n +2n1x +2n1p +2n1r +2n1s +2n1f +2n1q +2n1y +2x1b +2x1g +2x1d +2x1z +2x1j +2x1k +2x1l +2x1m +2x1n +2x1x +2x1p +2x1r +2x1s +2x1t +2x1f +2x1q +2x1y +2p1b +2p1g +2p1d +2p1z +2p1j +2p1k +2p1m +2p1x +2p1p +2p1s +2p1f +2p1q +2p1y +2r1b +2r1g +2r1d +2r1z +2r1j +2r1k +2r1l +2r1m +2r1n +2r1x +2r1p +2r1r +2r1s +2r1t +2r1f +2r1q +2r1y +2s1b +2s1d +2s1z +sj2m +2s1l +2s1n +2s1x +2s1r +2s1s +2s1y +2t1b +2t1g +2t1d +2t1z +2t1j +2t1k +2t1l +2t1m +2t1n +2t1x +2t1p +2t1t +2t1f +2t1q +2t1y +2f1b +2f1g +2f1d +2f1z +2f1k +2f1m +2f1n +2f1x +2f1p +2f1s +2f1f +2f1y +2q1b +2q1g +2q1d +2q1z +2q1j +2q1k +2q1m +2q1n +2q1x +2q1p +2q1s +2q1f +2q1q +2q1y +2y1b +2y1g +2y1d +2y1z +2y1j +2y1k +2y1l +2y1m +2y1n +2y1x +2y1p +2y1r +2y1s +2y1t +2y1f +2y1q +2y1y +a1"'i +e1"'i +o1"'i +a1"'u +e1"'u +o1"'u +h1"'u +a1"~1 +e1"~i +o1"~i +a1"~u +e1"~u +o1"~u +h1"~u +4'a. +4~a. +4'e. +4~e. +4'h. +4~h. +4'i. +4~i. +4'u. +4~u. +4'o. +4~o. +4'w. +4~w. +4'aa. +4'ab. +4'ag. +4'ad. +4'ae. +4'az. +4'ah. +4'aj. +4'ai. +4'ak. +4'al. +4'am. +4'an. +4'ax. +4'ao. +4'ap. +4'ar. +4'ac. +4'at. +4'au. +4'af. +4'aq. +4'ay. +4'aw. +4'ea. +4'eb. +4'eg. +4'ed. +4'ee. +4'ez. +4'eh. +4'ej. +4'ei. +4'ek. +4'el. +4'em. +4'en. +4'ex. +4'eo. +4'ep. +4'er. +4'ec. +4'et. +4'eu. +4'ef. +4'eq. +4'ey. +4'ew. +4'ha. +4'hb. +4'hg. +4'hd. +4'he. +4'hz. +4'hh. +4'hj. +4'hi. +4'hk. +4'hl. +4'hm. +4'hn. +4'hx. +4'ho. +4'hp. +4'hr. +4'hc. +4'ht. +4'hu. +4'hf. +4'hq. +4'hy. +4'hw. +4'ia. +4'ib. +4'ig. +4'id. +4'ie. +4'iz. +4'ih. +4'ij. +4'ii. +4'ik. +4'il. +4'im. +4'in. +4'ix. +4'io. +4'ip. +4'ir. +4'ic. +4'it. +4'iu. +4'if. +4'iq. +4'iy. +4'iw. +4'oa. +4'ob. +4'og. +4'od. +4'oe. +4'oz. +4'oh. +4'oj. +4'oi. +4'ok. +4'ol. +4'om. +4'on. +4'ox. +4'oo. +4'op. +4'or. +4'oc. +4'ot. +4'ou. +4'of. +4'oq. +4'oy. +4'ow. +4'ua. +4'ub. +4'ug. +4'ud. +4'ue. +4'uz. +4'uh. +4'uj. +4'ui. +4'uk. +4'ul. +4'um. +4'un. +4'ux. +4'uo. +4'up. +4'ur. +4'uc. +4'ut. +4'uu. +4'uf. +4'uq. +4'uy. +4'uw. +4'wa. +4'wb. +4'wg. +4'wd. +4'we. +4'wz. +4'wh. +4'wj. +4'wi. +4'wk. +4'wl. +4'wm. +4'wn. +4'wx. +4'wo. +4'wp. +4'wr. +4'wc. +4'wt. +4'wu. +4'wf. +4'wq. +4'wy. +4'ww. +4~aa. +4~ab. +4~ag. +4~ad. +4~ae. +4~az. +4~ah. +4~aj. +4~ai. +4~ak. +4~al. +4~am. +4~an. +4~ax. +4~ao. +4~ap. +4~ar. +4~ac. +4~at. +4~au. +4~af. +4~aq. +4~ay. +4~aw. +4~ha. +4~hb. +4~hg. +4~hd. +4~he. +4~hz. +4~hh. +4~hj. +4~hi. +4~hk. +4~hl. +4~hm. +4~hn. +4~hx. +4~ho. +4~hp. +4~hr. +4~hc. +4~ht. +4~hu. +4~hf. +4~hq. +4~hy. +4~hw. +4~ia. +4~ib. +4~ig. +4~id. +4~ie. +4~iz. +4~ih. +4~ij. +4~ii. +4~ik. +4~il. +4~im. +4~in. +4~ix. +4~io. +4~ip. +4~ir. +4~ic. +4~it. +4~iu. +4~if. +4~iq. +4~iy. +4~iw. +4~ua. +4~ub. +4~ug. +4~ud. +4~ue. +4~uz. +4~uh. +4~uj. +4~ui. +4~uk. +4~ul. +4~um. +4~un. +4~ux. +4~uo. +4~up. +4~ur. +4~uc. +4~ut. +4~uu. +4~uf. +4~uq. +4~uy. +4~uw. +4~wa. +4~wb. +4~wg. +4~wd. +4~we. +4~wz. +4~wh. +4~wj. +4~wi. +4~wk. +4~wl. +4~wm. +4~wn. +4~wx. +4~wo. +4~wp. +4~wr. +4~wc. +4~wt. +4~wu. +4~wf. +4~wq. +4~wy. +4~ww. +4a'a. +4b'a. +4g'a. +4d'a. +4e'a. +4z'a. +4h'a. +4j'a. +4i'a. +4k'a. +4l'a. +4m'a. +4n'a. +4x'a. +4o'a. +4p'a. +4r'a. +4s'a. +4t'a. +4u'a. +4f'a. +4q'a. +4y'a. +4w'a. +4a'e. +4b'e. +4g'e. +4d'e. +4e'e. +4z'e. +4h'e. +4j'e. +4i'e. +4k'e. +4l'e. +4m'e. +4n'e. +4x'e. +4o'e. +4p'e. +4r'e. +4s'e. +4t'e. +4u'e. +4f'e. +4q'e. +4y'e. +4w'e. +4a'h. +4b'h. +4g'h. +4d'h. +4e'h. +4z'h. +4h'h. +4j'h. +4i'h. +4k'h. +4l'h. +4m'h. +4n'h. +4x'h. +4o'h. +4p'h. +4r'h. +4s'h. +4t'h. +4u'h. +4f'h. +4q'h. +4y'h. +4w'h. +4a'i. +4b'i. +4g'i. +4d'i. +4e'i. +4z'i. +4h'i. +4j'i. +4i'i. +4k'i. +4l'i. +4m'i. +4n'i. +4x'i. +4o'i. +4p'i. +4r'i. +4s'i. +4t'i. +4u'i. +4f'i. +4q'i. +4y'i. +4w'i. +4a'o. +4b'o. +4g'o. +4d'o. +4e'o. +4z'o. +4h'o. +4j'o. +4i'o. +4k'o. +4l'o. +4m'o. +4n'o. +4x'o. +4o'o. +4p'o. +4r'o. +4s'o. +4t'o. +4u'o. +4f'o. +4q'o. +4y'o. +4w'o. +4a'u. +4b'u. +4g'u. +4d'u. +4e'u. +4z'u. +4h'u. +4j'u. +4i'u. +4k'u. +4l'u. +4m'u. +4n'u. +4x'u. +4o'u. +4p'u. +4r'u. +4s'u. +4t'u. +4u'u. +4f'u. +4q'u. +4y'u. +4w'u. +4a'w. +4b'w. +4g'w. +4d'w. +4e'w. +4z'w. +4h'w. +4j'w. +4i'w. +4k'w. +4l'w. +4m'w. +4n'w. +4x'w. +4o'w. +4p'w. +4r'w. +4s'w. +4t'w. +4u'w. +4f'w. +4q'w. +4y'w. +4w'w. +4a~a. +4b~a. +4g~a. +4d~a. +4e~a. +4z~a. +4h~a. +4j~a. +4i~a. +4k~a. +4l~a. +4m~a. +4n~a. +4x~a. +4o~a. +4p~a. +4r~a. +4s~a. +4t~a. +4u~a. +4f~a. +4q~a. +4y~a. +4w~a. +4a~h. +4b~h. +4g~h. +4d~h. +4e~h. +4z~h. +4h~h. +4j~h. +4i~h. +4k~h. +4l~h. +4m~h. +4n~h. +4x~h. +4o~h. +4p~h. +4r~h. +4s~h. +4t~h. +4u~h. +4f~h. +4q~h. +4y~h. +4w~h. +4a~i. +4b~i. +4g~i. +4d~i. +4e~i. +4z~i. +4h~i. +4j~i. +4i~i. +4k~i. +4l~i. +4m~i. +4n~i. +4x~i. +4o~i. +4p~i. +4r~i. +4s~i. +4t~i. +4u~i. +4f~i. +4q~i. +4y~i. +4w~i. +4a~u. +4b~u. +4g~u. +4d~u. +4e~u. +4z~u. +4h~u. +4j~u. +4i~u. +4k~u. +4l~u. +4m~u. +4n~u. +4x~u. +4o~u. +4p~u. +4r~u. +4s~u. +4t~u. +4u~u. +4f~u. +4q~u. +4y~u. +4w~u. +4a~w. +4b~w. +4g~w. +4d~w. +4e~w. +4z~w. +4h~w. +4j~w. +4i~w. +4k~w. +4l~w. +4m~w. +4n~w. +4x~w. +4o~w. +4p~w. +4r~w. +4s~w. +4t~w. +4u~w. +4f~w. +4q~w. +4y~w. +4w~w. +} +\endinput + diff --git a/Master/texmf-dist/doc/plain/yannisgr/rgrpaper.tex b/Master/texmf-dist/doc/plain/yannisgr/rgrpaper.tex new file mode 100644 index 00000000000..98aa8cd94e5 --- /dev/null +++ b/Master/texmf-dist/doc/plain/yannisgr/rgrpaper.tex @@ -0,0 +1,763 @@ +% +% ************ tb26haralambous.tex +\input tugboat.sty + +%\input mssymb +\font\cyr=mcyr10 +%\input cyracc.def + +\input rgreekmacros +\newcount\m \newcount\n \newcount\p \newdimen\dim +\chardef\other=12 +\def\oct#1{\hbox{\tenrm\'{}\kern-.2em\tenit#1\/\kern.05em}} % octal constant +\def\hex#1{\hbox{\tenrm\H{}\tentt#1}} % hexadecimal constant +\def\setdigs#1"#2{\gdef\h{#2}% \h=hex prefix; \0\1=corresponding octal + \m=\n \divide\m by 64 \xdef\0{\the\m}% + \multiply\m by-64 \advance\m by\n \divide\m by 8 \xdef\1{\the\m}} +\def\testrow{\setbox0=\hbox{\penalty 1\def\\{\char"\h}% + \\0\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\B\\C\\D\\E\\F% + \global\p=\lastpenalty}} % \p=1 if none of the characters exist +\def\oddline{\cr + \noalign{\nointerlineskip} + \multispan{19}\hrulefill& + \setbox0=\hbox{\lower 2.3pt\hbox{\hex{\h x}}}\smash{\box0}\cr + \noalign{\nointerlineskip}} +\newif\ifskipping +\def\evenline{\loop\skippingfalse + \ifnum\n<128 \m=\n \divide\m 16 \chardef\next=\m + \expandafter\setdigs\meaning\next \testrow + \ifnum\p=1 \skippingtrue \fi\fi + \ifskipping \global\advance\n 16 \repeat + \ifnum\n=128 \let\next=\endchart\else\let\next=\morechart\fi + \next} +\def\morechart{\cr\noalign{\hrule} + \chartline \oddline \m=\1 \advance\m 1 \xdef\1{\the\m} + \chartline \evenline} +\def\chartline{&\oct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&} +\def\chartstrut{\lower4.5pt\vbox to14pt{}} +\def\table{$$\global\n=0 + \halign to\hsize\bgroup + \chartstrut##\tabskip0pt plus10pt& + &\hfil##\hfil&\vrule##\cr + \lower6.5pt\null + &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} +\def\endchart{\cr\noalign{\hrule} + \raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& + &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$\par} +\def\:{\setbox0=\hbox{\char\n}% + \ifdim\ht0>7.5pt\reposition + \else\ifdim\dp0>2.5pt\reposition\fi\fi + \box0\global\advance\n 1 } +\def\reposition{\setbox0=\vbox{\kern2pt\box0}\dim=\dp0 + \advance\dim 2pt \dp0=\dim} +\def\centerlargechars{ + \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}} +\greekdelims +\font\ninergr=rgrrg10 scaled 900 + +\TBremark{Pick up fonts for Imagen. Make fonts for APS} + +\def\blash{\math\backslash\math} +\let\bs=\blash +\def\begineight{\smallskip\bgroup\eightpoint} +\def\endeight{\par\egroup\smallskip} +%\font\smallrg=rgrrg8 % commented out by rw +\def\QED.{\math\square\mah} +\def\O#1{\hbox{\rm\char'23\kern-.2em\it#1\/\kern.05em}} % octal constant +\def\refersto#1{\math{}^#1\math} +\def\referred#1{\par\hang\noindent#1.} % overwritten below +\newdimen\thehangindent +\setbox0=\hbox{0. } +\thehangindent=\wd0 +\def\referred#1{\par\hangindent\thehangindent\noindent + \hbox to \thehangindent{\hss#1.\ }\ignorespaces} + +\def\infoot{\baselineskip9.4pt\eightrm} +\def\@{@} +%\def\.#1{{\def\\{\backslash}\tentex#1}} % commented out by rfw +\font\qq=cmssqi8 +\def\mottoline#1{{\rightline{\qq #1}}} +\def\htb{\hskip2pt\relax} +\def\frak{\fam\euffam} +%\def\cyr{\cyracc\tencyr} + +% *********************************************************************** + +\title * Typesetting Modern Greek with\\ 128 Character Codes \\ version 1.1* + +\author * Yannis Haralambous * +\address * U.F.R. de Math\'ematiques\\ + Universit\'e de Lille--Flandres--Artois\\ + 59655 Villeneuve d'Ascq Cedex, France * +\netaddress[\network{Bitnet}] * yannis@frcitl81 * + +\author * Klaus Thull * +\address * Freie Universit\"at Berlin * +\netaddress[\network{Usenet}] * thull@fubinf.uucp * +\TBremark{Check Thull's network address; gateway didn't like "unido".} +\TBremark{this one generally works--kt} + +\article + +{\baselineskip11.3pt +\mottoline{``Ved dette v\ae ret,} +\mottoline{n\aa r det regner} +\mottoline{s\aa\ sn\o r det''} +\smallskip +\mottoline{--- Fr\o ydis Frosk} +} + +\vskip8pt\noindent +In european scripts where diacritical marks are common, +there are (at least) two reasons to avoid \TeX's accent mechanism +in favor of many accented characters. + +One is the possible misplacement of accents by |dvitype|'s rounding +algorithm;\TBremark{dvitype or a driver?} +\TBremark{really dvitype--kt} +the second is lack or invalidity of hyphenation. For +example, large portions of german text may be unhyphenatable, and, +given the german inclination to long words, may not be in shape to be +typeset at all. Thus, in Europe, the obvious thing to do is: let +$\MF$\ put the accents onto the letters, then access these characters +via \TeX's ligature mechanism. + +Accordingly, the greek fonts created by Silvio Levy\refersto1 have +256 characters each, and are a fine tool to typeset greek texts, +ancient as well as modern, except those containing the most recent +unique accent ``$\monotoniko '{}$'' (see below). But alas, there is +the commercial world, whose device drivers just cannot do 256-code +fonts (even |.pxl|-fonts were seen on the ``Big-Tech'' sales +exhibition in West Berlin last winter). The free drivers are in +better shape generally, but often the commercial ones cannot be +disposed of in a hurry. So we decided to reduce these fonts to 128 +characters. We kept only the ones strictly necessary for writing +modern greek without misusing the |\accent| primitive. At the same +time, we constructed some new fonts, which we describe below. + +\head * The Reduced Greek Fonts * + +In modern post-war greek, the use of the grave accent ``$\grave{}$'' +($bare'ia$) progressively faded, so that only two accents and the +breathings were left (this was the kind of greek the first author +learned at school). So the first reduction we did on Levy's fonts was +to omit all grave accents. Secondly, we made $s$ a free character +again, so that in the transliteration one has to type |s| for $s$, +and |c| for $c$. Thirdly, we omitted the iota subscribed letters. +All these, however, can still be accessed by macros if so wished. + +Let's recall now the procedure, most of which is due to Levy: to +typeset greek, you get into ``Greek mode'' by typing |\begingreek|. +Similarly, you get out by typing |\endgreek|, but if you have to do +this often, it is better to type |\greekdelims| at the beginning of +your file. In that case |$| is used to enter and leave greekmode, and +|\math| takes the former meaning of |$| (do not forget to type +``{\tt\bs\SP}''). The transliteration code is the following: +\display +\tabskip1.1pt +\hbox{\valign +{\hbox to +8pt{\null\hfil\strut$#$\hfil}&\hbox to 8pt{\null\hfil\strut\tt#\hfil}\cr +a&a\cr b&b\cr g&g\cr d&d\cr e&e\cr z&z\cr h&h\cr j&j\cr +i&i\cr k&k\cr l&l\cr m&m\cr n&n\cr x&x\cr o&o\cr p&p\cr +r&r\cr s&s\cr c&c\cr t&t\cr u&u\cr f&f\cr q&q\cr y&y\cr w&w\cr}} +\enddisplay +To get an acute ($>oxe'ia$), or circumflex ($perispwm'enh$) accent you +type |'|~(single quote), or |~|~(tilde) resp.\ in front of the vowel. +To get a rough ($dase'ia$) or smooth ($yil'h$) breathing you type |<| +or |>|, resp., in front of the vowel or the accent, if there is one. +A diaeresis ($dialutik'a$) is represented by |"|~(double quote), and +for a diaeresis with acute accent, just type |"'|~(double quote, +single quote). To get a vowel with a iota subscript +($<upogegramm'enh$) you have to use the macro |\I{...}|. + +If you need one of the omitted accents or combination of accents, +you can get it by a macro: +for example +\list[\unitemized] +$\grave{e}$ by |\grave{e}|, +$\breve{a}$ by |\breve{a}|, +$\macron{h}$ by |\macron{h}|, +$\roughgrave{i}$ by |\roughgrave{i}|, +$\smoothgrave{o}$ by |\smoothgrave{o}|, +$\diaeresisgrave{w}$ by |\diaeresisgrave{w}|, +$\diaeresiscircumflex{u}$ by |\diaeresiscircumflex{u}|, +$\rhorough$ by |\rhorough|, and +$\rhosmooth$ by |\rhosmooth|. +\endlist + +Finally, you have access to the following punctuation marks: +\display +\hbox{\tabskip1.5pt +\valign +{\hbox to 15pt{\hfil\strut$#$\hfil}&\hbox to 15pt{\hfil\strut\tt#\hfil}\cr +.&.\cr ,&,\cr ;&;\cr :&:\cr !&!\cr ?&?\cr ''&''\cr ((&((\cr +))&))\cr +}} +\enddisplay +as well as the ten digits, parentheses, hyphen, en-dash, slash, +percent sign, asterisk, plus and equal signs. + +\head * Some New Fonts * + +To write mathematics in greek one also needs slanted letters (for +statements of theorems, according to |amsppt| style) and small +capital letters (for titles and references). We have constructed +these fonts, in the same reduced way, so that, together with the +reduced Levy fonts, we obtain a complete family of greek fonts, +namely regular, boldface, slanted, and small caps. We have called +these fonts |rgrrg|, |rgrbf|, |rgrsl|, |rgrsc|. Inside of greek mode +you just write |\bf|, |\sl|, |\smc| as usual and |\rg| (instead of +|\rm|) to get the regular gree font. + +Here is an example of an alleged mathematical text, complete with +translation: +$ +\proclaim \smc {1.1.4.} Jewrhma. +Gi'a k'aje jetik'o >ak'eraio +\math n\math, +<up'arqei m'ia tri'ada m'h mhdenik~wn >akera'iwn \math(x,y,z)\math, t'etoia +<~wste\math\math x^n+y^n=z^n.\math\math + +\noindent{\smc Apodeixh tou 1.1.4.} Gi'a \math n=2\math, ft'anei n'a p'aroume +\math x=3,y=4,z=5\math. Gi'a \math n\gt 2\math, +>af'hnoume t'hn >ap'odeixh st'on >anagn'wsth s'an >'askhsh. +{\bf <'o.>'e.d.} +$ + +\proclaim \smc {1.1.4.} Theorem. +For each positive integer \math n\math, +there exists a triple of non-zero integers \math (x,y,z)\math\ such that +\math\math x^n+y^n=z^n.\math\math + +\noindent{\smc Proof of 1.1.4.} For \math n=2\math, we find +\math x=3,y=4,z=5\math. For \math n\gt 2\math, the proof +left to the reader as an exercise. {\bf q.e.d.} + +\head * Fonts for one-accent greek * + +Some years after the re-establishment of democracy in Greece in 1974, +a new system of accentuation has been introduced, omitting completely +breathings and subscript iota, and simplifying the two remaining +accents into one ``universal accent,'' $\monotoniko ' \polutoniko +(tonik'o shme~io).$ This system is currently taught at school and it +seems that any official document (including written examinations in +some high schools) written in the old fashion multi-accent system is +considered invalid (!). + +So we thought that perhaps people would like to write in the old +system and have a font to print the same text in fully official +one-accent greek. We created fonts analogous to the reduced regular, +boldface, and slanted which we have denoted by the prefix ``|m|'' +(for $monotonik'o$): |mrgrrg|, |mrgrbf|, |mrgrsl|. Note that the +small capitals font |rgrsc| doesn't have any accents at all, and so +may be used in any accent system. + +These new fonts are designed to work with the same input as the old +accent system. The printed text will follow the current +grammar\refersto2 (at least concerning the accent), with one +exception: monosyllables (like articles, prepositions and other +auxiliary words) don't take any accent at all. To solve this problem +we are working at a Pascal word processor program, based on Fred +M.~Liang's packed trie device, which will, once given the list of the +accented monosyllables, recognize them, and replace them by +non-accented words. According to the dictionary of +H.~Mihiotis\refersto3, there are 284 such words, to which we ust +add many new and foreign words. + +Of course, you can write your text in one-accent greek right away +(unfortunately there is no ``magic'' macro to transform it back into +multi-accent greek~\dots). With these new fonts you will get a nice +symmetric ``universal'' accent instead of an acute or a circumflex. + +To write in one-accent greek you get into ``Greek one-accent mode'', +by typing |\beginmgreek|. If you are in greek multi-accent mode +already, you must use the macro |\monotoniko|. There is also the +converse macro |\polutoniko|. So if you want to obtain +\display\vbox{$ +\centerline{\monotoniko O Hr'akleitoc 'elege \polutoniko +((t\grave{a} p'anta \rhorough e~i))} +\centerline{\monotoniko kai e'iqe d'ikio! \dots} +$}\enddisplay +you type +\verbatim +\beginmgreek O Hr'akleitoc 'elege +\polutoniko + ((t\grave{a} p'anta \rhorough e~i)) +\monotoniko + kai e'iqe d'ikio!...\endgreek +\endverbatim + +\head * The Greek Numeral Symbols * + +The so-called Ionian\refersto4 system of numeration (\math{\sim}\math +fifth century {\smc bc}) consisted of the following numerals: +\display +\hbox{\valign +{\hbox to 15pt{\hfil\strut$#$\hfil}&\hbox to 15pt{\hfil\strut\rm#\hfil}\cr +A&1\cr B&2\cr G&3\cr D&4\cr E&5\cr {\Digamma}&6\cr Z&7\cr H&8\cr J&9\cr}} +\enddisplay +\display +\hbox{\valign +{\hbox to 15pt{\hfil\strut$#$\hfil}&\hbox to 15pt{\hfil\strut\rm#\hfil}\cr +I&{10}\cr K&{20}\cr L&{30}\cr M&{40}\cr N&{50}\cr X&{60}\cr +O&{70}\cr P&{80}\cr {\Qoppa}&{90}\cr}} +\enddisplay +\display +\hbox{\valign +{\hbox to 20pt{\hfil\strut$#$\hfil}&\hbox to 20pt{\hfil\strut\rm#\hfil}\cr +R&{100}\cr S&{200}\cr T&{300}\cr U&{400}\cr F&{500}\cr Q&{600}\cr Y&{700}\cr +W&{800}\cr {\Sanpi}&{900}\cr}} +\enddisplay + +The letters $\Digamma, \Qoppa, \Sanpi$ are called digamma, qoppa, +sanpi. They belong to an older alphabet. Later on, as lowercase +letters were introduced and as the need for higher numbers grew, the +numerals became: +\display +\hbox{\tabskip1pt +\valign +{\hbox to 15pt{\hfil\strut$#\overstroke$\hfil}& + \hbox to 15pt{\hfil\strut\rm#\hfil}\cr +a&1\cr b&2\cr g&3\cr d&4\cr e&5\cr {\digamma}&6\cr z&7\cr h&8\cr +j&9\cr}} +\enddisplay +\display +\hbox{\tabskip1pt +\valign +{\hbox to 15pt{\hfil\strut$#\overstroke$\hfil}& + \hbox to 15pt{\hfil\strut\rm#\hfil}\cr +i&{10}\cr k&{20}\cr l&{30}\cr m&{40}\cr n&{50}\cr x&{60}\cr +o&{70}\cr p&{80}\cr {\qoppa}&{90}\cr}} +\enddisplay +\display +\hbox{\tabskip1pt +\valign +{\hbox to 20pt{\hfil\strut$#\overstroke$\hfil}& + \hbox to 20pt{\hfil\strut\rm#\hfil}\cr +r&{100}\cr s&{200}\cr t&{300}\cr u&{400}\cr f&{500}\cr q&{600}\cr y&{700}\cr +w&{800}\cr {\sanpi}&{900}\cr}} +\enddisplay +\display +\hbox{\tabskip2.5pt\valign +{\hbox to 30pt{\hfil\strut$\understroke#$\hfil}& + \hbox to 30pt{\hfil\strut\rm#000\hfil}\cr +a&1\cr b&2\cr g&3\cr d&4\cr e&5\cr {\digamma}&6\cr z&7\cr}} +\enddisplay +\display +\hbox{\valign +{\hbox to 30pt{\hfil\strut$#$\hfil}& + \hbox to 30pt{\hfil\strut\rm#000\hfil}\cr +h&8\cr j&9\cr M&{10}\cr}} +\enddisplay +So, for example, the date {\sl February 16th, 1989} would be written +$i\digamma\overstroke\ Febrouar'iou \understroke a\sanpi pj$ and the +following equality holds: +$ +\display\vbox{ +\centerline{sz\overstroke\math{} + {}\math ypj\overstroke\ = + \sanpi\qoppa\digamma\hskip1pt\overstroke.} +} +\enddisplay +$ + +Notice that there is no zero. Zero is, and has always been, the +cardinal of the empty set which in Ancient Greece was not considered +an entity in its own right. + +To express numbers greater than 10,000 there were many ways. One of +them was to use 10,000 as a base: thus, for example, 67,536,753 +(\math {}= 6753 \mathbin\cdot 10,000 + 6753\math) was written +$M\understroke\digamma yng\math\cdot\math \understroke\digamma yng$. + +\medskip +\noindent{\smc Exercise}: + {\sl If $-gwno$ means ``-gon'', which of the following +polygons can by constructed by rule and compasses?}\par +\smallskip +$\centerline{iz\overstroke -gwno, l\digamma\overstroke -gwno, \understroke +dtxj-gwno,} +\centerline{\understroke akd-gwno, Me\overstroke\math\cdot\math\understroke +eflz-gwno, \sanpi\qoppa\digamma\overstroke-gwno.}$ +\medskip + +Let's return now to \TeX: you can obtain these symbols by the following +macros: +|\digamma| for +$\digamma$, +|\vardigamma| for +$\vardigamma$, +|\Digamma| for +$\Digamma$, +|\qoppa| for +$\qoppa$, +|\Qoppa| for +$\Qoppa$, +|\sanpi| for +$\sanpi$, and +|\Sanpi| for +$\Sanpi$. +To get the tick marks which distinguish units and thousands, you can +use |\overstroke| after the numeral, or |\understroke| in front of +the numeral. + +\head * Symbols for cypriotic greek * + +The official language of Cyprus is greek. It is also the language +used in the mass-media and at school. But the language actually +spoken is a dialect, derived from byzantine greek (and as it seems, +far more faithful to ancient greek than the one spoken +in Greece). Some literature has been written in the dialect, and +since there are phonemes not available in the greek alphabet, +cypriotic writers use several conventions of new symbols to express +them. + +In the convention we followed,\refersto5 the symbols $\ssh$, $\SSH$ +stand for the sound ``sh'' (like ``shower'' in english, or ``{\cyr +shashka}'' in russian), $\dz$, $\DZ$ stand for ``j'' (like ``jazz'' +in english or ``{\cyr dzhungli}'' in russian), $\psh$, $\PSH$ stand +for a $y$ followed by a $\ssh$ (like ``{\cyr pshenitza}'' in russian) +and $\ksh$, $\KSH$ stand for a $k$ followed by a $\ssh$ (like in +hindi ``k\d setriya''). + +You can get these symbols by the macros |\ssh|, |\SSH|, |\dz|, |\DZ|, +|\psh|, |\PSH|, |\ksh|, |\KSH|. Here is an example of a small text +using these symbols: +\smallskip +$ +\ninergr +\frenchspacing +\parindent0pt +\advance\baselineskip1.0pt +\tolerance=5000 +\obeylines +Dki'alexec to'uc xer'orotsouc, dentr'on mou, n'a riz'wseic, +n'a f'aeic t'hn zwo'ullan sou, pott'e s>'on j'a sterk'wseic. +T\dz i >'en kane~i p>'on''xerokagi'ac t\dz i >'en >'e\ssh ei st'axhn % +q~wma +n'a \ssh\ssh iepasto~un o<i r'izec sou, plast~hkan t\dz i >'all''>a\-k'o\-ma. +O<i spalajki'ec t\dz a'i o<i bati'ec p~asin n'a s'e tul'ixoun, +>epki'asan se po'u t'on laim'on, sf'iggoun se n'a s'e pn'i\-xoun. +T\dz i >'an pp'esei mi'a sta\ksh i'a ner'on, >enn'a t'hn p'innoun >'alloi +t\dz i >enn'a skent\dz 'ereic t\dz eiaqama'i, <'enan xerodroump'a\-lin. +>'Ejja xort'wseic n'a \ssh\ssh iaste~ic pott'e to~u <'hliou >amm'a\-ti, +giat''>enn'a s'e qaski'azousin o<i spalajki'ec t\dz i o<i b'atoi. +T\dz i >eso'unh, kakor'izikon, >enn'a doule'ukeic gr'onouc +t\dz a'i n'a gure'ukeic ''pospa\ssh i'an po'u to'uc kako'uc geit'o\-nouc. +T\dz i o<i k'opoi e>ic t''>an'ajjeman. M'agkoumou m'en prok'a\-meic\dots +t\dz i >eso'unh t'o qa"'irin mou, ftwq'on mou, >'enna k'ameic. +$ +\rightline{\sevenrm From Ilias Georgiou's ``Geloklaman"} + +\smallskip + +\head * On hyphenation * + +There is still no greek hyphenation list, so one has to use +hyphenation from other languages. We have compared on an ordinary +text, the standard english (Liang), the german (Schwarz) and +portuguese (Rezende)\refersto6 hyphenation patterns. The results +were surprising: on 267 possible hyphens, these three patterns missed +199 (!!), 141 and 149 resp, found 46, 115, 111 correct ones and 22, +11, 7 bad ones (the portuguese mistakes were less embarrassing than +the german ones). So, for a temporary substitute, we would choose +either the german or the portuguese patterns. + +And since you will be forced to make corrections by hand, here are the +complete actual rules of greek hyphenation: + +{\sl Let \math c_1,c_2,\dots,c_n\math\ be consonants \math (n\geq2)\math\ +and \math v_1,v_2,v_3,v_4\math\ vowels. Then we have} +\list[\parindent0pt\leftskip0pt\sl][\def\tagform#1{{\smc #1\enspace}}] + +\item[\tag{Rule 1.}] The combination \math v_1c_1v_2\math\ is +separated as \math v_1-c_1v_2\math\ {\rm(ex. $pa-ra-ka-l~w$)} + +\item[\tag{Rule 2.}] The combination \math v_1c_1\dots c_nv_2\math\ +is separated as \math v_1-c_1\dots c_nv_2\math\ {\bf if }there +is a greek word starting with \math c_1c_2\math\ $(l'a-sph, +ko-fte-r'oc),$ {\bf else }\math v_1c_1-c_2\dots c_nv_2\math\ +$(j'ar-roc, >eq-jr'oc)$ + +\item[\tag{Rule 3.}] The combinations of vowels \math v_1v_2, +v_1v_2v_3\math\ or \math v_1v_2v_3v_4\math\ are not to be separated +if they are pronounced as one phoneme $(>ah-d'o-ni$ but +$>a-'ht-th-toc$, $pi'o$ but $p'u-o).$ +\endlist + +S.~Levy made in his fonts separate characters of all possible accented +letters, to prevent problems of hyphenation (\TeX\ doesn't yet +hyphenate words with accents). The only exceptions he made, were the +two combinations $ \roughgrave{}, \smoothgrave{}$ which occur only on +monosyllables. + +In our case, to be able to reduce the fonts, we were forced to make +accents also of $\char\rq134$, $\char\rq100$, $"{}$, $"'{}$, $\I{}$ +(and macros of $\grave{}$, $\smoothgrave{}$, $\roughgrave{}$, +$\breve{}$, $\macron{}$, $\diaeresisgrave{}$, +$\diaeresiscircumflex{}$, $\rhorough$, $\rhosmooth$ as already +mentioned). This of course adds problems to hyphenation. +Nevertheless, $\char\rq134$, $\char\rq100$ occur on one- and +2-syllable words only, $"{}$, $"'{}$ occur rarely and $\I{}$ depends +on the kind of language one is writing (to find it, you have to go +back to older versions of $kajare'uousa$ as for example in the +following lovely text: + +\medskip + +{\tolerance=5000 +$ \advance\baselineskip1pt >En\I{~w} <esp'eran tin\grave{a} +>exantl'hsac t\grave{a} murol'ogi'a tou >ekoim~ato <o Froum'entioc +>ep\grave{i} t~hc >'ammou t~hc paral'iac, katab\grave{a}c >ex +o>uran~wn <o >ap'ostoloc >eke~inoc t~wn Sa\-x'o\-nwn >'hnoixe +di\grave{a} maqa'irac t\grave{a} st'hjh to~u koimwm'enou, e>is'hgage +to\grave{u}c <iero\grave{u}c dakt'ulouc tou e>ic \def\hhh{\grave{h}} +t\hhh n >op\hhh n ka\grave{i} >exag\grave{w}n t\hhh n kard'ian +>eb'ujisen a>ut'hn e>ic l'akkon pl'hrh <'udatoc, <'oper <hg'iasen +prohgoum'enwc. <H fl'egousa >eke'inh kard'ia >'efrixen e>ic +t\grave{o} <'udwr <wc smar\grave{i}c +\def\ooo{\grave{o}}% +\def\aaa{\grave{a}}% +\def\uuu{\grave{u}}% +\def\iii{\grave{i}}% +>ent\ooo c to~u thgan'iou, >afo~u d\grave{e} >ekr'uwsen, +>'ejese p'alin a>ut\hhh n <o <'agioc e>ic t\ooo n t'opon thc ka\iii\ +kle'isac t\hhh n plhg\hhh n >ep'estreyen e>ic t\ooo n >idik'on tou. + +>'Etuq'e pote, >anagn~wst'a mou, n\aaa\ >apokoimhj\I{~h}c m\grave{e} +>anup'oforon b~hqa, koim'wmenoc n\aaa\ <idr'ws\I{h}c ka\iii\ >exu\-pn'h\-sac +n\aaa\ e<urej\I{~h}c >iatreum'enoc? >Agno~wn <'oti e>~isai kal\aaa\ +>ano'igeic mhqanik~wc t\ooo\ st'oma, <'ina plh\-r'w\-s\I{h}c e>ic t\ooo n +>epikat'araton b~hqa t\ooo n sun'hjh f'oron. >All\aaa\ p'oshn a>isj'anesai +qar'an, m\hhh\ e<ur'iskwn e>ic t\ooo n l'a\-rugga t\ooo\ >oqlhr\ooo n +jhr'ion! O<'utw <'ama >'hnoixe ka\iii\ <o Frou\-m'entioc to\uuu c +>ofjalmo'uc, <htoim'asjh n\aaa\ prosf'e\-r\I{h} e>ic t\hhh n >aq'a\-riston +>Iw'annan t\hhh n sun'hjh dakr'uwn spo\-nd'hn, >all\aaa\ par\aaa\ p~asan +prosdok'ian o<i >ofjalmo'i tou e<u\-r'e\-jhsan xhro\iii\ ka\iii\ n\aaa\ +progeumat'is\I{h} m~allon \smoothgrave{h} n\aaa\ kla'us\I{h} +\I{>h}sj'a\-ne\-to >'orexin met\aaa\ polu'hmeron nhste'i\-an <o kal\ooo c +Be\-ne\-de\-kt~i\-noc. +$ +} + +\rightline{\sevenrm From Emmanouil~Ro\"\i dis' ``The Popess Johanna (1866)''} +\medskip + +Note that in one-accent greek, all accented letters are represented +by separate characters in the code table, so that no hyphenation +problem arises. + +$ +\gdef\tttt{ +Kaj'otan mprost'a thc ka'i t'hn k'uttaze. Noi'w\-jo\-ntac mi'a >ap'eranth + e>uqar'isthsh n'a t'hn bl'epei >'etsi mprost'a tou ka'i <'ena >ap'eranto + >ani\-ka\-no\-po'i\-h\-to po'u d'en mpo\-ro~u\-se n'a t'hn + tra\-b'h\-xei st'hn >agka\-li'a tou ka'i n'a t'hn fi\-l'h\-sei + >eke~i st'on laim'o + po'u t'hn e>~iqe fi\-l'h\-sei t'hn m'ia ka'i mo\-na\-di\-k'h + for'a ka'i e>~iqe + noi'w\-sei m'esa tou t'hn pi'o >'omor\-fh stig\-m'h to~u ka\-lo\-kai\-rio~u + ki <'oti + t'o ka\-lo\-ka'i\-ri a>u\-t'o, ft'a\-no\-ntac st'o >apo\-ko\-r'u\-fw\-m'a + tou, e>~iqe ki'o\-lac pe\-r'a\-sei. >All'a d'en e>~iqe >ak'oma + pe\-r'a\-sei tele'iwc, giat'i >eke'inh bris\-k'o\-tan t'wra mpro\-st'a + tou. Ka'i d'en mpo\-ro~u\-se n'a k'anei t'i\-po\-ta. +} +$ + + +\head * Samples, Tables, and Remarks * + +\head * The font {\tt rgrrg10} * +$\tttt$ + +\head * The font {\tt rgrbf10} * +$\bf\tttt$ + +\head * The font {\tt rgrsl10} * +$\sl\tttt$ + +\figure[\top] +\raggedcenter +Layout for fonts |rgrrg|, |rgrbf|, |rgrsl| +$\table$ +\endfigure + +$\monotoniko +\gdef\ttttt +{ +Kaj'otan mprost'a thc kai thn k'uttaze. Noi'w\-jo\-ntac mia >ap'eranth + e>uqar'isthsh na thn bl'epei >'etsi mprost'a tou kai <'ena >ap'eranto + >ani\-ka\-no\-po'i\-h\-to pou den mpo\-ro~u\-se na thn + tra\-b'h\-xei sthn >agka\-li'a tou kai na thn fi\-l'h\-sei + >eke~i ston laim'o + pou thn e>~iqe fi\-l'h\-sei thn m'ia kai mo\-na\-di\-k'h + for'a kai e>~iqe + noi'w\-sei m'esa tou thn pio >'omor\-fh stig\-m'h tou ka\-lo\-kai\-rio~u + ki <'oti + to ka\-lo\-ka'i\-ri a>u\-t'o, ft'a\-no\-ntac sto >apo\-ko\-r'u\-fw\-m'a + tou, e>~iqe ki'o\-lac pe\-r'a\-sei. >All'a den e>~iqe >ak'oma + pe\-r'a\-sei tele'iwc, giat'i >eke'inh bris\-k'o\-tan t'wra mpro\-st'a + tou. Kai den mpo\-ro~u\-se na k'anei t'i\-po\-ta. +} +$ + + +\figure[\bot] +\raggedcenter +Layout for fonts |mrgrrg|, |mrgrbf|, |mrgrsl| +$\monotoniko\table$ +\endfigure + +\head * The font {\tt mrgrrg10} * +$\monotoniko\ttttt$ + +\head * The font {\tt mrgrbf10} * +$\monotoniko\bf\ttttt$ + +\head * The font {\tt mrgrsl10} * +$\monotoniko\sl\ttttt$ + + +\figure[\top] +\raggedcenter +Layout for font |rgrsc| +$\smc\table$ +\endfigure + + +We conclude with the following remark: people writing french, czech, +turkish or other languages with many diacritical marks complain that +there is no space left in Computer Modern to incorporate +already-accented letters. The solution (in the case of French) that +D\'esarm\'enien\refersto7 proposed, was to replace greek uppercase +letters by the french \'e, \`e, \^ e, \^ o, \^\i, \^ a, \^ u, \`a, +\`u. But then the question is: where to put the greek uppercase +letters, which are necessary for mathematical formulas. We answer: if +you have the greek |rgr| family of fonts, you already have all kinds +of greek uppercase letters. Just take them from there! Of course, +math families must be restructured in that case since math family~7 +cannot be used for those letters anymore. As Gariepy\refersto8 +pointed out already, the inconvenience with this solution is that for +every language with accents you will need another |cm| family of +fonts. That's why we still believe that the best once and for all +solution would be to be able to work with fonts of 256 characters. + + +\head * Improvements and changes -- version 1.1 (as of March 4, 1990) * + +(by the first author)\medskip + +\noindent An hyphenation list has been added. +Greek grammar has changed very often in +the last 20 years, mainly because greek is a very manifold language (some +people find it {\it chaotic}, I find it {\it beautiful\/}). I followed the +hyphenation rules of \refersto2\ as presented in section ``On hyphenation'' +of this paper. These rules +are very simple and hold as well for the multi-accent as for the one-accent +system. I found exactly 1168 patterns; many of them came simply from the +following fact: since |'|,|~|,|>|,|<| are of category 11 during hyphenation, +|<'o-so| could occur. This leaves $<'o$ alone, which is rather ugly. + +Italics fonts (|rgrti| and |mrgrti|) have been added. +Since in the |cm| family, +|cmti| has almost the same lowercase letters as |cmmi| and the same uppercase +ones as |cmsl|, I tried to do the same. Some changes were necessary: 1) the +handwritten modern greek alpha looks more like {\it a} and 2) tau's stem has a +hook. There is still some kerning to do. I call this version {\it +``experimental''}. Maybe in some later (1.2?) version there will be an entirely +new italics font. + +In the |rgrsc| font (as you can see in the table) the symbols $\rhorough, +\rhosmooth, \Digamma$ and $\vardigamma$ exist now in all styles: regular, +slanted, italic and boldface. \TeX\ will know which one to choose, depending on +the font you are using (inside |greekmode|). If you add some new style (for +example typewriter or sans-serif) 1) please let me know, 2) add these four +letters in |rgrsc|, 3) add the information in |greekmacros.tex|. + +There is |\smallDigamma| for the small capital digamma $\smallDigamma$. Some +people still persist in calling it {\it ``ef''}. Also there are two new +symbols: + +1) following an advice of my father, I added a variation $\varqoppa$ +of lowercase qoppa. This symbol is used in our days for the numeral 90 (the +current year is $\understroke a\sanpi\varqoppa$). The macro for $\varqoppa$ is +|\varqoppa|. + +2) a funny ``upside-down'' iota with circumflex $\inviota$ (the macro is +|\inviota|). This symbol was used in the last century for the sound of $i$ in +$gi'a$ (cf. ``$pi'o$'' in hyphenation {\smc rule 3}). Here is an example +of such a text, taken from a 1907 edition\refersto9: + +\let\w=\grave +$ +{\ninergr +\frenchspacing +\parindent0pt +\advance\baselineskip1.0pt +\tolerance=5000 +\obeylines +Kair\w oc f'ernei t\w a l'aqana, kair\w oc t\w a parapo'ul\inviota a, +M\w e t\w on kair\w o ka\w i t\w o dendr\w i k'anei karp\w o ka\w i f'ulla. +>'A"inte, >or'e, m\inviota\w a kopan\inviota\w a s>'an n>~atan qulop'hta, +N\w a ''p\inviota\I{~h}c t\w hn Gk'olfw j'arreuec? +D\w en e>~in'' mall\inviota\w a t\w a g'ene\inviota a. +J'el''<h >ag'ap'' >apomon\w h ki''>ahto~u grhgorws'unh. +J'elei lago~u pat'hmata, >allo\inviota ~wc <uge\inviota\w a s''>af'inei. +X'ereic t'i magar'oplash po~u e>~inai \I{<h} guna~ikec? +$ +\rightline{\sevenrm From Spyridon Peresiadis's ``I Golfo"} +} + +\smallskip + +Finally I inserted the logos $\grMF$ and $\MF$ in the |rgrsc| font (the macros +are |\grMF| and the usual |\MF|). There is still no PASCAL word processor +program to detect monosyllabes, volunteers are welcome. This upgrading has been +done on a Macintosh SE/30 using Andrew Trevorrow's Oz\TeX\ and Victor +Ostromoukhov's Mac$\MF$. + + +\setbox0=\hbox{22. } +\thehangindent=\wd0 +\def\referred#1{\par\hangindent\thehangindent\noindent + \hbox to \thehangindent{\hss#1.\ }\ignorespaces} +\raggedright + +\head * References * + +\referred1 {\smc S.Levi}: Using Greek Fonts with \TeX, {\sl TUGboat}, +{\bf 9} (1988) 20--24 +%\referred2 $\monotoniko {\smc M.Triantafullidh:} Grammatik'h +\referred2 $\monotoniko {\smc M.Triantafullidh:} +{\rg Neoellhnik'h Grammatik'h, } +{\sl Organism'oc 'Ek\-do\-shc Sqolik'wn Bibl'iwn}, +Aj'hna 1982$ +\referred3 {$\smc Q.Mhqiwth:$} $Ne'wtaton Lexik'on t~hc Neoellhnik~hc Gl'wsshc, +{\sl >Ek\-d'o\-seic Kastal'ia}, >Aj~hnai 1972$ +\referred4 {\smc C.B.Boyer}: A History of Mathematics, {J.\ Wiley \& +Sons,} New~York 1968 +\referred5 ${\smc H.Gewrgiou:} Gel'oklam'an, {\sl Seir'a Kupriak~hc +La"ik~hc Po'ihshc <Upourge'iou paide'iac\/} {\bf 4}, Leukws'ia 1980$ +\referred6 {\smc Unix} \TeX\ distribution tape, Seattle 1988 +\referred7 {\smc J.D\'esarm\'enien:} How to run \TeX\ in a French +environment: hyphenation, fonts, typography, {\sl TUGboat}, {\bf 5} (1984) +91--102 +\referred8 {\smc A.Gariepy:} French in \TeX, {\sl TUGboat}, {\bf 9} +(1988) 65--69 +\referred9 {$\smc S.Peresiadhc:$} $<H Gk'olfw. Dr'ama e>idulliak\w on e>ic +pr'axeic p'ente, {\sl >Ekdotik\w oc O>~ikoc Gewrg'iou F'exh,} >Aj~hnai 1907$ + + +\makesignature +\endarticle + +% version 19.6.1989 + +\hbox{Yannis Haralambous} +\hbox{Universit\'e de Lille--Flandres--Artois} +\smallskip +\hbox{Klaus Thull} +\hbox{Freie Universit\"at Berlin} +------- + diff --git a/Master/texmf-dist/doc/plain/yannisgr/rgrtestfont.tex b/Master/texmf-dist/doc/plain/yannisgr/rgrtestfont.tex new file mode 100644 index 00000000000..4b4b770f71b --- /dev/null +++ b/Master/texmf-dist/doc/plain/yannisgr/rgrtestfont.tex @@ -0,0 +1,274 @@ +% This file is based on Knuth's and Levy's "testfont"files +% +% The text is taken from the book of Kwsto'ula Mhtropo'ulou, Za'ar 19. +% +\tracinglostchars=0 +\tolerance=1000 +\raggedbottom +\nopagenumbers +\parindent=0pt +\newlinechar=`@ +\input rgreekmacros %not necessary if you have a greek format + +\newcount\m \newcount\n \newcount\p \newdimen\dim +\chardef\other=12 + +\def\today{\ifcase\month\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or December\fi + \space\number\day, \number\year} +\def\hours{\n=\time \divide\n 60 + \m=-\n \multiply\m 60 \advance\m \time + \twodigits\n\twodigits\m} +\def\twodigits#1{\ifnum #1\lt10 0\fi \number#1} + +{\catcode`\|=0 \catcode`\\=\other +|gdef|help{|message{% +\init switches to another font;@% +\end or \bye finishes the run;@% +\table prints the font layout in tabular format;@% +\text prints a sample text, assuming TeX text font conventions;@% +\sample combines \table and \text;@% +\mixture mixes a background character with a series of others;@% +\alternation interleaves a background character with a series;@% +\alphabet prints all lowercase letters within a given background;@% +\alphabets does one \alphabet for each lowercase background letter;@% +\ALPHABET prints all uppercase letters within a given background;@% +\ALPHABETs does one \ALPHABET for each uppercase background letter;@% +\accents prints all lowercase vowels with accents and breathings;@% +\series prints a series of letters withing a given background;@% +\lowers prints a comprehensive test of lowercase;@% +\uppers prints a comprehensive test of uppercase;@% +\digits prints a comprehensive test of numerals;@% +\math prints a comprehensive test of TeX math italic;@% +\names prints a text that mixes upper and lower case;@% +\punct prints a punctuation test;@% +\bigtest combines many of the above routines;@% +\help repeats this message;@% +and you can use ordinary TeX commands (e.g., to \input a file).}}} + +\def\setbaselineskip{\setbox0=\hbox{\n=0 +\loop\char\n \ifnum \n\lt255 \advance\n 1 \repeat} +\baselineskip=6pt \advance\baselineskip\ht0 \advance\baselineskip\dp0 } + +\def\setchar#1{{\escapechar-1\message{\string#1 character = }% + \def\do##1{\catcode`##1=\other}\dospecials + \read-1 to\next + \expandafter\finsetchar\next\next#1}} +\def\finsetchar#1#2\next#3{\global\chardef#3=`#1 + \ifnum #3=`\# \global\chardef#3=#2 \fi} +\def\promptthree{\setchar\background + \setchar\starting \setchar\ending} + +\def\init{\message{@Name of the font to test = } + \read-1 to\fontname + \font\testfont=\fontname + \headline={\sevenrm Test of \fontname\unskip\ on \today\ at \hours\hfil + Page \folio} + \testfont \setbaselineskip + \ifdim\fontdimen6\testfont\lt10pt \rightskip=0pt plus 20pt + \else\rightskip=0pt plus 2em \fi + \spaceskip=\fontdimen2\testfont % space between words (\raggedright) + \xspaceskip=\fontdimen2\testfont \advance\xspaceskip by\fontdimen7\testfont + \message{Now type a test command (\string\help\space for help):}} + +\def\mixture{\promptthree \domix\mixpattern} +\def\alternation{\promptthree \domix\altpattern} +\def\mixpattern{\0\1\0\0\1\1\0\0\0\1\1\1\0\1} +\def\altpattern{\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0\1\0} +\def\domix#1{\par\chardef\0=\background \n=\starting + \until\ifnum\n=\ending\do\chardef\1=\n #1\par\n=\count\n \repeat} + +\count`w=`a\count`a=`b\count`b=`g\count`g=`d\count`d=`e\count`e=`z +\count`z=`h\count`h=`j\count`j=`i\count`i=`k\count`k=`l\count`l=`m +\count`m=`n\count`n=`x\count`x=`o\count`o=`p\count`p=`r\count`r=`c +\count`c=`t\count`t=`u\count`u=`f\count`f=`q\count`q=`y\count`y=`w +\count`W=`A\count`A=`B\count`B=`G\count`G=`D\count`D=`E\count`E=`Z +\count`Z=`H\count`H=`J\count`J=`I\count`I=`K\count`K=`L\count`L=`M +\count`M=`N\count`N=`X\count`X=`O\count`O=`P\count`P=`R\count`R=`S +\count`S=`T\count`T=`U\count`U=`F\count`F=`Q\count`Q=`Y\count`Y=`W +\count`0=`1\count`1=`2\count`2=`3\count`3=`4\count`4=`5 +\count`5=`6\count`6=`7\count`7=`8\count`8=`9\count`9=`0 + +\long\def\until#1\do#2\repeat{\def\body{#2}\def\cond{#1}\etareti} +\def\etareti{\cond\let\next=\relax\else\let\next=\etareti\fi\body\next} + +\def\alphabet{\setchar\background \dosseries{`a}{`w}} +\def\ALPHABET{\setchar\background \doseries{`A}{`W}} +\def\series{\promptthree \doseries\starting\ending} +\def\doseries#1#2{\def\!{\discretionary{\background}{\background}{\background}} + \!\n=#1\until\ifnum\n=#2\do\char\n\!\n=\count\n \repeat\par} +\def\dosseries#1#2{\def\!{\discretionary{\background}{\background}{\background}} + \!\n=#1\until\ifnum\n=#2\do\char\n\!\n=\count\n \repeat s\par} + +\def\lowers{\docomprehensive hs{`a}{`w}} +\def\uppers{\docomprehensive HO{`A}{`W}} +\def\digits{\docomprehensive H0{`0}{`9}} +\def\docomprehensive#1#2#3#4{\par\n=#3 + \until\ifnum\n=#4\do\line{\altr#1\hfil\altr#2}\n=\count\n\repeat} +\def\altr#1{\setbox0=\hbox{#1}\setbox2=\hbox{#1\char\n}% + \dim=.5\hsize \advance\dim-\wd0 \divide\dim\wd2 \multiply\dim\wd2 + \xleaders\box2\hskip\dim\box0} +\def\alphabets{\m=`a\until\ifnum\m=`w + \do\chardef\background=\m{\dosseries{`a}{`w}}\m=\count\m \repeat} +\def\ALPHABETS{\m=`A\until\ifnum\m=`W + \do\chardef\background=\m{\doseries{`A}{`W}}\m=\count\m \repeat} + +\def\separator{\vfil\penalty-100\vfilneg + \medskip\leaders\hrule height.4pt\vskip.4pt\medskip} + +\def\bigtest{% +\sample\vfil\break +\accents\separator +\names\separator +\punct\separator +\alphabets\separator +\lowers\separator +\uppers\separator +\digits} + +\def\math{\message{(Sorry, that's not here yet.)}} + +\def\oct#1{\hbox{\tenrm\'{}\kern-.2em\tenit#1\/\kern.05em}} % octal constant +\def\hex#1{\hbox{\tenrm\H{}\tentt#1}} % hexadecimal constant +\def\setdigs#1"#2{\gdef\h{#2}% \h=hex prefix; \0\1=corresponding octal + \m=\n \divide\m by 64 \xdef\0{\the\m}% + \multiply\m by-64 \advance\m by\n \divide\m by 8 \xdef\1{\the\m}} +\def\testrow{\setbox0=\hbox{\penalty 1\def\\{\char"\h}% + \\0\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\B\\C\\D\\E\\F% + \global\p=\lastpenalty}} % \p=1 if none of the characters exist +\def\oddline{\cr + \noalign{\nointerlineskip} + \multispan{19}\hrulefill& + \setbox0=\hbox{\lower 2.3pt\hbox{\hex{\h x}}}\smash{\box0}\cr + \noalign{\nointerlineskip}} +\newif\ifskipping +\def\evenline{\loop\skippingfalse + \ifnum\n\lt128 \m=\n \divide\m 16 \chardef\next=\m + \expandafter\setdigs\meaning\next \testrow + \ifnum\p=1 \skippingtrue \fi\fi + \ifskipping \global\advance\n 16 \repeat + \ifnum\n=128 \let\next=\endchart\else\let\next=\morechart\fi + \next} +\def\morechart{\cr\noalign{\hrule} + \chartline \oddline \m=\1 \advance\m 1 \xdef\1{\the\m} + \chartline \evenline} +\def\chartline{&\oct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&} +\def\chartstrut{\lower4.5pt\vbox to14pt{}} +\def\table{$$\global\n=0 + \halign to\hsize\bgroup + \chartstrut##\tabskip0pt plus10pt& + &\hfil##\hfil&\vrule##\cr + \lower6.5pt\null + &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline} +\def\endchart{\cr\noalign{\hrule} + \raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B& + &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$\par} +\def\:{\setbox0=\hbox{\char\n}% + \ifdim\ht0>7.5pt\reposition + \else\ifdim\dp0>2.5pt\reposition\fi\fi + \box0\global\advance\n 1 } +\def\reposition{\setbox0=\vbox{\kern2pt\box0}\dim=\dp0 + \advance\dim 2pt \dp0=\dim} +\def\centerlargechars{ + \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}} + +\begingreek + +\def\accents{\longseries a\shortseries e\longseries h\mediumseries i +\shortseries o\mediumseries u\longseries w \rseries} +\def\longseries#1{#1 `#1 '#1 ~#1 #1| `#1| '#1| ~#1| <#1 <`#1 <'#1 <~#1 <#1| + <`#1| <'#1| <~#1| >#1 >`#1 >'#1 >~#1 >#1| >`#1| >'#1| >~#1| \par} +\def\shortseries#1{#1 `#1 '#1 <#1 <`#1 <'#1 >#1 >`#1 >'#1 \par} +\def\mediumseries#1{#1 `#1 '#1 ~#1 % + <#1 <`#1 <'#1 <~#1 >#1 >`#1 >'#1 >~#1 "#1 "`#1 "'#1 "~#1 \par} +\def\rseries{r <r >r\par} +\def\names{ >Afrod'ith Beatr'ikh Gi'annhc Dhm'htrhc E>ugen'ia + Zw'h <Hrakl~hc Je'ofiloc >Iw'anna Kl'aouc Louk~ac + Mar'ia N'ikh Xanjo'ula O>id'ipouc Pl'atwn Rox'anh S'ilbio + Ter'eza <Upat'ia F'ilippoc Qar'a Yuq'h >Wrig'enhc \par} +\def\punct{{\hyphenpenalty=10000\par\dopunct{ka'i}\dopunct{t~hs}\dopunct{<'ena} + \dopunct{<ELLAS}\par}} +\def\dopunct#1{#1, #1: #1; ''#1'' #1? #1! ((#1)) (#1) [#1] #1* #1.\par} +\def\from#1{{\sevenrm\unskip\nobreak\hfil\penalty50\hskip2em\hbox{} + \nobreak\hfil (From #1)\parfillskip=0pt\finalhyphendemerits=0 \par}} + +\def\text{{\advance\baselineskip-4pt +\setbox0=\hbox{abcdefghijklmnopqrstuvwxyz} +\ifdim\hsize\gt2\wd0 \ifdim 15pc\gt2\wd0 \hsize=15pc \else \hsize=2\wd0 \fi\fi +((T'o br~hka!)) f'wnaxe. ((T'o br~hka! E>~isai <'ena pr'oswpo m'esa >ap'o +<'ena bibl'io po'u pot'e d'en gr'afthke, giat'i >eg'w prosp'ajhsa, >eg'w +m'ono, ka'i m''a>ut'h t'h nekr'h gl'wssa ka'i d'en mp'oresa n'a t'o p~w, n'a +t'o fti'axw, d'en mp'oresa pot'e, giat'i <h gl'wssa e>~inai nekr'h, +>endi'amesh, mi'a gl'wssa gi'a poiht'ec, gi'a >anjr'wpouc po'u >oneire'uontai +s'an a>ut'o t'o paid'i, t'on >Ast'erh po'u to~u f'ortwsan >'adika du'o +jan'atouc ka'i d'en m'ilhse. D'en e>~inai mi'a gl'wssa gi'a >emp'orio to'uth +>ed~w <h dik'h mou ka'i gi''a>ut'o d'en s'e >anagn'wrise kan'enac <'otan +milo~usa gi'a s'ena. D'en j'a mporo~use pot'e n'a e>~inai s'ugqronh <h pr'axh +m'e t'h fantas'ia. Pot'e >'idia <h pragmatik'h <istor'ia m'e t'h nekr'h +gl'wssa. Pot'e. T'a pr'oswpa <up'hrxane, na'i, e>~inai >al'hjeia, <up'hrxane +>all'a pot'e s'e sq'esh m'e t'hn pragmatik'othta po'u dihg'hjhka m'e t'h +nekr'h, >'aqrhsth gl'wssa t~wn qam'enwn >Etro'uskwn. <Up'hrxane s'e qr'ono +ka'i q~wro parwqhm'eno, >'asqeto, qr'ono mhd'en, pr'oswpa po'u <h +pragmatik'othta <h dik'h mac t'a e>~iqe de~i >alli~wc. Ka'i m'ono >es'u, +m'ono >es'u e>~isai mis'oc, e>~isai KANENAS, giat'i >eg'w d'en pr'oftasa +n'a s'e k'anw >al'hjeia, >eg'w d'en mp'oresa n'a s'e k'anw pr'oswpo +<uparkt'o m'esa >ap'o t'h fjor'a. E>~isai <'ena pr'oswpo m'esa >ap'o <'ena +mujist'orhma po'u pot'e d'en gr'afthke giat'i <h gl'wssa a>ut'h e>~inai +m'ono gi'a t'oso, t'oso l'igo, <'oso >~htan o<i 19 m'erec s'e ke~ino t'o +Sept'embrh ka'i >'etsi >~htan po'u s''>'afhsa mis'o, s''<'ena trago'udi +m'esa, s'e mi'a l'exh pali'a, s''<'ena >anastenagm'o, s'e mis'o >'oneiro +spasm'eno. S''>'afhsa >'etsi ka'i d'en >'eginec pot'e mi'a >al'hjeia gi'a +to'uc >'allouc, gi'a to'uc tr'itouc, gi'a to'uc logiko'uc, gi'a <'osouc +rwto~usan gi'a s'ena, gi'a t'h guna'ika sou >ak'oma po'u nom'izei p'wc s'e +x'erei ka'i d'en x'erei t'ipota >ap'o s'ena. >Eg'w fta'iw >ag'aph mou ka'i +p'ali >ag'aph j'a so~u''dina ka'i l'exeic nekr'ec, >'aqrhstec ka'i +m''a>ut'ec j'a prospajo~usa, j'a >'hjela n'a g'ineic <'ena >ast'eri ka'i mi'a +ter'astia fwtein'h gramm'h st'hn >'akrh to~u k'osmou, >en~w >es'u mo~u +mil~ac gi'a qrus'afi ka'i p'wc gi''a>ut'o t'o mis'o qrus'afi, mis'o ka'i +klemm'eno, sk'otwsec du'o >aj'wouc, du'o x'enouc, du'o zw'ec, >es'u, t'o +>'astro mou ka'i t'o f~wc mou. M'ilhs'e mou loip'on, p'ec mou p'wc >'eqw +>'adiko ka'i p'wc d'en e>~inai gi'a s'ena <'ola to~uta, p'ec mou t'hn +>al'hjeia >'h <'ena y'ema, p'ec mou, p'ec mou Za'ar >ag'aph mou...)) + +Logik'oc. M'e t'ic l'exeic metrhm'enec. Du'o, t'esseric, >oqt'w, d'wdeka. <O +>'erwt'ac tou kr'athse <'oso krat~ane o<i >epoq'ec. Mi'a >epoq'h. M'e broq'ec +ka'i ke~ino t'o jamp'o k'itrino <'hlio. Sept'embrhc. <'Enac. M'ono. Met'a +xanag'urise st'o sp'iti tou. X'enoc. Ka'i m'onoc. Ka'i >'emeine >eke~i. +X'eqase. >'H o>'ute ki a>ut'o. P'erase st'hn >'allh >'oqjh, st'o pot'ami, +p'anta t'o''lege p'wc <h >'allh >'oqjh e>~inai <h pi'o e>'ukolh. >'Oqi a>ut'h +>ed~w po'u t'hn perpat~ame. <H >'allh. A>ut'h po'u d'en t'hn x'eroume >ak'oma. +Za'ar, t'o d'eqthke n'a t'on l'eei m'ono >eke'inh. Na'i e>~iqe skot'wsei. Du'o +>aj'wouc. >'Enoqouc. D'en e>~iqe shmas'ia. >'Afhse n'a <upoyiasto~un t'on +>Ast'erh. >Eke~inoc >'agnwstoc. Ka'i m'ono gi'a t'o qrus'afi milo~use. <O +>Ast'erhc j'a pono~use. <'Opwc p'onese >eke'inh. >'Oqi, d'en >'hjele n'a +pon~ane o<i >'anjrwpoi. >'Oqi po'u noiaz'otan. >'Oqi po'u d'en t'o >'anteqe. +<'Omwc fob'otan. Fob'otan pol'u k'aje for'a po'u >'emene m'onoc m'e t'on +<eaut'o tou. Ka'i <h logik'h d'en >'eftane. T'ote, d'en >'eftane <h logik'h. +>'Htane gi'a to'uc pol'u >aj'wouc a>ut'h <h logik'h. A>ut'oc tetrag'wnize to'uc +k'uklouc. T'esseric gwn'iec. M'ia, d'uo, tre~ic, t'esseric. Gwn'ies. <'Olec. +Ka'i <h logik'h tou. <O >'erwt'ac tou m'ono mi'a >epoq'h. + +((>Eg'w d'en >erwte'uomai)) e>~iqe pe~i. D'en t'on e>~iqe pist'eyei. >~Htan <o +k'itrinoc jamp'oc Sept'embrhc ka'i <h l'imnh ka'i o<i stajmo'i ka'i o<i n'uqtec +m'e t'on >'erwta. D'en t'on e>~iqe pist'eyei. + +((T'i >'eqeic n'a mo~u pe~ic t'wra? S''t'o e>~iqa pe~i. <H gl'wssa po'u +>epim'eneic n'a mil~ac, <h dik'h sou <h gl'wssa e>~inai >'aqrhsth >entel~wc +ka'i d'en mpore~i kan'enac n'a t'hn zwntan'eyei. >Eg'w >'emeina p'anta <o +x'enoc, t'o e>~idec, t'o x'ereic, t'o''majec pi'a. Giat'i >epim'eneic? T'i +zht~ac >ap'o m'ena? >Eg'w >'etsi <'opwc e>~imai ftiagm'enoc d'en qwr'aw s'e +kan'ena >'oneiro, d'en qwr'aw s'e kami'a nekr'h di'alekto. E>~imai <o x'enoc +ka'i d'en j'a s''>anagnwr'izw s'e l'igo. D'en j'a x'erw giat'i ka'i p~wc ka'i +p'oso m''>ag'aphsec. Ka'i j'a''jela st''>al'hjeia n'a mo~u t'o pe~ic a>ut'o: +Nom'izeic <'oti m''>ag'amhsec? >Es'u, >em'ena!! M'a poi'a sq'esh j'a mporo~use +n'a <up'arqei >an'ames'a mac? M'ila mou. S'>ako'uw. E>~imai <o x'enoc. >'Emeina +<o x'enoc. K'anenac d'en kat'alabe t'hn >erhmi'a mou. Pot'e. M'onoc ka'i +x'enoc. Ka'i s'e koit'azw st'a m'atia. P~wc s'e l'ene? Poi'a e>~isai? Giat'i +s''>ar'esei n'a >epim'eneic <'oti m''>ag'aphsec? T'i x'ereic >es'u >ap'o +m'ena?))}} + +\def\sample{\names\table\text} + +\init + diff --git a/Master/texmf-dist/doc/plain/yannisgr/tomakeformat.txt b/Master/texmf-dist/doc/plain/yannisgr/tomakeformat.txt new file mode 100644 index 00000000000..b2f85c8fdcf --- /dev/null +++ b/Master/texmf-dist/doc/plain/yannisgr/tomakeformat.txt @@ -0,0 +1,26 @@ +% Hyphenation, miscellaneous macros, and initial values for standard layout +\message{hyphenation} + +\def\lt{<}\def\gt{>} +\catcode`\<=11 +\catcode`\>=11 +\catcode`\'=11 +\catcode`\~=11 +\catcode`\"=11 +\lccode`\<=`\<% +\lccode`\>=`\>% +\lccode`\'=`\'% +\lccode`\~=`\~% +\lccode`\"=`\"% + +\input grhypha + +\catcode`\<=12 +\catcode`\>=12 +\catcode`\'=12 +\catcode`\~=13 +\catcode`\"=12 + +\message{greekmacros v1.1} +\input rgreekmacros + |