From d2279b30f96d92edd48fbe624f4535f46c905a8d Mon Sep 17 00:00:00 2001 From: ru Date: Thu, 20 Oct 2005 10:47:26 +0000 Subject: Removed files not present in v1.19.2 import. --- contrib/groff/README.CVS | 6 - contrib/groff/README.WIN32 | 68 - contrib/groff/contrib/mom/examples/README.mom | 56 - contrib/groff/contrib/mom/examples/macros.mom | 668 -------- contrib/groff/contrib/mom/examples/typeset.mom | 535 ------ contrib/groff/contrib/mom/examples/typewrite.mom | 233 --- contrib/groff/doc/groff-10 | 485 ------ contrib/groff/doc/groff-11 | 1623 ------------------ contrib/groff/doc/groff-4 | 1406 --------------- contrib/groff/doc/groff-5 | 1327 -------------- contrib/groff/doc/groff-6 | 1462 ---------------- contrib/groff/doc/groff-7 | 1460 ---------------- contrib/groff/doc/groff-8 | 1416 --------------- contrib/groff/doc/groff-9 | 985 ----------- contrib/groff/src/include/groff-getopt.h | 68 - contrib/groff/src/libs/libgroff/progname.cpp | 1 - contrib/groff/src/roff/troff/glyphuni.cpp | 503 ------ contrib/groff/src/roff/troff/symbol.cpp | 154 -- contrib/groff/src/roff/troff/symbol.h | 80 - contrib/groff/src/roff/troff/unicode.cpp | 67 - contrib/groff/src/roff/troff/unicode.h | 26 - contrib/groff/src/roff/troff/uniglyph.cpp | 503 ------ contrib/groff/src/roff/troff/uniuni.cpp | 1994 ---------------------- contrib/groff/src/xditview/ChangeLog | 520 ------ contrib/groff/src/xditview/DESC | 9 - contrib/groff/src/xditview/Dvi.c | 573 ------- contrib/groff/src/xditview/Dvi.h | 46 - contrib/groff/src/xditview/DviChar.c | 662 ------- contrib/groff/src/xditview/DviChar.h | 37 - contrib/groff/src/xditview/DviP.h | 233 --- contrib/groff/src/xditview/FontMap | 17 - contrib/groff/src/xditview/GXditview-ad.h | 52 - contrib/groff/src/xditview/GXditview.ad | 57 - contrib/groff/src/xditview/INSTALL | 20 - contrib/groff/src/xditview/Imakefile.in | 120 -- contrib/groff/src/xditview/Menu.h | 46 - contrib/groff/src/xditview/README | 14 - contrib/groff/src/xditview/TODO | 17 - contrib/groff/src/xditview/XFontName.c | 256 --- contrib/groff/src/xditview/XFontName.h | 45 - contrib/groff/src/xditview/ad2c | 62 - contrib/groff/src/xditview/device.c | 600 ------- contrib/groff/src/xditview/device.h | 21 - contrib/groff/src/xditview/draw.c | 725 -------- contrib/groff/src/xditview/font.c | 471 ----- contrib/groff/src/xditview/gray1.bm | 4 - contrib/groff/src/xditview/gray2.bm | 4 - contrib/groff/src/xditview/gray3.bm | 4 - contrib/groff/src/xditview/gray4.bm | 4 - contrib/groff/src/xditview/gray5.bm | 4 - contrib/groff/src/xditview/gray6.bm | 4 - contrib/groff/src/xditview/gray7.bm | 4 - contrib/groff/src/xditview/gray8.bm | 4 - contrib/groff/src/xditview/gxditview.man | 249 --- contrib/groff/src/xditview/lex.c | 103 -- contrib/groff/src/xditview/page.c | 88 - contrib/groff/src/xditview/parse.c | 340 ---- contrib/groff/src/xditview/xdit.bm | 14 - contrib/groff/src/xditview/xdit_mask.bm | 14 - contrib/groff/src/xditview/xditview.c | 596 ------- contrib/groff/src/xditview/xtotroff.c | 311 ---- contrib/groff/test-groff | 42 - 62 files changed, 21518 deletions(-) delete mode 100644 contrib/groff/README.CVS delete mode 100644 contrib/groff/README.WIN32 delete mode 100644 contrib/groff/contrib/mom/examples/README.mom delete mode 100644 contrib/groff/contrib/mom/examples/macros.mom delete mode 100644 contrib/groff/contrib/mom/examples/typeset.mom delete mode 100644 contrib/groff/contrib/mom/examples/typewrite.mom delete mode 100644 contrib/groff/doc/groff-10 delete mode 100644 contrib/groff/doc/groff-11 delete mode 100644 contrib/groff/doc/groff-4 delete mode 100644 contrib/groff/doc/groff-5 delete mode 100644 contrib/groff/doc/groff-6 delete mode 100644 contrib/groff/doc/groff-7 delete mode 100644 contrib/groff/doc/groff-8 delete mode 100644 contrib/groff/doc/groff-9 delete mode 100644 contrib/groff/src/include/groff-getopt.h delete mode 100644 contrib/groff/src/libs/libgroff/progname.cpp delete mode 100644 contrib/groff/src/roff/troff/glyphuni.cpp delete mode 100644 contrib/groff/src/roff/troff/symbol.cpp delete mode 100644 contrib/groff/src/roff/troff/symbol.h delete mode 100644 contrib/groff/src/roff/troff/unicode.cpp delete mode 100644 contrib/groff/src/roff/troff/unicode.h delete mode 100644 contrib/groff/src/roff/troff/uniglyph.cpp delete mode 100644 contrib/groff/src/roff/troff/uniuni.cpp delete mode 100644 contrib/groff/src/xditview/ChangeLog delete mode 100644 contrib/groff/src/xditview/DESC delete mode 100644 contrib/groff/src/xditview/Dvi.c delete mode 100644 contrib/groff/src/xditview/Dvi.h delete mode 100644 contrib/groff/src/xditview/DviChar.c delete mode 100644 contrib/groff/src/xditview/DviChar.h delete mode 100644 contrib/groff/src/xditview/DviP.h delete mode 100644 contrib/groff/src/xditview/FontMap delete mode 100644 contrib/groff/src/xditview/GXditview-ad.h delete mode 100644 contrib/groff/src/xditview/GXditview.ad delete mode 100644 contrib/groff/src/xditview/INSTALL delete mode 100644 contrib/groff/src/xditview/Imakefile.in delete mode 100644 contrib/groff/src/xditview/Menu.h delete mode 100644 contrib/groff/src/xditview/README delete mode 100644 contrib/groff/src/xditview/TODO delete mode 100644 contrib/groff/src/xditview/XFontName.c delete mode 100644 contrib/groff/src/xditview/XFontName.h delete mode 100644 contrib/groff/src/xditview/ad2c delete mode 100644 contrib/groff/src/xditview/device.c delete mode 100644 contrib/groff/src/xditview/device.h delete mode 100644 contrib/groff/src/xditview/draw.c delete mode 100644 contrib/groff/src/xditview/font.c delete mode 100644 contrib/groff/src/xditview/gray1.bm delete mode 100644 contrib/groff/src/xditview/gray2.bm delete mode 100644 contrib/groff/src/xditview/gray3.bm delete mode 100644 contrib/groff/src/xditview/gray4.bm delete mode 100644 contrib/groff/src/xditview/gray5.bm delete mode 100644 contrib/groff/src/xditview/gray6.bm delete mode 100644 contrib/groff/src/xditview/gray7.bm delete mode 100644 contrib/groff/src/xditview/gray8.bm delete mode 100644 contrib/groff/src/xditview/gxditview.man delete mode 100644 contrib/groff/src/xditview/lex.c delete mode 100644 contrib/groff/src/xditview/page.c delete mode 100644 contrib/groff/src/xditview/parse.c delete mode 100644 contrib/groff/src/xditview/xdit.bm delete mode 100644 contrib/groff/src/xditview/xdit_mask.bm delete mode 100644 contrib/groff/src/xditview/xditview.c delete mode 100644 contrib/groff/src/xditview/xtotroff.c delete mode 100755 contrib/groff/test-groff (limited to 'contrib/groff') diff --git a/contrib/groff/README.CVS b/contrib/groff/README.CVS deleted file mode 100644 index ca284dc..0000000 --- a/contrib/groff/README.CVS +++ /dev/null @@ -1,6 +0,0 @@ -You need the following tools to build groff directly from CVS: - - the netpbm package - texinfo >= 4.3 - bison >= 1.875b or byacc - ghostscript diff --git a/contrib/groff/README.WIN32 b/contrib/groff/README.WIN32 deleted file mode 100644 index 478d13a..0000000 --- a/contrib/groff/README.WIN32 +++ /dev/null @@ -1,68 +0,0 @@ - -WIN32 port of GROFF and friends done by Blake McBride -(blake@florida-software.com) 4/14/00. - -This port differs from other ports in that it uses the Microsoft -compiler. The changes were done such that they only have effect on -the code when compiled with the Microsoft compiler. - -Note that not all preprocessors and output devices have been ported; -missing are grohtml, grolbp, grn, refer, soelim, and groff. Besides -these programs, no utility program has been ported. Of course, -gxditview (which only runs on the X Window System, the standard Unix -GUI) is missing also. - - -The following programs were used, running on Windows NT 4.0: - - Microsoft Visual C++ 6.0 - Unix utilities under NT (gzip, tar, patch) - - -Build Instructions ------------------- - -. Unpack groff (using gzip & tar) as follows: - - cd \ - gzip -dc groff-1.16.tar.gz | tar xvf - - -. Now apply the patch file `win32-diffs': - - cd \groff-1.16 - patch -p1 < win32-diffs - - Note that with older versions of `patch', you will get a lot of - *.orig files (most of them are empty) which can be safely deleted. - -. Edit the file `src/include/defs.h' and adapt the path names to - your needs. - -. Build everything by typing: - - nmake -f Makefile.msc - -You are done. - -The `bin' directory contains some .cmd files to help show how to run -stuff. Since Windows 95/98 doesn't understand .cmd files, if you are -operating under that OS, you'll have to rename them to .bat files. -.bat files do have output redirection problems. - - -The changes I made fall into two categories. - -1. Makefiles. Several makefiles were added. All makefiles were named - Makefile.msc. - -2. The Groff build includes several scripts which generate auxiliary - files used by groff (such as DESC, I, R, prologue, etc). - - -Directories needed at runtime ------------------------------ - -bin -font -tmac -mm (copied, including sub-directories, from contrib/mm) diff --git a/contrib/groff/contrib/mom/examples/README.mom b/contrib/groff/contrib/mom/examples/README.mom deleted file mode 100644 index fba1e01..0000000 --- a/contrib/groff/contrib/mom/examples/README.mom +++ /dev/null @@ -1,56 +0,0 @@ -The files in this directory show mom in action. I haven't included -PostScript output from the files because I want to keep the mom -archive as lean as possible. In order to see the PostScript output of -these files, process them with groff, sending the output either to a -separate file for previewing with gv (ghostview) or to your printer. -I don't recommend previewing with gxditview because it doesn't render -some of mom's effects properly. - -All the files are set up for 8.5ix11i paper. - -macros.mom ----------- - -This file demonstrates the use of typesetting tabs, string tabs, -line padding, multi-columns and various indent styles, as well as -some of the refinements and fine-tuning available via macros and -inline escapes. - -Because the file also demonstrates a "cutaround" using a small picture -(of Tux), the PostScript file has been included in the directory. - -typeset.mom ------------ - -This file contains samples of three of the document styles available -with the document processing macros, as well as demonstrating the -use of COLLATE. The relatively rare BREAK_QUOTE macro is also used. -The PRINTSTYLE of this file is TYPESET, letting you get a look at mom's -default behaviour when she typesets a document. The last sample, -set in 2 columns, shows a few of the ways in which you can modify -mom's behaviour. - -typewrite.mom -------------- - -Using the first two samples from typeset.mom, this file shows what -"typewritten, double-spaced" documents (PRINTSTYLE TYPEWRITE) look -like. - -letter.mom ----------- - -This is just the tutorial example from the momdocs, ready for -previewing. - -elvis_syntax ------------- - -For those who use the vi clone, elvis, you can paste this file into -your elvis.syn file. Provided your mom documents have the extension -.mom, they'll come out with colorized syntax highlighting. The rules -in elvis_syntax aren't exhaustive, but they go a LONG way to making mom -files more readable. - -I'll be very happy if someone sends me syntax highlighting rules for vim -and emacs. :) diff --git a/contrib/groff/contrib/mom/examples/macros.mom b/contrib/groff/contrib/mom/examples/macros.mom deleted file mode 100644 index a3976f3..0000000 --- a/contrib/groff/contrib/mom/examples/macros.mom +++ /dev/null @@ -1,668 +0,0 @@ -\# Basic page setup -\# -.PAGE 8.5i 11i \" Printer sheet size -.L_MARGIN 1i \" Left margin 1 inch -.R_MARGIN 1i \" Right margin 1 inch (calculates the line length) -\# -\# Refinements -\# -.KERN \" Automatic pairwise kerning -.SS 0 \" No extra space between sentences -.HY \" Hyphenate -.LIGATURES \" Automatic ligature generation -.SMARTQUOTES \" Enable smartquotes -\# -\# Basic type parameters -\# -.FAM T \" Times Roman family -.FT B \" Bold font -.PT_SIZE 12 \" Point size -.LS 14 \" Leading (line spacing) -.LEFT \" Set lines flush left, nofill mode -\# -\# -.ALD |1i-1v \" Advance 1 inch from top of paper to first baseline -Example 1\*[BU 2]: -.ALD .25v \" Advance an extra 1/4 linespace -.UNDERSCORE 3.75p "T\*[BU 4]asting notes using padding, string tabs \ -and multi-columns" -.SP \" Add an extra line space -\# -\# -.FAM H \" Helvetica family -.PT_SIZE 10 -.LS 11 \" New leading -\# -\# The following uses a combination of padding, string tabs, and the FWD escape -\# to set up five tabs with 12-point (1-pica) gutters over the full line length. -\# -.SILENT \" Don't print the next line -.PAD "\*[ST1]VIN#\*[ST1X]\*[FWD 12p]\*[ST2]ROBE#\*[ST2X]\*[FWD 12p]\*[ST3]NEZ#\*[ST3X]\*[FWD 12p]\*[ST4]BOUCHE#\*[ST4X]\*[FWD 12p]\*[ST5]COMMENTAIRES\*[ST5X]" -.SILENT OFF \" Resume normal printing of text -\# -\# Now that the string tabs have been marked off, we "set" them. -\# -.ST 1 L \" First string tab flush left, nofill mode (no need for .BR's between input lines) -.ST 2 L QUAD \" Remaining tabs are flush left/rag right, fill mode -.ST 3 L QUAD -.ST 4 L QUAD -.ST 5 L QUAD -\# -\# -.TAB 1 \" Call first tab -.UNDERSCORE "VIN" -.TN \" Move to next tab and stay on the same baseline -.UNDERSCORE "ROBE" -.TN \" Ibid -.UNDERSCORE "NEZ" -.TN \" Ibid -.UNDERSCORE "BOUCHE" -.TN \" Ibid -.UNDERSCORE "COMMENTAIRES" -.TQ \" Quit tabs -\# -\# -.ALD 6p \" Advance an extra 6 points -.FT R \" Change font to roman (medium) -.MCO \" Turn multi-column mode on -\# -\# -.TAB 1 \" Notice that this tab gets set line-for-line -\*[IT]Peelee Island \" Set italic -\*[PREV]Gewürztraminer \" Revert to former font (roman) -2000 -(Canada) -.MCR \" Return to top of column -.TAB 2 \" Call tab 2; in multi-column mode, don't use .TN -Jaune pâle. -.MCR -.TB 3 \" Notice that from here on, we use the alias TB instead of TAB -Frais, fruité, ci\%tronné, arômes fortes de lichee et de fruits -tropicaux. -.MCR -.TB 4 -Doux, fruité, bien équilibré avec une bonne acidité. -.MCR -.TB 5 -Bon apéro. Servir avec des plats -.RW .1 -indiens ou \%chinois. -.RW 0 -.BR -Excellent rapport qualité/prix. -.MCX 8p \" Multi-column mode off; advance an extra 8 points -.MCO \" Re-invoke multi-columns for next wine description -.TB 1 -\*[IT]Carau Pujol -\*[ROM]Tannat -1995 -(Uraguay) -.MCR -.TB 2 -Rubis foncé, vio\%lacée, presque opaque. -.MCR -.TB 3 -Belles arômes de fruits foncés (prunes, cerises noires, cassis). -Odeurs tertiares de cuir, cèdre, violets, eucalyptus, avec une trace -exotique de Band-Aid*\*[BU 12]. -\# -\# The \*[BU 12], above, pulls the period back so that it falls -\# underneath the asterisk. \*[BP<#>] could have been used instead -\# if you prefer to use points rather than kern units. -\# -.MCR -.TB 4 -Très rond, tannins mûres et veloutés, avec un long finis fruité et -doucement alcoolique. -.MCR -.TB 5 -Superbe\|! Une aubaine à ne pas manquer. Prêt à boire maintenant. -.MCX 1v \" Multi-columns off; advance an extra linespace -\# -\# Now, an example of a hanging indent. This is excessively fussy -\# from a typographic standpoint in that it hangs the asterisk outside -\# the current left margin so that the text following it lines up with -\# with the text in the tasting notes. Notice that in order to use a -\# hanging indent, you must first set a left indent. -\# -.FT I \" Change font to italic -.PT_SIZE -.5 \" Reduce point size by 1/2 point -.LS -.5 \" Reduce leading by 1/2 point -.JUSTIFY \" Set text justified -\# -\# Now, move the left margin back by the width of an asterisk plus 2 points... -\# -.L_MARGIN -(\w'*'+2p) -\# -\# ...and set a left indent equal to the width of an asterisk plus 2 points -\# -.IL \w'*'+2p -\# -\# Now, set the hanging indent equal to the left indent, effectively pulling -\# the first line of the following text back to the new left margin. -\# Subsequent output lines will be indented by the .IL amount. -\# Notice that when using the \w inline escape, there's no need to append -\# a unit of measure to it. -\# -.HI \w'*'+2p -*\*[FWD 1p]The term "Band-Aid" means the slightly sweet, vaguely chemical -smell associated with medical-grade plastics. It is often found in -wines from terroirs in South America. Provided a wine has a sufficient -concentration of fruit -.RW .04 \" Kern the whole next line slightly, so "lipstick" doesn't hyphenate. -aromas and complex tertiary characteristics, Band-Aid is a Good Thing. -Otherwise, it smells like cheap lipstick. -.RW 0 \" Reset kerning to 0 -\# -\# Notice, above, that although the values for IL and HI are the width -\# of an asterisk plus 2 points, when setting the first line of text -\# (the one with the asterisk at the beginning), we put only 1 point of -\# space after the *. This is to compensate for the fact that in the -\# italic font, the letter T doesn't align visually with the rest of -\# the text. As already noted, this is an extremely fussy example. :) -\# -\# -\# -.IQ CLEAR \" Cancel and clear stored indent values -.L_MARGIN 1i \" Reset left margin to its original value. -\# -\# -.ALD 2P \" Add 2-picas extra space before next example -.FAM T -.FT B -.PT_SIZE 12 -.LS 14 -Example 2: -.ALD .25v -\# -.COMMENT \" COMMENT lets you enter comments without using \# or \" -In the next line, because the string to be underscored must be -enclosed by double-quotes, you can't use the double-quote character -itself around the word "Massaging". We circumvent this by using the -groff inline escapes \(lq and \(rq (leftquote and rightquote). -.COMMENT OFF \" Remember to turn COMMENT off! -\# -.UNDERSCORE 3.75p "\(lqMassaging\(rq \*[BCK 1p]a passage of rag right text" -.SP \" Add an extra linespace -\# -\# -.PT_SIZE 12.5 -.LS 14 -.PT_SIZE -1 \" Reduce point size by 1 point -Passage using groff defaults -.ALD .5v \" Add an extra 1/2 line space -.PT_SIZE +1 \" Restore point size -.QUAD LEFT \" Set quad left, fill mode -.IB 3P \" Indent 3 picas from both the left and right margins -.FT R -The thousand injuries of Fortunato I had borne as I best could; -but when he ventured upon insult, I vowed revenge. You, who so well -know the nature of my soul, will not suppose, however, that I gave -utterance to a threat. \*[IT]At length\*[PREV] I would be -avenged; this was a point definitively settled\(embut the very -definitiveness with which it was resolved, precluded the idea of -risk. I must not only punish, but punish with impunity. A -wrong is unredressed when retribution overtakes its redresser. -It is equally unredressed when the avenger fails to make himself -felt as such to him who has done the wrong. -.ALD 6p -\# -\# The next line is set quad right, nofill mode, 1/2 point smaller -\# than the preceding text (using the \*S[...] inline escape. -\# -.RIGHT -\*S[-.5]\(emEdgar Allen Poe, \*[IT]The Cask of Amontillado\*[PREV]\*S[+.5] -.SP \" Extra linespace -.IBQ \" Disable "indent both" -\# -\# The passage above, while acceptable in a longer document, exhibits a -\# few typographic flaws. The shape of the right margin rag exhibits -\# a decidedly "rounded" appearance. The word "I" stands alone at the -\# end of the third line. The space between the 1st and 2nd sentences -\# ("...revenge. You...") is too large, owing to the letter "Y" that -\# begins the 2nd sentence. The spacing between "A wrong..." (line 6) -\# is equally too large because of the way "A" and "w" fit together. -\# The em-dash before Edgar isn't vertically centered with the letter "E". -\# And so on. The most important correction below is fixing the rag -\# so that longer and shorter lines alternate. This is accomplished by -\# manually breaking lines and then slightly lengthening and shortening -\# them until a pleasing rag is achieved. The remainder of the little -\# flaws are fixed with inline escapes. -\# -.FT B -.PT_SIZE -1 -.LEFT -The same passage, \*[BU 4]"massaged" -.ALD .5v -.FT R -.PT_SIZE +1 -.QUAD LEFT -.HY OFF \" Turn automatic hyphenation off -.BR_AT_LINE_KERN \" Automatically insert a line break (.BR) with each invocation of .RW and .EW -.WS +1 \" Increase word space slightly -.IB \" Turn "indent both" back on; values are the same as before -\# -\# -The thousand injuries of Fortunato I had borne as I best could; but -when he ventured upon insult, I \*[BU 2]vowed revenge. \*[BU 4]Y\*[BU 6]ou, -\*[BU 4]who so \*[BU 2]well know the nature -.EW .2 -of my soul, \*[BU 2]will not suppose, however, that I gave utterance to -a threat. \*[IT]At -.EW .2 -length\*[PREV] I would be avenged; this was a point definitively -settled\(embut the -.EW .2 -v\*[BU 1]ery definitiveness with which it was resolved, precluded the idea -of risk. -.EW 0 -I must not only punish, but punish with impunity. A \*[BCK 1p]wrong is -unredressed -.EW .1 -when retribution overtakes its redresser. It is equally unredressed -when the -.RW .1 -avenger fails to make himself felt as such to him \*[BU 2]who has done -the wrong. -.RW 0 -.WS +0 \" Restore normal wordspacing -.ALD 6p -.PT_SIZE -.5 -.RIGHT -\*[UP 1.5p]\(em\*[DOWN 1.5p]\*[BCK 1p]Edgar \*[BCK 1p]Allen Poe, \*[IT]The Cask of Amontillado\*[PREV] -.IQ CLEAR \" Cancel and clear stored values of all indents -\# -\# -.NEWPAGE \" Start a new page -.T_MARGIN 1i \" Set top margin to 1i (approx. equivalent to .ALD |1i-1v above -\# -\# -.FAM T -.FT B -.PT_SIZE 12 -.LS 14 -.LEFT -Example 3: -.ALD .25v -.UNDERSCORE 3.75p "A \*[BU 2]recipe for enumerated lists using indents" -.SP \" Add an extra line space -.FAM N \" New Century Schoolbook family -.FT R -.PT_SIZE 11 -.LS 13 -.HY \" Turn hyphenation back on -.JUSTIFY \" Justify text -This example demonstrates the use of left and hanging indents for -simple enumerated lists. Nested lists are possible, as the example -shows; however, the more complex the nesting, the wiser it becomes -to use (string) tabs, as seen in Example 4. -\# -\# -.JUSTIFY \" Justify text -.IL \w'\0.\0' \" Establish a left indent equal to the width of 2 figure spaces plus a period. -.HI \w'\0.\0' \" Establish a hanging indent equal to the size of the left indent. -.ALD 6p -\# -\# -1.\0This is the first item in the list. N\*[BU 2]otice how the first line -"hangs" back from the remaining text, which is otherwise -indented by the width of by two figure-spaces (digit-width -spaces) and a period. -.BR -.HI \" Notice that HI doesn't require an argument once the value's been set -.ALD 6p -2.\0This is the second item in the list. As with the above item, -notice the use of the \*[BU 8]\\0 escape sequence in the input text. It's -there to ensure that the space after the number/period combination -always remains the same (i.e. doesn't stretch when the line is -justified). That way, the text of each item always lines up perfectly. -\# -\# -.COMMENT -Now we're going to set a bullet-point list, indented from the text -above by 1 pica. IL arguments are always added to whatever value -is in already effect for IL, hence all we have to do is tell mom to -indent (from the current left indent) 1 pica plus the width of the -bullet character ( \(bu ). \*[FWD 3p] puts three points of space after -the bullet so that the bullet and the text are visually separated. -.COMMENT OFF -\# -\# -.IL 1P+\w'\(bu\*[FWD 3p]' -\# -\# Hanging indents are always relative to the current left indent. -\# The additional 1-pica indent, above, already having been taken -\# care of, we only want to hang the first lines of bullet list items -\# back by the width of the bullet character plus its 3 extra -\# points of space. -\# -.ALD 6p -.HI \w'\(bu\*[FWD 3p]' -\*[DOWN 1p]\(bu\*[UP 1p]\*[FWD 3p]This is the first line of a sublist with bullets. -N\*[BU 2]otice how the first line (the one with the bullet) is indented -exactly one pica from the text of the list item above it, while the -remaining lines align with the left indent we set above. -.ALD 6p -.HI -\*[DOWN 1p]\(bu\*[UP 1p]\*[FWD 3p]This is the second item of the sublist with bullets. \*[BU 4]We -could go on indefinitely, but let's go back to the top level (numbered) -list... -\# -\# The easiest way to return to a previous indent value is by subtraction. -\# The argument to IL, above, was 1P+\w'\(bu\*[FWD 3p]', so we just reverse -\# it by putting a minus sign in front. The parentheses are required -\# for groff to evaluate the expression properly. -\# -.IL -(1P+\w'\(bu\*[FWD 3p]') -.HI \w'\0.\0' \" Reset hanging indent for use with numbered items. -.ALD 6p -3.\0...and here we are. -.HI \" Again, notice that once HI has been set, you don't have to keep passing it an argument. -.ALD 6p -4.\0In order not to make the example too long, we'll stop here. -.IQ CLEAR \" Don't forget to cancel and/or clear indents! -\# -\# -.FAM T -.FT B -.PT_SIZE 12 -.LS 14 -.LEFT -.SP -\# -\# -Example 4: -.ALD .25v -.UNDERSCORE 3.75p "A \*[BU 2]recipe for nested lists using string tabs" -.SP -.FAM N -.FT R -.PT_SIZE 11 -.LS 13 -.JUSTIFY -Although setting up string tabs is a bit more complex than setting -up indents, it's \*[BU 3]well worth the effort, especially for nested lists. -.ALD 6p -\# -.COMMENT -The PAD line, below, sets up two string tabs. The first (ST1) -is exactly the length of two figure spaces and a period. The -second (ST2) is simply "the remainder of the line." -.COMMENT OFF -\# -.SILENT -.PAD "\*[ST1]\0.\0\*[ST1X]\*[ST2]#\*[ST2X]" -.ST 1 L \" String tabs must be "set" after being marked off in a line -.ST 2 J \" ST 1 will be set flush left, nofill; ST 2 will be justified. -.SILENT OFF -\# -\# -.TB 1 -1. -.TN \" Use .TN here so text stays on the same baseline as the number in tab 1 -This is the first item in the list. N\*[BU 2]otice how, just as in Example 3, -the first line hangs back from the remaining text, which is otherwise -indented. -.ALD 6p -.TB 1 -2. -.TN -This is the second item in the list. N\*[BU 2]otice that when setting "lists" -with tabs, there's no need to use the \*[BU 8]\\0 escape sequence after -the number/period combination in the input text. -.ALD 6p -\# -.COMMENT -Now, set up the indented bullet-point sublist. The PAD line -says: move forward 12 points (1 pica), then mark off a string -tab (ST3) that's the length of the bullet character; move foward -another three points, then make the next string tab (ST4) the -length of remainder of the line. -.COMMENT OFF -\# -.SILENT -.PAD "\*[FWD 12p]\*[ST3]\(bu\*[ST3X]\*[FWD 3p]\*[ST4]#\*[ST4X]" -.ST 3 L -.ST 4 J -.SILENT OFF -.ALD 6p -.TB 3 -\*[DOWN 1p]\(bu\*[UP 1p] -.TN -This is the first line of a sublist with bullets. N\*[BU 2]otice how the -bullets and the text line up exactly the same as in Example 3. -.ALD 6p -.TB 3 -\*[DOWN 1p]\(bu\*[UP 1p] -.TN -This is the second item of the sublist with bullets. For the fun of -it, lets add in an -.SPREAD -en-dashed sub-sublist. -.BR \" We're in a fill mode right now, so you *must* terminate the line with BR -\# -\# -.SILENT -.PAD "\*[FWD 12p]\*[ST5]\(en\*[ST5X]\*[FWD 4p]\*[ST6]#\*[ST6X]" -.ST 5 L -.ST 6 J -.SILENT OFF -.ALD 6p -.TB 5 -\*[UP .75p]\(en\*[DOWN .75p] -.TN -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, -sed diam voluptua. -.ALD 6p -.TB 5 -\*[UP .75p]\(en\*[DOWN .75p] -.TN -At \*[BU 3]vero eos et accusam et justo duo dolores et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est lorem ipsum dolor sit amet. -.ALD 6p -.TB 1 -3. -.TN -And here we are, back at the top-level numbered list with a minimum -of muss and fuss, -.ALD 6p -.TB 1 -4. -.TN -Generally speaking, once you get the hang of string tabs and the -\*[BD]PAD\*[PREV] macro, you'll find setting up complex nested lists -(or anything similar to them) easier than with hanging indents. -.TQ -\# -.NEWPAGE -.FAM T -.FT B -.PT_SIZE 12 -.LS 14 -.LEFT -Example 5: -.ALD .25v -.UNDERSCORE 3.75p "Word spacing" -.ALD 8p -.FAM P \" Palatino family -.PT_SIZE 11 -.LS 14 -\# -\# The "label" lines for the following are set in Helvetica bold, one -\# point smaller than the examples themselves. This demonstrates the -\# use of the groff inline escape \f[...] to change both family and -\# font inline. It also shows using the mom inline \*S[...]. -\# -\f[HB]\*S[-1]Normal word spacing\*S[+1]\*[PREV] -.FT R -N\*[BU 1]o\*[BU 1]w \*[BU 1]is the time for all good men to come to the aid of the party. -.ALD 4p -\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU 3]+\*[DOWN 1p]\*[BU 1]2\*S[+1]\*[PREV] -.FT R -.WS +2 -N\*[BU 1]o\*[BU 1]w \*[BU 1]is the time for all good men to come to the aid of the party. -.WS +0 -.ALD 4p -\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU 3]+\*[DOWN 1p]4\*S[+1]\*[PREV] -.FT R -.WS +4 -N\*[BU 1]o\*[BU 1]w \*[BU 1]is the time for all good men to come to the aid of the party. -.WS +0 -.ALD 4p -\f[HB]\*S[-1]Word spacing adjusted by \*[UP 1p]\*[BU 3]+\*[DOWN 1p]6\*S[+1]\*[PREV] -.FT R -.WS +6 -N\*[BU 1]o\*[BU 1]w \*[BU 1]is the time for all good men to come to the aid of the party. -.WS +0 -.SP 1.5v -\# -\# -.FAM T -.FT B -.PT_SIZE 12 -.LS 14 -.LEFT -Example 6: -.ALD .25v -.UNDERSCORE 3.75p "Line kerning" -.ALD 8p -.FAM P \" Palatino family -.FT R -.PT_SIZE 11 -.LS 15 -\# -\# Here, we set up some tabs so the examples can go into facing columns. -\# -.TAB_SET 1 0 19.5P L -.TAB_SET 2 19.5P 19.5P L -\# -\# -.MCO \" Turn multi-columns on -.TB 1 -\f[HB]\*S[-1]Unkerned line\*S[+1]\*[PREV] -.FT R -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.ALD 4p -\f[HB]\*S[-1]Line "tightened" \(en .RW .1\*S[+1]\*[PREV] -.RW .1 -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.ALD 4p -\# -\# In the next line, notice that because it uses a different family -\# (Helvetica instead of Palatino), the RW macro doesn't affect it. -\# -\f[HB]\*S[-1]Line "tightened" \(en .RW .2\*S[+1]\*[PREV] -.RW .2 -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.ALD 4p -\f[HB]\*S[-1]Line "tightened" \(en .RW .3\*S[+1]\*[PREV] -.RW .3 -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.MCR -.TB 2 -\f[HB]\*S[-1]Unkerned line\*S[+1]\*[PREV] -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.ALD 4p -\f[HB]\*S[-1]Line "loosened" \(en .EW .1\*S[+1]\*[PREV] -.EW .1 -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.ALD 4p -\f[HB]\*S[-1]Line "loosened" \(en .EW .2\*S[+1]\*[PREV] -.EW .2 -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.ALD 4p -\f[HB]\*S[-1]Line "loosened" \(en .EW .3\*S[+1]\*[PREV] -.EW .3 -"But this is \*[IT]important!\/"\*[PREV]she exclaimed. -.MCX 1.5v -\# -\# -.FAM T -.FT B -.PT_SIZE 12 -.LS 14 -.LEFT -Example 7: -.ALD .25v -.UNDERSCORE 3.75p "Cutaround using left\*[FU 2]/right indents, multi columns \ -and a dropcap" -.SP -\# -\# -.FT R -.PT_SIZE 11 -.LS 12 -.BR_AT_LINE_KERN OFF \" In justified text, it's best to have this OFF -\# -\# -.TAB_SET 1 0 18.5P J -.TAB_SET 2 20.5P 18.5P J -.MCO -.ALD 5P+9p -\# -\# The little picture of tux. -\# -.PSPIC penguin.ps -.MCR -.TAB 1 -.DROPCAP_FONT B -.DROPCAP L 3 COND 80 \" i.e. the letter L dropped 3 lines, condensed to 80% of its normal width -.EW .2 -orem ipsum dolor sit amet, consetetur sa\%dip\%scing elitr, sed diam -nonumy eir\%mod tempor invidunt ut labore et dolore magna aliquyam erat, -sed diam voluptua. -.EW 0 -.TI 1P -At vero eos et accusam et justo duo dolores et ea rebum. Stet clita -kasd gubergren, no sea taki- -.SPREAD \" Force justify preceding line before starting indent -.IR 3.5P -kimata sanctus est lorem ipsum dolor sit amet. -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor. -.EW .2 -.TI -Invidunt ut labore et dolore magna ali\%qu\%yam erat, sed diam voluptua. -At -.EW 0 -vero eos et accusam et justo duo dolores et ea rebum. -.TI -Stet clita kasd gubergren, no sea ta- -.SPREAD \" Force justify preceding line before quitting indent -.IRQ -kimata sanctus est lorem ipsum dolor sit amet. Lorem ipsum dolor -sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor -in\%vi\%dunt ut labore et dolore magna aliquyam erat. Sed diam voluptua, -at vero eos et accusam et justo duo -.SPREAD -.EW .3 -dolores et ea rebum. Stet clita no kasd guber- -.SPREAD -.MCR -.TB 2 -gren, no sea takimata sanctus est lorem ipsum -.EW 0 -dolor sit amet. Consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt ut labore et dolore. -.TI -Magna aliquyam erat, sed diam voluptua, at vero eos et accusam. -Et justo duo dolores et ea -.SPREAD -.IL 3.5P -rebum, stet clita kasd gubergren. No sea -takimata sanctus est, lorem ipsum dolor sit amet. -.TI -Sit amet, consetetur sadipscing elitr, sed diam. Nonumy eirmod tempor -in\%vi- -.EW .3 -dunt ut labore et dolore magna. Ali- -.EW 0 -quyam erat sed diam voluptua. -At vero eos et accusam et justo duo dolores et ea rebum stet. -.ILQ -.TI -Dolores et ea rebum stet clita kasd gubergren, no sea takimata -sanctus. Sadipscing elitr sed diam, nonumy eirmod tempor, invidunt -ut labore et dolore magna aliquyam erat. Sed diam voluptua, at vero -eos et accusam et justo duo dolores et ea rebum. diff --git a/contrib/groff/contrib/mom/examples/typeset.mom b/contrib/groff/contrib/mom/examples/typeset.mom deleted file mode 100644 index 98dd918..0000000 --- a/contrib/groff/contrib/mom/examples/typeset.mom +++ /dev/null @@ -1,535 +0,0 @@ -\# This file contains three greeked documents collated together: -\# two pages of a novelist's outline, two pages of a chapter in DRAFT -\# style, and three pages of an academic paper set in two columns. -\# Mom's defaults are used throughout, except for the last one, which -\# shows off some of the ways of changing mom's behaviour. -\# -\# Since the text is greeked, and groff doesn't know how to -\# hyphenate all that pseudo-latinate nonsense, I've inserted -\# discretionary hyphens into a number of the the words. -\# -\# =================================================================== -\# -\# First, a sample "named" document, in this case, an outline. -\# A novelist wouldn't normally write an outline with numbered heads, -\# subheads and paraheads. I've turned the feature on merely to -\# demonstrate it. -\# -\# Reference macros -\# -.TITLE "Lake Attica's Shores" -.SUBTITLE "A Romance Novel" -.AUTHOR "Rosemary Winspeare" -.DRAFT 1 \" Ignored because COPYSTYLE is FINAL -.REVISION 2 \" Ignored because COPYSTYLE is FINAL -\# -\# Docstyle macros -\# -.DOCTYPE NAMED "Outline" -.PRINTSTYLE TYPESET -\# -\# Additional style macros -\# -.NUMBER_PARAHEADS -\# -.START -.PP -.PARAHEAD "A note on the setting" -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. Stet clita kasd gubergren, no sea takimata sanctus est. -At vero eos et accusam et justo duo do\%lo\%re et ea rebum. -.PP -Stet clita kasd gubergren, no sea takimata sanctus est. Lorem ipsum -dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam -voluptua. -.PP -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At -vero, eos et accusam et justo duo do\%lo\%res et ea rebum. Consetetur -sadipscing elitr, sed diam nonumy. -.LINEBREAK -.PP -.PARAHEAD "About historical personnages" -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est. Tempor invidunt ut -labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. Consetetur sadipscing elitr, sed diam nonumy -eirmod tempor invidunt ut labore et do\%lo\%re magna. Tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.NUMBER_HEADS -.NUMBER_SUBHEADS -.HEAD "Part One" -.SUBHEAD "Chapter 1" -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. At vero eos et accusam et -justo duo do\%lo\%res et ea rebum. -.PP -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est. Lorem ipsum dolor sit -amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor -invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -Stet clita kasd gubergren, no sea takimata sanctus est. -.SUBHEAD "Chapter 2" -.PP -Stet clita kasd gubergren, no sea takimata sanctus est. Lorem ipsum -dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam -voluptua. At vero eos et accusam et justo duo do\%lo\%res et ea rebum. -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, -sed diam nonumy eirmod tempor invidunt. Ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua at vero. -.SUBHEAD "Chapter 3" -.PP -Eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita kasd -gubergren, no sea takimata sanctus est lorem ipsum dolor sit amet. -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. At vero eos et accusam et justo duo do\%lo\%res et -ea rebum. -.HEAD "Part Two" -.SUBHEAD "Chapter 4" -.PP -Stet clita kasd gubergren, no sea takimata sanctus est -lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur -sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore -et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.PP -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est lorem ipsum dolor sit amet. -.PP -Nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. At vero eos et accusam et justo duo do\%lo\%res et -ea rebum. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. At vero eos et accusam et justo -duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est lorem ipsum dolor sit amet. Consetetur sadipscing elitr, -sed diam nonumy eirmod tempor invidunt. -.SUBHEAD "Chapter 5" -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed -diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. At vero eos et accusam et -justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, -no sea takimata sanctus est lorem ipsum dolor sit amet. -.PP -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero -eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita kasd -gubergren, no sea takimata sanctus. -.PP -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren. Sea takimata sanctus est lorem ipsum dolor -sit amet. Accusam et justo duo do\%lo\%res et ea rebum -.SPREAD -\# -\# This next bit ensures that the line "...end of sample outline" doesn't -\# spring the page trap, which would deposit a header at the top of the -\# next page. COLLATE doesn't print a page header on the first page of -\# a collated document, but if the page trap has already deposited one -\# there, COLLATE can't undo it. Hence, we turn the trap off -\# (TRAP OFF), set the line, and put in an EL afterwards. -\# -\# Normally, all this isn't necessary when collating documents, -\# but if you ever have the problem of a page header printing at the -\# top of a collated document, now you know how to get around it. -\# -.TRAP OFF -.RIGHT -\*[BD]\&...end of sample outline -.EL -.TRAP -.COLLATE -\# -\# ===================================================================== -\# -\# Next, two sample pages of a chapter, set in DRAFT style, showing -\# the use of the EPIGRAPH BLOCK macro and the QUOTE macro. -\# -\# You'll notice that the starting page number of this "draft" is 1 (in -\# roman numerals). COPYSTYLE DRAFT always numbers the first page of a -\# document 1. -\# -\# Reference macros -\# -.TITLE "Lake Attica's Shores" -.SUBTITLE "A Romance Novel" -.AUTHOR "Rosemary Winspeare" -.CHAPTER 1 -.DRAFT 1 \" Appears in the header because copystyle is DRAFT -.REVISION 2 \" Appears in the header because copystyle is DRAFT -\# -\# Docstyle macros -\# -.DOCTYPE CHAPTER -.COPYSTYLE DRAFT -\# -\# Additional style macros -\# -.EPIGRAPH_FONT I \" Epigraphs are set in roman by default -\# -.START -.EPIGRAPH BLOCK -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. -.RIGHT -\*[ROM]\(emJoseph E. Blough -.EPIGRAPH OFF -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. At vero eos et accusam et justo duo do\%lo\%res et -ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est. -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Lorem ipsum -dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam -voluptua. At vero eos et accusam et justo duo do\%lo\%res et ea rebum. -Stet clita kasd gubergren, no sea takimata sanctus est. At vero eos -et accusam et justo duo do\%lo\%res et ea rebum. -.PP -Stet clita kasd gubergren, no sea takimata sanctus est. Lorem ipsum -dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt. -.PP -"Consetetur sadipscing elitr," dixit ea. -.PP -"Sed diam nonumy eirmod tempor invidunt ut labore," dixit eum. -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. Consetetur sadipscing elitr, sed diam nonumy -eirmod tempor invidunt ut labore et do\%lo\%re magna. -.PP -"Lorem ipsum dolor sit amet," dixit ea. -.PP -"At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est," dixit eum. "Sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua." -.PP -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor: -.QUOTE -Invidunt ut labore et do\%lo\%re -Magna ali\%quyam erat sed diam -Voluptua stet clita kasd gubergren -No sea takimata sanctus est. -.QUOTE OFF -.PP -Justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, no -sea takimata sanctus est. Lorem ipsum dolor sit amet, consetetur -sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore -et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.PP -"Stet clita kasd gubergren," dixit ea. -.PP -"No sea takimata sanctus est," dixit eum. -.PP -Nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna. Aliquyam erat -sed diam voluptua. At vero eos et accusam et justo, duo do\%lo\%res et -ea rebum. -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt. Ut labore et do\%lo\%re magna ali\%quyam -erat, sed diam voluptua at vero. Stet clita kasd gubergren, no sea -takimata sanctus est. Consetetur sadipscing elitr, sed diam nonumy -eirmod tempor invidunt ut labore et do\%lo\%re magna. -.PP -Invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est. At vero eos et accusam et -justo duo do\%lo\%res et ea rebum. Lorem ipsum dolor sit amet, consetetur -sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore -et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero eos et -accusam et justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, -no sea takimata sanctus est. At vero eos et accusam et justo duo -do\%lo\%res et ea rebum. -.RIGHT -\*[BD]\&...end of sample chapter -.COLLATE -\# -\# ===================================================================== -\# -\# Finally, a sample academic article, set in two columns with a -\# 1.5-pica gutter between them. This example also uses -\# BLOCKQUOTES, FOOTNOTES, and the relatively rare BREAK_QUOTE. In -\# addition, it's set RECTO_VERSO, with differing left and right -\# margins that alternate from page to page. (The header also -\# flips from right to left, which you can see on the 2nd and 3rd -\# pages). -\# -\# In order to accomodate the narrow measure of the columns, there's also -\# a demonstration of things you can change with both the typesetting -\# macros and the document processing "control" macros. -\# -\# Reference macros -\# -.TITLE "CONTROL EQUALS CHAOS" -.SUBTITLE "\*[ALD1]The Psychological and Auditory Impact of Serial vs. Aleatoric Music\*[RLD1]" -.AUTHOR "Joe Chang" "and" "Brad Hegel Connors" -\# -\# Docstyle macros -\# -.DOCTYPE DEFAULT -.COPYSTYLE FINAL -\# -\# Additional style macros -- general type parameters -\# -.L_MARGIN 6P -.R_MARGIN 4P+6p -.PT_SIZE 10 -.AUTOLEAD 1.5 -\# -\# Additional style macros -- change mom's default behaviour -\# -.RECTO_VERSO -.PAGENUM 1 -.HEADER_LEFT "Chang, Connors" \" Because we have two authors -.COLUMNS 2 1P+6p -.SUBTITLE_SIZE +1.5 -.AUTHOR_SIZE +.5 -.DOCHEADER_LEAD +2p -.HEADER_SIZE +1 -.PARA_INDENT 1P -.SUBHEAD_SIZE +0 -.BLOCKQUOTE_FAMILY H -.BLOCKQUOTE_SIZE -2 -.QUOTE_INDENT 2 -.NUMBER_HEADS OFF \" Because we turned them on in the first example -.NUMBER_SUBHEADS OFF \" Ibid -\# -.START -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr. Sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna. Ali\%quyam -erat, sed diam voluptua. -.PP -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren no sea takimata. Sanctus est, lorem ipsum dolor sit -amet. Consetetur sadipscing elitr, sed diam nonumy. Eirmod tempor -invidunt ut labore et do\%lo\%re magna ali\%quyam erat. Sed diam voluptua -at vero eos et accusam et justo. -\# -.BLOCKQUOTE -Stet clita kasd gubergren, no sea takimata sanctus est lorem. -Ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy -eirmod tempor. Invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua at vero. Eos et accusam et justo duo do\%lo\%res et -ea rebum stet clita.\c -.FOOTNOTE \" Note the use of \c, above, to keep the word and footnote marker together. -Lorem ipsum dolor sit amet, consetetur sadipscing elitr. -.FOOTNOTE OFF -.BLOCKQUOTE OFF -\# -.PP -Duo do\%lo\%res et ea rebum, stet clita kasd gubergren. No sea takimata -sanctus est lorem ipsum dolor sit amet, consetetur sadipscing elitr. -Sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam. Erat sed diam voluptua at. Vero eos et accusam et justo -duo do\%lo\%res et ea rebum stet. Clita kasd gubergren no sea takimata -sanctus est. -.PP -Nonumy eirmod tempor invidunt, ut labore et do\%lo\%re magna ali\%quyam -erat? At vero eos et accusam et justo duo do\%lo\%res et ea. Rebum stet -clita kasd gubergren no sea takimata sanctus. Est lorem ipsum dolor -sit amet. Sadipscing\c -.FOOTNOTE -Sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. -.FOOTNOTE OFF -elitr sed diam nonumy eirmod tempor invidunt. Ut labore et do\%lo\%re -magna ali\%quyam erat, sed diam voluptua. At vero eos et accusam et -justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren no sea. -\# -.SUBHEAD "Schoenberg\(em" "The Origins of Serial Pitch Organization" -\# -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. At vero eos et accusam et justo duo do\%lo\%res et ea -rebum. Stet clita kasd gubergren, no sea takimata sanctus est lorem. -Ipsum dolor sit amet consetetur sadipscing. Elitr, sed diam nonumy, -eirmod tempor invidunt ut labore et do\%lo\%re magna. Ali\%quyam erat sed -diam voluptua, at vero eos. Et accusam et justo duo do\%lo\%res et ea -rebum stet clita kasd gubergren lorem ipsum. Dolor sit amet -consetetur, sadipscing elitr, sed diam. Nonumy eirmod tempor invidunt -ut labore et do\%lo\%re. Magna ali\%quyam erat sed diam voluptua at vero. -Eos et accusam et justo duo do\%lo\%res et ea rebum stet clita kasd. -Gubergren no sea takimata sanctus est. -.PP -Amet consetetur sadipscing elitr sed diam nonumy eirmod. Tempor -invidunt ut labore. Et dolor\%e magna ali\%quyam erat, sed diam voluptua, -at vero. Eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren. -.PP -No sea takimata\c -.FOOTNOTE -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.FOOTNOTE OFF -sanctus est lorem. Ipsum dolor sit amet, consetetur -sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore -et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero eos et -accusam et justo duo do\%lo\%res et ea rebum amet. Consetetur sadipscing -elitr sed diam nonumy eirmod tempor invidunt ut labore, et do\%lo\%re -magna ali\%quyam erat. Sed diam voluptua, at vero, eos et accusam et -justo duo do\%lo\%res et ea rebum. -\# -.SUBHEAD "Messiaen to Stockhausen\(em" "The Quest for Absolute Control" -\# -.PP -Vero eos et accusam et justo duo do\%lo\%res et ea rebum amet: -.QUOTE -Eirmod tempor invidunt -Ut labore et do\%lo\%re magna ali\%quyam erat -Sed diam voluptua -At vero eos et accusam et justo duo do\%lo\%res. -.QUOTE OFF -Lorem ipsum dolor sit amet, consetetur sadipscing elitr -sed diam. Nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna. -Aliquyam erat, sed diam voluptua at vero eos et accusam. Et -justo duo do\%lo\%res et ea rebum stet. -.PP -Elitr sed diam nonumy eirmod tempor. Invidunt ut labore et do\%lo\%re -magna ali\%quyam erat sed. Diam voluptua at vero eos et accusam et -justo duo do\%lo\%res et ea rebum. -\# -.BLOCKQUOTE -Sanctus est lorem ipsum dolor sit amet, consetetur sadipscing. Elitr, -sed diam nonumy eirmod tempor, invidunt ut labore et do\%lo\%re magna -ali\%quyam. Erat sed diam voluptua, at vero eos et accusam et justo -duo do\%lo\%res et ea rebum amet. Consetetur sadipsc\% -ing elitr sed diam nonumy eirmod tempor invidunt ut -.BREAK_QUOTE \" Needed because blockquote crosses page AND contain footnotes -labore. Et do\%lo\%re magna ali\%quyam erat, sed diam voluptua, at -vero. Eos et accusam et justo duo.\c -.FOOTNOTE -Labore et do\%lo\%re magna ali\%quyam erat sed diam voluptua. -.FOOTNOTE OFF -.BLOCKQUOTE OFF -\# -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr. Sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna. -.PP -Nonumy eirmod tempor invidunt, ut labore et do\%lo\%re magna ali\%quyam -erat? At vero eos et accusam et justo duo do\%lo\%res et ea. Rebum stet -clita kasd gubergren no sea takimata sanctus. Est lorem ipsum dolor -sit amet. Sadipscing elitr sed diam nonumy eirmod tempor invidunt. -Ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. -Stet clita kasd gubergren no sea. Ali\%quyam erat, sed diam voluptua. -\# -.SUBHEAD "John Cage\(em" "Leaving It All to Chance" -\# -.PP -Sit amet, consetetur sadipscing elitr, sed diam nonumy. Eirmod tempor -invidunt ut labore et do\%lo\%re magna. Ali\%quyam erat, sed diam -voluptua at vero. Eos et accusam et justo duo dolores et ea rebum. -Stet clita kasd gubergren, no sea taki\%mata sanctus est. -.PP -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero -eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita kasd -gubergren, no sea takimata sanctus est lorem. Ipsum dolor sit amet, -consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero -eos et accusam et justo duo do\%lo\%res et ea rebum. -.PP -Stet clita kasd gubergren. No sea takimata sanctus est lorem ipsum -dolor sit. Amet consetetur sadipscing elitr, sed diam nonumy eirmod -tempor. Invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam -voluptua, at vero. Eos et accusam et justo duo do\%lo\%res et ea rebum. -Stet clita kasd gubergren, no sea takimata. Sanctus est lorem ipsum -dolor sit amet consetetur. Sadipscing elitr sed diam nonumy eirmod -tempor invidunt. Ut labore et do\%lo\%re magna ali\%quyam erat, sed diam -voluptua. At vero eos et accusam et justo duo do\%lo\%res et ea rebum. -\# -.BLOCKQUOTE -.PP -Stet clita kasd gubergren no sea. Takimata sanctus est lorem ipsum -dolor sit amet. Consetetur sadipscing elitr sed diam nonumy eirmod -tempor invidunt ut labore et do\%lo\%re. Magna ali\%quyam\c -.FOOTNOTE -Diam nonumy eirmod tempor invidunt ut labore. -.FOOTNOTE OFF -erat, sed diam -voluptua at vero eos et accusam. Et justo duo do\%lo\%res et ea rebum, -stet clita kasd gubergren, no sea takimata. -.PP -Sanctus est lorem ipsum. Dolor sit amet consete- -.BREAK_QUOTE \" Needed because blockquote crosses column AND contain footnotes -tur sadipscing elitr. Sed diam nonumy eirmod tempor invidunt ut -labore. Et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -At vero eos et accusam et justo duo. Dolores et ea rebum stet clita -kasd gubergren no sea. -.PP -Takimata lorem ipsum dolor sit amet consetetur sadipscing elitr. -Sed diam, nonumy eirmod tempor, invidunt ut labore et do\%lo\%re magna. -Aliquyam erat sed diam voluptua. At vero eos et accusam et -justo.\c -.FOOTNOTE -At vero eos et accusam et justo duo. -.FOOTNOTE OFF -.BLOCKQUOTE OFF -\# -.PP -Duo do\%lo\%res et ea rebum, stet clita kasd gubergren, no sea takimata -sanctus. Est lorem ipsum. Dolor sit amet, consetetur sadipscing elitr, -sed diam nonumy. Eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. At vero eos et accusam. -.PP -Et justo duo do\%lo\%res et ea rebum stet clita kasd. Gubergren -no sea takimata sanctus est. Lorem ipsum dolor sit amet, consetetur -sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore -et dolore magna ali\%quyam erat, sed diam voluptua. At vero eos et -accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, -no sea takimata sanctus est. -\# -.SUBHEAD "Beyond Cage\(em" "Catching the Midnight Train" -\# -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr. Sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna. Ali\%quyam -erat, sed diam voluptua. -.PP -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren no sea takimata. Sanctus est, lorem ipsum dolor sit -amet. Consetetur sadipscing elitr, sed diam nonumy. Eirmod tempor -invidunt ut labore et do\%lo\%re magna ali\%quyam erat. Sed diam voluptua -at vero eos et accusam et justo. -.PP -Duo do\%lo\%res et ea rebum, stet clita kasd gubergren. No sea takimata -sanctus est lorem ipsum dolor sit amet, consetetur sadipscing elitr. -Sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam. Erat sed diam voluptua at. Vero eos et accusam et justo -duo do\%lo\%res et ea rebum stet. Clita kasd gubergren no sea takimata -sanctus est. -.PP -Nonumy eirmod tempor invidunt, ut labore et do\%lo\%re magna ali\%quyam -erat? At vero eos et accusam et justo duo do\%lo\%res et ea. Rebum stet -clita kasd gubergren no sea takimata sanctus. Est lorem ipsum dolor -sit amet. Sadipscing\c -.FOOTNOTE -Sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. -.FOOTNOTE OFF -elitr sed diam nonumy eirmod tempor invidunt. Ut labore et do\%lo\%re -magna ali\%quyam erat, sed diam voluptua. At vero eos et accusam et -justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren no sea -takimata lorem. Ipsum dolor sit amet, consetetur sadipscing elitr. -Sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna. -Ali\%quyam erat, sed diam voluptua. At vero eos et accusam et justo -duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, no sea -takimata sanctus est. -.RIGHT -\*[BD]\&...end of sample article\*[PREV] -.FINIS diff --git a/contrib/groff/contrib/mom/examples/typewrite.mom b/contrib/groff/contrib/mom/examples/typewrite.mom deleted file mode 100644 index b293840d..0000000 --- a/contrib/groff/contrib/mom/examples/typewrite.mom +++ /dev/null @@ -1,233 +0,0 @@ -\# A sample of PRINTSTYLE TYPEWRITE. The file contains the sample -\# outline and sample draft chapter found in the docprocessing_tyeset.mom -\# file. Only two changes have been made: the printstyle (here, -\# TYPEWRITE instead of the default TYPESET), and the header size -\# in the sample chapter, reduced by 1 point in order to accomodate -\# all three parts of the header. Other than that, the samples have -\# been left alone so you can assess and get a feel for how PRINTSTYLE -\# TYPEWRITE behaves. -\# -\# ==================================================================== -\# -\# Sample outline using PRINTSTYLE TYPEWRITE -\# -\# Reference macros -\# -.TITLE "Lake Attica's Shores" -.SUBTITLE "A Romance Novel" -.AUTHOR "Rosemary Winspeare" -.DRAFT 1 \" Ignored because COPYSTYLE is FINAL (the default) -.REVISION 2 \" Ignored because COPYSTYLE is FINAL (the default) -\# -\# Docstyle macros -\# -.DOCTYPE NAMED "Outline" -.PRINTSTYLE TYPEWRITE -\# -\# Additional style macros -\# -.NUMBER_PARAHEADS -\# -.START -.PP -.PARAHEAD "A note on the setting" -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. Stet clita kasd gubergren, no sea takimata sanctus est. -At vero eos et accusam et justo duo do\%lo\%re et ea rebum. -.PP -Stet clita kasd gubergren, no sea takimata sanctus est. Lorem ipsum -dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam -voluptua. -.PP -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At -vero, eos et accusam et justo duo do\%lo\%res et ea rebum. Consetetur -sadipscing elitr, sed diam nonumy. -.LINEBREAK -.PP -.PARAHEAD "About historical personnages" -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est. Tempor invidunt ut -labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. Consetetur sadipscing elitr, sed diam nonumy -eirmod tempor invidunt ut labore et do\%lo\%re magna. Tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.NUMBER_HEADS -.NUMBER_SUBHEADS -.HEAD "Part One" -.SUBHEAD "Chapter 1" -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. At vero eos et accusam et -justo duo do\%lo\%res et ea rebum. -.PP -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est. Lorem ipsum dolor sit -amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor -invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -Stet clita kasd gubergren, no sea takimata sanctus est. -.SUBHEAD "Chapter 2" -.PP -Stet clita kasd gubergren, no sea takimata sanctus est. Lorem ipsum -dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam -voluptua. At vero eos et accusam et justo duo do\%lo\%res et ea rebum. -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, -sed diam nonumy eirmod tempor invidunt. Ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua at vero. -.SUBHEAD "Chapter 3" -.PP -Eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita kasd -gubergren, no sea takimata sanctus est lorem ipsum dolor sit amet. -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. At vero eos et accusam et justo duo do\%lo\%res et -ea rebum. -.HEAD "Part Two" -.SUBHEAD "Chapter 4" -.PP -Stet clita kasd gubergren, no sea takimata sanctus est -lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur -sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore -et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.PP -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est lorem ipsum dolor sit amet. -.PP -Nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. At vero eos et accusam et justo duo do\%lo\%res et -ea rebum. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, -sed diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. At vero eos et accusam et justo -duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, no sea takimata -sanctus est lorem ipsum dolor sit amet. Consetetur sadipscing elitr, -sed diam nonumy eirmod tempor invidunt. -.SUBHEAD "Chapter 5" -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed -diam nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna -ali\%quyam erat, sed diam voluptua. At vero eos et accusam et -justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, -no sea takimata sanctus est lorem ipsum dolor sit amet. -.PP -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt -ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero -eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita kasd -gubergren, no sea takimata sanctus. -.PP -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren. Sea takimata sanctus est lorem ipsum dolor -sit amet. Accusam et justo duo do\%lo\%res et ea rebum -.BR -.RIGHT -\*[BD]\&...end of sample outline \" Notice that TYPEWRITE ignores the \*[BD] -.COLLATE -\# -\# ===================================================================== -\# -\# Sample chapter in COPYSTYLE DRAFT using PRINTSTYLE TYPEWRITE -\# -\# Reference macros -\# -.TITLE "Lake Attica's Shores" -.SUBTITLE "A Romance Novel" -.AUTHOR "Rosemary Winspeare" -.CHAPTER 1 -.DRAFT 1 \" Appears in the header because copystyle is DRAFT -.REVISION 2 \" Appears in the header because copystyle is DRAFT -\# -\# Docstyle macros -\# -.DOCTYPE CHAPTER -.COPYSTYLE DRAFT -\# -\# Additional style macros -\# -.EPIGRAPH_FONT I \" TYPEWRITE underlines italics -.HEADER_SIZE -1 -\# -.START -.EPIGRAPH BLOCK -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. -.RIGHT -\*[ROM]\(emJoseph E. Blough -.EPIGRAPH OFF -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. At vero eos et accusam et justo duo do\%lo\%res et -ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est. -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Lorem ipsum -dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam -voluptua. At vero eos et accusam et justo duo do\%lo\%res et ea rebum. -Stet clita kasd gubergren, no sea takimata sanctus est. At vero eos -et accusam et justo duo do\%lo\%res et ea rebum. -.PP -Stet clita kasd gubergren, no sea takimata sanctus est. Lorem ipsum -dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod -tempor invidunt. -.PP -"Consetetur sadipscing elitr," dixit ea. -.PP -"Sed diam nonumy eirmod tempor invidunt ut labore," dixit eum. -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua. Consetetur sadipscing elitr, sed diam nonumy -eirmod tempor invidunt ut labore et do\%lo\%re magna. -.PP -"Lorem ipsum dolor sit amet," dixit ea. -.PP -"At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est," dixit eum. "Sed diam -nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna ali\%quyam erat, -sed diam voluptua." -.PP -Consetetur sadipscing elitr, sed diam nonumy eirmod tempor: -.QUOTE -Invidunt ut labore et do\%lo\%re -Magna ali\%quyam erat sed diam -Voluptua stet clita kasd gubergren -No sea takimata sanctus est. -.QUOTE OFF -.PP -Justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, no -sea takimata sanctus est. Lorem ipsum dolor sit amet, consetetur -sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore -et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -.PP -"Stet clita kasd gubergren," dixit ea. -.PP -"No sea takimata sanctus est," dixit eum. -.PP -Nonumy eirmod tempor invidunt ut labore et do\%lo\%re magna. Aliquyam erat -sed diam voluptua. At vero eos et accusam et justo, duo do\%lo\%res et -ea rebum. -.PP -Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam -nonumy eirmod tempor invidunt. Ut labore et do\%lo\%re magna ali\%quyam -erat, sed diam voluptua at vero. Stet clita kasd gubergren, no sea -takimata sanctus est. Consetetur sadipscing elitr, sed diam nonumy -eirmod tempor invidunt ut labore et do\%lo\%re magna. -.PP -Invidunt ut labore et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. -At vero eos et accusam et justo duo do\%lo\%res et ea rebum. Stet clita -kasd gubergren, no sea takimata sanctus est. At vero eos et accusam et -justo duo do\%lo\%res et ea rebum. Lorem ipsum dolor sit amet, consetetur -sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore -et do\%lo\%re magna ali\%quyam erat, sed diam voluptua. At vero eos et -accusam et justo duo do\%lo\%res et ea rebum. Stet clita kasd gubergren, -no sea takimata sanctus est. At vero eos et accusam et justo duo -do\%lo\%res et ea rebum. -.RIGHT -\*[BD]\&...end of sample chapter \" Notice that TYPEWRITE ignores the \*[BD] diff --git a/contrib/groff/doc/groff-10 b/contrib/groff/doc/groff-10 deleted file mode 100644 index c4a7d74..0000000 --- a/contrib/groff/doc/groff-10 +++ /dev/null @@ -1,485 +0,0 @@ -This is groff, produced by makeinfo version 4.3d from ./groff.texinfo. - -This manual documents GNU `troff' version 1.19. - - Copyright (C) 1994-2000, 2001, 2002, 2003 Free Software Foundation, -Inc. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being `A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - `GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: `You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -INFO-DIR-SECTION Typesetting -START-INFO-DIR-ENTRY -* Groff: (groff). The GNU troff document formatting system. -END-INFO-DIR-ENTRY - - -File: groff, Node: Register Index, Next: Macro Index, Prev: Operator Index, Up: Top - -Register Index -************** - - The macro package or program a specific register belongs to is -appended in brackets. - - A register name `x' consisting of exactly one character can be -accessed as `\nx'. A register name `xx' consisting of exactly two -characters can be accessed as `\n(xx'. Register names `xxx' of any -length can be accessed as `\n[xxx]'. - -* Menu: - -* $$: Built-in Registers. -* %: Page Layout. -* .$: Parameters. -* .a: Manipulating Spacing. -* .A: Built-in Registers. -* .b: Artificial Fonts. -* .C: Implementation Differences. -* .c: Built-in Registers. -* .cdp: Environments. -* .ce: Manipulating Filling and Adjusting. -* .cht: Environments. -* .color: Colors. -* .csk: Environments. -* .d: Diversions. -* .ev: Environments. -* .f: Font Positions. -* .F: Built-in Registers. -* .fam: Font Families. -* .fn: Font Families. -* .fp: Font Positions. -* .g: Built-in Registers. -* .h: Diversions. -* .H: Built-in Registers. -* .height: Artificial Fonts. -* .hla: Manipulating Hyphenation. -* .hlc: Manipulating Hyphenation. -* .hlm: Manipulating Hyphenation. -* .hy: Manipulating Hyphenation. -* .hym: Manipulating Hyphenation. -* .hys: Manipulating Hyphenation. -* .i: Line Layout. -* .in: Line Layout. -* .int: Line Control. -* .j: Manipulating Filling and Adjusting. -* .k: Page Motions. -* .kern: Ligatures and Kerning. -* .l: Line Layout. -* .L: Manipulating Spacing. -* .lg: Ligatures and Kerning. -* .linetabs: Tabs and Fields. -* .ll: Line Layout. -* .lt: Page Layout. -* .n: Environments. -* .ne: Page Location Traps. -* .ns: Manipulating Spacing. -* .o: Line Layout. -* .p: Page Layout. -* .P: Built-in Registers. -* .pe: Page Location Traps. -* .pn: Page Layout. -* .ps: Fractional Type Sizes. -* .psr: Fractional Type Sizes. -* .pvs: Changing Type Sizes. -* .rj: Manipulating Filling and Adjusting. -* .s: Changing Type Sizes. -* .slant: Artificial Fonts. -* .sr: Fractional Type Sizes. -* .ss: Manipulating Filling and Adjusting. -* .sss: Manipulating Filling and Adjusting. -* .t: Page Location Traps. -* .T: Built-in Registers. -* .tabs: Tabs and Fields. -* .trunc: Page Location Traps. -* .u: Manipulating Filling and Adjusting. -* .v: Changing Type Sizes. -* .V: Built-in Registers. -* .vpt: Page Location Traps. -* .w: Environments. -* .warn: Debugging. -* .x: Built-in Registers. -* .Y: Built-in Registers. -* .y: Built-in Registers. -* .z: Diversions. -* c.: Built-in Registers. -* ct: Page Motions. -* dl: Diversions. -* dn: Diversions. -* dw: Built-in Registers. -* dy: Built-in Registers. -* FF [ms]: ms Document Control Registers. -* FI [ms]: ms Document Control Registers. -* FL [ms]: ms Document Control Registers. -* FM [ms]: ms Document Control Registers. -* HM [ms]: ms Document Control Registers. -* hours: Built-in Registers. -* hp: Page Motions. -* LL [ms]: ms Document Control Registers. -* llx: Miscellaneous. -* lly: Miscellaneous. -* ln: Built-in Registers. -* LT [ms]: ms Document Control Registers. -* MINGW [ms] <1>: Additional ms Macros. -* MINGW [ms]: ms Document Control Registers. -* minutes: Built-in Registers. -* mo: Built-in Registers. -* nl: Page Control. -* opmaxx: Suppressing output. -* opmaxy: Suppressing output. -* opminx: Suppressing output. -* opminy: Suppressing output. -* PD [ms]: ms Document Control Registers. -* PI [ms]: ms Document Control Registers. -* PO [ms]: ms Document Control Registers. -* PS [ms]: ms Document Control Registers. -* ps4html [grohtml]: grohtml specific registers and strings. -* QI [ms]: ms Document Control Registers. -* rsb: Page Motions. -* rst: Page Motions. -* sb: Page Motions. -* seconds: Built-in Registers. -* skw: Page Motions. -* slimit: Debugging. -* ssc: Page Motions. -* st: Page Motions. -* systat: I/O. -* urx: Miscellaneous. -* ury: Miscellaneous. -* VS [ms]: ms Document Control Registers. -* year: Built-in Registers. -* yr: Built-in Registers. - - -File: groff, Node: Macro Index, Next: String Index, Prev: Register Index, Up: Top - -Macro Index -*********** - - The macro package a specific macro belongs to is appended in -brackets. They appear without the leading control character (normally -`.'). - -* Menu: - -* 1C [ms]: ms Multiple Columns. -* 2C [ms]: ms Multiple Columns. -* [ [ms]: ms Insertions. -* ] [ms]: ms Insertions. -* AB [ms]: ms Cover Page Macros. -* AE [ms]: ms Cover Page Macros. -* AI [ms]: ms Cover Page Macros. -* AM [ms] <1>: Additional ms Macros. -* AM [ms]: ms Strings and Special Characters. -* AT [man]: Miscellaneous man macros. -* AU [ms]: ms Cover Page Macros. -* B [man]: Man font macros. -* B [ms]: Highlighting in ms. -* B1 [ms]: ms Displays and Keeps. -* B2 [ms]: ms Displays and Keeps. -* BD [ms]: ms Displays and Keeps. -* BI [man]: Man font macros. -* BI [ms]: Highlighting in ms. -* BR [man]: Man font macros. -* BT [man]: Optional man extensions. -* BX [ms]: Highlighting in ms. -* CD [ms]: ms Displays and Keeps. -* CT [man]: Optional man extensions. -* CW [man]: Optional man extensions. -* CW [ms] <1>: Additional ms Macros. -* CW [ms]: Highlighting in ms. -* DA [ms]: ms Cover Page Macros. -* De [man]: Optional man extensions. -* DE [ms]: ms Displays and Keeps. -* Ds [man]: Optional man extensions. -* DS [ms] <1>: Additional ms Macros. -* DS [ms]: ms Displays and Keeps. -* DT [man]: Miscellaneous man macros. -* EE [man]: Optional man extensions. -* EF [ms]: ms Headers and Footers. -* EH [ms]: ms Headers and Footers. -* EN [ms]: ms Insertions. -* EQ [ms]: ms Insertions. -* EX [man]: Optional man extensions. -* FE [ms]: ms Footnotes. -* FS [ms]: ms Footnotes. -* G [man]: Optional man extensions. -* GL [man]: Optional man extensions. -* HB [man]: Optional man extensions. -* HP [man]: Man usage. -* I [man]: Man font macros. -* I [ms]: Highlighting in ms. -* IB [man]: Man font macros. -* ID [ms]: ms Displays and Keeps. -* IP [man]: Man usage. -* IP [ms]: Lists in ms. -* IR [man]: Man font macros. -* IX [ms]: Additional ms Macros. -* KE [ms]: ms Displays and Keeps. -* KF [ms]: ms Displays and Keeps. -* KS [ms]: ms Displays and Keeps. -* LD [ms]: ms Displays and Keeps. -* LG [ms]: Highlighting in ms. -* LP [man]: Man usage. -* LP [ms]: Paragraphs in ms. -* MC [ms]: ms Multiple Columns. -* MS [man]: Optional man extensions. -* ND [ms]: ms Cover Page Macros. -* NE [man]: Optional man extensions. -* NH [ms]: Headings in ms. -* NL [ms]: Highlighting in ms. -* NT [man]: Optional man extensions. -* OF [ms]: ms Headers and Footers. -* OH [ms]: ms Headers and Footers. -* P [man]: Man usage. -* PD [man]: Miscellaneous man macros. -* PE [ms]: ms Insertions. -* Pn [man]: Optional man extensions. -* PN [man]: Optional man extensions. -* PP [man]: Man usage. -* PP [ms]: Paragraphs in ms. -* PS [ms]: ms Insertions. -* PT [man]: Optional man extensions. -* PX [ms]: ms TOC. -* QP [ms]: Paragraphs in ms. -* R [man]: Optional man extensions. -* R [ms]: Highlighting in ms. -* RB [man]: Man font macros. -* RD [ms]: ms Displays and Keeps. -* RE [man]: Man usage. -* RE [ms]: Indents in ms. -* RI [man]: Man font macros. -* RN [man]: Optional man extensions. -* RP [ms]: ms Cover Page Macros. -* RS [man]: Man usage. -* RS [ms]: Indents in ms. -* SB [man]: Man font macros. -* SH [man]: Man usage. -* SH [ms]: Headings in ms. -* SM [man]: Man font macros. -* SM [ms]: Highlighting in ms. -* SS [man]: Man usage. -* TA [ms]: Tabstops in ms. -* TB [man]: Optional man extensions. -* TC [ms]: ms TOC. -* TE [ms]: ms Insertions. -* TH [man]: Man usage. -* TL [ms]: ms Cover Page Macros. -* TP [man]: Man usage. -* TS [ms]: ms Insertions. -* UC [man]: Miscellaneous man macros. -* UL [ms]: Highlighting in ms. -* VE [man]: Optional man extensions. -* VS [man]: Optional man extensions. -* XA [ms]: ms TOC. -* XE [ms]: ms TOC. -* XP [ms]: Paragraphs in ms. -* XS [ms]: ms TOC. - - -File: groff, Node: String Index, Next: Glyph Name Index, Prev: Macro Index, Up: Top - -String Index -************ - - The macro package or program a specific string belongs to is -appended in brackets. - - A string name `x' consisting of exactly one character can be -accessed as `\*x'. A string name `xx' consisting of exactly two -characters can be accessed as `\*(xx'. String names `xxx' of any -length can be accessed as `\*[xxx]'. - -* Menu: - -* ! [ms]: ms Strings and Special Characters. -* ' [ms]: ms Strings and Special Characters. -* * [ms]: ms Footnotes. -* *Q [ms]: ms Strings and Special Characters. -* *U [ms]: ms Strings and Special Characters. -* , [ms]: ms Strings and Special Characters. -* - [ms]: ms Strings and Special Characters. -* . [ms]: ms Strings and Special Characters. -* .T: Built-in Registers. -* 3 [ms]: ms Strings and Special Characters. -* 8 [ms]: ms Strings and Special Characters. -* ? [ms]: ms Strings and Special Characters. -* \*[] [ms]: ms Strings and Special Characters. -* ^ [ms]: ms Strings and Special Characters. -* _ [ms]: ms Strings and Special Characters. -* ` [ms]: ms Strings and Special Characters. -* ABSTRACT [ms]: ms Strings and Special Characters. -* Ae [ms]: ms Strings and Special Characters. -* ae [ms]: ms Strings and Special Characters. -* CF [ms]: ms Headers and Footers. -* CH [ms]: ms Headers and Footers. -* d- [ms]: ms Strings and Special Characters. -* D- [ms]: ms Strings and Special Characters. -* HF [man]: Predefined man strings. -* LF [ms]: ms Headers and Footers. -* LH [ms]: ms Headers and Footers. -* lq [man]: Predefined man strings. -* MONTH1 [ms]: ms Strings and Special Characters. -* MONTH10 [ms]: ms Strings and Special Characters. -* MONTH11 [ms]: ms Strings and Special Characters. -* MONTH12 [ms]: ms Strings and Special Characters. -* MONTH2 [ms]: ms Strings and Special Characters. -* MONTH3 [ms]: ms Strings and Special Characters. -* MONTH4 [ms]: ms Strings and Special Characters. -* MONTH5 [ms]: ms Strings and Special Characters. -* MONTH6 [ms]: ms Strings and Special Characters. -* MONTH7 [ms]: ms Strings and Special Characters. -* MONTH8 [ms]: ms Strings and Special Characters. -* MONTH9 [ms]: ms Strings and Special Characters. -* o [ms]: ms Strings and Special Characters. -* q [ms]: ms Strings and Special Characters. -* R [man]: Predefined man strings. -* REFERENCES [ms]: ms Strings and Special Characters. -* RF [ms]: ms Headers and Footers. -* RH [ms]: ms Headers and Footers. -* rq [man]: Predefined man strings. -* S [man]: Predefined man strings. -* th [ms]: ms Strings and Special Characters. -* Th [ms]: ms Strings and Special Characters. -* Tm [man]: Predefined man strings. -* TOC [ms]: ms Strings and Special Characters. -* v [ms]: ms Strings and Special Characters. -* www-image-template [grohtml]: grohtml specific registers and strings. -* ~ [ms]: ms Strings and Special Characters. - - -File: groff, Node: Glyph Name Index, Next: Font File Keyword Index, Prev: String Index, Up: Top - -Glyph Name Index -**************** - - A glyph name `xx' consisting of exactly two characters can be -accessed as `\(xx'. Glyph names `xxx' of any length can be accessed as -`\[xxx]'. - - -File: groff, Node: Font File Keyword Index, Next: Program and File Index, Prev: Glyph Name Index, Up: Top - -Font File Keyword Index -*********************** - -* Menu: - -* #: Font File Format. -* ---: Font File Format. -* biggestfont: DESC File Format. -* charset <1>: Font File Format. -* charset: DESC File Format. -* family <1>: DESC File Format. -* family <2>: Font Positions. -* family: Changing Fonts. -* fonts <1>: DESC File Format. -* fonts <2>: Special Fonts. -* fonts: Using Symbols. -* hor: DESC File Format. -* kernpairs: Font File Format. -* ligatures: Font File Format. -* name: Font File Format. -* papersize: DESC File Format. -* pass_filenames: DESC File Format. -* postpro: DESC File Format. -* prepro: DESC File Format. -* print: DESC File Format. -* res: DESC File Format. -* sizes: DESC File Format. -* sizescale: DESC File Format. -* slant: Font File Format. -* spacewidth: Font File Format. -* spare1: DESC File Format. -* spare2: DESC File Format. -* special <1>: Font File Format. -* special: Artificial Fonts. -* styles <1>: DESC File Format. -* styles <2>: Font Positions. -* styles <3>: Font Families. -* styles: Changing Fonts. -* tcommand: DESC File Format. -* unitwidth: DESC File Format. -* use_charnames_in_special <1>: DESC File Format. -* use_charnames_in_special: Postprocessor Access. -* vert: DESC File Format. - - -File: groff, Node: Program and File Index, Next: Concept Index, Prev: Font File Keyword Index, Up: Top - -Program and File Index -********************** - -* Menu: - -* an.tmac: man. -* changebar: Miscellaneous. -* composite.tmac: Using Symbols. -* cp1047.tmac: Input Encodings. -* DESC <1>: Special Fonts. -* DESC <2>: Using Symbols. -* DESC <3>: Font Positions. -* DESC <4>: Font Families. -* DESC: Changing Fonts. -* DESC file format: DESC File Format. -* DESC, and font mounting: Font Positions. -* DESC, and use_charnames_in_special: Postprocessor Access. -* ditroff: History. -* ec.tmac: Input Encodings. -* eqn: ms Insertions. -* freeeuro.pfa: Input Encodings. -* geqn: Groff Options. -* geqn, invocation in manual pages: Preprocessors in man pages. -* ggrn: Groff Options. -* gpic: Groff Options. -* grap: Groff Options. -* grefer: Groff Options. -* grefer, invocation in manual pages: Preprocessors in man pages. -* groff: Groff Options. -* grog: grog. -* grohtml: Miscellaneous man macros. -* gsoelim: Groff Options. -* gtbl: Groff Options. -* gtbl, invocation in manual pages: Preprocessors in man pages. -* gtroff: Groff Options. -* hyphen.us: Manipulating Hyphenation. -* hyphenex.us: Manipulating Hyphenation. -* latin1.tmac: Input Encodings. -* latin2.tmac: Input Encodings. -* latin9.tmac: Input Encodings. -* makeindex: Indices. -* man, invocation of preprocessors: Preprocessors in man pages. -* man-old.tmac: man. -* man.local <1>: Optional man extensions. -* man.local: Man usage. -* man.tmac: man. -* man.ultrix: Optional man extensions. -* nrchbar: Miscellaneous. -* papersize.tmac: Paper Size. -* perl: I/O. -* pic: ms Insertions. -* post-grohtml: Groff Options. -* pre-grohtml: Groff Options. -* refer: ms Insertions. -* soelim: Debugging. -* tbl: ms Insertions. -* trace.tmac: Writing Macros. -* troffrc <1>: Line Layout. -* troffrc <2>: Troff and Nroff Mode. -* troffrc <3>: Manipulating Hyphenation. -* troffrc <4>: Paper Size. -* troffrc: Groff Options. -* troffrc-end <1>: Troff and Nroff Mode. -* troffrc-end <2>: Manipulating Hyphenation. -* troffrc-end: Groff Options. -* tty.tmac: Troff and Nroff Mode. - diff --git a/contrib/groff/doc/groff-11 b/contrib/groff/doc/groff-11 deleted file mode 100644 index d3050a1..0000000 --- a/contrib/groff/doc/groff-11 +++ /dev/null @@ -1,1623 +0,0 @@ -This is groff, produced by makeinfo version 4.3d from ./groff.texinfo. - -This manual documents GNU `troff' version 1.19. - - Copyright (C) 1994-2000, 2001, 2002, 2003 Free Software Foundation, -Inc. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being `A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - `GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: `You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -INFO-DIR-SECTION Typesetting -START-INFO-DIR-ENTRY -* Groff: (groff). The GNU troff document formatting system. -END-INFO-DIR-ENTRY - - -File: groff, Node: Concept Index, Prev: Program and File Index, Up: Top - -Concept Index -************* - -* Menu: - -* ", at end of sentence <1>: Using Symbols. -* ", at end of sentence: Sentences. -* ", in a macro argument: Request and Macro Arguments. -* %, as delimiter: Escapes. -* &, as delimiter: Escapes. -* ', as a comment: Comments. -* ', at end of sentence <1>: Using Symbols. -* ', at end of sentence: Sentences. -* ', delimiting arguments: Escapes. -* (, as delimiter: Escapes. -* (, starting a two-character identifier <1>: Escapes. -* (, starting a two-character identifier: Identifiers. -* ), as delimiter: Escapes. -* ), at end of sentence <1>: Using Symbols. -* ), at end of sentence: Sentences. -* *, as delimiter: Escapes. -* *, at end of sentence <1>: Using Symbols. -* *, at end of sentence: Sentences. -* +, and page motion: Expressions. -* +, as delimiter: Escapes. -* -, and page motion: Expressions. -* -, as delimiter: Escapes. -* ., as delimiter: Escapes. -* .h register, difference to nl: Diversions. -* .ps register, in comparison with .psr: Fractional Type Sizes. -* .s register, in comparison with .sr: Fractional Type Sizes. -* .S register, Plan 9 alias for .tabs: Tabs and Fields. -* .t register, and diversions: Diversion Traps. -* .tabs register, Plan 9 alias (.S): Tabs and Fields. -* .V register, and vs: Changing Type Sizes. -* /, as delimiter: Escapes. -* 8-bit input: Font File Format. -* <, as delimiter: Escapes. -* , as delimiter: Escapes. -* =, as delimiter: Escapes. -* >, as delimiter: Escapes. -* [, macro names starting with, and refer: Identifiers. -* [, starting an identifier <1>: Escapes. -* [, starting an identifier: Identifiers. -* \!, and output: Diversions. -* \!, and trnt: Character Translations. -* \!, in top-level diversion: Diversions. -* \!, incompatibilities with AT&T troff: Implementation Differences. -* \!, used as delimiter: Escapes. -* \$, when reading text for a macro: Copy-in Mode. -* \%, and translations: Character Translations. -* \%, following \X or \Y: Manipulating Hyphenation. -* \%, in \X: Postprocessor Access. -* \%, incompatibilities with AT&T troff: Implementation Differences. -* \%, used as delimiter: Escapes. -* \&, and glyph definitions: Using Symbols. -* \&, and translations: Character Translations. -* \&, at end of sentence: Sentences. -* \&, escaping control characters: Requests. -* \&, in \X: Postprocessor Access. -* \&, incompatibilities with AT&T troff: Implementation Differences. -* \&, used as delimiter: Escapes. -* \', and translations: Character Translations. -* \', incompatibilities with AT&T troff: Implementation Differences. -* \', used as delimiter: Escapes. -* \(, and translations: Character Translations. -* \), in \X: Postprocessor Access. -* \), used as delimiter: Escapes. -* \*, and warnings: Warnings. -* \*, incompatibilities with AT&T troff: Implementation Differences. -* \*, when reading text for a macro: Copy-in Mode. -* \, disabling (eo): Character Translations. -* \,, used as delimiter: Escapes. -* \-, and translations: Character Translations. -* \-, incompatibilities with AT&T troff: Implementation Differences. -* \-, used as delimiter: Escapes. -* \/, used as delimiter: Escapes. -* \0, used as delimiter: Escapes. -* \, in \X: Postprocessor Access. -* \, used as delimiter: Escapes. -* \, when reading text for a macro: Copy-in Mode. -* \, difference to \~: Request and Macro Arguments. -* \, incompatibilities with AT&T troff: Implementation Differences. -* \, used as delimiter: Escapes. -* \?, in top-level diversion: Diversions. -* \?, incompatibilities with AT&T troff: Implementation Differences. -* \?, used as delimiter: Escapes. -* \@, used as delimiter: Escapes. -* \[, and translations: Character Translations. -* \\, when reading text for a macro: Copy-in Mode. -* \^, incompatibilities with AT&T troff: Implementation Differences. -* \^, used as delimiter: Escapes. -* \_, and translations: Character Translations. -* \_, incompatibilities with AT&T troff: Implementation Differences. -* \_, used as delimiter: Escapes. -* \`, and translations: Character Translations. -* \`, incompatibilities with AT&T troff: Implementation Differences. -* \`, used as delimiter: Escapes. -* \A, allowed delimiters: Escapes. -* \a, and translations: Character Translations. -* \A, incompatibilities with AT&T troff: Implementation Differences. -* \a, used as delimiter: Escapes. -* \B, allowed delimiters: Escapes. -* \b, limitations: Drawing Requests. -* \b, possible quote characters: Escapes. -* \C, allowed delimiters: Escapes. -* \c, and fill mode: Line Control. -* \c, and no-fill mode: Line Control. -* \C, and translations: Character Translations. -* \c, incompatibilities with AT&T troff: Implementation Differences. -* \c, used as delimiter: Escapes. -* \D'f ...' and horizontal resolution: Drawing Requests. -* \D, allowed delimiters: Escapes. -* \d, used as delimiter: Escapes. -* \e, and glyph definitions: Using Symbols. -* \e, and translations: Character Translations. -* \e, incompatibilities with AT&T troff: Implementation Differences. -* \e, used as delimiter: Escapes. -* \E, used as delimiter: Escapes. -* \e, used as delimiter: Escapes. -* \F, and changing fonts: Changing Fonts. -* \F, and font positions: Font Positions. -* \f, and font translations: Changing Fonts. -* \f, incompatibilities with AT&T troff: Implementation Differences. -* \H, allowed delimiters: Escapes. -* \h, allowed delimiters: Escapes. -* \H, incompatibilities with AT&T troff: Implementation Differences. -* \H, using + and -: Expressions. -* \H, with fractional type sizes: Fractional Type Sizes. -* \L, allowed delimiters: Escapes. -* \l, allowed delimiters: Escapes. -* \L, and glyph definitions: Using Symbols. -* \l, and glyph definitions: Using Symbols. -* \N, allowed delimiters: Escapes. -* \N, and translations: Character Translations. -* \n, and warnings: Warnings. -* \n, incompatibilities with AT&T troff: Implementation Differences. -* \n, when reading text for a macro: Copy-in Mode. -* \o, possible quote characters: Escapes. -* \p, used as delimiter: Escapes. -* \R, after \c: Line Control. -* \R, allowed delimiters: Escapes. -* \R, and warnings: Warnings. -* \R, difference to nr: Auto-increment. -* \r, used as delimiter: Escapes. -* \R, using + and -: Expressions. -* \S, allowed delimiters: Escapes. -* \s, allowed delimiters: Escapes. -* \S, incompatibilities with AT&T troff: Implementation Differences. -* \s, incompatibilities with AT&T troff: Implementation Differences. -* \s, using + and -: Expressions. -* \s, with fractional type sizes: Fractional Type Sizes. -* \t, and translations: Character Translations. -* \t, and warnings: Warnings. -* \t, used as delimiter: Escapes. -* \u, used as delimiter: Escapes. -* \v, allowed delimiters: Escapes. -* \v, internal representation: Gtroff Internals. -* \w, allowed delimiters: Escapes. -* \x, allowed delimiters: Escapes. -* \X, and special characters: Postprocessor Access. -* \X, followed by \%: Manipulating Hyphenation. -* \X, possible quote characters: Escapes. -* \Y, followed by \%: Manipulating Hyphenation. -* \Z, allowed delimiters: Escapes. -* \{, incompatibilities with AT&T troff: Implementation Differences. -* \{, used as delimiter: Escapes. -* \|, incompatibilities with AT&T troff: Implementation Differences. -* \|, used as delimiter: Escapes. -* \}, and warnings: Warnings. -* \}, incompatibilities with AT&T troff: Implementation Differences. -* \}, used as delimiter: Escapes. -* \~, and translations: Character Translations. -* \~, difference to \: Request and Macro Arguments. -* \~, used as delimiter: Escapes. -* ], as part of an identifier: Identifiers. -* ], at end of sentence <1>: Using Symbols. -* ], at end of sentence: Sentences. -* ], ending an identifier <1>: Escapes. -* ], ending an identifier: Identifiers. -* ], macro names starting with, and refer: Identifiers. -* aborting (ab): Debugging. -* absolute position operator (|): Expressions. -* accent marks [ms]: ms Strings and Special Characters. -* access of postprocessor: Postprocessor Access. -* accessing unnamed glyphs with \N: Font File Format. -* activating kerning (kern): Ligatures and Kerning. -* activating ligatures (lg): Ligatures and Kerning. -* activating track kerning (tkf): Ligatures and Kerning. -* ad request, and hyphenation margin: Manipulating Hyphenation. -* ad request, and hyphenation space: Manipulating Hyphenation. -* adjusting: Filling and Adjusting. -* adjusting and filling, manipulating: Manipulating Filling and Adjusting. -* adjustment mode register (.j): Manipulating Filling and Adjusting. -* adobe glyph list (AGL): Using Symbols. -* AGL (adobe glyph list): Using Symbols. -* alias, diversion, creating (als): Strings. -* alias, macro, creating (als): Strings. -* alias, number register, creating (aln): Setting Registers. -* alias, string, creating (als): Strings. -* als request, and \$0: Parameters. -* am, am1, ami requests, and warnings: Warnings. -* annotations: Footnotes and Annotations. -* appending to a diversion (da): Diversions. -* appending to a file (opena): I/O. -* appending to a macro (am): Writing Macros. -* appending to a string (as): Strings. -* arc, drawing (\D'a ...'): Drawing Requests. -* argument delimiting characters: Escapes. -* arguments to requests and macros: Request and Macro Arguments. -* arguments, macro (\$): Parameters. -* arguments, of strings: Strings. -* arithmetic operators: Expressions. -* artificial fonts: Artificial Fonts. -* as, as1 requests, and comments: Comments. -* as, as1 requests, and warnings: Warnings. -* ASCII approximation output register (.A) <1>: Built-in Registers. -* ASCII approximation output register (.A): Groff Options. -* ASCII, output encoding: Groff Options. -* asciify request, and writem: I/O. -* assigning formats (af): Assigning Formats. -* assignments, indirect: Interpolating Registers. -* assignments, nested: Interpolating Registers. -* AT&T troff, ms macro package differences: Differences from AT&T ms. -* auto-increment: Auto-increment. -* available glyphs, list (`groff_char(7)' man page): Using Symbols. -* backslash, printing (\\, \e, \E, \[rs]) <1>: Implementation Differences. -* backslash, printing (\\, \e, \E, \[rs]): Escapes. -* backspace character: Identifiers. -* backspace character, and translations: Character Translations. -* backtrace of input stack (backtrace): Debugging. -* baseline: Sizes. -* basic unit (u): Measurements. -* basics of macros: Basics. -* bd request, and font styles: Font Families. -* bd request, and font translations: Changing Fonts. -* bd request, incompatibilities with AT&T troff: Implementation Differences. -* begin of conditional block (\{): if-else. -* beginning diversion (di): Diversions. -* blank line <1>: Requests. -* blank line: Implicit Line Breaks. -* blank line (sp): Basics. -* blank line macro (blm) <1>: Blank Line Traps. -* blank line macro (blm) <2>: Requests. -* blank line macro (blm): Implicit Line Breaks. -* blank line traps: Blank Line Traps. -* blank lines, disabling: Manipulating Spacing. -* block, conditional, begin (\{): if-else. -* block, condititional, end (\}): if-else. -* bold face [man]: Man font macros. -* bold face, imitating (bd): Artificial Fonts. -* bottom margin: Page Layout. -* bounding box: Miscellaneous. -* box rule glyph (\[br]): Drawing Requests. -* box, boxa requests, and warnings: Warnings. -* boxa request, and dn (dl): Diversions. -* bp request, and top-level diversion: Page Control. -* bp request, and traps (.pe): Page Location Traps. -* bp request, causing implicit linebreak: Manipulating Filling and Adjusting. -* bp request, using + and -: Expressions. -* br glyph, and cflags: Using Symbols. -* break <1>: Manipulating Filling and Adjusting. -* break: Basics. -* break (br): Basics. -* break request, in a while loop: while. -* break, implicit: Implicit Line Breaks. -* built-in registers: Built-in Registers. -* bulleted list, example markup [ms]: Lists in ms. -* c unit: Measurements. -* calling convention of preprocessors: Preprocessors in man pages. -* capabilities of groff: groff Capabilities. -* ce request, causing implicit linebreak: Manipulating Filling and Adjusting. -* ce request, difference to .ad c: Manipulating Filling and Adjusting. -* centered text: Manipulating Filling and Adjusting. -* centering lines (ce) <1>: Manipulating Filling and Adjusting. -* centering lines (ce): Basics. -* centimeter unit (c): Measurements. -* cf request, causing implicit linebreak: Manipulating Filling and Adjusting. -* changing font family (fam, \F): Font Families. -* changing font position (\f): Font Positions. -* changing font style (sty): Font Families. -* changing fonts (ft, \f): Changing Fonts. -* changing format, and read-only registers: Assigning Formats. -* changing the font height (\H): Artificial Fonts. -* changing the font slant (\S): Artificial Fonts. -* changing the page number character (pc): Page Layout. -* changing trap location (ch): Page Location Traps. -* changing type sizes (ps, \s): Changing Type Sizes. -* changing vertical line spacing (vs): Changing Type Sizes. -* char request, and soft hyphen character: Manipulating Hyphenation. -* char request, and translations: Character Translations. -* char request, used with \N: Using Symbols. -* character: Using Symbols. -* character properties (cflags): Using Symbols. -* character translations: Character Translations. -* character, backspace: Identifiers. -* character, backspace, and translations: Character Translations. -* character, control (.): Requests. -* character, control, changing (cc): Character Translations. -* character, defining (char): Using Symbols. -* character, defining fallback (fchar, fschar, schar): Using Symbols. -* character, escape, changing (ec): Character Translations. -* character, escape, while defining glyph: Using Symbols. -* character, field delimiting (fc): Fields. -* character, field padding (fc): Fields. -* character, hyphenation (\%): Manipulating Hyphenation. -* character, leader repetition (lc): Leaders. -* character, leader, and translations: Character Translations. -* character, leader, non-interpreted (\a): Leaders. -* character, named (\C): Using Symbols. -* character, newline: Escapes. -* character, newline, and translations: Character Translations. -* character, no-break control ('): Requests. -* character, no-break control, changing (c2): Character Translations. -* character, soft hyphen, setting (shc): Manipulating Hyphenation. -* character, space: Escapes. -* character, special: Character Translations. -* character, tab: Escapes. -* character, tab repetition (tc): Tabs and Fields. -* character, tab, and translations: Character Translations. -* character, tab, non-interpreted (\t): Tabs and Fields. -* character, tabulator: Tab Stops. -* character, transparent <1>: Using Symbols. -* character, transparent: Sentences. -* character, whitespace: Identifiers. -* character, zero width space (\&) <1>: Drawing Requests. -* character, zero width space (\&) <2>: Ligatures and Kerning. -* character, zero width space (\&): Requests. -* characters, argument delimiting: Escapes. -* characters, end-of-sentence: Using Symbols. -* characters, hyphenation: Using Symbols. -* characters, input, and output glyphs, compatibility with AT&T troff: Implementation Differences. -* characters, invalid for trf request: I/O. -* characters, invalid input: Identifiers. -* characters, overlapping: Using Symbols. -* characters, special: Special Characters. -* characters, unnamed, accessing with \N: Font File Format. -* circle, drawing (\D'c ...'): Drawing Requests. -* circle, solid, drawing (\D'C ...'): Drawing Requests. -* closing file (close): I/O. -* code, hyphenation (hcode): Manipulating Hyphenation. -* color, default: Colors. -* colors: Colors. -* colors, fill, unnamed (\D'F...'): Drawing Requests. -* command prefix: Environment. -* command-line options: Groff Options. -* commands, embedded: Embedded Commands. -* comments: Comments. -* comments in font files: Font File Format. -* comments, lining up with tabs: Comments. -* comments, with ds: Strings. -* common features: Common Features. -* common name space of macros, diversions, and strings: Strings. -* comparison operators: Expressions. -* compatibility mode <1>: Implementation Differences. -* compatibility mode: Warnings. -* composite glyph names: Using Symbols. -* conditional block, begin (\{): if-else. -* conditional block, end (\}): if-else. -* conditional page break (ne): Page Control. -* conditionals and loops: Conditionals and Loops. -* consecutive hyphenated lines (hlm): Manipulating Hyphenation. -* constant glyph space mode (cs): Artificial Fonts. -* contents, table of <1>: Leaders. -* contents, table of: Table of Contents. -* continuation, input line (\): Line Control. -* continuation, output line (\c): Line Control. -* continue request, in a while loop: while. -* continuous underlining (cu): Artificial Fonts. -* control character (.): Requests. -* control character, changing (cc): Character Translations. -* control character, no-break ('): Requests. -* control character, no-break, changing (c2): Character Translations. -* control, line: Line Control. -* control, page: Page Control. -* conventions for input: Input Conventions. -* copy-in mode: Copy-in Mode. -* copy-in mode, and macro arguments: Parameters. -* copy-in mode, and write requests: I/O. -* copying environment (evc): Environments. -* correction between italic and roman glyph (\/, \,): Ligatures and Kerning. -* correction, italic (\/): Ligatures and Kerning. -* correction, left italic (\,): Ligatures and Kerning. -* cover page macros, [ms]: ms Cover Page Macros. -* cp request, and glyph definitions: Using Symbols. -* cp1047, input encoding: Input Encodings. -* cp1047, output encoding: Groff Options. -* creating alias, for diversion (als): Strings. -* creating alias, for macro (als): Strings. -* creating alias, for number register (aln): Setting Registers. -* creating alias, for string (als): Strings. -* creating new characters (char): Using Symbols. -* credits: Credits. -* cs request, and font styles: Font Families. -* cs request, and font translations: Changing Fonts. -* cs request, incompatibilities with AT&T troff: Implementation Differences. -* cs request, with fractional type sizes: Fractional Type Sizes. -* current directory: Macro Directories. -* current input file name register (.F): Built-in Registers. -* current time: I/O. -* current time, hours (hours): Built-in Registers. -* current time, minutes (minutes): Built-in Registers. -* current time, seconds (seconds): Built-in Registers. -* da request, and dn (dl): Diversions. -* da request, and warnings: Warnings. -* date, day of the month register (dy): Built-in Registers. -* date, day of the week register (dw): Built-in Registers. -* date, month of the year register (mo): Built-in Registers. -* date, year register (year, yr): Built-in Registers. -* day of the month register (dy): Built-in Registers. -* day of the week register (dw): Built-in Registers. -* de request, and while: while. -* de, de1, dei requests, and warnings: Warnings. -* debugging: Debugging. -* default color: Colors. -* default indentation [man]: Miscellaneous man macros. -* default indentation, resetting [man]: Man usage. -* default units: Default Units. -* defining character (char): Using Symbols. -* defining fallback character (fchar, fschar, schar): Using Symbols. -* defining glyph (char): Using Symbols. -* defining symbol (char): Using Symbols. -* delayed text: Footnotes and Annotations. -* delimited arguments, incompatibilities with AT&T troff: Implementation Differences. -* delimiting character, for fields (fc): Fields. -* delimiting characters for arguments: Escapes. -* depth, of last glyph (.cdp): Environments. -* DESC file, format: DESC File Format. -* device resolution: DESC File Format. -* devices for output <1>: Output Devices. -* devices for output: Output device intro. -* dg glyph, at end of sentence <1>: Using Symbols. -* dg glyph, at end of sentence: Sentences. -* di request, and warnings: Warnings. -* differences in implementation: Implementation Differences. -* digit width space (\0): Page Motions. -* digits, and delimiters: Escapes. -* dimensions, line: Line Layout. -* directories for fonts: Font Directories. -* directories for macros: Macro Directories. -* directory, current: Macro Directories. -* directory, for tmac files: Macro Directories. -* directory, home: Macro Directories. -* directory, platform-specific: Macro Directories. -* directory, site-specific <1>: Font Directories. -* directory, site-specific: Macro Directories. -* disabling \ (eo): Character Translations. -* disabling hyphenation (\%): Manipulating Hyphenation. -* discardable horizontal space: Manipulating Filling and Adjusting. -* discarded space in traps: Manipulating Spacing. -* displays: Displays. -* displays [ms]: ms Displays and Keeps. -* distance to next trap register (.t): Page Location Traps. -* ditroff, the program: History. -* diversion name register (.z): Diversions. -* diversion trap, setting (dt): Diversion Traps. -* diversion traps: Diversion Traps. -* diversion, appending (da): Diversions. -* diversion, beginning (di): Diversions. -* diversion, creating alias (als): Strings. -* diversion, ending (di): Diversions. -* diversion, nested: Diversions. -* diversion, removing (rm): Strings. -* diversion, renaming (rn): Strings. -* diversion, stripping final newline: Strings. -* diversion, top-level: Diversions. -* diversion, top-level, and \!: Diversions. -* diversion, top-level, and \?: Diversions. -* diversion, top-level, and bp: Page Control. -* diversion, unformatting (asciify): Diversions. -* diversion, vertical position in, register (.d): Diversions. -* diversions: Diversions. -* diversions, and traps: Page Location Traps. -* diversions, shared name space with macros and strings: Strings. -* dl register, and da (boxa): Diversions. -* dn register, and da (boxa): Diversions. -* documents, multi-file: Debugging. -* documents, structuring the source code: Requests. -* double quote, in a macro argument: Request and Macro Arguments. -* double-spacing (ls) <1>: Manipulating Spacing. -* double-spacing (ls): Basics. -* double-spacing (vs, pvs): Changing Type Sizes. -* drawing a circle (\D'c ...'): Drawing Requests. -* drawing a line (\D'l ...'): Drawing Requests. -* drawing a polygon (\D'p ...'): Drawing Requests. -* drawing a solid circle (\D'C ...'): Drawing Requests. -* drawing a solid ellipse (\D'E ...'): Drawing Requests. -* drawing a solid polygon (\D'P ...'): Drawing Requests. -* drawing a spline (\D'~ ...'): Drawing Requests. -* drawing an arc (\D'a ...'): Drawing Requests. -* drawing an ellipse (\D'e ...'): Drawing Requests. -* drawing horizontal lines (\l): Drawing Requests. -* drawing requests: Drawing Requests. -* drawing vertical lines (\L): Drawing Requests. -* ds request, and comments: Strings. -* ds request, and double quotes: Request and Macro Arguments. -* ds request, and leading spaces: Strings. -* ds, ds1 requests, and comments: Comments. -* ds, ds1 requests, and warnings: Warnings. -* dumping number registers (pnr): Debugging. -* dumping symbol table (pm): Debugging. -* dumping traps (ptr): Debugging. -* EBCDIC encoding: Tab Stops. -* EBCDIC encoding of a tab: Tabs and Fields. -* EBCDIC encoding of backspace: Identifiers. -* EBCDIC, input encoding: Input Encodings. -* EBCDIC, output encoding: Groff Options. -* el request, and warnings: Warnings. -* ellipse, drawing (\D'e ...'): Drawing Requests. -* ellipse, solid, drawing (\D'E ...'): Drawing Requests. -* em glyph, and cflags: Using Symbols. -* em unit (m): Measurements. -* embedded commands: Embedded Commands. -* embedding PostScript: Embedding PostScript. -* embolding of special fonts: Artificial Fonts. -* empty line: Implicit Line Breaks. -* empty line (sp): Basics. -* empty space before a paragraph [man]: Miscellaneous man macros. -* en unit (n): Measurements. -* enabling vertical position traps (vpt): Page Location Traps. -* encoding, EBCDIC: Tab Stops. -* encoding, input, cp1047: Input Encodings. -* encoding, input, EBCDIC: Input Encodings. -* encoding, input, latin-1 (ISO 8859-1): Input Encodings. -* encoding, input, latin-2 (ISO 8859-2): Input Encodings. -* encoding, input, latin-9 (latin-0, ISO 8859-15): Input Encodings. -* encoding, output, ASCII: Groff Options. -* encoding, output, cp1047: Groff Options. -* encoding, output, EBCDIC: Groff Options. -* encoding, output, latin-1 (ISO 8859-1): Groff Options. -* encoding, output, utf-8: Groff Options. -* end of conditional block (\}): if-else. -* end-of-input macro (em): End-of-input Traps. -* end-of-input trap, setting (em): End-of-input Traps. -* end-of-input traps: End-of-input Traps. -* end-of-sentence characters: Using Symbols. -* ending diversion (di): Diversions. -* environment number/name register (.ev): Environments. -* environment variables: Environment. -* environment, copying (evc): Environments. -* environment, dimensions of last glyph (.w, .cht, .cdp, .csk): Environments. -* environment, previous line length (.n): Environments. -* environment, switching (ev): Environments. -* environments: Environments. -* eqn, the program: geqn. -* equations [ms]: ms Insertions. -* escape character, changing (ec): Character Translations. -* escape character, while defining glyph: Using Symbols. -* escapes: Escapes. -* escaping newline characters, in strings: Strings. -* ex request, use in debugging: Debugging. -* ex request, used with nx and rd: I/O. -* example markup, bulleted list [ms]: Lists in ms. -* example markup, glossary-style list [ms]: Lists in ms. -* example markup, multi-page table [ms]: Example multi-page table. -* example markup, numbered list [ms]: Lists in ms. -* example markup, title page: ms Cover Page Macros. -* examples of invocation: Invocation Examples. -* exiting (ex): Debugging. -* expansion of strings (\*): Strings. -* explicit hyphen (\%): Manipulating Hyphenation. -* expression, order of evaluation: Expressions. -* expressions: Expressions. -* expressions, and space characters: Expressions. -* extra post-vertical line space (\x): Changing Type Sizes. -* extra post-vertical line space register (.a): Manipulating Spacing. -* extra pre-vertical line space (\x): Changing Type Sizes. -* extra spaces: Filling and Adjusting. -* extremum operators (>?, : Warnings. -* fill mode <2>: Manipulating Filling and Adjusting. -* fill mode: Implicit Line Breaks. -* fill mode (fi): Manipulating Filling and Adjusting. -* fill mode, and \c: Line Control. -* filling: Filling and Adjusting. -* filling and adjusting, manipulating: Manipulating Filling and Adjusting. -* final newline, stripping in diversions: Strings. -* fl request, causing implicit linebreak: Manipulating Filling and Adjusting. -* floating keep: Displays. -* flush output (fl): Debugging. -* font description file, format <1>: Font File Format. -* font description file, format: DESC File Format. -* font directories: Font Directories. -* font families: Font Families. -* font family, changing (fam, \F): Font Families. -* font file, format: Font File Format. -* font files: Font Files. -* font files, comments: Font File Format. -* font for underlining (uf): Artificial Fonts. -* font height, changing (\H): Artificial Fonts. -* font path: Font Directories. -* font position register (.f): Font Positions. -* font position, changing (\f): Font Positions. -* font positions: Font Positions. -* font selection [man]: Man font macros. -* font slant, changing (\S): Artificial Fonts. -* font style, changing (sty): Font Families. -* font styles: Font Families. -* font, mounting (fp): Font Positions. -* font, previous (ft, \f[], \fP): Changing Fonts. -* fonts <1>: Changing Fonts. -* fonts: Fonts and Symbols. -* fonts, artificial: Artificial Fonts. -* fonts, changing (ft, \f): Changing Fonts. -* fonts, PostScript: Font Families. -* fonts, searching: Font Directories. -* fonts, special: Special Fonts. -* footers <1>: Page Location Traps. -* footers: Page Layout. -* footers [ms]: ms Headers and Footers. -* footnotes: Footnotes and Annotations. -* footnotes [ms]: ms Footnotes. -* form letters: I/O. -* format of font description file: DESC File Format. -* format of font description files: Font File Format. -* format of font files: Font File Format. -* format of register (\g): Assigning Formats. -* formats, assigning (af): Assigning Formats. -* formats, file: File formats. -* fp request, and font translations: Changing Fonts. -* fp request, incompatibilities with AT&T troff: Implementation Differences. -* fractional point sizes <1>: Implementation Differences. -* fractional point sizes: Fractional Type Sizes. -* fractional type sizes <1>: Implementation Differences. -* fractional type sizes: Fractional Type Sizes. -* french-spacing: Sentences. -* fspecial request, and font styles: Font Families. -* fspecial request, and font translations: Changing Fonts. -* fspecial request, and glyph search order: Using Symbols. -* fspecial request, and imitating bold: Artificial Fonts. -* ft request, and font translations: Changing Fonts. -* geqn, invoking: Invoking geqn. -* geqn, the program: geqn. -* GGL (groff glyph list): Using Symbols. -* ggrn, invoking: Invoking ggrn. -* ggrn, the program: ggrn. -* glossary-style list, example markup [ms]: Lists in ms. -* glyph: Using Symbols. -* glyph for line drawing: Drawing Requests. -* glyph names, composite: Using Symbols. -* glyph pile (\b): Drawing Requests. -* glyph properties (cflags): Using Symbols. -* glyph, box rule (\[br]): Drawing Requests. -* glyph, constant space: Artificial Fonts. -* glyph, defining (char): Using Symbols. -* glyph, for line drawing: Drawing Requests. -* glyph, for margins (mc): Miscellaneous. -* glyph, italic correction (\/): Ligatures and Kerning. -* glyph, last, dimensions (.w, .cht, .cdp, .csk): Environments. -* glyph, leader repetition (lc): Leaders. -* glyph, left italic correction (\,): Ligatures and Kerning. -* glyph, numbered (\N) <1>: Using Symbols. -* glyph, numbered (\N): Character Translations. -* glyph, removing definition (rchar, rfschar): Using Symbols. -* glyph, soft hyphen (hy): Manipulating Hyphenation. -* glyph, tab repetition (tc): Tabs and Fields. -* glyph, underscore (\[ru]): Drawing Requests. -* glyphs, available, list (`groff_char(7)' man page): Using Symbols. -* glyphs, output, and input characters, compatibility with AT&T troff: Implementation Differences. -* glyphs, overstriking (\o): Page Motions. -* glyphs, unnamed: Using Symbols. -* glyphs, unnamed, accessing with \N: Font File Format. -* GNU-specific register (.g): Built-in Registers. -* gpic, invoking: Invoking gpic. -* gpic, the program: gpic. -* grap, the program: grap. -* gray shading (\D'f ...'): Drawing Requests. -* grefer, invoking: Invoking grefer. -* grefer, the program: grefer. -* grn, the program: ggrn. -* grodvi, invoking: Invoking grodvi. -* grodvi, the program: grodvi. -* groff - what is it?: What Is groff?. -* groff capabilities: groff Capabilities. -* groff glyph list (GGL): Using Symbols. -* groff invocation: Invoking groff. -* groff, and pi request: I/O. -* GROFF_BIN_PATH, environment variable: Environment. -* GROFF_COMMAND_PREFIX, environment variable: Environment. -* GROFF_FONT_PATH, environment variable <1>: Font Directories. -* GROFF_FONT_PATH, environment variable: Environment. -* GROFF_TMAC_PATH, environment variable <1>: Macro Directories. -* GROFF_TMAC_PATH, environment variable: Environment. -* GROFF_TMPDIR, environment variable: Environment. -* GROFF_TYPESETTER, environment variable: Environment. -* grohtml, invoking: Invoking grohtml. -* grohtml, registers and strings: grohtml specific registers and strings. -* grohtml, the program <1>: grohtml. -* grohtml, the program: Groff Options. -* grolbp, invoking: Invoking grolbp. -* grolbp, the program: grolbp. -* grolj4, invoking: Invoking grolj4. -* grolj4, the program: grolj4. -* grops, invoking: Invoking grops. -* grops, the program: grops. -* grotty, invoking: Invoking grotty. -* grotty, the program: grotty. -* gsoelim, invoking: Invoking gsoelim. -* gsoelim, the program: gsoelim. -* gtbl, invoking: Invoking gtbl. -* gtbl, the program: gtbl. -* gtroff, identification register (.g): Built-in Registers. -* gtroff, interactive use: Debugging. -* gtroff, output: gtroff Output. -* gtroff, process ID register ($$): Built-in Registers. -* gtroff, reference: gtroff Reference. -* gxditview, invoking: Invoking gxditview. -* gxditview, the program: gxditview. -* hanging indentation [man]: Man usage. -* hcode request, and glyph definitions: Using Symbols. -* headers <1>: Page Location Traps. -* headers: Page Layout. -* headers [ms]: ms Headers and Footers. -* height, font, changing (\H): Artificial Fonts. -* height, of last glyph (.cht): Environments. -* high-water mark register (.h): Diversions. -* history: History. -* home directory: Macro Directories. -* horizontal discardable space: Manipulating Filling and Adjusting. -* horizontal input line position register (hp): Page Motions. -* horizontal input line position, saving (\k): Page Motions. -* horizontal line, drawing (\l): Drawing Requests. -* horizontal motion (\h): Page Motions. -* horizontal output line position register (.k): Page Motions. -* horizontal resolution: DESC File Format. -* horizontal resolution register (.H): Built-in Registers. -* horizontal space (\h): Page Motions. -* horizontal space, unformatting: Strings. -* hours, current time (hours): Built-in Registers. -* hpf request, and hyphenation language: Manipulating Hyphenation. -* hw request, and hyphenation language: Manipulating Hyphenation. -* hy glyph, and cflags: Using Symbols. -* hyphen, explicit (\%): Manipulating Hyphenation. -* hyphenated lines, consecutive (hlm): Manipulating Hyphenation. -* hyphenating characters: Using Symbols. -* hyphenation: Hyphenation. -* hyphenation character (\%): Manipulating Hyphenation. -* hyphenation code (hcode): Manipulating Hyphenation. -* hyphenation language register (.hla): Manipulating Hyphenation. -* hyphenation margin (hym): Manipulating Hyphenation. -* hyphenation margin register (.hym): Manipulating Hyphenation. -* hyphenation patterns (hpf): Manipulating Hyphenation. -* hyphenation restrictions register (.hy): Manipulating Hyphenation. -* hyphenation space (hys): Manipulating Hyphenation. -* hyphenation space register (.hys): Manipulating Hyphenation. -* hyphenation, disabling (\%): Manipulating Hyphenation. -* hyphenation, manipulating: Manipulating Hyphenation. -* i unit: Measurements. -* i/o: I/O. -* IBM cp1047 input encoding: Input Encodings. -* IBM cp1047 output encoding: Groff Options. -* identifiers: Identifiers. -* identifiers, undefined: Identifiers. -* ie request, and warnings: Warnings. -* if request, and the ! operator: Expressions. -* if request, operators to use with: Operators in Conditionals. -* if-else: if-else. -* imitating bold face (bd): Artificial Fonts. -* implementation differences: Implementation Differences. -* implicit breaks of lines: Implicit Line Breaks. -* implicit line breaks: Implicit Line Breaks. -* in request, causing implicit linebreak: Manipulating Filling and Adjusting. -* in request, using + and -: Expressions. -* inch unit (i): Measurements. -* including a file (so): I/O. -* incompatibilities with AT&T troff: Implementation Differences. -* increment value without changing the register: Auto-increment. -* increment, automatic: Auto-increment. -* indentaion, resetting to default [man]: Man usage. -* indentation (in): Line Layout. -* index, in macro package: Indices. -* indirect assignments: Interpolating Registers. -* input and output requests: I/O. -* input characters and output glyphs, compatibility with AT&T troff: Implementation Differences. -* input characters, invalid: Identifiers. -* input conventions: Input Conventions. -* input encoding, cp1047: Input Encodings. -* input encoding, EBCDIC: Input Encodings. -* input encoding, latin-1 (ISO 8859-1): Input Encodings. -* input encoding, latin-2 (ISO 8859-2): Input Encodings. -* input encoding, latin-9 (latin-9, ISO 8859-15): Input Encodings. -* input file name, current, register (.F): Built-in Registers. -* input level in delimited arguments: Implementation Differences. -* input line continuation (\): Line Control. -* input line number register (.c, c.): Built-in Registers. -* input line number, setting (lf): Debugging. -* input line position, horizontal, saving (\k): Page Motions. -* input line trap, setting (it): Input Line Traps. -* input line traps: Input Line Traps. -* input line traps and interrupted lines (itc): Input Line Traps. -* input line, horizontal position, register (hp): Page Motions. -* input stack, backtrace (backtrace): Debugging. -* input stack, setting limit: Debugging. -* input token: Gtroff Internals. -* input, 8-bit: Font File Format. -* input, standard, reading from (rd): I/O. -* inserting horizontal space (\h): Page Motions. -* installation: Installation. -* interactive use of gtroff: Debugging. -* intermediate output: gtroff Output. -* interpolating registers (\n): Interpolating Registers. -* interpolation of strings (\*): Strings. -* interrupted line: Line Control. -* interrupted line register (.int): Line Control. -* interrupted lines and input line traps (itc): Input Line Traps. -* introduction: Introduction. -* invalid characters for trf request: I/O. -* invalid input characters: Identifiers. -* invocation examples: Invocation Examples. -* invoking geqn: Invoking geqn. -* invoking ggrn: Invoking ggrn. -* invoking gpic: Invoking gpic. -* invoking grefer: Invoking grefer. -* invoking grodvi: Invoking grodvi. -* invoking groff: Invoking groff. -* invoking grohtml: Invoking grohtml. -* invoking grolbp: Invoking grolbp. -* invoking grolj4: Invoking grolj4. -* invoking grops: Invoking grops. -* invoking grotty: Invoking grotty. -* invoking gsoelim: Invoking gsoelim. -* invoking gtbl: Invoking gtbl. -* invoking gxditview: Invoking gxditview. -* ISO 8859-1 (latin-1), input encoding: Input Encodings. -* ISO 8859-1 (latin-1), output encoding: Groff Options. -* ISO 8859-15 (latin-9, latin-0), input encoding: Input Encodings. -* ISO 8859-2 (latin-2), input encoding: Input Encodings. -* italic correction (\/): Ligatures and Kerning. -* italic fonts [man]: Man font macros. -* italic glyph, correction after roman glyph (\,): Ligatures and Kerning. -* italic glyph, correction before roman glyph (\/): Ligatures and Kerning. -* justifying text: Manipulating Filling and Adjusting. -* justifying text (rj): Manipulating Filling and Adjusting. -* keep: Displays. -* keep, floating: Displays. -* keeps [ms]: ms Displays and Keeps. -* kerning and ligatures: Ligatures and Kerning. -* kerning enabled register (.kern): Ligatures and Kerning. -* kerning, activating (kern): Ligatures and Kerning. -* kerning, track: Ligatures and Kerning. -* landscape page orientation: Paper Size. -* last glyph, dimensions (.w, .cht, .cdp, .csk): Environments. -* last-requested point size registers (.psr, .sr): Fractional Type Sizes. -* latin-1 (ISO 8859-1), input encoding: Input Encodings. -* latin-1 (ISO 8859-1), output encoding: Groff Options. -* latin-2 (ISO 8859-2), input encoding: Input Encodings. -* latin-9 (latin-0, ISO 8859-15), input encoding: Input Encodings. -* layout, line: Line Layout. -* layout, page: Page Layout. -* lc request, and glyph definitions: Using Symbols. -* leader character: Leaders. -* leader character, and translations: Character Translations. -* leader character, non-interpreted (\a): Leaders. -* leader repetition character (lc): Leaders. -* leaders: Leaders. -* leading: Sizes. -* leading spaces: Filling and Adjusting. -* leading spaces with ds: Strings. -* left italic correction (\,): Ligatures and Kerning. -* left margin (po): Line Layout. -* left margin, how to move [man]: Man usage. -* length of a string (length): Strings. -* length of line (ll): Line Layout. -* length of page (pl): Page Layout. -* length of previous line (.n): Environments. -* length of title line (lt): Page Layout. -* letters, form: I/O. -* level of warnings (warn): Debugging. -* ligature: Using Symbols. -* ligatures and kerning: Ligatures and Kerning. -* ligatures enabled register (.lg): Ligatures and Kerning. -* ligatures, activating (lg): Ligatures and Kerning. -* limitations of \b escape: Drawing Requests. -* line break <1>: Manipulating Filling and Adjusting. -* line break <2>: Implicit Line Breaks. -* line break: Basics. -* line break (br): Basics. -* line breaks, with vertical space [man]: Man usage. -* line breaks, without vertical space [man]: Man usage. -* line control: Line Control. -* line dimensions: Line Layout. -* line drawing glyph: Drawing Requests. -* line indentation (in): Line Layout. -* line layout: Line Layout. -* line length (ll): Line Layout. -* line length register (.l): Line Layout. -* line length, previous (.n): Environments. -* line number, input, register (.c, c.): Built-in Registers. -* line number, output, register (ln): Built-in Registers. -* line numbers, printing (nm): Miscellaneous. -* line space, extra post-vertical (\x): Changing Type Sizes. -* line space, extra pre-vertical (\x): Changing Type Sizes. -* line spacing register (.L): Manipulating Spacing. -* line spacing, post-vertical (pvs): Changing Type Sizes. -* line thickness (\D't ...'): Drawing Requests. -* line, blank: Implicit Line Breaks. -* line, drawing (\D'l ...'): Drawing Requests. -* line, empty (sp): Basics. -* line, horizontal, drawing (\l): Drawing Requests. -* line, implicit breaks: Implicit Line Breaks. -* line, input, continuation (\): Line Control. -* line, input, horizontal position, register (hp): Page Motions. -* line, input, horizontal position, saving (\k): Page Motions. -* line, interrupted: Line Control. -* line, output, continuation (\c): Line Control. -* line, output, horizontal position, register (.k): Page Motions. -* line, vertical, drawing (\L): Drawing Requests. -* line-tabs mode: Tabs and Fields. -* lines, blank, disabling: Manipulating Spacing. -* lines, centering (ce) <1>: Manipulating Filling and Adjusting. -* lines, centering (ce): Basics. -* lines, consecutive hyphenated (hlm): Manipulating Hyphenation. -* lines, interrupted, and input line traps (itc): Input Line Traps. -* list: Displays. -* list of available glyphs (`groff_char(7)' man page): Using Symbols. -* ll request, using + and -: Expressions. -* location, vertical, page, marking (mk): Page Motions. -* location, vertical, page, returning to marked (rt): Page Motions. -* logical operators: Expressions. -* long names: Implementation Differences. -* loops and conditionals: Conditionals and Loops. -* lq glyph, and lq string [man]: Predefined man strings. -* ls request, alternative to (pvs): Changing Type Sizes. -* lt request, using + and -: Expressions. -* M unit: Measurements. -* m unit: Measurements. -* machine unit (u): Measurements. -* macro arguments: Request and Macro Arguments. -* macro basics: Basics. -* macro directories: Macro Directories. -* macro files, searching: Macro Directories. -* macro name register (\$0): Parameters. -* macro names, starting with [ or ], and refer: Identifiers. -* macro packages <1>: Macro Packages. -* macro packages: Macro Package Intro. -* macro packages, structuring the source code: Requests. -* macro, appending (am): Writing Macros. -* macro, arguments (\$): Parameters. -* macro, creating alias (als): Strings. -* macro, end-of-input (em): End-of-input Traps. -* macro, removing (rm): Strings. -* macro, renaming (rn): Strings. -* macros: Macros. -* macros for manual pages [man]: Man usage. -* macros, recursive: while. -* macros, searching: Macro Directories. -* macros, shared name space with strings and diversions: Strings. -* macros, tutorial for users: Tutorial for Macro Users. -* macros, writing: Writing Macros. -* major quotes: Displays. -* major version number register (.x): Built-in Registers. -* man macros: Man usage. -* man macros, bold face: Man font macros. -* man macros, custom headers and footers: Optional man extensions. -* man macros, default indentation: Miscellaneous man macros. -* man macros, empty space before a paragraph: Miscellaneous man macros. -* man macros, hanging indentation: Man usage. -* man macros, how to set fonts: Man font macros. -* man macros, italic fonts: Man font macros. -* man macros, line breaks with vertical space: Man usage. -* man macros, line breaks without vertical space: Man usage. -* man macros, moving left margin: Man usage. -* man macros, resetting default indentation: Man usage. -* man macros, tab stops: Miscellaneous man macros. -* man macros, Ultrix-specific: Optional man extensions. -* man pages: man. -* manipulating filling and adjusting: Manipulating Filling and Adjusting. -* manipulating hyphenation: Manipulating Hyphenation. -* manipulating spacing: Manipulating Spacing. -* manmacros, BSD compatibility: Miscellaneous man macros. -* manual pages: man. -* margin for hyphenation (hym): Manipulating Hyphenation. -* margin glyph (mc): Miscellaneous. -* margin, bottom: Page Layout. -* margin, left (po): Line Layout. -* margin, top: Page Layout. -* mark, high-water, register (.h): Diversions. -* marking vertical page location (mk): Page Motions. -* maximum values of Roman numerals: Assigning Formats. -* mdoc macros: mdoc. -* me macro package: me. -* measurement unit: Measurements. -* measurements: Measurements. -* measurements, specifying safely: Default Units. -* minimum values of Roman numerals: Assigning Formats. -* minor version number register (.y): Built-in Registers. -* minutes, current time (minutes): Built-in Registers. -* mm macro package: mm. -* mode for constant glyph space (cs): Artificial Fonts. -* mode, compatibility: Implementation Differences. -* mode, copy-in: Copy-in Mode. -* mode, copy-in, and write requests: I/O. -* mode, fill <1>: Warnings. -* mode, fill <2>: Manipulating Filling and Adjusting. -* mode, fill: Implicit Line Breaks. -* mode, fill (fi): Manipulating Filling and Adjusting. -* mode, fill, and \c: Line Control. -* mode, line-tabs: Tabs and Fields. -* mode, no-fill (nf): Manipulating Filling and Adjusting. -* mode, no-fill, and \c: Line Control. -* mode, no-space (ns): Manipulating Spacing. -* mode, nroff: Troff and Nroff Mode. -* mode, safer <1>: I/O. -* mode, safer <2>: Macro Directories. -* mode, safer: Groff Options. -* mode, troff: Troff and Nroff Mode. -* mode, unsafe <1>: I/O. -* mode, unsafe <2>: Macro Directories. -* mode, unsafe: Groff Options. -* month of the year register (mo): Built-in Registers. -* motion operators: Expressions. -* motion, horizontal (\h): Page Motions. -* motion, vertical (\v): Page Motions. -* motions, page: Page Motions. -* mounting font (fp): Font Positions. -* ms macros: ms. -* ms macros, accent marks: ms Strings and Special Characters. -* ms macros, body text: ms Body Text. -* ms macros, cover page: ms Cover Page Macros. -* ms macros, creating table of contents: ms TOC. -* ms macros, differences from AT&T: Differences from AT&T ms. -* ms macros, displays: ms Displays and Keeps. -* ms macros, document control registers: ms Document Control Registers. -* ms macros, equations: ms Insertions. -* ms macros, figures: ms Insertions. -* ms macros, footers: ms Headers and Footers. -* ms macros, footnotes: ms Footnotes. -* ms macros, general structure: General ms Structure. -* ms macros, headers: ms Headers and Footers. -* ms macros, headings: Headings in ms. -* ms macros, highlighting: Highlighting in ms. -* ms macros, keeps: ms Displays and Keeps. -* ms macros, lists: Lists in ms. -* ms macros, margins: ms Margins. -* ms macros, multiple columns: ms Multiple Columns. -* ms macros, nested lists: Lists in ms. -* ms macros, page layout: ms Page Layout. -* ms macros, paragraph handling: Paragraphs in ms. -* ms macros, references: ms Insertions. -* ms macros, special characters: ms Strings and Special Characters. -* ms macros, strings: ms Strings and Special Characters. -* ms macros, tables: ms Insertions. -* multi-file documents: Debugging. -* multi-line strings: Strings. -* multi-page table, example markup [ms]: Example multi-page table. -* multiple columns [ms]: ms Multiple Columns. -* n unit: Measurements. -* name space, common, of macros, diversions, and strings: Strings. -* named character (\C): Using Symbols. -* names, long: Implementation Differences. -* ne request, and the .trunc register: Page Location Traps. -* ne request, comparison with sv: Page Control. -* negating register values: Setting Registers. -* nested assignments: Interpolating Registers. -* nested diversions: Diversions. -* nested lists [ms]: Lists in ms. -* new page (bp) <1>: Page Control. -* new page (bp): Basics. -* newline character <1>: Escapes. -* newline character: Identifiers. -* newline character, and translations: Character Translations. -* newline character, in strings, escaping: Strings. -* newline, final, stripping in diversions: Strings. -* next file, processing (nx): I/O. -* next free font position register (.fp): Font Positions. -* nf request, causing implicit linebreak: Manipulating Filling and Adjusting. -* nl register, and .d: Diversions. -* nl register, difference to .h: Diversions. -* nm request, using + and -: Expressions. -* no-break control character ('): Requests. -* no-break control character, changing (c2): Character Translations. -* no-fill mode (nf): Manipulating Filling and Adjusting. -* no-fill mode, and \c: Line Control. -* no-space mode (ns): Manipulating Spacing. -* node, output: Gtroff Internals. -* nr request, and warnings: Warnings. -* nr request, using + and -: Expressions. -* nroff mode: Troff and Nroff Mode. -* nroff, the program: History. -* number of arguments register (.$): Parameters. -* number register, creating alias (aln): Setting Registers. -* number register, removing (rr): Setting Registers. -* number register, renaming (rnn): Setting Registers. -* number registers, dumping (pnr): Debugging. -* number, input line, setting (lf): Debugging. -* number, page (pn): Page Layout. -* numbered glyph (\N) <1>: Using Symbols. -* numbered glyph (\N): Character Translations. -* numbered list, example markup [ms]: Lists in ms. -* numbers, and delimiters: Escapes. -* numbers, line, printing (nm): Miscellaneous. -* numerals, Roman: Assigning Formats. -* numeric expression, valid: Expressions. -* offset, page (po): Line Layout. -* open request, and safer mode: Groff Options. -* opena request, and safer mode: Groff Options. -* opening file (open): I/O. -* operator, scaling: Expressions. -* operators, arithmetic: Expressions. -* operators, as delimiters: Escapes. -* operators, comparison: Expressions. -* operators, extremum (>?, : Built-in Registers. -* output device name string register (.T): Groff Options. -* output device usage number register (.T): Groff Options. -* output devices <1>: Output Devices. -* output devices: Output device intro. -* output encoding, ASCII: Groff Options. -* output encoding, cp1047: Groff Options. -* output encoding, EBCDIC: Groff Options. -* output encoding, latin-1 (ISO 8859-1): Groff Options. -* output encoding, utf-8: Groff Options. -* output glyphs, and input characters,compatibility with AT&T troff: Implementation Differences. -* output line number register (ln): Built-in Registers. -* output line, continuation (\c): Line Control. -* output line, horizontal position, register (.k): Page Motions. -* output node: Gtroff Internals. -* output request, and \!: Diversions. -* output, flush (fl): Debugging. -* output, gtroff: gtroff Output. -* output, intermediate: gtroff Output. -* output, suppressing (\O): Suppressing output. -* output, transparent (\!, \?): Diversions. -* output, transparent (cf, trf): I/O. -* output, transparent, incompatibilities with AT&T troff: Implementation Differences. -* output, troff: gtroff Output. -* overlapping characters: Using Symbols. -* overstriking glyphs (\o): Page Motions. -* P unit: Measurements. -* p unit: Measurements. -* packages, macros: Macro Packages. -* padding character, for fields (fc): Fields. -* page break, conditional (ne): Page Control. -* page control: Page Control. -* page ejecting register (.pe): Page Location Traps. -* page footers: Page Location Traps. -* page headers: Page Location Traps. -* page layout: Page Layout. -* page layout [ms]: ms Page Layout. -* page length (pl): Page Layout. -* page length register (.p): Page Layout. -* page location traps: Page Location Traps. -* page location, vertical, marking (mk): Page Motions. -* page location, vertical, returning to marked (rt): Page Motions. -* page motions: Page Motions. -* page number (pn): Page Layout. -* page number character (%): Page Layout. -* page number character, changing (pc): Page Layout. -* page number register (%): Page Layout. -* page offset (po): Line Layout. -* page orientation, landscape: Paper Size. -* page, new (bp): Page Control. -* paper formats: Paper Formats. -* paper size: Paper Size. -* paragraphs: Paragraphs. -* parameters: Parameters. -* parentheses: Expressions. -* path, for font files: Font Directories. -* path, for tmac files: Macro Directories. -* patterns for hyphenation (hpf): Manipulating Hyphenation. -* pi request, and groff: I/O. -* pi request, and safer mode: Groff Options. -* pic, the program: gpic. -* pica unit (P): Measurements. -* pile, glyph (\b): Drawing Requests. -* pl request, using + and -: Expressions. -* planting a trap: Traps. -* platform-specific directory: Macro Directories. -* pn request, using + and -: Expressions. -* po request, using + and -: Expressions. -* point size registers (.s, .ps): Changing Type Sizes. -* point size registers, last-requested (.psr, .sr): Fractional Type Sizes. -* point sizes, changing (ps, \s): Changing Type Sizes. -* point sizes, fractional <1>: Implementation Differences. -* point sizes, fractional: Fractional Type Sizes. -* point unit (p): Measurements. -* polygon, drawing (\D'p ...'): Drawing Requests. -* polygon, solid, drawing (\D'P ...'): Drawing Requests. -* position of lowest text line (.h): Diversions. -* position, absolute, operator (|): Expressions. -* position, horizontal input line, saving (\k): Page Motions. -* position, horizontal, in input line, register (hp): Page Motions. -* position, horizontal, in output line, register (.k): Page Motions. -* position, vertical, in diversion, register (.d): Diversions. -* positions, font: Font Positions. -* post-vertical line spacing: Changing Type Sizes. -* post-vertical line spacing register (.pvs): Changing Type Sizes. -* post-vertical line spacing, changing (pvs): Changing Type Sizes. -* postprocessor access: Postprocessor Access. -* postprocessors: Output device intro. -* PostScript fonts: Font Families. -* PostScript, bounding box: Miscellaneous. -* PostScript, embedding: Embedding PostScript. -* prefix, for commands: Environment. -* preprocessor, calling convention: Preprocessors in man pages. -* preprocessors <1>: Preprocessors. -* preprocessors: Preprocessor Intro. -* previous font (ft, \f[], \fP): Changing Fonts. -* previous line length (.n): Environments. -* print current page register (.P): Groff Options. -* printing backslash (\\, \e, \E, \[rs]) <1>: Implementation Differences. -* printing backslash (\\, \e, \E, \[rs]): Escapes. -* printing line numbers (nm): Miscellaneous. -* printing to stderr (tm, tm1, tmc): Debugging. -* printing, zero-width (\z, \Z): Page Motions. -* process ID of gtroff register ($$): Built-in Registers. -* processing next file (nx): I/O. -* properties of characters (cflags): Using Symbols. -* properties of glyphs (cflags): Using Symbols. -* ps request, and constant glyph space mode: Artificial Fonts. -* ps request, incompatibilities with AT&T troff: Implementation Differences. -* ps request, using + and -: Expressions. -* ps request, with fractional type sizes: Fractional Type Sizes. -* pso request, and safer mode: Groff Options. -* pvs request, using + and -: Expressions. -* quotes, major: Displays. -* quotes, trailing: Strings. -* radicalex glyph, and cflags: Using Symbols. -* ragged-left: Manipulating Filling and Adjusting. -* ragged-right: Manipulating Filling and Adjusting. -* rc request, and glyph definitions: Using Symbols. -* read-only register, changing format: Assigning Formats. -* reading from standard input (rd): I/O. -* recursive macros: while. -* refer, and macro names starting with [ or ]: Identifiers. -* refer, the program: grefer. -* reference, gtroff: gtroff Reference. -* references [ms]: ms Insertions. -* register, creating alias (aln): Setting Registers. -* register, format (\g): Assigning Formats. -* register, removing (rr): Setting Registers. -* register, renaming (rnn): Setting Registers. -* registers: Registers. -* registers specific to grohtml: grohtml specific registers and strings. -* registers, built-in: Built-in Registers. -* registers, interpolating (\n): Interpolating Registers. -* registers, setting (nr, \R): Setting Registers. -* removing diversion (rm): Strings. -* removing glyph definition (rchar, rfschar): Using Symbols. -* removing macro (rm): Strings. -* removing number register (rr): Setting Registers. -* removing request (rm): Strings. -* removing string (rm): Strings. -* renaming diversion (rn): Strings. -* renaming macro (rn): Strings. -* renaming number register (rnn): Setting Registers. -* renaming request (rn): Strings. -* renaming string (rn): Strings. -* request arguments: Request and Macro Arguments. -* request, removing (rm): Strings. -* request, renaming (rn): Strings. -* request, undefined: Comments. -* requests: Requests. -* requests for drawing: Drawing Requests. -* requests for input and output: I/O. -* resolution, device: DESC File Format. -* resolution, horizontal: DESC File Format. -* resolution, horizontal, register (.H): Built-in Registers. -* resolution, vertical: DESC File Format. -* resolution, vertical, register (.V): Built-in Registers. -* returning to marked vertical page location (rt): Page Motions. -* revision number register (.Y): Built-in Registers. -* rf, the program: History. -* right-justifying (rj): Manipulating Filling and Adjusting. -* rj request, causing implicit linebreak: Manipulating Filling and Adjusting. -* rn glyph, and cflags: Using Symbols. -* roff, the program: History. -* roman glyph, correction after italic glyph (\/): Ligatures and Kerning. -* roman glyph, correction before italic glyph (\,): Ligatures and Kerning. -* Roman numerals: Assigning Formats. -* Roman numerals, maximum and minimum: Assigning Formats. -* rq glyph, and rq string [man]: Predefined man strings. -* rq glyph, at end of sentence <1>: Using Symbols. -* rq glyph, at end of sentence: Sentences. -* rt request, using + and -: Expressions. -* ru glyph, and cflags: Using Symbols. -* runoff, the program: History. -* s unit <1>: Fractional Type Sizes. -* s unit: Measurements. -* safer mode <1>: I/O. -* safer mode <2>: Macro Directories. -* safer mode: Groff Options. -* saving horizontal input line position (\k): Page Motions. -* scaling operator: Expressions. -* searching fonts: Font Directories. -* searching macro files: Macro Directories. -* searching macros: Macro Directories. -* seconds, current time (seconds): Built-in Registers. -* sentence space: Sentences. -* sentence space size register (.sss): Manipulating Filling and Adjusting. -* sentences: Sentences. -* setting diversion trap (dt): Diversion Traps. -* setting end-of-input trap (em): End-of-input Traps. -* setting input line number (lf): Debugging. -* setting input line trap (it): Input Line Traps. -* setting registers (nr, \R): Setting Registers. -* shading filled objects (\D'f ...'): Drawing Requests. -* shc request, and translations: Character Translations. -* site-specific directory <1>: Font Directories. -* site-specific directory: Macro Directories. -* size of sentence space register (.sss): Manipulating Filling and Adjusting. -* size of type: Sizes. -* size of word space register (.ss): Manipulating Filling and Adjusting. -* size, paper: Paper Size. -* sizes: Sizes. -* sizes, fractional <1>: Implementation Differences. -* sizes, fractional: Fractional Type Sizes. -* skew, of last glyph (.csk): Environments. -* slant, font, changing (\S): Artificial Fonts. -* soelim, the program: gsoelim. -* soft hyphen character, setting (shc): Manipulating Hyphenation. -* soft hyphen glyph (hy): Manipulating Hyphenation. -* solid circle, drawing (\D'C ...'): Drawing Requests. -* solid ellipse, drawing (\D'E ...'): Drawing Requests. -* solid polygon, drawing (\D'P ...'): Drawing Requests. -* sp request, and no-space mode: Manipulating Spacing. -* sp request, and traps: Manipulating Spacing. -* sp request, causing implicit linebreak: Manipulating Filling and Adjusting. -* space between sentences: Sentences. -* space between sentences register (.sss): Manipulating Filling and Adjusting. -* space between words register (.ss): Manipulating Filling and Adjusting. -* space character: Escapes. -* space character, zero width (\&) <1>: Drawing Requests. -* space character, zero width (\&) <2>: Ligatures and Kerning. -* space character, zero width (\&): Requests. -* space characters, in expressions: Expressions. -* space, discardable, horizontal: Manipulating Filling and Adjusting. -* space, discarded, in traps: Manipulating Spacing. -* space, horizontal (\h): Page Motions. -* space, horizontal, unformatting: Strings. -* space, unbreakable: Page Motions. -* space, vertical, unit (v): Measurements. -* space, width of a digit (\0): Page Motions. -* spaces with ds: Strings. -* spaces, in a macro argument: Request and Macro Arguments. -* spaces, leading and trailing: Filling and Adjusting. -* spacing: Basics. -* spacing, manipulating: Manipulating Spacing. -* spacing, vertical: Sizes. -* special characters <1>: Special Characters. -* special characters: Character Translations. -* special characters [ms]: ms Strings and Special Characters. -* special fonts <1>: Font File Format. -* special fonts <2>: Special Fonts. -* special fonts: Using Symbols. -* special fonts, emboldening: Artificial Fonts. -* special request, and font translations: Changing Fonts. -* special request, and glyph search order: Using Symbols. -* spline, drawing (\D'~ ...'): Drawing Requests. -* springing a trap: Traps. -* sqrtex glyph, and cflags: Using Symbols. -* stacking glyphs (\b): Drawing Requests. -* standard input, reading from (rd): I/O. -* stderr, printing to (tm, tm1, tmc): Debugging. -* stops, tabulator: Tab Stops. -* string arguments: Strings. -* string expansion (\*): Strings. -* string interpolation (\*): Strings. -* string, appending (as): Strings. -* string, creating alias (als): Strings. -* string, length of (length): Strings. -* string, removing (rm): Strings. -* string, renaming (rn): Strings. -* strings: Strings. -* strings [ms]: ms Strings and Special Characters. -* strings specific to grohtml: grohtml specific registers and strings. -* strings, multi-line: Strings. -* strings, shared name space with macros and diversions: Strings. -* stripping final newline in diversions: Strings. -* structuring source code of documents or macro packages: Requests. -* sty request, and changing fonts: Changing Fonts. -* sty request, and font positions: Font Positions. -* sty request, and font translations: Changing Fonts. -* styles, font: Font Families. -* substring (substring): Strings. -* suppressing output (\O): Suppressing output. -* sv request, and no-space mode: Page Control. -* switching environments (ev): Environments. -* sy request, and safer mode: Groff Options. -* symbol: Using Symbols. -* symbol table, dumping (pm): Debugging. -* symbol, defining (char): Using Symbols. -* symbols, using: Using Symbols. -* system() return value register (systat): I/O. -* tab character <1>: Escapes. -* tab character: Tab Stops. -* tab character, and translations: Character Translations. -* tab character, non-interpreted (\t): Tabs and Fields. -* tab repetition character (tc): Tabs and Fields. -* tab settings register (.tabs): Tabs and Fields. -* tab stops: Tab Stops. -* tab stops [man]: Miscellaneous man macros. -* tab stops, for TTY output devices: Tabs and Fields. -* tab, line-tabs mode: Tabs and Fields. -* table of contents <1>: Leaders. -* table of contents: Table of Contents. -* table of contents, creating [ms]: ms TOC. -* tables [ms]: ms Insertions. -* tabs, and fields: Tabs and Fields. -* tabs, before comments: Comments. -* tbl, the program: gtbl. -* text line, position of lowest (.h): Diversions. -* text, gtroff processing: Text. -* text, justifying: Manipulating Filling and Adjusting. -* text, justifying (rj): Manipulating Filling and Adjusting. -* thickness of lines (\D't ...'): Drawing Requests. -* three-part title (tl): Page Layout. -* ti request, causing implicit linebreak: Manipulating Filling and Adjusting. -* ti request, using + and -: Expressions. -* time, current: I/O. -* time, current, hours (hours): Built-in Registers. -* time, current, minutes (minutes): Built-in Registers. -* time, current, seconds (seconds): Built-in Registers. -* title line (tl): Page Layout. -* title line length register (.lt): Page Layout. -* title line, length (lt): Page Layout. -* title page, example markup: ms Cover Page Macros. -* titles: Page Layout. -* tkf request, and font styles: Font Families. -* tkf request, and font translations: Changing Fonts. -* tkf request, with fractional type sizes: Fractional Type Sizes. -* tl request, and mc: Miscellaneous. -* tmac, directory: Macro Directories. -* tmac, path: Macro Directories. -* TMPDIR, environment variable: Environment. -* token, input: Gtroff Internals. -* top margin: Page Layout. -* top-level diversion: Diversions. -* top-level diversion, and \!: Diversions. -* top-level diversion, and \?: Diversions. -* top-level diversion, and bp: Page Control. -* tr request, and glyph definitions: Using Symbols. -* tr request, and soft hyphen character: Manipulating Hyphenation. -* tr request, incompatibilities with AT&T troff: Implementation Differences. -* track kerning: Ligatures and Kerning. -* track kerning, activating (tkf): Ligatures and Kerning. -* trailing quotes: Strings. -* trailing spaces: Filling and Adjusting. -* translations of characters: Character Translations. -* transparent characters <1>: Using Symbols. -* transparent characters: Sentences. -* transparent output (\!, \?): Diversions. -* transparent output (cf, trf): I/O. -* transparent output, incompatibilities with AT&T troff: Implementation Differences. -* trap, changing location (ch): Page Location Traps. -* trap, distance, register (.t): Page Location Traps. -* trap, diversion, setting (dt): Diversion Traps. -* trap, end-of-input, setting (em): End-of-input Traps. -* trap, input line, setting (it): Input Line Traps. -* trap, planting: Traps. -* trap, springing: Traps. -* traps: Traps. -* traps, and discarded space: Manipulating Spacing. -* traps, and diversions: Page Location Traps. -* traps, blank line: Blank Line Traps. -* traps, diversion: Diversion Traps. -* traps, dumping (ptr): Debugging. -* traps, end-of-input: End-of-input Traps. -* traps, input line: Input Line Traps. -* traps, input line, and interrupted lines (itc): Input Line Traps. -* traps, page location: Page Location Traps. -* traps, sprung by bp request (.pe): Page Location Traps. -* trf request, and invalid characters: I/O. -* trf request, causing implicit linebreak: Manipulating Filling and Adjusting. -* trin request, and asciify: Diversions. -* troff mode: Troff and Nroff Mode. -* troff output: gtroff Output. -* truncated vertical space register (.trunc): Page Location Traps. -* tutorial for macro users: Tutorial for Macro Users. -* type size: Sizes. -* type size registers (.s, .ps): Changing Type Sizes. -* type sizes, changing (ps, \s): Changing Type Sizes. -* type sizes, fractional <1>: Implementation Differences. -* type sizes, fractional: Fractional Type Sizes. -* u unit: Measurements. -* uf request, and font styles: Font Families. -* ul glyph, and cflags: Using Symbols. -* ul request, and font translations: Changing Fonts. -* Ultrix-specific man macros: Optional man extensions. -* unary operators: Expressions. -* unbreakable space: Page Motions. -* undefined identifiers: Identifiers. -* undefined request: Comments. -* underline font (uf): Artificial Fonts. -* underlining (ul): Artificial Fonts. -* underlining, continuous (cu): Artificial Fonts. -* underscore glyph (\[ru]): Drawing Requests. -* unformatting diversions (asciify): Diversions. -* unformatting horizontal space: Strings. -* Unicode <1>: Using Symbols. -* Unicode: Identifiers. -* unit, c: Measurements. -* unit, f: Measurements. -* unit, f, and colors: Colors. -* unit, i: Measurements. -* unit, M: Measurements. -* unit, m: Measurements. -* unit, n: Measurements. -* unit, P: Measurements. -* unit, p: Measurements. -* unit, s <1>: Fractional Type Sizes. -* unit, s: Measurements. -* unit, u: Measurements. -* unit, v: Measurements. -* unit, z <1>: Fractional Type Sizes. -* unit, z: Measurements. -* units of measurement: Measurements. -* units, default: Default Units. -* unnamed fill colors (\D'F...'): Drawing Requests. -* unnamed glyphs: Using Symbols. -* unnamed glyphs, accessing with \N: Font File Format. -* unsafe mode <1>: I/O. -* unsafe mode <2>: Macro Directories. -* unsafe mode: Groff Options. -* user's macro tutorial: Tutorial for Macro Users. -* user's tutorial for macros: Tutorial for Macro Users. -* using symbols: Using Symbols. -* utf-8, output encoding: Groff Options. -* v unit: Measurements. -* valid numeric expression: Expressions. -* value, incrementing without changing the register: Auto-increment. -* variables in environment: Environment. -* version number, major, register (.x): Built-in Registers. -* version number, minor, register (.y): Built-in Registers. -* vertical line drawing (\L): Drawing Requests. -* vertical line spacing register (.v): Changing Type Sizes. -* vertical line spacing, changing (vs): Changing Type Sizes. -* vertical line spacing, effective value: Changing Type Sizes. -* vertical motion (\v): Page Motions. -* vertical page location, marking (mk): Page Motions. -* vertical page location, returning to marked (rt): Page Motions. -* vertical position in diversion register (.d): Diversions. -* vertical position trap enable register (.vpt): Page Location Traps. -* vertical position traps, enabling (vpt): Page Location Traps. -* vertical resolution: DESC File Format. -* vertical resolution register (.V): Built-in Registers. -* vertical space unit (v): Measurements. -* vertical spacing: Sizes. -* warnings <1>: Warnings. -* warnings: Debugging. -* warnings, level (warn): Debugging. -* what is groff?: What Is groff?. -* while: while. -* while request, and the ! operator: Expressions. -* while request, confusing with br: while. -* while request, operators to use with: Operators in Conditionals. -* whitespace characters: Identifiers. -* width escape (\w): Page Motions. -* width, of last glyph (.w): Environments. -* word space size register (.ss): Manipulating Filling and Adjusting. -* writing macros: Writing Macros. -* writing to file (write): I/O. -* year, current, register (year, yr): Built-in Registers. -* z unit <1>: Fractional Type Sizes. -* z unit: Measurements. -* zero width space character (\&) <1>: Drawing Requests. -* zero width space character (\&) <2>: Ligatures and Kerning. -* zero width space character (\&): Requests. -* zero-width printing (\z, \Z): Page Motions. -* |, and page motion: Expressions. - - diff --git a/contrib/groff/doc/groff-4 b/contrib/groff/doc/groff-4 deleted file mode 100644 index 7591d12..0000000 --- a/contrib/groff/doc/groff-4 +++ /dev/null @@ -1,1406 +0,0 @@ -This is groff, produced by makeinfo version 4.3d from ./groff.texinfo. - -This manual documents GNU `troff' version 1.19. - - Copyright (C) 1994-2000, 2001, 2002, 2003 Free Software Foundation, -Inc. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being `A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - `GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: `You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -INFO-DIR-SECTION Typesetting -START-INFO-DIR-ENTRY -* Groff: (groff). The GNU troff document formatting system. -END-INFO-DIR-ENTRY - - -File: groff, Node: Manipulating Filling and Adjusting, Next: Manipulating Hyphenation, Prev: Registers, Up: gtroff Reference - -Manipulating Filling and Adjusting -================================== - - Various ways of causing "breaks" were given in *Note Implicit Line -Breaks::. The `br' request likewise causes a break. Several other -requests also cause breaks, but implicitly. These are `bp', `ce', -`cf', `fi', `fl', `in', `nf', `rj', `sp', `ti', and `trf'. - - - Request: .br - Break the current line, i.e., the input collected so far is emitted - without adjustment. - - If the no-break control character is used, `gtroff' suppresses the - break: - - - a - 'br - b - => a b - - - Initially, `gtroff' fills and adjusts text to both margins. Filling -can be disabled via the `nf' request and re-enabled with the `fi' -request. - - - Request: .fi - - Register: \n[.u] - Activate fill mode (which is the default). This request implicitly - enables adjusting; it also inserts a break in the text currently - being filled. The read-only number register `.u' is set to 1. - - The fill mode status is associated with the current environment - (*note Environments::). - - See *Note Line Control::, for interaction with the `\c' escape. - - - Request: .nf - Activate no-fill mode. Input lines are output as-is, retaining - line breaks and ignoring the current line length. This command - implicitly disables adjusting; it also causes a break. The number - register `.u' is set to 0. - - The fill mode status is associated with the current environment - (*note Environments::). - - See *Note Line Control::, for interaction with the `\c' escape. - - - Request: .ad [mode] - - Register: \n[.j] - Set adjusting mode. - - Activation and deactivation of adjusting is done implicitly with - calls to the `fi' or `nf' requests. - - MODE can have one of the following values: - - `l' - Adjust text to the left margin. This produces what is - traditionally called ragged-right text. - - `r' - Adjust text to the right margin, producing ragged-left text. - - `c' - Center filled text. This is different to the `ce' request - which only centers text without filling. - - `b' - `n' - Justify to both margins. This is the default used by - `gtroff'. - - Finally, MODE can be the numeric argument returned by the `.j' - register. - - With no argument, `gtroff' adjusts lines in the same way it did - before adjusting was deactivated (with a call to `na', for - example). - - - text - .ad r - .nr ad \n[.j] - text - .ad c - text - .na - text - .ad \" back to centering - text - .ad \n[ad] \" back to right justifying - - The current adjustment mode is available in the read-only number - register `.j'; it can be stored and subsequently used to set - adjustment. - - The adjustment mode status is associated with the current - environment (*note Environments::). - - - Request: .na - Disable adjusting. This request won't change the current - adjustment mode: A subsequent call to `ad' uses the previous - adjustment setting. - - The adjustment mode status is associated with the current - environment (*note Environments::). - - - Request: .brp - - Escape: \p - Adjust the current line and cause a break. - - In most cases this produces very ugly results since `gtroff' - doesn't have a sophisticated paragraph building algorithm (as TeX - have, for example); instead, `gtroff' fills and adjusts a paragraph - line by line: - - - This is an uninteresting sentence. - This is an uninteresting sentence.\p - This is an uninteresting sentence. - - is formatted as - - - This is an uninteresting sentence. This is an - uninteresting sentence. - This is an uninteresting sentence. - - - - Request: .ss word_space_size [sentence_space_size] - - Register: \n[.ss] - - Register: \n[.sss] - Change the size of a space between words. It takes its units as - one twelfth of the space width parameter for the current font. - Initially both the WORD_SPACE_SIZE and SENTENCE_SPACE_SIZE are 12. - In fill mode, the values specify the minimum distance. - - If two arguments are given to the `ss' request, the second - argument sets the sentence space size. If the second argument is - not given, sentence space size is set to WORD_SPACE_SIZE. The - sentence space size is used in two circumstances: If the end of a - sentence occurs at the end of a line in fill mode, then both an - inter-word space and a sentence space are added; if two spaces - follow the end of a sentence in the middle of a line, then the - second space is a sentence space. If a second argument is never - given to the `ss' request, the behaviour of UNIX `troff' is the - same as that exhibited by GNU `troff'. In GNU `troff', as in UNIX - `troff', a sentence should always be followed by either a newline - or two spaces. - - The read-only number registers `.ss' and `.sss' hold the values of - the parameters set by the first and second arguments of the `ss' - request. - - The word space and sentence space values are associated with the - current environment (*note Environments::). - - Contrary to AT&T `troff', this request is _not_ ignored if a TTY - output device is used; the given values are then rounded down to a - multiple of 12 (*note Implementation Differences::). - - The request is ignored if there is no parameter. - - Another useful application of the `ss' request is to insert - discardable horizontal space, i.e., space which is discarded at a - line break. For example, paragraph-style footnotes could be - separated this way: - - - .ll 4.5i - 1.\ This is the first footnote.\c - .ss 48 - .nop - .ss 12 - 2.\ This is the second footnote. - - The result: - - - 1. This is the first footnote. 2. This - is the second footnote. - - Note that the `\h' escape produces unbreakable space. - - - Request: .ce [nnn] - - Register: \n[.ce] - Center text. While the `.ad c' request also centers text, it - fills the text as well. `ce' does not fill the text it affects. - This request causes a break. The number of lines still to be - centered is associated with the current environment (*note - Environments::). - - The following example demonstrates the differences. Here the - input: - - - .ll 4i - .ce 1000 - This is a small text fragment which shows the differences - between the `.ce' and the `.ad c' request. - .ce 0 - - .ad c - This is a small text fragment which shows the differences - between the `.ce' and the `.ad c' request. - - And here the result: - - - This is a small text fragment which - shows the differences - between the `.ce' and the `.ad c' request. - - This is a small text fragment which - shows the differences between the `.ce' - and the `.ad c' request. - - With no arguments, `ce' centers the next line of text. NNN - specifies the number of lines to be centered. If the argument is - zero or negative, centering is disabled. - - The basic length for centering text is the line length (as set - with the `ll' request) minus the indentation (as set with the `in' - request). Temporary indentation is ignored. - - As can be seen in the previous example, it is a common idiom to - turn on centering for a large number of lines, and to turn off - centering after text to be centered. This is useful for any - request which takes a number of lines as an argument. - - The `.ce' read-only number register contains the number of lines - remaining to be centered, as set by the `ce' request. - - - Request: .rj [nnn] - - Register: \n[.rj] - Justify unfilled text to the right margin. Arguments are - identical to the `ce' request. The `.rj' read-only number - register is the number of lines to be right-justified as set by - the `rj' request. This request causes a break. The number of - lines still to be right-justified is associated with the current - environment (*note Environments::). - - -File: groff, Node: Manipulating Hyphenation, Next: Manipulating Spacing, Prev: Manipulating Filling and Adjusting, Up: gtroff Reference - -Manipulating Hyphenation -======================== - - As discussed in *Note Hyphenation::, `gtroff' hyphenates words. -There are a number of ways to influence hyphenation. - - - Request: .hy [mode] - - Register: \n[.hy] - Enable hyphenation. The request has an optional numeric argument, - MODE, to restrict hyphenation if necessary: - - `1' - The default argument if MODE is omitted. Hyphenate without - restrictions. This is also the start-up value of `gtroff'. - - `2' - Do not hyphenate the last word on a page or column. - - `4' - Do not hyphenate the last two characters of a word. - - `8' - Do not hyphenate the first two characters of a word. - - Values in the previous table are additive. For example, the - value 12 causes `gtroff' to neither hyphenate the last two nor the - first two characters of a word. - - The current hyphenation restrictions can be found in the read-only - number register `.hy'. - - The hyphenation mode is associated with the current environment - (*note Environments::). - - - Request: .nh - Disable hyphenation (i.e., set the hyphenation mode to zero). Note - that the hyphenation mode of the last call to `hy' is not - remembered. - - The hyphenation mode is associated with the current environment - (*note Environments::). - - - Request: .hlm [nnn] - - Register: \n[.hlm] - - Register: \n[.hlc] - Set the maximum number of consecutive hyphenated lines to NNN. If - this number is negative, there is no maximum. The default value - is -1 if NNN is omitted. This value is associated with the - current environment (*note Environments::). Only lines output - from a given environment count towards the maximum associated with - that environment. Hyphens resulting from `\%' are counted; - explicit hyphens are not. - - The current setting of `hlm' is available in the `.hlm' read-only - number register. Also the number of immediately preceding - consecutive hyphenated lines are available in the read-only number - register `.hlc'. - - - Request: .hw word1 word2 ... - Define how WORD1, WORD2, etc. are to be hyphenated. The words - must be given with hyphens at the hyphenation points. For example: - - - .hw in-sa-lub-rious - - Besides the space character, any character whose hyphenation code - value is zero can be used to separate the arguments of `hw' (see - the documentation for the `hcode' request below for more - information). In addition, this request can be used more than - once. - - Hyphenation exceptions specified with the `hw' request are - associated with the current hyphenation language; it causes an - error if there is no current hyphenation language. - - This request is ignored if there is no parameter. - - In old versions of `troff' there was a limited amount of space to - store such information; fortunately, with `gtroff', this is no - longer a restriction. - - - Escape: \% - - Escape: \: - To tell `gtroff' how to hyphenate words on the fly, use the `\%' - escape, also known as the "hyphenation character". Preceding a - word with this character prevents it from being hyphenated; - putting it inside a word indicates to `gtroff' that the word may - be hyphenated at that point. Note that this mechanism only - affects that one occurrence of the word; to change the hyphenation - of a word for the entire document, use the `hw' request. - - The `\:' escape inserts a zero-width break point (that is, the - word breaks but without adding a hyphen). - - - ... check the /var/log/\:httpd/\:access_log file ... - - Note that `\X' and `\Y' start a word, that is, the `\%' escape in - (say) `\X'...'\%foobar' and `\Y'...'\%foobar' no longer prevents - hyphenation but inserts a hyphenation point at the beginning of - `foobar'; most likely this isn't what you want to do. - - - Request: .hc [char] - Change the hyphenation character to CHAR. This character then - works the same as the `\%' escape, and thus, no longer appears in - the output. Without an argument, `hc' resets the hyphenation - character to be `\%' (the default) only. - - The hyphenation character is associated with the current - environment (*note Environments::). - - - Request: .hpf pattern_file - - Request: .hpfa pattern_file - - Request: .hpfcode a b [c d ...] - Read in a file of hyphenation patterns. This file is searched for - in the same way as `NAME.tmac' (or `tmac.NAME') is searched for if - the `-mNAME' option is specified. - - It should have the same format as (simple) TeX patterns files. - More specifically, the following scanning rules are implemented. - - * A percent sign starts a comment (up to the end of the line) - even if preceded by a backslash. - - * No support for `digraphs' like `\$'. - - * `^^XX' (X is 0-9 or a-f) and `^^X' (character code of X in - the range 0-127) are recognized; other use of `^' causes an - error. - - * No macro expansion. - - * `hpf' checks for the expression `\patterns{...}' (possibly - with whitespace before and after the braces). Everything - between the braces is taken as hyphenation patterns. - Consequently, `{' and `}' are not allowed in patterns. - - * Similarly, `\hyphenation{...}' gives a list of hyphenation - exceptions. - - * `\endinput' is recognized also. - - * For backwards compatibility, if `\patterns' is missing, the - whole file is treated as a list of hyphenation patterns (only - recognizing the `%' character as the start of a comment). - - If no `hpf' request is specified (either in the document or in a - macro package), `gtroff' won't hyphenate at all. - - The `hpfa' request appends a file of patterns to the current list. - - The `hpfcode' request defines mapping values for character codes in - hyphenation patterns. `hpf' or `hpfa' then apply the mapping - (after reading the patterns) before replacing or appending them to - the current list of patterns. Its arguments are pairs of - character codes - integers from 0 to 255. The request maps - character code A to code B, code C to code D, and so on. You can - use character codes which would be invalid otherwise. - - The set of hyphenation patterns is associated with the current - language set by the `hla' request. The `hpf' request is usually - invoked by the `troffrc' or `troffrc-end' file; by default, - `troffrc' loads hyphenation patterns and exceptions for American - English (in files `hyphen.us' and `hyphenex.us'). - - A second call to `hpf' (for the same language) will replace the - hyphenation patterns with the new ones. - - Invoking `hpf' causes an error if there is no current hyphenation - language. - - - Request: .hcode c1 code1 c2 code2 ... - Set the hyphenation code of character C1 to CODE1, that of C2 to - CODE2, etc. A hyphenation code must be a single input character - (not a special character) other than a digit or a space. - Initially each lower-case letter (`a'-`z') has its hyphenation - code set to itself, and each upper-case letter (`A'-`Z') has a - hyphenation code which is the lower-case version of itself. - - This request is ignored if it has no parameter. - - - Request: .hym [length] - - Register: \n[.hym] - Set the (right) hyphenation margin to LENGTH. If the current - adjustment mode is not `b' or `n', the line is not hyphenated if - it is shorter than LENGTH. Without an argument, the hyphenation - margin is reset to its default value, which is 0. The default - scaling indicator for this request is `m'. The hyphenation margin - is associated with the current environment (*note Environments::). - - A negative argument resets the hyphenation margin to zero, emitting - a warning of type `range'. - - The current hyphenation margin is available in the `.hym' read-only - number register. - - - Request: .hys [hyphenation_space] - - Register: \n[.hys] - Set the hyphenation space to HYPHENATION_SPACE. If the current - adjustment mode is `b' or `n', don't hyphenate the line if it can - be justified by adding no more than HYPHENATION_SPACE extra space - to each word space. Without argument, the hyphenation space is - set to its default value, which is 0. The default scaling - indicator for this request is `m'. The hyphenation space is - associated with the current environment (*note Environments::). - - A negative argument resets the hyphenation space to zero, emitting - a warning of type `range'. - - The current hyphenation space is available in the `.hys' read-only - number register. - - - Request: .shc [glyph] - Set the "soft hyphen character" to GLYPH.(1) (*note Manipulating - Hyphenation-Footnote-1::) If the argument is omitted, the soft - hyphen character is set to the default glyph `\(hy' (this is the - start-up value of `gtroff' also). The soft hyphen character is - the glyph that is inserted when a word is hyphenated at a line - break. If the soft hyphen character does not exist in the font of - the character immediately preceding a potential break point, then - the line is not broken at that point. Neither definitions - (specified with the `char' request) nor translations (specified - with the `tr' request) are considered when finding the soft hyphen - character. - - - Request: .hla language - - Register: \n[.hla] - Set the current hyphenation language to the string LANGUAGE. - Hyphenation exceptions specified with the `hw' request and - hyphenation patterns specified with the `hpf' and `hpfa' requests - are both associated with the current hyphenation language. The - `hla' request is usually invoked by the `troffrc' or the - `troffrc-end' files; `troffrc' sets the default language to `us'. - - The current hyphenation language is available as a string in the - read-only number register `.hla'. - - - .ds curr_language \n[.hla] - \*[curr_language] - => us - - - -File: groff, Node: Manipulating Hyphenation-Footnotes, Up: Manipulating Hyphenation - - (1) "Soft hyphen character" is a misnomer since it is an output -glyph. - - -File: groff, Node: Manipulating Spacing, Next: Tabs and Fields, Prev: Manipulating Hyphenation, Up: gtroff Reference - -Manipulating Spacing -==================== - - - Request: .sp [distance] - Space downwards DISTANCE. With no argument it advances 1 line. A - negative argument causes `gtroff' to move up the page the - specified distance. If the argument is preceded by a `|' then - `gtroff' moves that distance from the top of the page. This - request causes a line break. The default scaling indicator is `v'. - - If a vertical trap is sprung during execution of `sp', the amount - of vertical space after the trap is discarded. For example, this - - - .de xxx - .. - . - .wh 0 xxx - . - .pl 5v - foo - .sp 2 - bar - .sp 50 - baz - - results in - - - foo - - - bar - - baz - - The amount of discarded space is available in the number register - `.trunc'. - - To protect `sp' against vertical traps, use the `vpt' request: - - - .vpt 0 - .sp -3 - .vpt 1 - - - - Request: .ls [nnn] - - Register: \n[.L] - Output NNN-1 blank lines after each line of text. With no - argument, `gtroff' uses the previous value before the last `ls' - call. - - - .ls 2 \" This causes double-spaced output - .ls 3 \" This causes triple-spaced output - .ls \" Again double-spaced - - The line spacing is associated with the current environment (*note - Environments::). - - The read-only number register `.L' contains the current line - spacing setting. - - *Note Changing Type Sizes::, for the requests `vs' and `pvs' as -alternatives to `ls'. - - - Escape: \x'spacing' - - Register: \n[.a] - Sometimes, extra vertical spacing is only needed occasionally, e.g. - to allow space for a tall construct (like an equation). The `\x' - escape does this. The escape is given a numerical argument, - usually enclosed in quotes (like `\x'3p''); the default scaling - indicator is `v'. If this number is positive extra vertical space - is inserted below the current line. A negative number adds space - above. If this escape is used multiple times on the same line, - the maximum of the values is used. - - *Note Escapes::, for details on parameter delimiting characters. - - The `.a' read-only number register contains the most recent - (nonnegative) extra vertical line space. - - Using `\x' can be necessary in combination with the `\b' escape, - as the following example shows. - - - This is a test with the \[rs]b escape. - .br - This is a test with the \[rs]b escape. - .br - This is a test with \b'xyz'\x'-1m'\x'1m'. - .br - This is a test with the \[rs]b escape. - .br - This is a test with the \[rs]b escape. - - produces - - - This is a test with the \b escape. - This is a test with the \b escape. - x - This is a test with y. - z - This is a test with the \b escape. - This is a test with the \b escape. - - - - Request: .ns - - Request: .rs - - Register: \n[.ns] - Enable "no-space mode". In this mode, spacing (either via `sp' or - via blank lines) is disabled. The `bp' request to advance to the - next page is also disabled, except if it is accompanied by a page - number (see *Note Page Control::, for more information). This - mode ends when actual text is output or the `rs' request is - encountered which ends no-space mode. The read-only number - register `.ns' is set to 1 as long as no-space mode is active. - - This request is useful for macros that conditionally insert - vertical space before the text starts (for example, a paragraph - macro could insert some space except when it is the first - paragraph after a section header). - - -File: groff, Node: Tabs and Fields, Next: Character Translations, Prev: Manipulating Spacing, Up: gtroff Reference - -Tabs and Fields -=============== - - A tab character (ASCII char 9, EBCDIC char 5) causes a horizontal -movement to the next tab stop (much like it did on a typewriter). - - - Escape: \t - This escape is a non-interpreted tab character. In copy mode - (*note Copy-in Mode::), `\t' is the same as a real tab character. - - - Request: .ta [n1 n2 ... nn T r1 r2 ... rn] - - Register: \n[.tabs] - Change tab stop positions. This request takes a series of tab - specifiers as arguments (optionally divided into two groups with - the letter `T') which indicate where each tab stop is to be - (overriding any previous settings). - - Tab stops can be specified absolutely, i.e., as the distance from - the left margin. For example, the following sets 6 tab stops every - one inch. - - - .ta 1i 2i 3i 4i 5i 6i - - Tab stops can also be specified using a leading `+' which means - that the specified tab stop is set relative to the previous tab - stop. For example, the following is equivalent to the previous - example. - - - .ta 1i +1i +1i +1i +1i +1i - - `gtroff' supports an extended syntax to specify repeat values after - the `T' mark (these values are always taken as relative) - this is - the usual way to specify tabs set at equal intervals. The - following is, yet again, the same as the previous examples. It - does even more since it defines an infinite number of tab stops - separated by one inch. - - - .ta T 1i - - Now we are ready to interpret the full syntax given at the - beginning: Set tabs at positions N1, N2, ..., NN and then set tabs - at NN+R1, NN+R2, ..., NN+RN and then at NN+RN+R1, NN+RN+R2, ..., - NN+RN+RN, and so on. - - Example: `4c +6c T 3c 5c 2c' is equivalent to `4c 10c 13c 18c 20c - 23c 28c 30c ...'. - - The material in each tab column (i.e., the column between two tab - stops) may be justified to the right or left or centered in the - column. This is specified by appending `R', `L', or `C' to the tab - specifier. The default justification is `L'. Example: - - - .ta 1i 2iC 3iR - - Some notes: - - * The default unit of the `ta' request is `m'. - - * A tab stop is converted into a non-breakable horizontal - movement which can be neither stretched nor squeezed. For - example, - - - .ds foo a\tb\tc - .ta T 5i - \*[foo] - - creates a single line which is a bit longer than 10 inches (a - string is used to show exactly where the tab characters are). - Now consider the following: - - - .ds bar a\tb b\tc - .ta T 5i - \*[bar] - - `gtroff' first converts the tab stops of the line into - unbreakable horizontal movements, then splits the line after - the second `b' (assuming a sufficiently short line length). - Usually, this isn't what the user wants. - - * Superfluous tabs (i.e., tab characters which do not - correspond to a tab stop) are ignored except the first one - which delimits the characters belonging to the last tab stop - for right-justifying or centering. Consider the following - example - - - .ds Z foo\tbar\tfoo - .ds ZZ foo\tbar\tfoobar - .ds ZZZ foo\tbar\tfoo\tbar - .ta 2i 4iR - \*[Z] - .br - \*[ZZ] - .br - \*[ZZZ] - .br - - which produces the following output: - - - foo bar foo - foo bar foobar - foo bar foobar - - The first line right-justifies the second `foo' relative to - the tab stop. The second line right-justifies `foobar'. The - third line finally right-justifies only `foo' because of the - additional tab character which marks the end of the string - belonging to the last defined tab stop. - - * Tab stops are associated with the current environment (*note - Environments::). - - * Calling `ta' without an argument removes all tab stops. - - * The start-up value of `gtroff' is `T 0.8i'. - - The read-only number register `.tabs' contains a string - representation of the current tab settings suitable for use as an - argument to the `ta' request. - - - .ds tab-string \n[.tabs] - \*[tab-string] - => T120u - - The `troff' version of the Plan 9 operating system uses register - `.S' for the same purpose. - - - Request: .tc [fill-glyph] - Normally `gtroff' fills the space to the next tab stop with - whitespace. This can be changed with the `tc' request. With no - argument `gtroff' reverts to using whitespace, which is the - default. The value of this "tab repetition character" is - associated with the current environment (*note Environments::).(1) - (*note Tabs and Fields-Footnote-1::) - - - Request: .linetabs n - - Register: \n[.linetabs] - If N is missing or not zero, enable "line-tabs" mode, or disable - it otherwise (the default). In line-tabs mode, `gtroff' computes - tab distances relative to the (current) output line instead of the - input line. - - For example, the following code: - - - .ds x a\t\c - .ds y b\t\c - .ds z c - .ta 1i 3i - \*x - \*y - \*z - - in normal mode, results in the output - - - a b c - - in line-tabs mode, the same code outputs - - - a b c - - Line-tabs mode is associated with the current environment. The - read-only register `.linetabs' is set to 1 if in line-tabs mode, - and 0 in normal mode. - -* Menu: - -* Leaders:: -* Fields:: - - -File: groff, Node: Tabs and Fields-Footnotes, Up: Tabs and Fields - - (1) "Tab repetition character" is a misnomer since it is an output -glyph. - - -File: groff, Node: Leaders, Next: Fields, Prev: Tabs and Fields, Up: Tabs and Fields - -Leaders -------- - - Sometimes it may may be desirable to use the `tc' request to fill a -particular tab stop with a given glyph (for example dots in a table of -contents), but also normal tab stops on the rest of the line. For this -`gtroff' provides an alternate tab mechanism, called "leaders" which -does just that. - - A leader character (character code 1) behaves similarly to a tab -character: It moves to the next tab stop. The only difference is that -for this movement, the fill glyph defaults to a period character and -not to space. - - - Escape: \a - This escape is a non-interpreted leader character. In copy mode - (*note Copy-in Mode::), `\a' is the same as a real leader - character. - - - Request: .lc [fill-glyph] - Declare the "leader repetition character".(1) (*note - Leaders-Footnote-1::) Without an argument, leaders act the same as - tabs (i.e., using whitespace for filling). `gtroff''s start-up - value is a dot (`.'). The value of the leader repetition - character is associated with the current environment (*note - Environments::). - - For a table of contents, to name an example, tab stops may be -defined so that the section number is one tab stop, the title is the -second with the remaining space being filled with a line of dots, and -then the page number slightly separated from the dots. - - - .ds entry 1.1\tFoo\a\t12 - .lc . - .ta 1i 5i +.25i - \*[entry] - -This produces - - - 1.1 Foo.......................................... 12 - - -File: groff, Node: Leaders-Footnotes, Up: Leaders - - (1) "Leader repetition character" is a misnomer since it is an -output glyph. - - -File: groff, Node: Fields, Prev: Leaders, Up: Tabs and Fields - -Fields ------- - - "Fields" are a more general way of laying out tabular data. A field -is defined as the data between a pair of "delimiting characters". It -contains substrings which are separated by "padding characters". The -width of a field is the distance on the _input_ line from the position -where the field starts to the next tab stop. A padding character -inserts stretchable space similar to TeX's `\hss' command (thus it can -even be negative) to make the sum of all substring lengths plus the -stretchable space equal to the field width. If more than one padding -character is inserted, the available space is evenly distributed among -them. - - - Request: .fc [delim-char [padding-char]] - Define a delimiting and a padding character for fields. If the - latter is missing, the padding character defaults to a space - character. If there is no argument at all, the field mechanism is - disabled (which is the default). Note that contrary to e.g. the - tab repetition character, delimiting and padding characters are - _not_ associated to the current environment (*note Environments::). - - Example: - - - .fc # ^ - .ta T 3i - #foo^bar^smurf# - .br - #foo^^bar^smurf# - - and here the result: - - - foo bar smurf - foo bar smurf - - - -File: groff, Node: Character Translations, Next: Troff and Nroff Mode, Prev: Tabs and Fields, Up: gtroff Reference - -Character Translations -====================== - - The control character (`.') and the no-break control character (`'') -can be changed with the `cc' and `c2' requests, respectively. - - - Request: .cc [c] - Set the control character to C. With no argument the default - control character `.' is restored. The value of the control - character is associated with the current environment (*note - Environments::). - - - Request: .c2 [c] - Set the no-break control character to C. With no argument the - default control character `'' is restored. The value of the - no-break control character is associated with the current - environment (*note Environments::). - - - Request: .eo - Disable the escape mechanism completely. After executing this - request, the backslash character `\' no longer starts an escape - sequence. - - This request can be very helpful in writing macros since it is not - necessary then to double the escape character. Here an example: - - - .\" This is a simplified version of the - .\" .BR request from the man macro package - .eo - .de BR - . ds result \& - . while (\n[.$] >= 2) \{\ - . as result \fB\$1\fR\$2 - . shift 2 - . \} - . if \n[.$] .as result \fB\$1 - \*[result] - . ft R - .. - .ec - - - - Request: .ec [c] - Set the escape character to C. With no argument the default - escape character `\' is restored. It can be also used to - re-enable the escape mechanism after an `eo' request. - - Note that changing the escape character globally will likely break - macro packages since `gtroff' has no mechanism to `intern' macros, - i.e., to convert a macro definition into an internal form which is - independent of its representation (TeX has this mechanism). If a - macro is called, it is executed literally. - - - Request: .ecs - - Request: .ecr - The `ecs' request saves the current escape character in an - internal register. Use this request in combination with the `ec' - request to temporarily change the escape character. - - The `ecr' request restores the escape character saved with `ecs'. - Without a previous call to `ecs', this request sets the escape - character to `\'. - - - Escape: \\ - - Escape: \e - - Escape: \E - Print the current escape character (which is the backslash - character `\' by default). - - `\\' is a `delayed' backslash; more precisely, it is the default - escape character followed by a backslash, which no longer has - special meaning due to the leading escape character. It is _not_ - an escape sequence in the usual sense! In any unknown escape - sequence `\X' the escape character is ignored and X is printed. - But if X is equal to the current escape character, no warning is - emitted. - - As a consequence, only at top-level or in a diversion a backslash - glyph is printed; in copy-in mode, it expands to a single - backslash which then combines with the following character to an - escape sequence. - - The `\E' escape differs from `\e' by printing an escape character - that is not interpreted in copy mode. Use this to define strings - with escapes that work when used in copy mode (for example, as a - macro argument). The following example defines strings to begin - and end a superscript: - - - .ds { \v'-.3m'\s'\En[.s]*60/100' - .ds } \s0\v'.3m' - - Another example to demonstrate the differences between the various - escape sequences, using a strange escape character, `-'. - - - .ec - - .de xxx - --A'123' - .. - .xxx - => -A'foo' - - The result is surprising for most users, expecting `1' since `foo' - is a valid identifier. What has happened? As mentioned above, - the leading escape character makes the following character - ordinary. Written with the default escape character the sequence - `--' becomes `\-' - this is the minus sign. - - If the escape character followed by itself is a valid escape - sequence, only `\E' yields the expected result: - - - .ec - - .de xxx - -EA'123' - .. - .xxx - => 1 - - - - Escape: \. - Similar to `\\', the sequence `\.' isn't a real escape sequence. - As before, a warning message is suppressed if the escape character - is followed by a dot, and the dot itself is printed. - - - .de foo - . nop foo - . - . de bar - . nop bar - \\.. - . - .. - .foo - .bar - => foo bar - - The first backslash is consumed while the macro is read, and the - second is swallowed while exexuting macro `foo'. - - A "translation" is a mapping of an input character to an output -glyph. The mapping occurs at output time, i.e., the input character -gets assigned the metric information of the mapped output character -right before input tokens are converted to nodes (*note Gtroff -Internals::, for more on this process). - - - Request: .tr abcd... - - Request: .trin abcd... - Translate character A to glyph B, character C to glyph D, etc. If - there is an odd number of arguments, the last one is translated to - an unstretchable space (`\ '). - - The `trin' request is identical to `tr', but when you unformat a - diversion with `asciify' it ignores the translation. *Note - Diversions::, for details about the `asciify' request. - - Some notes: - - * Special characters (`\(XX', `\[XXX]', `\C'XXX'', `\'', `\`', - `\-', `\_'), glyphs defined with the `char' request, and - numbered glyphs (`\N'XXX'') can be translated also. - - * The `\e' escape can be translated also. - - * Characters can be mapped onto the `\%' and `\~' escapes (but - `\%' and `\~' can't be mapped onto another glyph). - - * The following characters can't be translated: space (with one - exception, see below), backspace, newline, leader (and `\a'), - tab (and `\t'). - - * Translations are not considered for finding the soft hyphen - character set with the `shc' request. - - * The pair `C\&' (this is an arbitrary character C followed by - the zero width space character) maps this character to - nothing. - - - .tr a\& - foo bar - => foo br - - It is even possible to map the space character to nothing: - - - .tr aa \& - foo bar - => foobar - - As shown in the example, the space character can't be the - first character/glyph pair as an argument of `tr'. - Additionally, it is not possible to map the space character - to any other glyph; requests like `.tr aa x' undo `.tr aa \&' - instead. - - If justification is active, lines are justified in spite of - the `empty' space character (but there is no minimal - distance, i.e. the space character, between words). - - * After an output glyph has been constructed (this happens at - the moment immediately before the glyph is appended to an - output glyph list, either by direct output, in a macro, - diversion, or string), it is no longer affected by `tr'. - - * Translating character to glyphs where one of them or both are - undefined is possible also; `tr' does not check whether the - entities in its argument do exist. - - *Note Gtroff Internals::. - - * `troff' no longer has a hard-coded dependency on Latin-1; all - `charXXX' entities have been removed from the font - description files. This has a notable consequence which - shows up in warnings like `can't find character with input - code XXX' if the `tr' request isn't handled properly. - - Consider the following translation: - - - .tr e'E' - - This maps input character `e'' onto glyph `E'', which is - identical to glyph `char201'. But this glyph intentionally - doesn't exist! Instead, `\[char201]' is treated as an input - character entity and is by default mapped onto `\['E]', and - `gtroff' doesn't handle translations of translations. - - The right way to write the above translation is - - - .tr e'\['E] - - With other words, the first argument of `tr' should be an - input character or entity, and the second one a glyph entity. - - * Without an argument, the `tr' request is ignored. - - - Request: .trnt abcd... - `trnt' is the same as the `tr' request except that the - translations do not apply to text that is transparently throughput - into a diversion with `\!'. *Note Diversions::, for more - information. - - For example, - - - .tr ab - .di x - \!.tm a - .di - .x - - prints `b' to the standard error stream; if `trnt' is used instead - of `tr' it prints `a'. - - -File: groff, Node: Troff and Nroff Mode, Next: Line Layout, Prev: Character Translations, Up: gtroff Reference - -Troff and Nroff Mode -==================== - - Originally, `nroff' and `troff' were two separate programs, the -former for TTY output, the latter for everything else. With GNU -`troff', both programs are merged into one executable, sending its -output to a device driver (`grotty' for TTY devices, `grops' for -POSTSCRIPT, etc.) which interprets the intermediate output of `gtroff'. -For UNIX `troff' it makes sense to talk about "Nroff mode" and "Troff -mode" since the differences are hardcoded. For GNU `troff', this -distinction is not appropriate because `gtroff' simply takes the -information given in the font files for a particular device without -handling requests specially if a TTY output device is used. - - Usually, a macro package can be used with all output devices. -Nevertheless, it is sometimes necessary to make a distinction between -TTY and non-TTY devices: `gtroff' provides two built-in conditions `n' -and `t' for the `if', `ie', and `while' requests to decide whether -`gtroff' shall behave like `nroff' or like `troff'. - - - Request: .troff - Make the `t' built-in condition true (and the `n' built-in - condition false) for `if', `ie', and `while' conditional requests. - This is the default if `gtroff' (_not_ `groff') is started with - the `-R' switch to avoid loading of the start-up files `troffrc' - and `troffrc-end'. Without `-R', `gtroff' stays in troff mode if - the output device is not a TTY (e.g. `ps'). - - - Request: .nroff - Make the `n' built-in condition true (and the `t' built-in - condition false) for `if', `ie', and `while' conditional requests. - This is the default if `gtroff' uses a TTY output device; the - code for switching to nroff mode is in the file `tty.tmac' which - is loaded by the start-up file `troffrc'. - - *Note Conditionals and Loops::, for more details on built-in -conditions. - - -File: groff, Node: Line Layout, Next: Line Control, Prev: Troff and Nroff Mode, Up: gtroff Reference - -Line Layout -=========== - - The following drawing shows the dimensions which `gtroff' uses for -placing a line of output onto the page. They are labeled with the -request which manipulates each dimension. - - - -->| in |<-- - |<-----------ll------------>| - +----+----+----------------------+----+ - | : : : | - +----+----+----------------------+----+ - -->| po |<-- - |<--------paper width---------------->| - -These dimensions are: - -`po' - "Page offset" - this is the leftmost position of text on the final - output, defining the "left margin". - -`in' - "Indentation" - this is the distance from the left margin where - text is printed. - -`ll' - "Line length" - this is the distance from the left margin to right - margin. - - A simple demonstration: - - - .ll 3i - This is text without indentation. - The line length has been set to 3\~inch. - .in +.5i - .ll -.5i - Now the left and right margins are both increased. - .in - .ll - Calling .in and .ll without parameters restore - the previous values. - - Result: - - - This is text without indenta- - tion. The line length has - been set to 3 inch. - Now the left and - right margins are - both increased. - Calling .in and .ll without - parameters restore the previ- - ous values. - - - Request: .po [offset] - - Request: .po +offset - - Request: .po -offset - - Register: \n[.o] - Set horizontal page offset to OFFSET (or increment or decrement - the current value by OFFSET). Note that this request does not - cause a break, so changing the page offset in the middle of text - being filled may not yield the expected result. The initial value - is 1i. For TTY output devices, it is set to 0 in the startup file - `troffrc'; the default scaling indicator is `m' (and not `v' as - incorrectly documented in the original UNIX troff manual). - - The current page offset can be found in the read-only number - register `.o'. - - If `po' is called without an argument, the page offset is reset to - the previous value before the last call to `po'. - - - .po 3i - \n[.o] - => 720 - .po -1i - \n[.o] - => 480 - .po - \n[.o] - => 720 - - - - Request: .in [indent] - - Request: .in +indent - - Request: .in -indent - - Register: \n[.i] - Set indentation to INDENT (or increment or decrement the current - value by INDENT). This request causes a break. Initially, there - is no indentation. - - If `in' is called without an argument, the indentation is reset to - the previous value before the last call to `in'. The default - scaling indicator is `m'. - - The indentation is associated with the current environment (*note - Environments::). - - If a negative indentation value is specified (which is not - allowed), `gtroff' emits a warning of type `range' and sets the - indentation to zero. - - The effect of `in' is delayed until a partially collected line (if - it exists) is output. A temporary indent value is reset to zero - also. - - The current indentation (as set by `in') can be found in the - read-only number register `.i'. - - - Request: .ti offset - - Request: .ti +offset - - Request: .ti -offset - - Register: \n[.in] - Temporarily indent the next output line by OFFSET. If an - increment or decrement value is specified, adjust the temporary - indentation relative to the value set by the `in' request. - - This request causes a break; its value is associated with the - current environment (*note Environments::). The default scaling - indicator is `m'. A call of `ti' without an argument is ignored. - - If the total indentation value is negative (which is not allowed), - `gtroff' emits a warning of type `range' and sets the temporary - indentation to zero. `Total indentation' is either OFFSET if - specified as an absolute value, or the temporary plus normal - indentation, if OFFSET is given as a relative value. - - The effect of `ti' is delayed until a partially collected line (if - it exists) is output. - - The read-only number register `.in' is the indentation that applies - to the current output line. - - The difference between `.i' and `.in' is that the latter takes - into account whether a partially collected line still uses the old - indentation value or a temporary indentation value is active. - - - Request: .ll [length] - - Request: .ll +length - - Request: .ll -length - - Register: \n[.l] - - Register: \n[.ll] - Set the line length to LENGTH (or increment or decrement the - current value by LENGTH). Initially, the line length is set to - 6.5i. The effect of `ll' is delayed until a partially collected - line (if it exists) is output. The default scaling indicator is - `m'. - - If `ll' is called without an argument, the line length is reset to - the previous value before the last call to `ll'. If a negative - line length is specified (which is not allowed), `gtroff' emits a - warning of type `range' and sets the line length to zero. - - The line length is associated with the current environment (*note - Environments::). - - The current line length (as set by `ll') can be found in the - read-only number register `.l'. The read-only number register - `.ll' is the line length that applies to the current output line. - - Similar to `.i' and `.in', the difference between `.l' and `.ll' - is that the latter takes into account whether a partially - collected line still uses the old line length value. - diff --git a/contrib/groff/doc/groff-5 b/contrib/groff/doc/groff-5 deleted file mode 100644 index 2130766..0000000 --- a/contrib/groff/doc/groff-5 +++ /dev/null @@ -1,1327 +0,0 @@ -This is groff, produced by makeinfo version 4.3d from ./groff.texinfo. - -This manual documents GNU `troff' version 1.19. - - Copyright (C) 1994-2000, 2001, 2002, 2003 Free Software Foundation, -Inc. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being `A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - `GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: `You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -INFO-DIR-SECTION Typesetting -START-INFO-DIR-ENTRY -* Groff: (groff). The GNU troff document formatting system. -END-INFO-DIR-ENTRY - - -File: groff, Node: Line Control, Next: Page Layout, Prev: Line Layout, Up: gtroff Reference - -Line Control -============ - - It is important to understand how `gtroff' handles input and output -lines. - - Many escapes use positioning relative to the input line. For -example, this - - - This is a \h'|1.2i'test. - - This is a - \h'|1.2i'test. - -produces - - - This is a test. - - This is a test. - - The main usage of this feature is to define macros which act exactly -at the place where called. - - - .\" A simple macro to underline a word - .de underline - . nop \\$1\l'|0\[ul]' - .. - -In the above example, `|0' specifies a negative distance from the -current position (at the end of the just emitted argument `\$1') back -to the beginning of the input line. Thus, the `\l' escape draws a line -from right to left. - - `gtroff' makes a difference between input and output line -continuation; the latter is also called "interrupting" a line. - - - Escape: \ - - Escape: \c - - Register: \n[.int] - Continue a line. `\' (this is a backslash at the end of a - line immediately followed by a newline) works on the input level, - suppressing the effects of the following newline in the input. - - - This is a \ - .test - => This is a .test - - The `|' operator is also affected. - - `\c' works on the output level. Anything after this escape on the - same line is ignored, except `\R' which works as usual. Anything - before `\c' on the same line will be appended to the current - partial output line. The next non-command line after an - interrupted line counts as a new input line. - - The visual results depend on whether no-fill mode is active. - - * If no-fill mode is active (using the `nf' request), the next - input text line after `\c' will be handled as a continuation - of the same input text line. - - - .nf - This is a \c - test. - => This is a test. - - * If fill mode is active (using the `fi' request), a word - interrupted with `\c' will be continued with the text on the - next input text line, without an intervening space. - - - This is a te\c - st. - => This is a test. - - - Note that an intervening control line which causes a break is - stronger than `\c', flushing out the current partial line in the - usual way. - - The `.int' register contains a positive value if the last output - line was interrupted with `\c'; this is associated with the - current environment (*note Environments::). - - - -File: groff, Node: Page Layout, Next: Page Control, Prev: Line Control, Up: gtroff Reference - -Page Layout -=========== - - `gtroff' provides some very primitive operations for controlling -page layout. - - - Request: .pl [length] - - Request: .pl +length - - Request: .pl -length - - Register: \n[.p] - Set the "page length" to LENGTH (or increment or decrement the - current value by LENGTH). This is the length of the physical - output page. The default scaling indicator is `v'. - - The current setting can be found in the read-only number register - `.p'. - - Note that this only specifies the size of the page, not the top and - bottom margins. Those are not set by `gtroff' directly. *Note - Traps::, for further information on how to do this. - - Negative `pl' values are possible also, but not very useful: No - trap is sprung, and each line is output on a single page (thus - suppressing all vertical spacing). - - If no argument or an invalid argument is given, `pl' sets the page - length to 11i. - - `gtroff' provides several operations which help in setting up top -and bottom titles (or headers and footers). - - - Request: .tl 'left'center'right' - Print a "title line". It consists of three parts: a left - justified portion, a centered portion, and a right justified - portion. The argument separator `'' can be replaced with any - character not occurring in the title line. The `%' character is - replaced with the current page number. This character can be - changed with the `pc' request (see below). - - Without argument, `tl' is ignored. - - Some notes: - - * A title line is not restricted to the top or bottom of a page. - - * `tl' prints the title line immediately, ignoring a partially - filled line (which stays untouched). - - * It is not an error to omit closing delimiters. For example, - `.tl /foo' is equivalent to `.tl /foo///': It prints a title - line with the left justified word `foo'; the centered and - right justfied parts are empty. - - * `tl' accepts the same parameter delimiting characters as the - `\A' escape; see *Note Escapes::. - - - Request: .lt [length] - - Request: .lt +length - - Request: .lt -length - - Register: \n[.lt] - The title line is printed using its own line length, which is - specified (or incremented or decremented) with the `lt' request. - Initially, the title line length is set to 6.5i. If a negative - line length is specified (which is not allowed), `gtroff' emits a - warning of type `range' and sets the title line length to zero. - The default scaling indicator is `m'. If `lt' is called without - an argument, the title length is reset to the previous value - before the last call to `lt'. - - The current setting of this is available in the `.lt' read-only - number register; it is associated with the current environment - (*note Environments::). - - - - Request: .pn page - - Request: .pn +page - - Request: .pn -page - - Register: \n[.pn] - Change (increase or decrease) the page number of the _next_ page. - The only argument is the page number; the request is ignored - without a parameter. - - The read-only number register `.pn' contains the number of the next - page: either the value set by a `pn' request, or the number of the - current page plus 1. - - - Register: \n[%] - A read-write register holding the current page number. - - - Request: .pc [char] - Change the page number character (used by the `tl' request) to a - different character. With no argument, this mechanism is disabled. - Note that this doesn't affect the number register `%'. - - *Note Traps::. - - -File: groff, Node: Page Control, Next: Fonts and Symbols, Prev: Page Layout, Up: gtroff Reference - -Page Control -============ - - - Request: .bp [page] - - Request: .bp +page - - Request: .bp -page - Stop processing the current page and move to the next page. This - request causes a break. It can also take an argument to set - (increase, decrease) the page number of the next page. The only - difference between `bp' and `pn' is that `pn' does not cause a - break or actually eject a page. - - - .de newpage \" define macro - 'bp \" begin page - 'sp .5i \" vertical space - .tl 'left top'center top'right top' \" title - 'sp .3i \" vertical space - .. \" end macro - - `bp' has no effect if not called within the top-level diversion - (*note Diversions::). - - The number register `.pe' is set to 1 while `bp' is active. *Note - Page Location Traps::. - - - Request: .ne [space] - It is often necessary to force a certain amount of space before a - new page occurs. This is most useful to make sure that there is - not a single "orphan" line left at the bottom of a page. The `ne' - request ensures that there is a certain distance, specified by the - first argument, before the next page is triggered (see *Note - Traps::, for further information). The default scaling indicator - for `ne' is `v'; the default value of SPACE is 1v if no argument - is given. - - For example, to make sure that no fewer than 2 lines get orphaned, - do the following before each paragraph: - - - .ne 2 - text text text - - `ne' will then automatically cause a page break if there is space - for one line only. - - - Request: .sv [space] - - Request: .os - `sv' is similar to the `ne' request; it reserves the specified - amount of vertical space. If the desired amount of space exists - before the next trap (or the bottom page boundary if no trap is - set), the space is output immediately (ignoring a partially filled - line which stays untouched). If there is not enough space, it is - stored for later output via the `os' request. The default value - is 1v if no argument is given; the default scaling indicator is - `v'. - - Both `sv' and `os' ignore no-space mode. While the `sv' request - allows negative values for SPACE, `os' will ignore them. - - - Register: \n[nl] - This register contains the current vertical position. If the - vertical position is zero and the top of page transition hasn't - happened yet, `nl' is set to negative value. `gtroff' itself does - this at the very beginning of a document before anything has been - printed, but the main usage is to plant a header trap on a page if - this page has already started. - - Consider the following: - - - .de xxx - . sp - . tl ''Header'' - . sp - .. - . - First page. - .bp - .wh 0 xxx - .nr nl (-1) - Second page. - - Result: - - - First page. - - ... - - Header - - Second page. - - ... - - Without resetting `nl' to a negative value, the just planted trap - would be active beginning with the _next_ page, not the current - one. - - *Note Diversions::, for a comparison with the `.h' and `.d' - registers. - - -File: groff, Node: Fonts and Symbols, Next: Sizes, Prev: Page Control, Up: gtroff Reference - -Fonts and Symbols -================= - - `gtroff' can switch fonts at any point in the text. - - The basic set of fonts is `R', `I', `B', and `BI'. These are Times -Roman, Italic, Bold, and Bold Italic. For non-TTY devices, there is -also at least one symbol font which contains various special symbols -(Greek, mathematics). - -* Menu: - -* Changing Fonts:: -* Font Families:: -* Font Positions:: -* Using Symbols:: -* Special Fonts:: -* Artificial Fonts:: -* Ligatures and Kerning:: - - -File: groff, Node: Changing Fonts, Next: Font Families, Prev: Fonts and Symbols, Up: Fonts and Symbols - -Changing Fonts --------------- - - - Request: .ft [font] - - Escape: \ff - - Escape: \f(fn - - Escape: \f[font] - The `ft' request and the `\f' escape change the current font to - FONT (one-character name F, two-character name FN). - - If FONT is a style name (as set with the `sty' request or with the - `styles' command in the `DESC' file), use it within the current - font family (as set with the `fam' request, `\F' escape, or with - the `family' command in the `DESC' file). - - With no argument or using `P' as an argument, `.ft' switches to - the previous font. Use `\f[]' to do this with the escape. The - old syntax forms `\fP' or `\f[P]' are also supported. - - Fonts are generally specified as upper-case strings, which are - usually 1 to 4 characters representing an abbreviation or acronym - of the font name. This is no limitation, just a convention. - - The example below produces two identical lines. - - - eggs, bacon, - .ft B - spam - .ft - and sausage. - - eggs, bacon, \fBspam\fP and sausage. - - Note that `\f' doesn't produce an input token in `gtroff'. As a - consequence, it can be used in requests like `mc' (which expects a - single character as an argument) to change the font on the fly: - - - .mc \f[I]x\f[] - - *Note Font Positions::, for an alternative syntax. - - - Request: .ftr f [g] - Translate font F to font G. Whenever a font named F is referred - to in a `\f' escape sequence, or in the `ft', `ul', `bd', `cs', - `tkf', `special', `fspecial', `fp', or `sty' requests, font G is - used. If G is missing or equal to F the translation is undone. - - -File: groff, Node: Font Families, Next: Font Positions, Prev: Changing Fonts, Up: Fonts and Symbols - -Font Families -------------- - - Due to the variety of fonts available, `gtroff' has added the -concept of "font families" and "font styles". The fonts are specified -as the concatenation of the font family and style. Specifying a font -without the family part causes `gtroff' to use that style of the -current family. - - Currently, fonts for the devices `-Tps', `-Tdvi', and `-Tlbp' are -set up to this mechanism. By default, `gtroff' uses the Times family -with the four styles `R', `I', `B', and `BI'. - - This way, it is possible to use the basic four fonts and to select a -different font family on the command line (*note Groff Options::). - - - Request: .fam [family] - - Register: \n[.fam] - - Escape: \Ff - - Escape: \F(fm - - Escape: \F[family] - - Register: \n[.fn] - Switch font family to FAMILY (one-character name F, two-character - name FM). If no argument is given, switch back to the previous - font family. Use `\F[]' to do this with the escape. Note that - `\FP' doesn't work; it selects font family `P' instead. - - The value at start-up is `T'. The current font family is - available in the read-only number register `.fam' (this is a - string-valued register); it is associated with the current - environment. - - - spam, - .fam H \" helvetica family - spam, \" used font is family H + style R = HR - .ft B \" family H + style B = font HB - spam, - .fam T \" times family - spam, \" used font is family T + style B = TB - .ft AR \" font AR (not a style) - baked beans, - .ft R \" family T + style R = font TR - and spam. - - Note that `\F' doesn't produce an input token in `gtroff'. As a - consequence, it can be used in requests like `mc' (which expects a - single character as an argument) to change the font family on the - fly: - - - .mc \F[P]x\F[] - - The `.fn' register contains the current "real font name" of the - current font. This is a string-valued register. If the current - font is a style, the value of `\n[.fn]' is the proper - concatenation of family and style name. - - - Request: .sty n style - Associate STYLE with font position N. A font position can be - associated either with a font or with a style. The current font - is the index of a font position and so is also either a font or a - style. If it is a style, the font that is actually used is the - font which name is the concatenation of the name of the current - family and the name of the current style. For example, if the - current font is 1 and font position 1 is associated with style `R' - and the current font family is `T', then font `TR' will be used. - If the current font is not a style, then the current family is - ignored. If the requests `cs', `bd', `tkf', `uf', or `fspecial' - are applied to a style, they will instead be applied to the member - of the current family corresponding to that style. - - N must be a non-negative integer value. - - The default family can be set with the `-f' option (*note Groff - Options::). The `styles' command in the `DESC' file controls - which font positions (if any) are initially associated with styles - rather than fonts. For example, the default setting for - POSTSCRIPT fonts - - - styles R I B BI - - is equivalent to - - - .sty 1 R - .sty 2 I - .sty 3 B - .sty 4 BI - - `fam' and `\F' always check whether the current font position is - valid; this can give surprising results if the current font - position is associated with a style. - - In the following example, we want to access the POSTSCRIPT font - `FooBar' from the font family `Foo': - - - .sty \n[.fp] Bar - .fam Foo - => warning: can't find font `FooR' - - The default font position at start-up is 1; for the POSTSCRIPT - device, this is associated with style `R', so `gtroff' tries to - open `FooR'. - - A solution to this problem is to use a dummy font like the - following: - - - .fp 0 dummy TR \" set up dummy font at position 0 - .sty \n[.fp] Bar \" register style `Bar' - .ft 0 \" switch to font at position 0 - .fam Foo \" activate family `Foo' - .ft Bar \" switch to font `FooBar' - - *Note Font Positions::. - - -File: groff, Node: Font Positions, Next: Using Symbols, Prev: Font Families, Up: Fonts and Symbols - -Font Positions --------------- - - For the sake of old phototypesetters and compatibility with old -versions of `troff', `gtroff' has the concept of font "positions", on -which various fonts are mounted. - - - Request: .fp pos font [external-name] - - Register: \n[.f] - - Register: \n[.fp] - Mount font FONT at position POS (which must be a non-negative - integer). This numeric position can then be referred to with font - changing commands. When `gtroff' starts it is using font - position 1 (which must exist; position 0 is unused usually at - start-up). - - The current font in use, as a font position, is available in the - read-only number register `.f'. This can be useful to remember the - current font for later recall. It is associated with the current - environment (*note Environments::). - - - .nr save-font \n[.f] - .ft B - ... text text text ... - .ft \n[save-font] - - The number of the next free font position is available in the - read-only number register `.fp'. This is useful when mounting a - new font, like so: - - - .fp \n[.fp] NEATOFONT - - Fonts not listed in the `DESC' file are automatically mounted on - the next available font position when they are referenced. If a - font is to be mounted explicitly with the `fp' request on an unused - font position, it should be mounted on the first unused font - position, which can be found in the `.fp' register. Although - `gtroff' does not enforce this strictly, it is not allowed to - mount a font at a position whose number is much greater (approx. - 1000 positions) than that of any currently used position. - - The `fp' request has an optional third argument. This argument - gives the external name of the font, which is used for finding the - font description file. The second argument gives the internal - name of the font which is used to refer to the font in `gtroff' - after it has been mounted. If there is no third argument then the - internal name is used as the external name. This feature makes it - possible to use fonts with long names in compatibility mode. - - Both the `ft' request and the `\f' escape have alternative syntax -forms to access font positions. - - - Request: .ft nnn - - Escape: \fn - - Escape: \f(nn - - Escape: \f[nnn] - Change the current font position to NNN (one-digit position N, - two-digit position NN), which must be a non-negative integer. - - If NNN is associated with a style (as set with the `sty' request - or with the `styles' command in the `DESC' file), use it within - the current font family (as set with the `fam' request, the `\F' - escape, or with the `family' command in the `DESC' file). - - - this is font 1 - .ft 2 - this is font 2 - .ft \" switch back to font 1 - .ft 3 - this is font 3 - .ft - this is font 1 again - - *Note Changing Fonts::, for the standard syntax form. - - -File: groff, Node: Using Symbols, Next: Special Fonts, Prev: Font Positions, Up: Fonts and Symbols - -Using Symbols -------------- - - A "glyph" is a graphical representation of a "character". While a -character is an abstract entity containing semantic information, a -glyph is something which can be actually seen on screen or paper. It -is possible that a character has multiple glyph representation forms -(for example, the character `A' can be either written in a roman or an -italic font, yielding two different glyphs); sometimes more than one -character maps to a single glyph (this is a "ligature" - the most -common is `fi'). - - A "symbol" is simply a named glyph. Within `gtroff', all glyph -names of a particular font are defined in its font file. If the user -requests a glyph not available in this font, `gtroff' looks up an -ordered list of "special fonts". By default, the POSTSCRIPT output -device supports the two special fonts `SS' (slanted symbols) and `S' -(symbols) (the former is looked up before the latter). Other output -devices use different names for special fonts. Fonts mounted with the -`fonts' keyword in the `DESC' file are globally available. To install -additional special fonts locally (i.e. for a particular font), use the -`fspecial' request. - - Here the exact rules how `gtroff' searches a given symbol: - - * If the symbol has been defined with the `char' request, use it. - This hides a symbol with the same name in the current font. - - * Check the current font. - - * If the symbol has been defined with the `fchar' request, use it. - - * Check whether the current font has a font-specific list of special - fonts; test all fonts in the order of appearance in the last - `fspecial' call if appropriate. - - * If the symbol has been defined with the `fschar' request for the - current font, use it. - - * Check all fonts in the order of appearance in the last `special' - call. - - * If the symbol has been defined with the `schar' request, use it. - - * As a last resort, consult all fonts loaded up to now for special - fonts and check them, starting with the lowest font number. Note - that this can sometimes lead to surprising results since the - `fonts' line in the `DESC' file often contains empty positions - which are filled later on. For example, consider the following: - - - fonts 3 0 0 FOO - - This mounts font `foo' at font position 3. We assume that `FOO' - is a special font, containing glyph `foo', and that no font has - been loaded yet. The line - - - .fspecial BAR BAZ - - makes font `BAZ' special only if font `BAR' is active. We further - assume that `BAZ' is really a special font, i.e., the font - description file contains the `special' keyword, and that it also - contains glyph `foo' with a special shape fitting to font `BAR'. - After executing `fspecial', font `BAR' is loaded at font - position 1, and `BAZ' at position 2. - - We now switch to a new font `XXX', trying to access glyph `foo' - which is assumed to be missing. There are neither font-specific - special fonts for `XXX' nor any other fonts made special with the - `special' request, so `gtroff' starts the search for special fonts - in the list of already mounted fonts, with increasing font - positions. Consequently, it finds `BAZ' before `FOO' even for - `XXX' which is not the intended behaviour. - - *Note Font Files::, and *Note Special Fonts::, for more details. - - The list of available symbols is device dependent; see the -`groff_char(7)' man page for a complete list of all glyphs. For -example, say - - - man -Tdvi groff_char > groff_char.dvi - -for a list using the default DVI fonts (not all versions of the `man' -program support the `-T' option). If you want to use an additional -macro package to change the used fonts, `groff' must be called directly: - - - groff -Tdvi -mec -man groff_char.7 > groff_char.dvi - - Glyph names not listed in groff_char(7) are derived algorithmically, -using a simplified version of the Adobe Glyph List (AGL) algorithm -described in -`http://partners.adobe.com/asn/developer/typeforum/unicodegn.html'. -The (frozen) set of glyph names which can't be derived algorithmically -is called "groff glyph list (GGL)". - - * A glyph for Unicode character U+XXXX[X[X]] which is not a - composite character will be named `uXXXX[X[X]]'. X must be an - uppercase hexadecimal digit. Examples: `u1234', `u008E', - `u12DB8'. The largest Unicode value is 0x10FFFF. There must be at - least four `X' digits; if necessary, add leading zeroes (after the - `u'). No zero padding is allowed for character codes greater than - 0xFFFF. Surrogates (i.e., Unicode values greater than 0xFFFF - represented with character codes from the surrogate area - U+D800-U+DFFF) are not allowed too. - - * A glyph representing more than a single input character will be - named - - `u' COMPONENT1 `_' COMPONENT2 `_' COMPONENT3 ... - - Example: `u0045_0302_0301'. - - For simplicity, all Unicode characters which are composites must be - decomposed maximally (this is normalization form D in the Unicode - standard); for example, `u00CA_0301' is not a valid glyph name - since U+00CA (LATIN CAPITAL LETTER E WITH CIRCUMFLEX) can be - further decomposed into U+0045 (LATIN CAPITAL LETTER E) and U+0302 - (COMBINING CIRCUMFLEX ACCENT). `u0045_0302_0301' is thus the - glyph name for U+1EBE, LATIN CAPITAL LETTER E WITH CIRCUMFLEX AND - ACUTE. - - * groff maintains a table to decompose all algorithmically derived - glyph names which are composites itself. For example, `u0100' - (LATIN LETTER A WITH MACRON) will be automatically decomposed into - `u0041_0304'. Additionally, a glyph name of the GGL is preferred - to an algorithmically derived glyph name; groff also automatically - does the mapping. Example: The glyph `u0045_0302' will be mapped - to `^E'. - - * glyph names of the GGL can't be used in composite glyph names; for - example, `^E_u0301' is invalid. - - - Escape: \(nm - - Escape: \[name] - - Escape: \[component1 component2 ...] - Insert a symbol NAME (two-character name NM) or a composite glyph - with component glyphs COMPONENT1, COMPONENT2, .... There is no - special syntax for one-character names - the natural form `\N' - would collide with escapes.(1) (*note Using Symbols-Footnote-1::) - - If NAME is undefined, a warning of type `char' is generated, and - the escape is ignored. *Note Debugging::, for information about - warnings. - - groff resolves `\[...]' with more than a single component as - follows: - - * Any component which is found in the GGL will be converted to - the `uXXXX' form. - - * Any component `uXXXX' which is found in the list of - decomposable glyphs will be decomposed. - - * The resulting elements are then concatenated with `_' - inbetween, dropping the leading `u' in all elements but the - first. - - No check for the existence of any component (similar to `tr' - request) will be done. - - Examples: - - `\[A ho]' - `A' maps to `u0041', `ho' maps to `u02DB', thus the final - glyph name would be `u0041_02DB'. Note this is not the - expected result: The ogonek glyph `ho' is a spacing ogonek, - but for a proper composite a non-spacing ogonek (U+0328) is - necessary. Looking into the file `composite.tmac' one can - find `.composite ho u0328' which changes the mapping of `ho' - while a composite glyph name is constructed, causing the - final glyph name to be `u0041_0328'. - - `\[^E u0301]' - `\[^E aa]' - `\[E a^ aa]' - `\[E ^ ']' - `^E' maps to `u0045_0302', thus the final glyph name is - `u0045_0302_0301' in all forms (assuming proper calls of the - `composite' request). - - It is not possible to define glyphs with names like `A ho' within - a groff font file. This is not really a limitation; instead, you - have to define `u0041_0328'. - - - Escape: \C'xxx' - Typeset the glyph named XXX.(2) (*note Using Symbols-Footnote-2::) - Normally it is more convenient to use `\[XXX]', but `\C' has the - advantage that it is compatible with newer versions of AT&T - `troff' and is available in compatibility mode. - - - Request: .composite from to - Map glyph name FROM to glyph name TO if it is used in `\[...]' - with more than one component. See above for examples. - - This mapping is based on glyph names only; no check for the - existence of either glyph is done. - - A set of default mappings for many accents can be found in the file - `composite.tmac' which is loaded at start-up. - - - Escape: \N'n' - Typeset the glyph with code N in the current font (`n' is *not* - the input character code). The number N can be any non-negative - decimal integer. Most devices only have glyphs with codes between - 0 and 255; the Unicode output device uses codes in the range - 0-65535. If the current font does not contain a glyph with that - code, special fonts are _not_ searched. The `\N' escape sequence - can be conveniently used in conjunction with the `char' request: - - - .char \[phone] \f[ZD]\N'37' - - The code of each glyph is given in the fourth column in the font - description file after the `charset' command. It is possible to - include unnamed glyphs in the font description file by using a - name of `---'; the `\N' escape sequence is the only way to use - these. - - No kerning is applied to glyphs accessed with `\N'. - - Some escape sequences directly map onto special glyphs. - - - Escape: \' - This is a backslash followed by the apostrophe character, ASCII - character `0x27' (EBCDIC character `0x7D'). The same as `\[aa]', - the acute accent. - - - Escape: \` - This is a backslash followed by ASCII character `0x60' (EBCDIC - character `0x79' usually). The same as `\[ga]', the grave accent. - - - Escape: \- - This is the same as `\[-]', the minus sign in the current font. - - - Request: .cflags n c1 c2 ... - Input characters and symbols have certain properties associated - with it.(3) (*note Using Symbols-Footnote-3::) These properties - can be modified with the `cflags' request. The first argument is - the sum of the desired flags and the remaining arguments are the - characters or symbols to have those properties. It is possible to - omit the spaces between the characters or symbols. - - `1' - The character ends sentences (initially characters `.?!' have - this property). - - `2' - Lines can be broken before the character (initially no - characters have this property). - - `4' - Lines can be broken after the character (initially the - character `-' and the symbols `\[hy]' and `\[em]' have this - property). - - `8' - The character overlaps horizontally (initially the symbols - `\[ul]', `\[rn]', `\[ru]', `\[radicalex', and `\[sqrtex]' - have this property). - - `16' - The character overlaps vertically (initially symbol `\[br]' - has this property). - - `32' - An end-of-sentence character followed by any number of - characters with this property is treated as the end of a - sentence if followed by a newline or two spaces; in other - words the character is "transparent" for the purposes of - end-of-sentence recognition - this is the same as having a - zero space factor in TeX (initially characters `"')]*' and - the symbols `\[dg]' and `\[rq]' have this property). - - - Request: .char g [string] - - Request: .fchar g [string] - - Request: .fschar f g [string] - - Request: .schar g [string] - Define a new glyph G to be STRING (which can be empty).(4) (*note - Using Symbols-Footnote-4::) Every time glyph G needs to be - printed, STRING is processed in a temporary environment and the - result is wrapped up into a single object. Compatibility mode is - turned off and the escape character is set to `\' while STRING is - being processed. Any emboldening, constant spacing or track - kerning is applied to this object rather than to individual - characters in STRING. - - A glyph defined by these requests can be used just like a normal - glyph provided by the output device. In particular, other - characters can be translated to it with the `tr' or `trin' - requests; it can be made the leader character by the `lc' request; - repeated patterns can be drawn with the glyph using the `\l' and - `\L' escape sequences; words containing the glyph can be - hyphenated correctly if the `hcode' request is used to give the - glyph's symbol a hyphenation code. - - There is a special anti-recursion feature: Use of `g' within the - glyph's definition is handled like normal characters and symbols - not defined with `char'. - - Note that the `tr' and `trin' requests take precedence if `char' - accesses the same symbol. - - - .tr XY - X - => Y - .char X Z - X - => Y - .tr XX - X - => Z - - The `fchar' request defines a fallback glyph: `gtroff' only checks - for glyphs defined with `fchar' if it cannot find the glyph in the - current font. `gtroff' carries out this test before checking - special fonts. - - `fschar' defines a fallback glyph for font F: `gtroff' checks for - glyphs defined with `fschar' after the list of fonts declared as - font-specific special fonts with the `fspecial' request, but - before the list of fonts declared as global special fonts with the - `special' request. - - Finally, the `schar' request defines a global fallback glyph: - `gtroff' checks for glyphs defined with `schar' after the list of - fonts declared as global special fonts with the `special' request, - but before the already mounted special fonts. - - *Note Using Symbols::, for a detailed description of the glyph - searching mechanism in `gtroff'. - - - Request: .rchar c1 c2 ... - - Request: .rfschar f c1 c2 ... - Remove the definitions of glyphs C1, C2, .... This undoes the - effect of a `char', `fchar', or `schar' request. - - It is possible to omit the whitespace between arguments. - - The request `rfschar' removes glyph definitions defined with - `fschar' for glyph f. - - *Note Special Characters::. - - -File: groff, Node: Using Symbols-Footnotes, Up: Using Symbols - - (1) Note that a one-character symbol is not the same as an input -character, i.e., the character `a' is not the same as `\[a]'. By -default, `groff' defines only a single one-character symbol, `\[-]'; it -is usually accessed as `\-'. On the other hand, `gtroff' has the -special feature that `\[charXXX]' is the same as the input character -with character code XXX. For example, `\[char97]' is identical to the -letter `a' if ASCII encoding is active. - - (2) `\C' is actually a misnomer since it accesses an output glyph. - - (3) Note that the output glyphs themselves don't have such -properties. For `gtroff', a glyph is a numbered box with a given -width, depth, and height, nothing else. All manipulations with the -`cflags' request work on the input level. - - (4) `char' is a misnomer since an output glyph is defined. - - -File: groff, Node: Special Fonts, Next: Artificial Fonts, Prev: Using Symbols, Up: Fonts and Symbols - -Special Fonts -------------- - - Special fonts are those that `gtroff' searches when it cannot find -the requested glyph in the current font. The Symbol font is usually a -special font. - - `gtroff' provides the following two requests to add more special -fonts. *Note Using Symbols::, for a detailed description of the glyph -searching mechanism in `gtroff'. - - Usually, only non-TTY devices have special fonts. - - - Request: .special [s1 s2 ...] - - Request: .fspecial f [s1 s2 ...] - Use the `special' request to define special fonts. Initially, this - list is empty. - - Use the `fspecial' request to designate special fonts only when - font F is active. Initially, this list is empty. - - Previous calls to `special' or `fspecial' are overwritten; without - arguments, the particular list of special fonts is set to empty. - Special fonts are searched in the order they appear as arguments. - - All fonts which appear in a call to `special' or `fspecial' are - loaded. - - *Note Using Symbols::, for the exact search order of glyphs. - - -File: groff, Node: Artificial Fonts, Next: Ligatures and Kerning, Prev: Special Fonts, Up: Fonts and Symbols - -Artificial Fonts ----------------- - - There are a number of requests and escapes for artificially creating -fonts. These are largely vestiges of the days when output devices did -not have a wide variety of fonts, and when `nroff' and `troff' were -separate programs. Most of them are no longer necessary in GNU -`troff'. Nevertheless, they are supported. - - - Escape: \H'height' - - Escape: \H'+height' - - Escape: \H'-height' - - Register: \n[.height] - Change (increment, decrement) the height of the current font, but - not the width. If HEIGHT is zero, restore the original height. - Default scaling indicator is `z'. - - The read-only number register `.height' contains the font height as - set by `\H'. - - Currently, only the `-Tps' device supports this feature. - - Note that `\H' doesn't produce an input token in `gtroff'. As a - consequence, it can be used in requests like `mc' (which expects a - single character as an argument) to change the font on the fly: - - - .mc \H'+5z'x\H'0' - - In compatibility mode, `gtroff' behaves differently: If an - increment or decrement is used, it is always taken relative to the - current point size and not relative to the previously selected font - height. Thus, - - - .cp 1 - \H'+5'test \H'+5'test - - prints the word `test' twice with the same font height (five - points larger than the current font size). - - - Escape: \S'slant' - - Register: \n[.slant] - Slant the current font by SLANT degrees. Positive values slant to - the right. Only integer values are possible. - - The read-only number register `.slant' contains the font slant as - set by `\S'. - - Currently, only the `-Tps' device supports this feature. - - Note that `\S' doesn't produce an input token in `gtroff'. As a - consequence, it can be used in requests like `mc' (which expects a - single character as an argument) to change the font on the fly: - - - .mc \S'20'x\S'0' - - This request is incorrectly documented in the original UNIX troff - manual; the slant is always set to an absolute value. - - - Request: .ul [lines] - The `ul' request normally underlines subsequent lines if a TTY - output device is used. Otherwise, the lines are printed in italics - (only the term `underlined' is used in the following). The single - argument is the number of input lines to be underlined; with no - argument, the next line is underlined. If LINES is zero or - negative, stop the effects of `ul' (if it was active). Requests - and empty lines do not count for computing the number of underlined - input lines, even if they produce some output like `tl'. Lines - inserted by macros (e.g. invoked by a trap) do count. - - At the beginning of `ul', the current font is stored and the - underline font is activated. Within the span of a `ul' request, - it is possible to change fonts, but after the last line affected by - `ul' the saved font is restored. - - This number of lines still to be underlined is associated with the - current environment (*note Environments::). The underline font - can be changed with the `uf' request. - - The `ul' request does not underline spaces. - - - Request: .cu [lines] - The `cu' request is similar to `ul' but underlines spaces as well - (if a TTY output device is used). - - - Request: .uf font - Set the underline font (globally) used by `ul' and `cu'. By - default, this is the font at position 2. FONT can be either a - non-negative font position or the name of a font. - - - Request: .bd font [offset] - - Request: .bd font1 font2 [offset] - - Register: \n[.b] - Artificially create a bold font by printing each glyph twice, - slightly offset. - - Two syntax forms are available. - - * Imitate a bold font unconditionally. The first argument - specifies the font to embolden, and the second is the number - of basic units, minus one, by which the two glyphs are - offset. If the second argument is missing, emboldening is - turned off. - - FONT can be either a non-negative font position or the name - of a font. - - OFFSET is available in the `.b' read-only register if a - special font is active; in the `bd' request, its default unit - is `u'. - - * Imitate a bold form conditionally. Embolden FONT1 by OFFSET - only if font FONT2 is the current font. This command can be - issued repeatedly to set up different emboldening values for - different current fonts. If the second argument is missing, - emboldening is turned off for this particular current font. - - This affects special fonts only (either set up with the - `special' command in font files or with the `fspecial' - request). - - - Request: .cs font [width [em-size]] - Switch to and from "constant glyph space mode". If activated, the - width of every glyph is WIDTH/36 ems. The em size is given - absolutely by EM-SIZE; if this argument is missing, the em value - is taken from the current font size (as set with the `ps' request) - when the font is effectively in use. Without second and third - argument, constant glyph space mode is deactivated. - - Default scaling indicator for EM-SIZE is `z'; WIDTH is an integer. - - -File: groff, Node: Ligatures and Kerning, Prev: Artificial Fonts, Up: Fonts and Symbols - -Ligatures and Kerning ---------------------- - - Ligatures are groups of characters that are run together, i.e, -producing a single glyph. For example, the letters `f' and `i' can -form a ligature `fi' as in the word `file'. This produces a cleaner -look (albeit subtle) to the printed output. Usually, ligatures are not -available in fonts for TTY output devices. - - Most POSTSCRIPT fonts support the fi and fl ligatures. The C/A/T -typesetter that was the target of AT&T `troff' also supported `ff', -`ffi', and `ffl' ligatures. Advanced typesetters or `expert' fonts may -include ligatures for `ft' and `ct', although GNU `troff' does not -support these (yet). - - Only the current font is checked for ligatures and kerns; neither -special fonts nor entities defined with the `char' request (and its -siblings) are taken into account. - - - Request: .lg [flag] - - Register: \n[.lg] - Switch the ligature mechanism on or off; if the parameter is - non-zero or missing, ligatures are enabled, otherwise disabled. - Default is on. The current ligature mode can be found in the - read-only number register `.lg' (set to 1 or 2 if ligatures are - enabled, 0 otherwise). - - Setting the ligature mode to 2 enables the two-character ligatures - (fi, fl, and ff) and disables the three-character ligatures (ffi - and ffl). - - "Pairwise kerning" is another subtle typesetting mechanism that -modifies the distance between a glyph pair to improve readability. In -most cases (but not always) the distance is decreased. Typewriter-like -fonts and fonts for terminals where all glyphs have the same width -don't use kerning. - - - Request: .kern [flag] - - Register: \n[.kern] - Switch kerning on or off. If the parameter is non-zero or missing, - enable pairwise kerning, otherwise disable it. The read-only - number register `.kern' is set to 1 if pairwise kerning is enabled, - 0 otherwise. - - If the font description file contains pairwise kerning information, - glyphs from that font are kerned. Kerning between two glyphs can - be inhibited by placing `\&' between them: `V\&A'. - - *Note Font File Format::. - - "Track kerning" expands or reduces the space between glyphs. This -can be handy, for example, if you need to squeeze a long word onto a -single line or spread some text to fill a narrow column. It must be -used with great care since it is usually considered bad typography if -the reader notices the effect. - - - Request: .tkf f s1 n1 s2 n2 - Enable track kerning for font F. If the current font is F the - width of every glyph is increased by an amount between N1 and N2 - (N1, N2 can be negative); if the current point size is less than - or equal to S1 the width is increased by N1; if it is greater than - or equal to S2 the width is increased by N2; if the point size is - greater than or equal to S1 and less than or equal to S2 the - increase in width is a linear function of the point size. - - The default scaling indicator is `z' for S1 and S2, `p' for N1 and - N2. - - Note that the track kerning amount is added even to the rightmost - glyph in a line; for large values it is thus recommended to - increase the line length by the same amount to compensate it. - - Sometimes, when typesetting letters of different fonts, more or less -space at such boundaries are needed. There are two escapes to help -with this. - - - Escape: \/ - Increase the width of the preceding glyph so that the spacing - between that glyph and the following glyph is correct if the - following glyph is a roman glyph. For example, if an italic `f' - is immediately followed by a roman right parenthesis, then in many - fonts the top right portion of the `f' overlaps the top left of - the right parenthesis. Use this escape sequence whenever an - italic glyph is immediately followed by a roman glyph without any - intervening space. This small amount of space is also called - "italic correction". - - - - Escape: \, - Modify the spacing of the following glyph so that the spacing - between that glyph and the preceding glyph is correct if the - preceding glyph is a roman glyph. Use this escape sequence - whenever a roman glyph is immediately followed by an italic glyph - without any intervening space. In analogy to above, this space - could be called "left italic correction", but this term isn't used - widely. - - - - Escape: \& - Insert a zero-width character, which is invisible. Its intended - use is to stop interaction of a character with its surrounding. - - * It prevents the insertion of extra space after an - end-of-sentence character. - - - Test. - Test. - => Test. Test. - Test.\& - Test. - => Test. Test. - - * It prevents interpretation of a control character at the - beginning of an input line. - - - .Test - => warning: `Test' not defined - \&.Test - => .Test - - * It prevents kerning between two glyphs. - - * It is needed to map an arbitrary character to nothing in the - `tr' request (*note Character Translations::). - - - Escape: \) - This escape is similar to `\&' except that it behaves like a - character declared with the `cflags' request to be transparent for - the purposes of an end-of-sentence character. - - Its main usage is in macro definitions to protect against arguments - starting with a control character. - - - .de xxx - \)\\$1 - .. - .de yyy - \&\\$1 - .. - This is a test.\c - .xxx ' - This is a test. - =>This is a test.' This is a test. - This is a test.\c - .yyy ' - This is a test. - =>This is a test.' This is a test. - - - -File: groff, Node: Sizes, Next: Strings, Prev: Fonts and Symbols, Up: gtroff Reference - -Sizes -===== - - `gtroff' uses two dimensions with each line of text, type size and -vertical spacing. The "type size" is approximately the height of the -tallest glyph.(1) (*note Sizes-Footnote-1::) "Vertical spacing" is the -amount of space `gtroff' allows for a line of text; normally, this is -about 20% larger than the current type size. Ratios smaller than this -can result in hard-to-read text; larger than this, it spreads the text -out more vertically (useful for term papers). By default, `gtroff' -uses 10 point type on 12 point spacing. - - The difference between type size and vertical spacing is known, by -typesetters, as "leading" (this is pronounced `ledding'). - -* Menu: - -* Changing Type Sizes:: -* Fractional Type Sizes:: - - -File: groff, Node: Sizes-Footnotes, Up: Sizes - - (1) This is usually the parenthesis. Note that in most cases the -real dimensions of the glyphs in a font are _not_ related to its type -size! For example, the standard POSTSCRIPT font families `Times -Roman', `Helvetica', and `Courier' can't be used together at 10pt; to -get acceptable output, the size of `Helvetica' has to be reduced by one -point, and the size of `Courier' must be increased by one point. - diff --git a/contrib/groff/doc/groff-6 b/contrib/groff/doc/groff-6 deleted file mode 100644 index f7f01e1..0000000 --- a/contrib/groff/doc/groff-6 +++ /dev/null @@ -1,1462 +0,0 @@ -This is groff, produced by makeinfo version 4.3d from ./groff.texinfo. - -This manual documents GNU `troff' version 1.19. - - Copyright (C) 1994-2000, 2001, 2002, 2003 Free Software Foundation, -Inc. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being `A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - `GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: `You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -INFO-DIR-SECTION Typesetting -START-INFO-DIR-ENTRY -* Groff: (groff). The GNU troff document formatting system. -END-INFO-DIR-ENTRY - - -File: groff, Node: Changing Type Sizes, Next: Fractional Type Sizes, Prev: Sizes, Up: Sizes - -Changing Type Sizes -------------------- - - - Request: .ps [size] - - Request: .ps +size - - Request: .ps -size - - Escape: \ssize - - Register: \n[.s] - Use the `ps' request or the `\s' escape to change (increase, - decrease) the type size (in points). Specify SIZE as either an - absolute point size, or as a relative change from the current size. - The size 0, or no argument, goes back to the previous size. - - Default scaling indicator of `size' is `z'. If `size' is zero or - negative, it is set to 1u. - - The read-only number register `.s' returns the point size in - points as a decimal fraction. This is a string. To get the point - size in scaled points, use the `.ps' register instead. - - `.s' is associated with the current environment (*note - Environments::). - - - snap, snap, - .ps +2 - grin, grin, - .ps +2 - wink, wink, \s+2nudge, nudge,\s+8 say no more! - .ps 10 - - The `\s' escape may be called in a variety of ways. Much like - other escapes there must be a way to determine where the argument - ends and the text begins. Any of the following forms are valid: - - `\sN' - Set the point size to N points. N must be either 0 or in the - range 4 to 39. - - `\s+N' - `\s-N' - Increase or decrease the point size by N points. N must be - exactly one digit. - - `\s(NN' - Set the point size to NN points. NN must be exactly two - digits. - - `\s+(NN' - `\s-(NN' - `\s(+NN' - `\s(-NN' - Increase or decrease the point size by NN points. NN must be - exactly two digits. - - Note that `\s' doesn't produce an input token in `gtroff'. As a - consequence, it can be used in requests like `mc' (which expects a - single character as an argument) to change the font on the fly: - - - .mc \s[20]x\s[0] - - *Note Fractional Type Sizes::, for yet another syntactical form of - using the `\s' escape. - - - Request: .sizes s1 s2 ... sn [0] - Some devices may only have certain permissible sizes, in which case - `gtroff' rounds to the nearest permissible size. The `DESC' file - specifies which sizes are permissible for the device. - - Use the `sizes' request to change the permissible sizes for the - current output device. Arguments are in scaled points; the - `sizescale' line in the `DESC' file for the output device provides - the scaling factor. For example, if the scaling factor is 1000, - then the value 12000 is 12 points. - - Each argument can be a single point size (such as `12000'), or a - range of sizes (such as `4000-72000'). You can optionally end the - list with a zero. - - - Request: .vs [space] - - Request: .vs +space - - Request: .vs -space - - Register: \n[.v] - Change (increase, decrease) the vertical spacing by SPACE. The - default scaling indicator is `p'. - - If `vs' is called without an argument, the vertical spacing is - reset to the previous value before the last call to `vs'. - - `gtroff' creates a warning of type `range' if SPACE is negative; - the vertical spacing is then set to the vertical resolution (as - given in the `.V' register). - - The read-only number register `.v' contains the current vertical - spacing; it is associated with the current environment (*note - Environments::). - - The effective vertical line spacing consists of four components. - - * The vertical line spacing as set with the `vs' request. - - * The "post-vertical line spacing" as set with the `pvs' request. - This is vertical space which will be added after a line has been - output. - - * The "extra pre-vertical line space" as set with the `\x' request, - using a negative value. This is vertical space which will be - added once before the current line has been output. - - * The "extra post-vertical line space" as set with the `\x' request, - using a positive value. This is vertical space which will be - added once after the current line has been output. - - It is usually better to use `vs' or `pvs' instead of `ls' to produce -double-spaced documents: `vs' and `pvs' have a finer granularity for -the inserted vertical space compared to `ls'; furthermore, certain -preprocessors assume single-spacing. - - *Note Manipulating Spacing::, for more details on the `\x' escape -and the `ls' request. - - - Request: .pvs [space] - - Request: .pvs +space - - Request: .pvs -space - - Register: \n[.pvs] - Change (increase, decrease) the post-vertical spacing by SPACE. - The default scaling indicator is `p'. - - If `pvs' is called without an argument, the post-vertical spacing - is reset to the previous value before the last call to `pvs'. - - `gtroff' creates a warning of type `range' if SPACE is zero or - negative; the vertical spacing is then set to zero. - - The read-only number register `.pvs' contains the current - post-vertical spacing; it is associated with the current - environment (*note Environments::). - - -File: groff, Node: Fractional Type Sizes, Prev: Changing Type Sizes, Up: Sizes - -Fractional Type Sizes ---------------------- - - A "scaled point" is equal to 1/SIZESCALE points, where SIZESCALE is -specified in the `DESC' file (1 by default). There is a new scale -indicator `z' which has the effect of multiplying by SIZESCALE. -Requests and escape sequences in `gtroff' interpret arguments that -represent a point size as being in units of scaled points, but they -evaluate each such argument using a default scale indicator of `z'. -Arguments treated in this way are the argument to the `ps' request, the -third argument to the `cs' request, the second and fourth arguments to -the `tkf' request, the argument to the `\H' escape sequence, and those -variants of the `\s' escape sequence that take a numeric expression as -their argument (see below). - - For example, suppose SIZESCALE is 1000; then a scaled point is -equivalent to a millipoint; the request `.ps 10.25' is equivalent to -`.ps 10.25z' and thus sets the point size to 10250 scaled points, which -is equal to 10.25 points. - - `gtroff' disallows the use of the `z' scale indicator in instances -where it would make no sense, such as a numeric expression whose -default scale indicator was neither `u' nor `z'. Similarly it would -make no sense to use a scaling indicator other than `z' or `u' in a -numeric expression whose default scale indicator was `z', and so -`gtroff' disallows this as well. - - There is also new scale indicator `s' which multiplies by the number -of units in a scaled point. So, for example, `\n[.ps]s' is equal to -`1m'. Be sure not to confuse the `s' and `z' scale indicators. - - - Register: \n[.ps] - A read-only number register returning the point size in scaled - points. - - `.ps' is associated with the current environment (*note - Environments::). - - - Register: \n[.psr] - - Register: \n[.sr] - The last-requested point size in scaled points is contained in the - `.psr' read-only number register. The last requested point size - in points as a decimal fraction can be found in `.sr'. This is a - string-valued read-only number register. - - Note that the requested point sizes are device-independent, whereas - the values returned by the `.ps' and `.s' registers are not. For - example, if a point size of 11pt is requested, and a `sizes' - request (or a `sizescale' line in a `DESC' file) specifies 10.95pt - instead, this value is actually used. - - Both registers are associated with the current environment (*note - Environments::). - - The `\s' escape has the following syntax for working with fractional -type sizes: - -`\s[N]' -`\s'N'' - Set the point size to N scaled points; N is a numeric expression - with a default scale indicator of `z'. - -`\s[+N]' -`\s[-N]' -`\s+[N]' -`\s-[N]' -`\s'+N'' -`\s'-N'' -`\s+'N'' -`\s-'N'' - Increase or or decrease the point size by N scaled points; N is a - numeric expression with a default scale indicator of `z'. - - *Note Font Files::. - - -File: groff, Node: Strings, Next: Conditionals and Loops, Prev: Sizes, Up: gtroff Reference - -Strings -======= - - `gtroff' has string variables, which are entirely for user -convenience (i.e. there are no built-in strings exept `.T', but even -this is a read-write string variable). - - - Request: .ds name [string] - - Request: .ds1 name [string] - - Escape: \*n - - Escape: \*(nm - - Escape: \*[name arg1 arg2 ...] - Define and access a string variable NAME (one-character name N, - two-character name NM). If NAME already exists, `ds' overwrites - the previous definition. Only the syntax form using brackets can - take arguments which are handled identically to macro arguments; - the single exception is that a closing bracket as an argument must - be enclosed in double quotes. *Note Request and Macro - Arguments::, and *Note Parameters::. - - Example: - - - .ds foo a \\$1 test - . - This is \*[foo nice]. - => This is a nice test. - - The `\*' escape "interpolates" (expands in-place) a - previously-defined string variable. To be more precise, the stored - string is pushed onto the input stack which is then parsed by - `gtroff'. Similar to number registers, it is possible to nest - strings, i.e. string variables can be called within string - variables. - - If the string named by the `\*' escape does not exist, it is - defined as empty, and a warning of type `mac' is emitted (see - *Note Debugging::, for more details). - - *Caution:* Unlike other requests, the second argument to the `ds' - request takes up the entire line including trailing spaces. This - means that comments on a line with such a request can introduce - unwanted space into a string. - - - .ds UX \s-1UNIX\s0\u\s-3tm\s0\d \" UNIX trademark - - Instead the comment should be put on another line or have the - comment escape adjacent with the end of the string. - - - .ds UX \s-1UNIX\s0\u\s-3tm\s0\d\" UNIX trademark - - To produce leading space the string can be started with a double - quote. No trailing quote is needed; in fact, any trailing quote is - included in your string. - - - .ds sign " Yours in a white wine sauce, - - Strings are not limited to a single line of text. A string can - span several lines by escaping the newlines with a backslash. The - resulting string is stored _without_ the newlines. - - - .ds foo lots and lots \ - of text are on these \ - next several lines - - It is not possible to have real newlines in a string. To put a - single double quote character into a string, use two consecutive - double quote characters. - - The `ds1' request turns off compatibility mode while interpreting - a string. To be more precise, a "compatibility save" input token - is inserted at the beginning of the string, and a "compatibility - restore" input token at the end. - - - .nr xxx 12345 - .ds aa The value of xxx is \\n[xxx]. - .ds1 bb The value of xxx ix \\n[xxx]. - . - .cp 1 - . - \*(aa - => warning: number register `[' not defined - => The value of xxx is 0xxx]. - \*(bb - => The value of xxx ix 12345. - - Strings, macros, and diversions (and boxes) share the same name - space. Internally, even the same mechanism is used to store them. - This has some interesting consequences. For example, it is - possible to call a macro with string syntax and vice versa. - - - .de xxx - a funny test. - .. - This is \*[xxx] - => This is a funny test. - - .ds yyy a funny test - This is - .yyy - => This is a funny test. - - Diversions and boxes can be also called with string syntax. - - Another consequence is that you can copy one-line diversions or - boxes to a string. - - - .di xxx - a \fItest\fR - .br - .di - .ds yyy This is \*[xxx]\c - \*[yyy]. - => This is a test. - - As the previous example shows, it is possible to store formatted - output in strings. The `\c' escape prevents the insertion of an - additional blank line in the output. - - Copying diversions longer than a single output line produces - unexpected results. - - - .di xxx - a funny - .br - test - .br - .di - .ds yyy This is \*[xxx]\c - \*[yyy]. - => test This is a funny. - - Usually, it is not predictable whether a diversion contains one or - more output lines, so this mechanism should be avoided. With UNIX - `troff', this was the only solution to strip off a final newline - from a diversion. Another disadvantage is that the spaces in the - copied string are already formatted, making them unstretchable. - This can cause ugly results. - - A clean solution to this problem is available in GNU `troff', - using the requests `chop' to remove the final newline of a - diversion, and `unformat' to make the horizontal spaces - stretchable again. - - - .box xxx - a funny - .br - test - .br - .box - .chop xxx - .unformat xxx - This is \*[xxx]. - => This is a funny test. - - *Note Gtroff Internals::, for more information. - - - Request: .as name [string] - - Request: .as1 name [string] - The `as' request is similar to `ds' but appends STRING to the - string stored as NAME instead of redefining it. If NAME doesn't - exist yet, it is created. - - - .as sign " with shallots, onions and garlic, - - The `as1' request is similar to `as', but compatibility mode is - switched off while the appended string is interpreted. To be more - precise, a "compatibility save" input token is inserted at the - beginning of the appended string, and a "compatibility restore" - input token at the end. - - Rudimentary string manipulation routines are given with the next two -requests. - - - Request: .substring str n1 [n2] - Replace the string named STR with the substring defined by the - indices N1 and N2. The first character in the string has index 0. - If N2 is omitted, it is taken to be equal to the string's length. - If the index value N1 or N2 is negative, it is counted from the - end of the string, going backwards: The last character has - index -1, the character before the last character has index -2, - etc. - - - .ds xxx abcdefgh - .substring xxx 1 -4 - \*[xxx] - => bcde - - - - Request: .length reg str - Compute the number of characters of STR and return it in the - number register REG. If REG doesn't exist, it is created. `str' - is read in copy mode. - - - .ds xxx abcd\h'3i'efgh - .length yyy \*[xxx] - \n[yyy] - => 14 - - - - Request: .rn xx yy - Rename the request, macro, diversion, or string XX to YY. - - - Request: .rm xx - Remove the request, macro, diversion, or string XX. `gtroff' - treats subsequent invocations as if the object had never been - defined. - - - Request: .als new old - Create an alias named NEW for the request, string, macro, or - diversion object named OLD. The new name and the old name are - exactly equivalent (it is similar to a hard rather than a soft - link). If OLD is undefined, `gtroff' generates a warning of type - `mac' and ignores the request. - - - Request: .chop xx - Remove (chop) the last character from the macro, string, or - diversion named XX. This is useful for removing the newline from - the end of diversions that are to be interpolated as strings. - This command can be used repeatedly; see *Note Gtroff Internals::, - for details on nodes inserted additionally by `gtroff'. - - *Note Identifiers::, and *Note Comments::. - - -File: groff, Node: Conditionals and Loops, Next: Writing Macros, Prev: Strings, Up: gtroff Reference - -Conditionals and Loops -====================== - -* Menu: - -* Operators in Conditionals:: -* if-else:: -* while:: - - -File: groff, Node: Operators in Conditionals, Next: if-else, Prev: Conditionals and Loops, Up: Conditionals and Loops - -Operators in Conditionals -------------------------- - - In `if' and `while' requests, there are several more operators -available: - -`e' -`o' - True if the current page is even or odd numbered (respectively). - -`n' - True if the document is being processed in nroff mode (i.e., the - `.nroff' command has been issued). - -`t' - True if the document is being processed in troff mode (i.e., the - `.troff' command has been issued). - -`v' - Always false. This condition is for compatibility with other - `troff' versions only. - -`'XXX'YYY'' - True if the string XXX is equal to the string YYY. Other - characters can be used in place of the single quotes; the same set - of delimiters as for the `\D' escape is used (*note Escapes::). - `gtroff' formats the strings before being compared: - - - .ie "|"\fR|\fP" \ - true - .el \ - false - => true - - The resulting motions, glyph sizes, and fonts have to match,(1) - (*note Operators in Conditionals-Footnote-1::) and not the - individual motion, size, and font requests. In the previous - example, `|' and `\fR|\fP' both result in a roman `|' glyph with - the same point size and at the same location on the page, so the - strings are equal. If `.ft I' had been added before the `.ie', - the result would be "false" because (the first) `|' produces an - italic `|' rather than a roman one. - -`r XXX' - True if there is a number register named XXX. - -`d XXX' - True if there is a string, macro, diversion, or request named XXX. - -`m XXX' - True if there is a color named XXX. - -`c G' - True if there is a glyph G available(2) (*note Operators in - Conditionals-Footnote-2::); G is either an ASCII character or a - special character (`\(GG' or `\[GGG]'); the condition is also true - if G has been defined by the `char' request. - - Note that these operators can't be combined with other operators like -`:' or `&'; only a leading `!' (without whitespace between the -exclamation mark and the operator) can be used to negate the result. - - - .nr xxx 1 - .ie !r xxx \ - true - .el \ - false - => false - - A whitespace after `!' always evaluates to zero (this bizarre -behaviour is due to compatibility with UNIX `troff'). - - - .nr xxx 1 - .ie ! r xxx \ - true - .el \ - false - => r xxx true - - It is possible to omit the whitespace before the argument to the -`r', `d', and `c' operators. - - *Note Expressions::. - - -File: groff, Node: Operators in Conditionals-Footnotes, Up: Operators in Conditionals - - (1) The created output nodes must be identical. *Note Gtroff -Internals::. - - (2) The name of this conditional operator is a misnomer since it -tests names of output glyphs. - - -File: groff, Node: if-else, Next: while, Prev: Operators in Conditionals, Up: Conditionals and Loops - -if-else -------- - - `gtroff' has if-then-else constructs like other languages, although -the formatting can be painful. - - - Request: .if expr anything - Evaluate the expression EXPR, and executes ANYTHING (the remainder - of the line) if EXPR evaluates to non-zero (true). ANYTHING is - interpreted as though it was on a line by itself (except that - leading spaces are swallowed). *Note Expressions::, for more info. - - - .nr xxx 1 - .nr yyy 2 - .if ((\n[xxx] == 1) & (\n[yyy] == 2)) true - => true - - - - Request: .nop anything - Executes ANYTHING. This is similar to `.if 1'. - - - Request: .ie expr anything - - Request: .el anything - Use the `ie' and `el' requests to write an if-then-else. The - first request is the `if' part and the latter is the `else' part. - - - .ie n .ls 2 \" double-spacing in nroff - .el .ls 1 \" single-spacing in troff - - - - Escape: \{ - - Escape: \} - In many cases, an if (or if-else) construct needs to execute more - than one request. This can be done using the `\{' and `\}' - escapes. The following example shows the possible ways to use - these escapes (note the position of the opening and closing - braces). - - - .ie t \{\ - . ds lq `` - . ds rq '' - .\} - .el \ - .\{\ - . ds lq " - . ds rq "\} - - - *Note Expressions::. - - -File: groff, Node: while, Prev: if-else, Up: Conditionals and Loops - -while ------ - - `gtroff' provides a looping construct using the `while' request, -which is used much like the `if' (and related) requests. - - - Request: .while expr anything - Evaluate the expression EXPR, and repeatedly execute ANYTHING (the - remainder of the line) until EXPR evaluates to 0. - - - .nr a 0 1 - .while (\na < 9) \{\ - \n+a, - .\} - \n+a - => 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 - - Some remarks. - - * The body of a `while' request is treated like the body of a - `de' request: `gtroff' temporarily stores it in a macro which - is deleted after the loop has been exited. It can - considerably slow down a macro if the body of the `while' - request (within the macro) is large. Each time the macro is - executed, the `while' body is parsed and stored again as a - temporary macro. - - - .de xxx - . nr num 10 - . while (\\n[num] > 0) \{\ - . \" many lines of code - . nr num -1 - . \} - .. - - The traditional and ofter better solution (UNIX `troff' - doesn't have the `while' request) is to use a recursive macro - instead which is parsed only once during its definition. - - - .de yyy - . if (\\n[num] > 0) \{\ - . \" many lines of code - . nr num -1 - . yyy - . \} - .. - . - .de xxx - . nr num 10 - . yyy - .. - - Note that the number of available recursion levels is set - to 1000 (this is a compile-time constant value of `gtroff'). - - * The closing brace of a `while' body must end a line. - - - .if 1 \{\ - . nr a 0 1 - . while (\n[a] < 10) \{\ - . nop \n+[a] - .\}\} - => unbalanced \{ \} - - - - Request: .break - Break out of a `while' loop. Be sure not to confuse this with the - `br' request (causing a line break). - - - Request: .continue - Finish the current iteration of a `while' loop, immediately - restarting the next iteration. - - *Note Expressions::. - - -File: groff, Node: Writing Macros, Next: Page Motions, Prev: Conditionals and Loops, Up: gtroff Reference - -Writing Macros -============== - - A "macro" is a collection of text and embedded commands which can be -invoked multiple times. Use macros to define common operations. - - - Request: .de name [end] - - Request: .de1 name [end] - - Request: .dei name [end] - Define a new macro named NAME. `gtroff' copies subsequent lines - (starting with the next one) into an internal buffer until it - encounters the line `..' (two dots). The optional second argument - to `de' changes this to a macro to `.END'. - - There can be whitespace after the first dot in the line containing - the ending token (either `.' or macro `END'). - - Here a small example macro called `P' which causes a break and - inserts some vertical space. It could be used to separate - paragraphs. - - - .de P - . br - . sp .8v - .. - - The following example defines a macro within another. Remember - that expansion must be protected twice; once for reading the macro - and once for executing. - - - \# a dummy macro to avoid a warning - .de end - .. - . - .de foo - . de bar end - . nop \f[B]Hallo \\\\$1!\f[] - . end - .. - . - .foo - .bar Joe - => Hallo Joe! - - Since `\f' has no expansion, it isn't necessary to protect its - backslash. Had we defined another macro within `bar' which takes - a parameter, eight backslashes would be necessary before `$1'. - - The `de1' request turns off compatibility mode while executing the - macro. On entry, the current compatibility mode is saved and - restored at exit. - - - .nr xxx 12345 - . - .de aa - The value of xxx is \\n[xxx]. - .. - .de1 bb - The value of xxx ix \\n[xxx]. - .. - . - .cp 1 - . - .aa - => warning: number register ' not defined - => The value of xxx is 0xxx]. - .bb - => The value of xxx ix 12345. - - The `dei' request defines a macro indirectly. That is, it expands - strings whose names are NAME or END before performing the append. - - This: - - - .ds xx aa - .ds yy bb - .dei xx yy - - is equivalent to: - - - .de aa bb - - Using `trace.tmac', you can trace calls to `de' and `de1'. - - Note that macro identifiers are shared with identifiers for - strings and diversions. - - - Request: .am name [end] - - Request: .am1 name [end] - - Request: .ami name [end] - Works similarly to `de' except it appends onto the macro named - NAME. So, to make the previously defined `P' macro actually do - indented instead of block paragraphs, add the necessary code to the - existing macro like this: - - - .am P - .ti +5n - .. - - The `am1' request turns off compatibility mode while executing the - appended macro piece. To be more precise, a "compatibility save" - input token is inserted at the beginning of the appended code, and - a "compatibility restore" input token at the end. - - The `ami' request appends indirectly, meaning that `gtroff' - expands strings whose names are NAME or END before performing the - append. - - Using `trace.tmac', you can trace calls to `am' and `am1'. - - *Note Strings::, for the `als' request to rename a macro. - - The `de', `am', `di', `da', `ds', and `as' requests (together with -its variants) only create a new object if the name of the macro, -diversion or string diversion is currently undefined or if it is -defined to be a request; normally they modify the value of an existing -object. - - - Request: .return - Exit a macro, immediately returning to the caller. - -* Menu: - -* Copy-in Mode:: -* Parameters:: - - -File: groff, Node: Copy-in Mode, Next: Parameters, Prev: Writing Macros, Up: Writing Macros - -Copy-in Mode ------------- - - When `gtroff' reads in the text for a macro, string, or diversion, -it copies the text (including request lines, but excluding escapes) into -an internal buffer. Escapes are converted into an internal form, -except for `\n', `\$', `\*', `\\' and `\' which are evaluated and -inserted into the text where the escape was located. This is known as -"copy-in" mode or "copy" mode. - - What this means is that you can specify when these escapes are to be -evaluated (either at copy-in time or at the time of use) by insulating -the escapes with an extra backslash. Compare this to the `\def' and -`\edef' commands in TeX. - - The following example prints the numbers 20 and 10: - - - .nr x 20 - .de y - .nr x 10 - \&\nx - \&\\nx - .. - .y - - -File: groff, Node: Parameters, Prev: Copy-in Mode, Up: Writing Macros - -Parameters ----------- - - The arguments to a macro or string can be examined using a variety of -escapes. - - - Register: \n[.$] - The number of arguments passed to a macro or string. This is a - read-only number register. - - Any individual argument can be retrieved with one of the following -escapes: - - - Escape: \$n - - Escape: \$(nn - - Escape: \$[nnn] - Retrieve the Nth, NNth or NNNth argument. As usual, the first - form only accepts a single number (larger than zero), the second a - two-digit number (larger or equal to 10), and the third any - positive integer value (larger than zero). Macros and strings can - have an unlimited number of arguments. Note that due to copy-in - mode, use two backslashes on these in actual use to prevent - interpolation until the macro is actually invoked. - - - Request: .shift [n] - Shift the arguments 1 position, or as many positions as specified - by its argument. After executing this request, argument I becomes - argument I-N; arguments 1 to N are no longer available. Shifting - by negative amounts is currently undefined. - - - Escape: \$* - - Escape: \$@ - In some cases it is convenient to use all of the arguments at once - (for example, to pass the arguments along to another macro). The - `\$*' escape concatenates all the arguments separated by spaces. A - similar escape is `\$@', which concatenates all the arguments with - each surrounded by double quotes, and separated by spaces. If not - in compatibility mode, the input level of double quotes is - preserved (see *Note Request and Macro Arguments::). - - - Escape: \$0 - The name used to invoke the current macro. The `als' request can - make a macro have more than one name. - - - .de generic-macro - . ... - . if \\n[error] \{\ - . tm \\$0: Houston, we have a problem. - . return - . \} - .. - . - .als foo generic-macro - .als bar generic-macro - - - *Note Request and Macro Arguments::. - - -File: groff, Node: Page Motions, Next: Drawing Requests, Prev: Writing Macros, Up: gtroff Reference - -Page Motions -============ - - *Note Manipulating Spacing::, for a discussion of the main request -for vertical motion, `sp'. - - - Request: .mk [reg] - - Request: .rt [dist] - The request `mk' can be used to mark a location on a page, for - movement to later. This request takes a register name as an - argument in which to store the current page location. With no - argument it stores the location in an internal register. The - results of this can be used later by the `rt' or the `sp' request - (or the `\v' escape). - - The `rt' request returns _upwards_ to the location marked with the - last `mk' request. If used with an argument, return to a position - which distance from the top of the page is DIST (no previous call - to `mk' is necessary in this case). Default scaling indicator is - `v'. - - Here a primitive solution for a two-column macro. - - - .nr column-length 1.5i - .nr column-gap 4m - .nr bottom-margin 1m - . - - - .de 2c - . br - . mk - . ll \\n[column-length]u - . wh -\\n[bottom-margin]u 2c-trap - . nr right-side 0 - .. - . - - - .de 2c-trap - . ie \\n[right-side] \{\ - . nr right-side 0 - . po -(\\n[column-length]u + \\n[column-gap]u) - . \" remove trap - . wh -\\n[bottom-margin]u - . \} - . el \{\ - . \" switch to right side - . nr right-side 1 - . po +(\\n[column-length]u + \\n[column-gap]u) - . rt - . \} - .. - . - - - .pl 1.5i - .ll 4i - This is a small test which shows how the - rt request works in combination with mk. - - .2c - Starting here, text is typeset in two columns. - Note that this implementation isn't robust - and thus not suited for a real two-column - macro. - - Result: - - - This is a small test which shows how the - rt request works in combination with mk. - - Starting here, isn't robust - text is typeset and thus not - in two columns. suited for a - Note that this real two-column - implementation macro. - - - The following escapes give fine control of movements about the page. - - - Escape: \v'e' - Move vertically, usually from the current location on the page (if - no absolute position operator `|' is used). The argument E - specifies the distance to move; positive is downwards and negative - upwards. The default scaling indicator for this escape is `v'. - Beware, however, that `gtroff' continues text processing at the - point where the motion ends, so you should always balance motions - to avoid interference with text processing. - - `\v' doesn't trigger a trap. This can be quite useful; for - example, consider a page bottom trap macro which prints a marker - in the margin to indicate continuation of a footnote or something - similar. - - There are some special-case escapes for vertical motion. - - - Escape: \r - Move upwards 1v. - - - Escape: \u - Move upwards .5v. - - - Escape: \d - Move down .5v. - - - Escape: \h'e' - Move horizontally, usually from the current location (if no - absolute position operator `|' is used). The expression E - indicates how far to move: positive is rightwards and negative - leftwards. The default scaling indicator for this escape is `m'. - - This horizontal space is not discarded at the end of a line. To - insert discardable space of a certain length use the `ss' request. - - There are a number of special-case escapes for horizontal motion. - - - Escape: \ - An unbreakable and unpaddable (i.e. not expanded during filling) - space. (Note: This is a backslash followed by a space.) - - - Escape: \~ - An unbreakable space that stretches like a normal inter-word space - when a line is adjusted. - - - Escape: \| - A 1/6th em space. Ignored for TTY output devices (rounded to - zero). - - - Escape: \^ - A 1/12th em space. Ignored for TTY output devices (rounded to - zero). - - - Escape: \0 - A space the size of a digit. - - The following string sets the TeX logo: - - - .ds TeX T\h'-.1667m'\v'.224m'E\v'-.224m'\h'-.125m'X - - - Escape: \w'text' - - Register: \n[st] - - Register: \n[sb] - - Register: \n[rst] - - Register: \n[rsb] - - Register: \n[ct] - - Register: \n[ssc] - - Register: \n[skw] - Return the width of the specified TEXT in basic units. This - allows horizontal movement based on the width of some arbitrary - text (e.g. given as an argument to a macro). - - - The length of the string `abc' is \w'abc'u. - => The length of the string `abc' is 72u. - - Font changes may occur in TEXT which don't affect current settings. - - After use, `\w' sets several registers: - - `st' - `sb' - The highest and lowest point of the baseline, respectively, - in TEXT. - - `rst' - `rsb' - Like the `st' and `sb' registers, but takes account of the - heights and depths of glyphs. With other words, this gives - the highest and lowest point of TEXT. Values below the - baseline are negative. - - `ct' - Defines the kinds of glyphs occurring in TEXT: - - 0 - only short glyphs, no descenders or tall glyphs. - - 1 - at least one descender. - - 2 - at least one tall glyph. - - 3 - at least one each of a descender and a tall glyph. - - `ssc' - The amount of horizontal space (possibly negative) that - should be added to the last glyph before a subscript. - - `skw' - How far to right of the center of the last glyph in the `\w' - argument, the center of an accent from a roman font should be - placed over that glyph. - - - Escape: \kp - - Escape: \k(ps - - Escape: \k[position] - Store the current horizontal position in the _input_ line in - number register with name POSITION (one-character name P, - two-character name PS). Use this, for example, to return to the - beginning of a string for highlighting or other decoration. - - - Register: \n[hp] - The current horizontal position at the input line. - - - Register: \n[.k] - A read-only number register containing the current horizontal - output position. - - - Escape: \o'abc' - Overstrike glyphs A, B, C, ...; the glyphs are centered, and the - resulting spacing is the largest width of the affected glyphs. - - - Escape: \zg - Print glyph G with zero width, i.e., without spacing. Use this to - overstrike glyphs left-aligned. - - - Escape: \Z'anything' - Print ANYTHING, then restore the horizontal and vertical position. - The argument may not contain tabs or leaders. - - The following is an example of a strike-through macro: - - - .de ST - .nr ww \w'\\$1' - \Z@\v'-.25m'\l'\\n[ww]u'@\\$1 - .. - . - This is - .ST "a test" - an actual emergency! - - - -File: groff, Node: Drawing Requests, Next: Traps, Prev: Page Motions, Up: gtroff Reference - -Drawing Requests -================ - - `gtroff' provides a number of ways to draw lines and other figures -on the page. Used in combination with the page motion commands (see -*Note Page Motions::, for more info), a wide variety of figures can be -drawn. However, for complex drawings these operations can be quite -cumbersome, and it may be wise to use graphic preprocessors like `gpic' -or `ggrn'. *Note gpic::, and *Note ggrn::, for more information. - - All drawing is done via escapes. - - - Escape: \l'l' - - Escape: \l'lg' - Draw a line horizontally. L is the length of the line to be - drawn. If it is positive, start the line at the current location - and draw to the right; its end point is the new current location. - Negative values are handled differently: The line starts at the - current location and draws to the left, but the current location - doesn't move. - - L can also be specified absolutely (i.e. with a leading `|') which - draws back to the beginning of the input line. Default scaling - indicator is `m'. - - The optional second parameter G is a glyph to draw the line with. - If this second argument is not specified, `gtroff' uses the - underscore glyph, `\[ru]'. - - To separate the two arguments (to prevent `gtroff' from - interpreting a drawing glyph as a scaling indicator if the glyph is - represented by a single character) use `\&'. - - Here a small useful example: - - - .de box - \[br]\\$*\[br]\l'|0\[rn]'\l'|0\[ul]' - .. - - Note that this works by outputting a box rule (a vertical line), - then the text given as an argument and then another box rule. - Finally, the line drawing escapes both draw from the current - location to the beginning of the _input_ line - this works because - the line length is negative, not moving the current point. - - - Escape: \L'l' - - Escape: \L'lg' - Draw vertical lines. Its parameters are similar to the `\l' - escape, except that the default scaling indicator is `v'. The - movement is downwards for positive values, and upwards for - negative values. The default glyph is the box rule glyph, - `\[br]'. As with the vertical motion escapes, text processing - blindly continues where the line ends. - - - This is a \L'3v'test. - - Here the result, produced with `grotty'. - - - This is a - | - | - |test. - - - - Escape: \D'command arg ...' - The `\D' escape provides a variety of drawing functions. Note - that on character devices, only vertical and horizontal lines are - supported within `grotty'; other devices may only support a subset - of the available drawing functions. - - The default scaling indicator for all subcommands of `\D' is `m' - for horizontal distances and `v' for vertical ones. Exceptions - are `\D'f ...'' and `\D't ...'' which use `u' as the default, and - `\D'FX ...'' which arguments are treated similar to the `defcolor' - request. - - `\D'l DX DY'' - Draw a line from the current location to the relative point - specified by (DX,DY). - - The following example is a macro for creating a box around a - text string; for simplicity, the box margin is taken as a - fixed value, 0.2m. - - - .de BOX - . nr @wd \w'\\$1' - \h'.2m'\ - \h'-.2m'\v'(.2m - \\n[rsb]u)'\ - \D'l 0 -(\\n[rst]u - \\n[rsb]u + .4m)'\ - \D'l (\\n[@wd]u + .4m) 0'\ - \D'l 0 (\\n[rst]u - \\n[rsb]u + .4m)'\ - \D'l -(\\n[@wd]u + .4m) 0'\ - \h'.2m'\v'-(.2m - \\n[rsb]u)'\ - \\$1\ - \h'.2m' - .. - - First, the width of the string is stored in register `@wd'. - Then, four lines are drawn to form a box, properly offset by - the box margin. The registers `rst' and `rsb' are set by the - `\w' escape, containing the largest height and depth of the - whole string. - - `\D'c D'' - Draw a circle with a diameter of D with the leftmost point at - the current position. After drawing, the current location is - positioned at the rightmost point of the circle. - - `\D'C D'' - Draw a solid circle with the same parameters and behaviour as - an outlined circle. No outline is drawn. - - `\D'e X Y'' - Draw an ellipse with a horizontal diameter of X and a vertical - diameter of Y with the leftmost point at the current position. - After drawing, the current location is positioned at the - rightmost point of the ellipse. - - `\D'E X Y'' - Draw a solid ellipse with the same parameters and behaviour - as an outlined ellipse. No outline is drawn. - - `\D'a DX1 DY1 DX2 DY2'' - Draw an arc clockwise from the current location through the - two specified relative locations (DX1,DY1) and (DX2,DY2). - The coordinates of the first point are relative to the - current position, and the coordinates of the second point are - relative to the first point. After drawing, the current - position is moved to the final point of the arc. - - `\D'~ DX1 DY1 DX2 DY2 ...'' - Draw a spline from the current location to the relative point - (DX1,DY1) and then to (DX2,DY2), and so on. The current - position is moved to the terminal point of the drawn curve. - - `\D'f N'' - Set the shade of gray to be used for filling solid objects - to N; N must be an integer between 0 and 1000, where 0 - corresponds solid white and 1000 to solid black, and values - in between correspond to intermediate shades of gray. This - applies only to solid circles, solid ellipses, and solid - polygons. By default, a level of 1000 is used. - - Despite of being silly, the current point is moved - horizontally to the right by N. - - Don't use this command! It has the serious drawback that it - will be always rounded to the next integer multiple of the - horizontal resolution (the value of the `hor' keyword in the - `DESC' file). Use `\M' (*note Colors::) or `\D'Fg ...'' - instead. - - `\D'p DX1 DY1 DX2 DY2 ...'' - Draw a polygon from the current location to the relative - position (DX1,DY1) and then to (DX2,DY2) and so on. When the - specified data points are exhausted, a line is drawn back to - the starting point. The current position is changed by - adding the sum of all arguments with odd index to the actual - horizontal position and the even ones to the vertical - position. - - `\D'P DX1 DY1 DX2 DY2 ...'' - Draw a solid polygon with the same parameters and behaviour - as an outlined polygon. No outline is drawn. - - Here a better variant of the box macro to fill the box with - some color. Note that the box must be drawn before the text - since colors in `gtroff' are not transparent; the filled - polygon would hide the text completely. - - - .de BOX - . nr @wd \w'\\$1' - \h'.2m'\ - \h'-.2m'\v'(.2m - \\n[rsb]u)'\ - \M[lightcyan]\ - \D'P 0 -(\\n[rst]u - \\n[rsb]u + .4m) \ - (\\n[@wd]u + .4m) 0 \ - 0 (\\n[rst]u - \\n[rsb]u + .4m) \ - -(\\n[@wd]u + .4m) 0'\ - \h'.2m'\v'-(.2m - \\n[rsb]u)'\ - \M[]\ - \\$1\ - \h'.2m' - .. - - `\D't N'' - Set the current line thickness to N machine units. A value of - zero selects the smallest available line thickness. A - negative value makes the line thickness proportional to the - current point size (this is the default behaviour of AT&T - `troff'). - - Despite of being silly, the current point is moved - horizontally to the right by N. - - `\D'FSCHEME COLOR_COMPONENTS'' - Change current fill color. SCHEME is a single letter - denoting the color scheme: `r' (rgb), `c' (cmy), `k' (cmyk), - `g' (gray), or `d' (default color). The color components use - exactly the same syntax as in the `defcolor' request (*note - Colors::); the command `\D'Fd'' doesn't take an argument. - - _No_ position changing! - - Examples: - - - \D'Fg .3' \" same gray as \D'f 700' \D'Fr #0000ff' \" - blue - - *Note Graphics Commands::. - - - Escape: \b'string' - "Pile" a sequence of glyphs vertically, and center it vertically - on the current line. Use it to build large brackets and braces. - - Here an example how to create a large opening brace: - - - \b'\[lt]\[bv]\[lk]\[bv]\[lb]' - - The first glyph is on the top, the last glyph in STRING is at the - bottom. Note that `gtroff' separates the glyphs vertically by 1m, - and the whole object is centered 0.5m above the current baseline; - the largest glyph width is used as the width for the whole object. - This rather unflexible positioning algorithm doesn't work with - `-Tdvi' since the bracket pieces vary in height for this device. - Instead, use the `eqn' preprocessor. - - *Note Manipulating Spacing::, how to adjust the vertical spacing - with the `\x' escape. - - -File: groff, Node: Traps, Next: Diversions, Prev: Drawing Requests, Up: gtroff Reference - -Traps -===== - - "Traps" are locations, which, when reached, call a specified macro. -These traps can occur at a given location on the page, at a given -location in the current diversion, at a blank line, after a certain -number of input lines, or at the end of input. - - Setting a trap is also called "planting". It is also said that a -trap is "sprung" if the associated macro is executed. - -* Menu: - -* Page Location Traps:: -* Diversion Traps:: -* Input Line Traps:: -* Blank Line Traps:: -* End-of-input Traps:: - diff --git a/contrib/groff/doc/groff-7 b/contrib/groff/doc/groff-7 deleted file mode 100644 index edf7290..0000000 --- a/contrib/groff/doc/groff-7 +++ /dev/null @@ -1,1460 +0,0 @@ -This is groff, produced by makeinfo version 4.3d from ./groff.texinfo. - -This manual documents GNU `troff' version 1.19. - - Copyright (C) 1994-2000, 2001, 2002, 2003 Free Software Foundation, -Inc. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being `A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - `GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: `You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -INFO-DIR-SECTION Typesetting -START-INFO-DIR-ENTRY -* Groff: (groff). The GNU troff document formatting system. -END-INFO-DIR-ENTRY - - -File: groff, Node: Page Location Traps, Next: Diversion Traps, Prev: Traps, Up: Traps - -Page Location Traps -------------------- - - "Page location traps" perform an action when `gtroff' reaches or -passes a certain vertical location on the page. Page location traps -have a variety of purposes, including: - - * setting headers and footers - - * setting body text in multiple columns - - * setting footnotes - - - Request: .vpt flag - - Register: \n[.vpt] - Enable vertical position traps if FLAG is non-zero, or disables - them otherwise. Vertical position traps are traps set by the `wh' - or `dt' requests. Traps set by the `it' request are not vertical - position traps. The parameter that controls whether vertical - position traps are enabled is global. Initially vertical position - traps are enabled. The current setting of this is available in the - `.vpt' read-only number register. - - Note that a page can't be ejected if `vpt' is set to zero. - - - Request: .wh dist [macro] - Set a page location trap. Non-negative values for DIST set the - trap relative to the top of the page; negative values set the trap - relative to the bottom of the page. Default scaling indicator is - `v'. - - MACRO is the name of the macro to execute when the trap is sprung. - If MACRO is missing, remove the first trap (if any) at DIST. - - The following is a simple example of how many macro packages set - headers and footers. - - - .de hd \" Page header - ' sp .5i - . tl 'Title''date' - ' sp .3i - .. - . - .de fo \" Page footer - ' sp 1v - . tl ''%'' - ' bp - .. - . - .wh 0 hd \" trap at top of the page - .wh -1i fo \" trap one inch from bottom - - A trap at or below the bottom of the page is ignored; it can be - made active by either moving it up or increasing the page length - so that the trap is on the page. - - It is possible to have more than one trap at the same location; to - do so, the traps must be defined at different locations, then - moved together with the `ch' request; otherwise the second trap - would replace the first one. Earlier defined traps hide later - defined traps if moved to the same position (the many empty lines - caused by the `bp' request are omitted in the following example): - - - .de a - . nop a - .. - .de b - . nop b - .. - .de c - . nop c - .. - . - .wh 1i a - .wh 2i b - .wh 3i c - .bp - => a b c - - - .ch b 1i - .ch c 1i - .bp - => a - - - .ch a 0.5i - .bp - => a b - - - - Register: \n[.t] - A read-only number register holding the distance to the next trap. - - If there are no traps between the current position and the bottom - of the page, it contains the distance to the page bottom. In a - diversion, the distance to the page bottom is infinite (the - returned value is the biggest integer which can be represented in - `groff') if there are no diversion traps. - - - Request: .ch macro [dist] - Change the location of a trap. The first argument is the name of - the macro to be invoked at the trap, and the second argument is - the new location for the trap (note that the parameters are - specified in opposite order as in the `wh' request). This is - useful for building up footnotes in a diversion to allow more - space at the bottom of the page for them. - - Default scaling indicator for DIST is `v'. If DIST is missing, - the trap is removed. - - - - Register: \n[.ne] - The read-only number register `.ne' contains the amount of space - that was needed in the last `ne' request that caused a trap to be - sprung. Useful in conjunction with the `.trunc' register. *Note - Page Control::, for more information. - - Since the `.ne' register is only set by traps it doesn't make much - sense to use it outside of trap macros. - - - Register: \n[.trunc] - A read-only register containing the amount of vertical space - truncated by the most recently sprung vertical position trap, or, - if the trap was sprung by an `ne' request, minus the amount of - vertical motion produced by the `ne' request. In other words, at - the point a trap is sprung, it represents the difference of what - the vertical position would have been but for the trap, and what - the vertical position actually is. - - Since the `.trunc' register is only set by traps and it doesn't - make much sense to use it outside of trap macros. - - - Register: \n[.pe] - A read-only register which is set to 1 while a page is ejected with - the `bp' request (or by the end of input). - - Outside of traps this register is always zero. In the following - example, only the second call to `x' is caused by `bp'. - - - .de x - \&.pe=\\n[.pe] - .br - .. - .wh 1v x - .wh 4v x - A line. - .br - Another line. - .br - => A line. - .pe=0 - Another line. - - .pe=1 - - - An important fact to consider while designing macros is that -diversions and traps do not interact normally. For example, if a trap -invokes a header macro (while outputting a diversion) which tries to -change the font on the current page, the effect will not be visible -before the diversion has completely been printed (except for input -protected with `\!' or `\?') since the data in the diversion is already -formatted. In most cases, this is not the expected behaviour. - - -File: groff, Node: Diversion Traps, Next: Input Line Traps, Prev: Page Location Traps, Up: Traps - -Diversion Traps ---------------- - - - Request: .dt dist macro - Set a trap _within_ a diversion. DIST is the location of the trap - (identical to the `wh' request; default scaling indicator is `v') - and MACRO is the name of the macro to be invoked. The number - register `.t' still works within diversions. *Note Diversions::, - for more information. - - -File: groff, Node: Input Line Traps, Next: Blank Line Traps, Prev: Diversion Traps, Up: Traps - -Input Line Traps ----------------- - - - Request: .it n macro - - Request: .itc n macro - Set an input line trap. N is the number of lines of input which - may be read before springing the trap, MACRO is the macro to be - invoked. Request lines are not counted as input lines. - - For example, one possible use is to have a macro which prints the - next N lines in a bold font. - - - .de B - . it \\$1 B-end - . ft B - .. - . - .de B-end - . ft R - .. - - The `itc' request is identical except that an interrupted text - line (ending with `\c') is not counted as a separate line. - - Both requests are associated with the current environment (*note - Environments::); switching to another environment disables the - current input trap, and going back reactivates it, restoring the - number of already processed lines. - - -File: groff, Node: Blank Line Traps, Next: End-of-input Traps, Prev: Input Line Traps, Up: Traps - -Blank Line Traps ----------------- - - - Request: .blm macro - Set a blank line trap. `gtroff' executes MACRO when it encounters - a blank line in the input file. - - -File: groff, Node: End-of-input Traps, Prev: Blank Line Traps, Up: Traps - -End-of-input Traps ------------------- - - - Request: .em macro - Set a trap at the end of input. MACRO is executed after the last - line of the input file has been processed. - - For example, if the document had to have a section at the bottom - of the last page for someone to approve it, the `em' request could - be used. - - - .de approval - . ne 5v - . sp |(\\n[.t] - 6v) - . in +4i - . lc _ - . br - Approved:\t\a - . sp - Date:\t\t\a - .. - . - .em approval - - - -File: groff, Node: Diversions, Next: Environments, Prev: Traps, Up: gtroff Reference - -Diversions -========== - - In `gtroff' it is possible to "divert" text into a named storage -area. Due to the similarity to defining macros it is sometimes said to -be stored in a macro. This is used for saving text for output at a -later time, which is useful for keeping blocks of text on the same -page, footnotes, tables of contents, and indices. - - For orthogonality it is said that `gtroff' is in the "top-level -diversion" if no diversion is active (i.e., the data is diverted to the -output device). - - - Request: .di macro - - Request: .da macro - Begin a diversion. Like the `de' request, it takes an argument of - a macro name to divert subsequent text into. The `da' macro - appends to an existing diversion. - - `di' or `da' without an argument ends the diversion. - - - Request: .box macro - - Request: .boxa macro - Begin (or appends to) a diversion like the `di' and `da' requests. - The difference is that `box' and `boxa' do not include a - partially-filled line in the diversion. - - Compare this: - - - Before the box. - .box xxx - In the box. - .br - .box - After the box. - .br - => Before the box. After the box. - .xxx - => In the box. - - with this: - - - Before the diversion. - .di yyy - In the diversion. - .br - .di - After the diversion. - .br - => After the diversion. - .yyy - => Before the diversion. In the diversion. - - `box' or `boxa' without an argument ends the diversion. - - - Register: \n[.z] - - Register: \n[.d] - Diversions may be nested. The read-only number register `.z' - contains the name of the current diversion (this is a string-valued - register). The read-only number register `.d' contains the current - vertical place in the diversion. If not in a diversion it is the - same as register `nl'. - - - Register: \n[.h] - The "high-water mark" on the current page. It corresponds to the - text baseline of the lowest line on the page. This is a read-only - register. - - - .tm .h==\n[.h], nl==\n[nl] - => .h==0, nl==-1 - This is a test. - .br - .sp 2 - .tm .h==\n[.h], nl==\n[nl] - => .h==40, nl==120 - - As can be seen in the previous example, empty lines are not - considered in the return value of the `.h' register. - - - Register: \n[dn] - - Register: \n[dl] - After completing a diversion, the read-write number registers `dn' - and `dl' contain the vertical and horizontal size of the diversion. - Note that only the just processed lines are counted: For the - computation of `dn' and `dl', the requests `da' and `boxa' are - handled as if `di' and `box' had been used - lines which have been - already stored in a macro are not taken into account. - - - .\" Center text both horizontally & vertically - . - .\" Enclose macro definitions in .eo and .ec - .\" to avoid the doubling of the backslash - .eo - .\" macro .(c starts centering mode - .de (c - . br - . ev (c - . evc 0 - . in 0 - . nf - . di @c - .. - - - .\" macro .)c terminates centering mode - .de )c - . br - . ev - . di - . nr @s (((\n[.t]u - \n[dn]u) / 2u) - 1v) - . sp \n[@s]u - . ce 1000 - . @c - . ce 0 - . sp \n[@s]u - . br - . fi - . rr @s - . rm @s - . rm @c - .. - .\" End of macro definitions, restore escape mechanism - .ec - - - - Escape: \! - - Escape: \?anything\? - Prevent requests, macros, and escapes from being interpreted when - read into a diversion. Both escapes take the given text and - "transparently" embed it into the diversion. This is useful for - macros which shouldn't be invoked until the diverted text is - actually output. - - The `\!' escape transparently embeds text up to and including the - end of the line. The `\?' escape transparently embeds text until - the next occurrence of the `\?' escape. Example: - - - \?ANYTHING\? - - ANYTHING may not contain newlines; use `\!' to embed newlines in - a diversion. The escape sequence `\?' is also recognized in copy - mode and turned into a single internal code; it is this code that - terminates ANYTHING. Thus the following example prints 4. - - - .nr x 1 - .nf - .di d - \?\\?\\\\?\\\\\\\\nx\\\\?\\?\? - .di - .nr x 2 - .di e - .d - .di - .nr x 3 - .di f - .e - .di - .nr x 4 - .f - - Both escapes read the data in copy mode. - - If `\!' is used in the top-level diversion, its argument is - directly embedded into the `gtroff' intermediate output. This can - be used for example to control a postprocessor which processes the - data before it is sent to the device driver. - - The `\?' escape used in the top-level diversion produces no output - at all; its argument is simply ignored. - - - Request: .output string - Emit STRING directly to the `gtroff' intermediate output (subject - to copy-mode interpretation); this is similar to `\!' used at the - top level. An initial double quote in STRING is stripped off to - allow initial blanks. - - This request can't be used before the first page has started - if - you get an error, simply insert `.br' before the `output' request. - - Without argument, `output' is ignored. - - Use with caution! It is normally only needed for mark-up used by a - postprocessor which does something with the output before sending - it to the output device, filtering out STRING again. - - - Request: .asciify div - "Unformat" the diversion specified by DIV in such a way that ASCII - characters, characters translated with the `trin' request, space - characters, and some escape sequences that were formatted and - diverted are treated like ordinary input characters when the - diversion is reread. It can be also used for gross hacks; for - example, the following sets register `n' to 1. - - - .tr @. - .di x - @nr n 1 - .br - .di - .tr @@ - .asciify x - .x - - *Note Copy-in Mode::. - - - Request: .unformat div - Like `asciify', unformat the specified diversion. However, - `unformat' only unformats spaces and tabs between words. - Unformatted tabs are treated as input tokens, and spaces are - stretchable again. - - The vertical size of lines is not preserved; glyph information - (font, font size, space width, etc.) is retained. - - -File: groff, Node: Environments, Next: Suppressing output, Prev: Diversions, Up: gtroff Reference - -Environments -============ - - It happens frequently that some text should be printed in a certain -format regardless of what may be in effect at the time, for example, in -a trap invoked macro to print headers and footers. To solve this -`gtroff' processes text in "environments". An environment contains -most of the parameters that control text processing. It is possible to -switch amongst these environments; by default `gtroff' processes text -in environment 0. The following is the information kept in an -environment. - - * font parameters (size, family, style, glyph height and slant, space - and sentence space size) - - * page parameters (line length, title length, vertical spacing, line - spacing, indentation, line numbering, centering, right-justifying, - underlining, hyphenation data) - - * fill and adjust mode - - * tab stops, tab and leader characters, escape character, no-break - and hyphen indicators, margin character data - - * partially collected lines - - * input traps - - * drawing and fill colours - - These environments may be given arbitrary names (see *Note -Identifiers::, for more info). Old versions of `troff' only had -environments named `0', `1', and `2'. - - - Request: .ev [env] - - Register: \n[.ev] - Switch to another environment. The argument ENV is the name of - the environment to switch to. With no argument, `gtroff' switches - back to the previous environment. There is no limit on the number - of named environments; they are created the first time that they - are referenced. The `.ev' read-only register contains the name or - number of the current environment. This is a string-valued - register. - - Note that a call to `ev' (with argument) pushes the previously - active environment onto a stack. If, say, environments `foo', - `bar', and `zap' are called (in that order), the first `ev' - request without parameter switches back to environment `bar' - (which is popped off the stack), and a second call switches back - to environment `foo'. - - Here is an example: - - - .ev footnote-env - .fam N - .ps 6 - .vs 8 - .ll -.5i - .ev - - ... - - .ev footnote-env - \(dg Note the large, friendly letters. - .ev - - - - Request: .evc env - Copy the environment ENV into the current environment. - - The following environment data is not copied: - - * Partially filled lines. - - * The status whether the previous line was interrupted. - - * The number of lines still to center, or to right-justify, or - to underline (with or without underlined spaces); they are - set to zero. - - * The status whether a temporary indent is active. - - * Input traps and its associated data. - - * Line numbering mode is disabled; it can be reactivated with - `.nm +0'. - - * The number of consecutive hyphenated lines (set to zero). - - - Register: \n[.w] - - Register: \n[.cht] - - Register: \n[.cdp] - - Register: \n[.csk] - The `\n[.w]' register contains the width of the last glyph added - to the current environment. - - The `\n[.cht]' register contains the height of the last glyph - added to the current environment. - - The `\n[.cdp]' register contains the depth of the last glyph added - to the current environment. It is positive for glyphs extending - below the baseline. - - The `\n[.csk]' register contains the "skew" (how far to the right - of the glyph's center that `gtroff' should place an accent) of the - last glyph added to the current environment. - - - Register: \n[.n] - The `\n[.n]' register contains the length of the previous output - line in the current environment. - - -File: groff, Node: Suppressing output, Next: Colors, Prev: Environments, Up: gtroff Reference - -Suppressing output -================== - - - Escape: \Onum - Disable or enable output depending on the value of NUM: - - `\O0' - Disable any glyphs from being emitted to the device driver, - provided that the escape occurs at the outer level (see - `\O[3]' and `\O[4]'). Motion is not suppressed so - effectively `\O[0]' means _pen up_. - - `\O1' - Enable output of glyphs, provided that the escape occurs at - the outer level. - - `\O0' and `\O1' also reset the four registers `opminx', `opminy', - `opmaxx', and `opmaxy' to -1. *Note Register Index::. These four - registers mark the top left and bottom right hand corners of a box - which encompasses all written glyphs. - - For example the input text: - - - Hello \O[0]world \O[1]this is a test. - - produces the following output: - - - Hello this is a test. - - `\O2' - Provided that the escape occurs at the outer level, enable - output of glyphs and also write out to `stderr' the page - number and four registers encompassing the glyphs previously - written since the last call to `\O'. - - `\O3' - Begin a nesting level. At start-up, `gtroff' is at outer - level. - - `\O4' - End a nesting level. - - `\O[5PFILENAME]' - This escape is `grohtml' specific. Provided that this escape - occurs at the outer nesting level write the `filename' to - `stderr'. The position of the image, P, must be specified - and must be one of `l', `r', `c', or `i' (left, right, - centered, inline). FILENAME will be associated with the - production of the next inline image. - - -File: groff, Node: Colors, Next: I/O, Prev: Suppressing output, Up: gtroff Reference - -Colors -====== - - - Request: .color [n] - - Register: \n[.color] - If N is missing or non-zero, activate colors (this is the default); - otherwise, turn it off. - - The read-only number register `.color' is 1 if colors are active, - 0 otherwise. - - Internally, `color' sets a global flag; it does not produce a - token. Similar to the `cp' request, you should use it at the - beginning of your document to control color output. - - Colors can be also turned off with the `-c' command line option. - - - Request: .defcolor ident scheme color_components - Define color with name IDENT. SCHEME can be one of the following - values: `rgb' (three components), `cmy' (three components), `cmyk' - (four components), and `gray' or `grey' (one component). - - Color components can be given either as a hexadecimal string or as - positive decimal integers in the range 0-65535. A hexadecimal - string contains all color components concatenated. It must start - with either `#' or `##'; the former specifies hex values in the - range 0-255 (which are internally multiplied by 257), the latter - in the range 0-65535. Examples: `#FFC0CB' (pink), `##ffff0000ffff' - (magenta). The default color name value is device-specific - (usually black). It is possible that the default color for `\m' - and `\M' is not identical. - - A new scaling indicator `f' has been introduced which multiplies - its value by 65536; this makes it convenient to specify color - components as fractions in the range 0 to 1 (1f equals 65536u). - Example: - - - .defcolor darkgreen rgb 0.1f 0.5f 0.2f - - Note that `f' is the default scaling indicator for the `defcolor' - request, thus the above statement is equivalent to - - - .defcolor darkgreen rgb 0.1 0.5 0.2 - - - - Escape: \mc - - Escape: \m(co - - Escape: \m[color] - Set drawing color. The following example shows how to turn the - next four words red. - - - \m[red]these are in red\m[] and these words are in black. - - The escape `\m[]' returns to the previous color. - - The drawing color is associated with the current environment - (*note Environments::). - - Note that `\m' doesn't produce an input token in `gtroff'. As a - consequence, it can be used in requests like `mc' (which expects a - single character as an argument) to change the color on the fly: - - - .mc \m[red]x\m[] - - - - Escape: \Mc - - Escape: \M(co - - Escape: \M[color] - Set background color for filled objects drawn with the `\D'...'' - commands. - - A red ellipse can be created with the following code: - - - \M[red]\h'0.5i'\D'E 2i 1i'\M[] - - The escape `\M[]' returns to the previous fill color. - - The fill color is associated with the current environment (*note - Environments::). - - Note that `\M' doesn't produce an input token in `gtroff'. - - -File: groff, Node: I/O, Next: Postprocessor Access, Prev: Colors, Up: gtroff Reference - -I/O -=== - - `gtroff' has several requests for including files: - - - Request: .so file - Read in the specified FILE and includes it in place of the `so' - request. This is quite useful for large documents, e.g. keeping - each chapter in a separate file. *Note gsoelim::, for more - information. - - Since `gtroff' replaces the `so' request with the contents of - `file', it makes a difference whether the data is terminated with - a newline or not: Assuming that file `xxx' contains the word `foo' - without a final newline, this - - - This is - .so xxx - bar - - yields `This is foobar'. - - - Request: .pso command - Read the standard output from the specified COMMAND and includes - it in place of the `pso' request. - - This request causes an error if used in safer mode (which is the - default). Use `groff''s or `troff''s `-U' option to activate - unsafe mode. - - The comment regarding a final newline for the `so' request is valid - for `pso' also. - - - Request: .mso file - Identical to the `so' request except that `gtroff' searches for - the specified FILE in the same directories as macro files for the - the `-m' command line option. If the file name to be included has - the form `NAME.tmac' and it isn't found, `mso' tries to include - `tmac.NAME' and vice versa. - - - Request: .trf file - - Request: .cf file - Transparently output the contents of FILE. Each line is output as - if it were preceded by `\!'; however, the lines are not subject to - copy mode interpretation. If the file does not end with a newline, - then a newline is added (`trf' only). For example, to define a - macro `x' containing the contents of file `f', use - - - .di x - .trf f - .di - - Both `trf' and `cf', when used in a diversion, embeds an object in - the diversion which, when reread, causes the contents of FILE to - be transparently copied through to the output. In UNIX `troff', - the contents of FILE is immediately copied through to the output - regardless of whether there is a current diversion; this behaviour - is so anomalous that it must be considered a bug. - - While `cf' copies the contents of FILE completely unprocessed, - `trf' disallows characters such as NUL that are not valid `gtroff' - input characters (*note Identifiers::). - - Both requests cause a line break. - - - Request: .nx [file] - Force `gtroff' to continue processing of the file specified as an - argument. If no argument is given, immediately jump to the end of - file. - - - Request: .rd [prompt [arg1 arg2 ...]] - Read from standard input, and include what is read as though it - were part of the input file. Text is read until a blank line is - encountered. - - If standard input is a TTY input device (keyboard), write PROMPT - to standard error, followed by a colon (or send BEL for a beep if - no argument is given). - - Arguments after PROMPT are available for the input. For example, - the line - - - .rd data foo bar - - with the input `This is \$2.' prints - - - This is bar. - - - Using the `nx' and `rd' requests, it is easy to set up form letters. -The form letter template is constructed like this, putting the -following lines into a file called `repeat.let': - - - .ce - \*(td - .sp 2 - .nf - .rd - .sp - .rd - .fi - Body of letter. - .bp - .nx repeat.let - -When this is run, a file containing the following lines should be -redirected in. Note that requests included in this file are executed -as though they were part of the form letter. The last block of input -is the `ex' request which tells `groff' to stop processing. If this -was not there, `groff' would not know when to stop. - - - Trent A. Fisher - 708 NW 19th Av., #202 - Portland, OR 97209 - - Dear Trent, - - Len Adollar - 4315 Sierra Vista - San Diego, CA 92103 - - Dear Mr. Adollar, - - .ex - - - Request: .pi pipe - Pipe the output of `gtroff' to the shell command(s) specified by - PIPE. This request must occur before `gtroff' has a chance to - print anything. - - `pi' causes an error if used in safer mode (which is the default). - Use `groff''s or `troff''s `-U' option to activate unsafe mode. - - Multiple calls to `pi' are allowed, acting as a chain. For - example, - - - .pi foo - .pi bar - ... - - is the same as `.pi foo | bar'. - - Note that the intermediate output format of `gtroff' is piped to - the specified commands. Consequently, calling `groff' without the - `-Z' option normally causes a fatal error. - - - Request: .sy cmds - - Register: \n[systat] - Execute the shell command(s) specified by CMDS. The output is not - saved anyplace, so it is up to the user to do so. - - This request causes an error if used in safer mode (which is the - default). Use `groff''s or `troff''s `-U' option to activate - unsafe mode. - - For example, the following code fragment introduces the current - time into a document: - - - .sy perl -e 'printf ".nr H %d\\n.nr M %d\\n.nr S %d\\n",\ - (localtime(time))[2,1,0]' > /tmp/x\n[$$] - .so /tmp/x\n[$$] - .sy rm /tmp/x\n[$$] - \nH:\nM:\nS - - Note that this works by having the `perl' script (run by `sy') - print out the `nr' requests which set the number registers `H', - `M', and `S', and then reads those commands in with the `so' - request. - - For most practical purposes, the number registers `seconds', - `minutes', and `hours' which are initialized at start-up of - `gtroff' should be sufficient. Use the `af' request to get a - formatted output: - - - .af hours 00 - .af minutes 00 - .af seconds 00 - \n[hours]:\n[minutes]:\n[seconds] - - The `systat' read-write number register contains the return value - of the `system()' function executed by the last `sy' request. - - - Request: .open stream file - - Request: .opena stream file - Open the specified FILE for writing and associates the specified - STREAM with it. - - The `opena' request is like `open', but if the file exists, append - to it instead of truncating it. - - Both `open' and `opena' cause an error if used in safer mode - (which is the default). Use `groff''s or `troff''s `-U' option to - activate unsafe mode. - - - Request: .write stream data - - Request: .writec stream data - Write to the file associated with the specified STREAM. The - stream must previously have been the subject of an open request. - The remainder of the line is interpreted as the `ds' request reads - its second argument: A leading `"' is stripped, and it is read in - copy-in mode. - - The `writec' request is like `write', but only `write' appends a - newline to the data. - - - Request: .writem stream xx - Write the contents of the macro or string XX to the file - associated with the specified STREAM. - - XX is read in copy mode, i.e., already formatted elements are - ignored. Consequently, diversions must be unformatted with the - `asciify' request before calling `writem'. Usually, this means a - loss of information. - - - Request: .close stream - Close the specified STREAM; the stream is no longer an acceptable - argument to the `write' request. - - Here a simple macro to write an index entry. - - - .open idx test.idx - . - .de IX - . write idx \\n[%] \\$* - .. - . - .IX test entry - . - .close idx - - - - Escape: \Ve - - Escape: \V(ev - - Escape: \V[env] - Interpolate the contents of the specified environment variable ENV - (one-character name E, two-character name EV) as returned by the - function `getenv'. `\V' is interpreted in copy-in mode. - - -File: groff, Node: Postprocessor Access, Next: Miscellaneous, Prev: I/O, Up: gtroff Reference - -Postprocessor Access -==================== - - There are two escapes which give information directly to the -postprocessor. This is particularly useful for embedding POSTSCRIPT -into the final document. - - - Escape: \X'xxx' - Embeds its argument into the `gtroff' output preceded with `x X'. - - The escapes `\&', `\)', `\%', and `\:' are ignored within `\X', - `\ ' and `\~' are converted to single space characters. All other - escapes (except `\\' which produces a backslash) cause an error. - - If the `use_charnames_in_special' keyword is set in the `DESC' - file, special characters no longer cause an error; the name XX is - represented as `\(XX)' in the `x X' output command. Additionally, - the backslash is represented as `\\'. - - `use_charnames_in_special' is currently used by `grohtml' only. - - - Escape: \Yn - - Escape: \Y(nm - - Escape: \Y[name] - This is approximately equivalent to `\X'\*[NAME]'' (one-character - name N, two-character name NM). However, the contents of the - string or macro NAME are not interpreted; also it is permitted for - NAME to have been defined as a macro and thus contain newlines (it - is not permitted for the argument to `\X' to contain newlines). - The inclusion of newlines requires an extension to the UNIX `troff' - output format, and confuses drivers that do not know about this - extension (*note Device Control Commands::). - - *Note Output Devices::. - - -File: groff, Node: Miscellaneous, Next: Gtroff Internals, Prev: Postprocessor Access, Up: gtroff Reference - -Miscellaneous -============= - - This section documents parts of `gtroff' which cannot (yet) be -categorized elsewhere in this manual. - - - Request: .nm [start [inc [space [indent]]]] - Print line numbers. START is the line number of the _next_ output - line. INC indicates which line numbers are printed. For example, - the value 5 means to emit only line numbers which are multiples - of 5; this defaults to 1. SPACE is the space to be left between - the number and the text; this defaults to one digit space. The - fourth argument is the indentation of the line numbers, defaulting - to zero. Both SPACE and INDENT are given as multiples of digit - spaces; they can be negative also. Without any arguments, line - numbers are turned off. - - `gtroff' reserves three digit spaces for the line number (which is - printed right-justified) plus the amount given by INDENT; the - output lines are concatenated to the line numbers, separated by - SPACE, and _without_ reducing the line length. Depending on the - value of the horizontal page offset (as set with the `po' - request), line numbers which are longer than the reserved space - stick out to the left, or the whole line is moved to the right. - - Parameters corresponding to missing arguments are not changed; any - non-digit argument (to be more precise, any argument starting with - a character valid as a delimiter for identifiers) is also treated - as missing. - - If line numbering has been disabled with a call to `nm' without an - argument, it can be reactivated with `.nm +0', using the - previously active line numbering parameters. - - The parameters of `nm' are associated with the current environment - (*note Environments::). The current output line number is - available in the number register `ln'. - - - .po 1m - .ll 2i - This test shows how line numbering works with groff. - .nm 999 - This test shows how line numbering works with groff. - .br - .nm xxx 3 2 - .ll -\w'0'u - This test shows how line numbering works with groff. - .nn 2 - This test shows how line numbering works with groff. - - And here the result: - - - This test shows how - line numbering works - 999 with groff. This - 1000 test shows how line - 1001 numbering works with - 1002 groff. - This test shows how - line numbering - works with groff. - This test shows how - 1005 line numbering - works with groff. - - - - Request: .nn [skip] - Temporarily turn off line numbering. The argument is the number - of lines not to be numbered; this defaults to 1. - - - Request: .mc glyph [dist] - Print a "margin character" to the right of the text.(1) (*note - Miscellaneous-Footnote-1::) The first argument is the glyph to be - printed. The second argument is the distance away from the right - margin. If missing, the previously set value is used; default is - 10pt). For text lines that are too long (that is, longer than the - text length plus DIST), the margin character is directly appended - to the lines. - - With no arguments the margin character is turned off. If this - occurs before a break, no margin character is printed. - - For empty lines and lines produced by the `tl' request no margin - character is emitted. - - The margin character is associated with the current environment - (*note Environments::). - - This is quite useful for indicating text that has changed, and, in - fact, there are programs available for doing this (they are called - `nrchbar' and `changebar' and can be found in any - `comp.sources.unix' archive. - - - .ll 3i - .mc | - This paragraph is highlighted with a margin - character. - .sp - Note that vertical space isn't marked. - .br - \& - .br - But we can fake it with `\&'. - - Result: - - - This paragraph is highlighted | - with a margin character. | - - Note that vertical space isn't | - marked. | - | - But we can fake it with `\&'. | - - - - Request: .psbb filename - - Register: \n[llx] - - Register: \n[lly] - - Register: \n[urx] - - Register: \n[ury] - Retrieve the bounding box of the PostScript image found in - FILENAME. The file must conform to Adobe's "Document Structuring - Conventions" (DSC); the command searches for a `%%BoundingBox' - comment and extracts the bounding box values into the number - registers `llx', `lly', `urx', and `ury'. If an error occurs (for - example, `psbb' cannot find the `%%BoundingBox' comment), it sets - the four number registers to zero. - - -File: groff, Node: Miscellaneous-Footnotes, Up: Miscellaneous - - (1) "Margin character" is a misnomer since it is an output glyph. - - -File: groff, Node: Gtroff Internals, Next: Debugging, Prev: Miscellaneous, Up: gtroff Reference - -`gtroff' Internals -================== - - `gtroff' processes input in three steps. One or more input -characters are converted to an "input token".(1) (*note Gtroff -Internals-Footnote-1::) Then, one or more input tokens are converted -to an "output node". Finally, output nodes are converted to the -intermediate output language understood by all output devices. - - Actually, before step one happens, `gtroff' converts certain escape -sequences into reserved input characters (not accessible by the user); -such reserved characters are used for other internal processing also - -this is the very reason why not all characters are valid input. *Note -Identifiers::, for more on this topic. - - For example, the input string `fi\[:u]' is converted into a -character token `f', a character token `i', and a special token `:u' -(representing u umlaut). Later on, the character tokens `f' and `i' -are merged to a single output node representing the ligature glyph `fi' -(provided the current font has a glyph for this ligature); the same -happens with `:u'. All output glyph nodes are `processed' which means -that they are invariably associated with a given font, font size, -advance width, etc. During the formatting process, `gtroff' itself -adds various nodes to control the data flow. - - Macros, diversions, and strings collect elements in two chained -lists: a list of input tokens which have been passed unprocessed, and a -list of output nodes. Consider the following the diversion. - - - .di xxx - a - \!b - c - .br - .di - -It contains these elements. - -node list token list element number -line start node -- 1 -glyph node `a' -- 2 -word space node -- 3 --- `b' 4 --- `\n' 5 -glyph node `c' -- 6 -vertical size node -- 7 -vertical size node -- 8 --- `\n' 9 - -Elements 1, 7, and 8 are inserted by `gtroff'; the latter two (which -are always present) specify the vertical extent of the last line, -possibly modified by `\x'. The `br' request finishes the current -partial line, inserting a newline input token which is subsequently -converted to a space when the diversion is reread. Note that the word -space node has a fixed width which isn't stretchable anymore. To -convert horizontal space nodes back to input tokens, use the `unformat' -request. - - Macros only contain elements in the token list (and the node list is -empty); diversions and strings can contain elements in both lists. - - Note that the `chop' request simply reduces the number of elements -in a macro, string, or diversion by one. Exceptions are "compatibility -save" and "compatibility ignore" input tokens which are ignored. The -`substring' request also ignores those input tokens. - - Some requests like `tr' or `cflags' work on glyph identifiers only; -this means that the associated glyph can be changed without destroying -this association. This can be very helpful for substituting glyphs. -In the following example, we assume that glyph `foo' isn't available by -default, so we provide a substitution using the `fchar' request and map -it to input character `x'. - - - .fchar \[foo] foo - .tr x \[foo] - -Now let us assume that we install an additional special font `bar' -which has glyph `foo'. - - - .special bar - .rchar \[foo] - -Since glyphs defined with `fchar' are searched before glyphs in special -fonts, we must call `rchar' to remove the definition of the fallback -glyph. Anyway, the translation is still active; `x' now maps to the -real glyph `foo'. - - -File: groff, Node: Gtroff Internals-Footnotes, Up: Gtroff Internals - - (1) Except the escapes `\f', `\F', `\H', `\m', `\M', `\R', `\s', and -`\S' which are processed immediately if not in copy-in mode. - - -File: groff, Node: Debugging, Next: Implementation Differences, Prev: Gtroff Internals, Up: gtroff Reference - -Debugging -========= - - `gtroff' is not easy to debug, but there are some useful features -and strategies for debugging. - - - Request: .lf line [filename] - Change the line number and optionally the file name `gtroff' shall - use for error and warning messages. LINE is the input line number - of the _next_ line. - - Without argument, the request is ignored. - - This is a debugging aid for documents which are split into many - files, then put together with `soelim' and other preprocessors. - Usually, it isn't invoked manually. - - Note that other `troff' implementations (including the original - AT&T version) handle `lf' differently. For them, LINE changes the - line number of the _current_ line. - - - Request: .tm string - - Request: .tm1 string - - Request: .tmc string - Send STRING to the standard error output; this is very useful for - printing debugging messages among other things. - - STRING is read in copy mode. - - The `tm' request ignores leading spaces of STRING; `tm1' handles - its argument similar to the `ds' request: a leading double quote - in STRING is stripped to allow initial blanks. - - The `tmc' request is similar to `tm1' but does not append a - newline (as is done in `tm' and `tm1'). - - - Request: .ab [string] - Similar to the `tm' request, except that it causes `gtroff' to - stop processing. With no argument it prints `User Abort.' to - standard error. - - - Request: .ex - The `ex' request also causes `gtroff' to stop processing; see also - *Note I/O::. - - When doing something involved it is useful to leave the debugging -statements in the code and have them turned on by a command line flag. - - - .if \n(DB .tm debugging output - -To activate these statements say - - - groff -rDB=1 file - - If it is known in advance that there will be many errors and no -useful output, `gtroff' can be forced to suppress formatted output with -the `-z' flag. - - - Request: .pm - Print the entire symbol table on `stderr'. Names of all defined - macros, strings, and diversions are print together with their size - in bytes. Since `gtroff' sometimes adds nodes by itself, the - returned size can be larger than expected. - - This request differs from UNIX `troff': `gtroff' reports the sizes - of diversions, ignores an additional argument to print only the - total of the sizes, and the size isn't returned in blocks of 128 - characters. - - - Request: .pnr - Print the names and contents of all currently defined number - registers on `stderr'. - - - Request: .ptr - Print the names and positions of all traps (not including input - line traps and diversion traps) on `stderr'. Empty slots in the - page trap list are printed as well, because they can affect the - priority of subsequently planted traps. - - - Request: .fl - Instruct `gtroff' to flush its output immediately. The intent is - for interactive use, but this behaviour is currently not - implemented in `gtroff'. Contrary to UNIX `troff', TTY output is - sent to a device driver also (`grotty'), making it non-trivial to - communicate interactively. - - This request causes a line break. - - - Request: .backtrace - Print a backtrace of the input stack to the standard error stream. - - Consider the following in file `test': - - - .de xxx - . backtrace - .. - .de yyy - . xxx - .. - . - .yyy - - On execution, `gtroff' prints the following: - - - test:2: backtrace: macro `xxx' - test:5: backtrace: macro `yyy' - test:8: backtrace: file `test' - - The option `-b' of `gtroff' internally calls a variant of this - request on each error and warning. - - - Register: \n[slimit] - Use the `slimit' number register to set the maximum number of - objects on the input stack. If `slimit' is less than or equal - to 0, there is no limit set. With no limit, a buggy recursive - macro can exhaust virtual memory. - - The default value is 1000; this is a compile-time constant. - - - Request: .warnscale si - Set the scaling indicator used in warnings to SI. Valid values for - SI are `u', `i', `c', `p', and `P'. At startup, it is set to `i'. - - - Request: .spreadwarn [limit] - Make `gtroff' emit a warning if the additional space inserted for - each space between words in an output line is larger or equal to - LIMIT. A negative value is changed to zero; no argument toggles - the warning on and off without changing LIMIT. The default scaling - indicator is `m'. At startup, `spreadwarn' is deactivated, and - LIMIT is set to 3m. - - For example, - - - .spreadwarn 0.2m - - will cause a warning if `gtroff' must add 0.2m or more for each - interword space in a line. - - This request is active only if text is justified to both margins - (using `.ad b'). - - `gtroff' has command line options for printing out more warnings -(`-w') and for printing backtraces (`-b') when a warning or an error -occurs. The most verbose level of warnings is `-ww'. - - - Request: .warn [flags] - - Register: \n[.warn] - Control the level of warnings checked for. The FLAGS are the sum - of the numbers associated with each warning that is to be enabled; - all other warnings are disabled. The number associated with each - warning is listed below. For example, `.warn 0' disables all - warnings, and `.warn 1' disables all warnings except that about - missing glyphs. If no argument is given, all warnings are enabled. - - The read-only number register `.warn' contains the current warning - level. - -* Menu: - -* Warnings:: - diff --git a/contrib/groff/doc/groff-8 b/contrib/groff/doc/groff-8 deleted file mode 100644 index 5217828..0000000 --- a/contrib/groff/doc/groff-8 +++ /dev/null @@ -1,1416 +0,0 @@ -This is groff, produced by makeinfo version 4.3d from ./groff.texinfo. - -This manual documents GNU `troff' version 1.19. - - Copyright (C) 1994-2000, 2001, 2002, 2003 Free Software Foundation, -Inc. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being `A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - `GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: `You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -INFO-DIR-SECTION Typesetting -START-INFO-DIR-ENTRY -* Groff: (groff). The GNU troff document formatting system. -END-INFO-DIR-ENTRY - - -File: groff, Node: Warnings, Prev: Debugging, Up: Debugging - -Warnings --------- - - The warnings that can be given to `gtroff' are divided into the -following categories. The name associated with each warning is used by -the `-w' and `-W' options; the number is used by the `warn' request and -by the `.warn' register. - -`char' -`1' - Non-existent glyphs.(1) (*note Warnings-Footnote-1::) This is - enabled by default. - -`number' -`2' - Invalid numeric expressions. This is enabled by default. *Note - Expressions::. - -`break' -`4' - In fill mode, lines which could not be broken so that their length - was less than the line length. This is enabled by default. - -`delim' -`8' - Missing or mismatched closing delimiters. - -`el' -`16' - Use of the `el' request with no matching `ie' request. *Note - if-else::. - -`scale' -`32' - Meaningless scaling indicators. - -`range' -`64' - Out of range arguments. - -`syntax' -`128' - Dubious syntax in numeric expressions. - -`di' -`256' - Use of `di' or `da' without an argument when there is no current - diversion. - -`mac' -`512' - Use of undefined strings, macros and diversions. When an undefined - string, macro, or diversion is used, that string is automatically - defined as empty. So, in most cases, at most one warning is given - for each name. - -`reg' -`1024' - Use of undefined number registers. When an undefined number - register is used, that register is automatically defined to have a - value of 0. So, in most cases, at most one warning is given for - use of a particular name. - -`tab' -`2048' - Use of a tab character where a number was expected. - -`right-brace' -`4096' - Use of `\}' where a number was expected. - -`missing' -`8192' - Requests that are missing non-optional arguments. - -`input' -`16384' - Invalid input characters. - -`escape' -`32768' - Unrecognized escape sequences. When an unrecognized escape - sequence `\X' is encountered, the escape character is ignored, and - X is printed. - -`space' -`65536' - Missing space between a request or macro and its argument. This - warning is given when an undefined name longer than two characters - is encountered, and the first two characters of the name make a - defined name. The request or macro is not invoked. When this - warning is given, no macro is automatically defined. This is - enabled by default. This warning never occurs in compatibility - mode. - -`font' -`131072' - Non-existent fonts. This is enabled by default. - -`ig' -`262144' - Invalid escapes in text ignored with the `ig' request. These are - conditions that are errors when they do not occur in ignored text. - -`color' -`524288' - Color related warnings. - -`all' - All warnings except `di', `mac' and `reg'. It is intended that - this covers all warnings that are useful with traditional macro - packages. - -`w' - All warnings. - - -File: groff, Node: Warnings-Footnotes, Up: Warnings - - (1) `char' is a misnomer since it reports missing glyphs - there -aren't missing input characters, only invalid ones. - - -File: groff, Node: Implementation Differences, Prev: Debugging, Up: gtroff Reference - -Implementation Differences -========================== - - GNU `troff' has a number of features which cause incompatibilities -with documents written with old versions of `troff'. - - Long names cause some incompatibilities. UNIX `troff' interprets - - - .dsabcd - -as defining a string `ab' with contents `cd'. Normally, GNU `troff' -interprets this as a call of a macro named `dsabcd'. Also UNIX `troff' -interprets `\*[' or `\n[' as references to a string or number register -called `['. In GNU `troff', however, this is normally interpreted as -the start of a long name. In compatibility mode GNU `troff' interprets -long names in the traditional way (which means that they are not -recognized as names). - - - Request: .cp [n] - - Request: .do cmd - - Register: \n[.C] - If N is missing or non-zero, turn on compatibility mode; - otherwise, turn it off. - - The read-only number register `.C' is 1 if compatibility mode is - on, 0 otherwise. - - Compatibility mode can be also turned on with the `-C' command line - option. - - The `do' request turns off compatibility mode while executing its - arguments as a `gtroff' command. - - - .do fam T - - executes the `fam' request when compatibility mode is enabled. - - `gtroff' restores the previous compatibility setting before - interpreting any files sourced by the CMD. - - Two other features are controlled by `-C'. If not in compatibility -mode, GNU `troff' preserves the input level in delimited arguments: - - - .ds xx ' - \w'abc\*(xxdef' - -In compatibility mode, the string `72def'' is returned; without `-C' -the resulting string is `168' (assuming a TTY output device). - - Finally, the escapes `\f', `\H', `\m', `\M', `\R', `\s', and `\S' -are transparent for recognizing the beginning of a line only in -compatibility mode (this is a rather obscure feature). For example, -the code - - - .de xx - Hallo! - .. - \fB.xx\fP - -prints `Hallo!' in bold face if in compatibility mode, and `.xx' in -bold face otherwise. - - GNU `troff' does not allow the use of the escape sequences `\|', -`\^', `\&', `\{', `\}', `\', `\'', `\`', `\-', `\_', `\!', `\%', -and `\c' in names of strings, macros, diversions, number registers, -fonts or environments; UNIX `troff' does. The `\A' escape sequence -(*note Identifiers::) may be helpful in avoiding use of these escape -sequences in names. - - Fractional point sizes cause one noteworthy incompatibility. In -UNIX `troff' the `ps' request ignores scale indicators and thus - - - .ps 10u - -sets the point size to 10 points, whereas in GNU `troff' it sets the -point size to 10 scaled points. *Note Fractional Type Sizes::, for -more information. - - In GNU `troff' there is a fundamental difference between -(unformatted) input characters and (formatted) output glyphs. -Everything that affects how a glyph is output is stored with the glyph -node; once a glyph node has been constructed it is unaffected by any -subsequent requests that are executed, including `bd', `cs', `tkf', -`tr', or `fp' requests. Normally glyphs are constructed from input -characters at the moment immediately before the glyph is added to the -current output line. Macros, diversions and strings are all, in fact, -the same type of object; they contain lists of input characters and -glyph nodes in any combination. A glyph node does not behave like an -input character for the purposes of macro processing; it does not -inherit any of the special properties that the input character from -which it was constructed might have had. For example, - - - .di x - \\\\ - .br - .di - .x - -prints `\\' in GNU `troff'; each pair of input backslashes is turned -into one output backslash and the resulting output backslashes are not -interpreted as escape characters when they are reread. UNIX `troff' -would interpret them as escape characters when they were reread and -would end up printing one `\'. The correct way to obtain a printable -backslash is to use the `\e' escape sequence: This always prints a -single instance of the current escape character, regardless of whether -or not it is used in a diversion; it also works in both GNU `troff' and -UNIX `troff'.(1) (*note Implementation Differences-Footnote-1::) To -store, for some reason, an escape sequence in a diversion that will be -interpreted when the diversion is reread, either use the traditional -`\!' transparent output facility, or, if this is unsuitable, the new -`\?' escape sequence. - - *Note Diversions::, and *Note Gtroff Internals::, for more -information. - - -File: groff, Node: Implementation Differences-Footnotes, Up: Implementation Differences - - (1) To be completely independent of the current escape character, -use `\(rs' which represents a reverse solidus (backslash) glyph. - - -File: groff, Node: Preprocessors, Next: Output Devices, Prev: gtroff Reference, Up: Top - -Preprocessors -************* - - This chapter describes all preprocessors that come with `groff' or -which are freely available. - -* Menu: - -* geqn:: -* gtbl:: -* gpic:: -* ggrn:: -* grap:: -* grefer:: -* gsoelim:: - - -File: groff, Node: geqn, Next: gtbl, Prev: Preprocessors, Up: Preprocessors - -`geqn' -====== - -* Menu: - -* Invoking geqn:: - - -File: groff, Node: Invoking geqn, Prev: geqn, Up: geqn - -Invoking `geqn' ---------------- - - -File: groff, Node: gtbl, Next: gpic, Prev: geqn, Up: Preprocessors - -`gtbl' -====== - -* Menu: - -* Invoking gtbl:: - - -File: groff, Node: Invoking gtbl, Prev: gtbl, Up: gtbl - -Invoking `gtbl' ---------------- - - -File: groff, Node: gpic, Next: ggrn, Prev: gtbl, Up: Preprocessors - -`gpic' -====== - -* Menu: - -* Invoking gpic:: - - -File: groff, Node: Invoking gpic, Prev: gpic, Up: gpic - -Invoking `gpic' ---------------- - - -File: groff, Node: ggrn, Next: grap, Prev: gpic, Up: Preprocessors - -`ggrn' -====== - -* Menu: - -* Invoking ggrn:: - - -File: groff, Node: Invoking ggrn, Prev: ggrn, Up: ggrn - -Invoking `ggrn' ---------------- - - -File: groff, Node: grap, Next: grefer, Prev: ggrn, Up: Preprocessors - -`grap' -====== - - A free implementation of `grap', written by Ted Faber, is available -as an extra package from the following address: - - `http://www.lunabase.org/~faber/Vault/software/grap/' - - -File: groff, Node: grefer, Next: gsoelim, Prev: grap, Up: Preprocessors - -`grefer' -======== - -* Menu: - -* Invoking grefer:: - - -File: groff, Node: Invoking grefer, Prev: grefer, Up: grefer - -Invoking `grefer' ------------------ - - -File: groff, Node: gsoelim, Prev: grefer, Up: Preprocessors - -`gsoelim' -========= - -* Menu: - -* Invoking gsoelim:: - - -File: groff, Node: Invoking gsoelim, Prev: gsoelim, Up: gsoelim - -Invoking `gsoelim' ------------------- - - -File: groff, Node: Output Devices, Next: File formats, Prev: Preprocessors, Up: Top - -Output Devices -************** - -* Menu: - -* Special Characters:: -* grotty:: -* grops:: -* grodvi:: -* grolj4:: -* grolbp:: -* grohtml:: -* gxditview:: - - -File: groff, Node: Special Characters, Next: grotty, Prev: Output Devices, Up: Output Devices - -Special Characters -================== - - *Note Font Files::. - - -File: groff, Node: grotty, Next: grops, Prev: Special Characters, Up: Output Devices - -`grotty' -======== - -* Menu: - -* Invoking grotty:: - - -File: groff, Node: Invoking grotty, Prev: grotty, Up: grotty - -Invoking `grotty' ------------------ - - -File: groff, Node: grops, Next: grodvi, Prev: grotty, Up: Output Devices - -`grops' -======= - -* Menu: - -* Invoking grops:: -* Embedding PostScript:: - - -File: groff, Node: Invoking grops, Next: Embedding PostScript, Prev: grops, Up: grops - -Invoking `grops' ----------------- - - -File: groff, Node: Embedding PostScript, Prev: Invoking grops, Up: grops - -Embedding POSTSCRIPT --------------------- - - -File: groff, Node: grodvi, Next: grolj4, Prev: grops, Up: Output Devices - -`grodvi' -======== - -* Menu: - -* Invoking grodvi:: - - -File: groff, Node: Invoking grodvi, Prev: grodvi, Up: grodvi - -Invoking `grodvi' ------------------ - - -File: groff, Node: grolj4, Next: grolbp, Prev: grodvi, Up: Output Devices - -`grolj4' -======== - -* Menu: - -* Invoking grolj4:: - - -File: groff, Node: Invoking grolj4, Prev: grolj4, Up: grolj4 - -Invoking `grolj4' ------------------ - - -File: groff, Node: grolbp, Next: grohtml, Prev: grolj4, Up: Output Devices - -`grolbp' -======== - -* Menu: - -* Invoking grolbp:: - - -File: groff, Node: Invoking grolbp, Prev: grolbp, Up: grolbp - -Invoking `grolbp' ------------------ - - -File: groff, Node: grohtml, Next: gxditview, Prev: grolbp, Up: Output Devices - -`grohtml' -========= - -* Menu: - -* Invoking grohtml:: -* grohtml specific registers and strings:: - - -File: groff, Node: Invoking grohtml, Next: grohtml specific registers and strings, Prev: grohtml, Up: grohtml - -Invoking `grohtml' ------------------- - - -File: groff, Node: grohtml specific registers and strings, Prev: Invoking grohtml, Up: grohtml - -`grohtml' specific registers and strings ----------------------------------------- - - - Register: \n[ps4html] - - String: \*[www-image-template] - The registers `ps4html' and `www-image-template' are defined by - the `pre-grohtml' preprocessor. `pre-grohtml' reads in the - `troff' input, marks up the inline equations and passes the result - firstly to - - - troff -Tps -rps4html=1 -dwww-image-template=TEMPLATE - - and secondly to - - - troff -Thtml - - The PostScript device is used to create all the image files, and - the register `ps4html' enables the macro sets to ignore floating - keeps, footers, and headings. - - The register `www-image-template' is set to the user specified - template name or the default name. - - -File: groff, Node: gxditview, Prev: grohtml, Up: Output Devices - -`gxditview' -=========== - -* Menu: - -* Invoking gxditview:: - - -File: groff, Node: Invoking gxditview, Prev: gxditview, Up: gxditview - -Invoking `gxditview' --------------------- - - -File: groff, Node: File formats, Next: Installation, Prev: Output Devices, Up: Top - -File formats -************ - - All files read and written by `gtroff' are text files. The -following two sections describe their format. - -* Menu: - -* gtroff Output:: -* Font Files:: - - -File: groff, Node: gtroff Output, Next: Font Files, Prev: File formats, Up: File formats - -`gtroff' Output -=============== - - This section describes the intermediate output format of GNU -`troff'. This output is produced by a run of `gtroff' before it is fed -into a device postprocessor program. - - As `groff' is a wrapper program around `gtroff' that automatically -calls a postprocessor, this output does not show up normally. This is -why it is called "intermediate". `groff' provides the option `-Z' to -inhibit postprocessing, such that the produced intermediate output is -sent to standard output just like calling `gtroff' manually. - - Here, the term "troff output" describes what is output by `gtroff', -while "intermediate output" refers to the language that is accepted by -the parser that prepares this output for the postprocessors. This -parser is smarter on whitespace and implements obsolete elements for -compatibility, otherwise both formats are the same.(1) (*note gtroff -Output-Footnote-1::) - - The main purpose of the intermediate output concept is to facilitate -the development of postprocessors by providing a common programming -interface for all devices. It has a language of its own that is -completely different from the `gtroff' language. While the `gtroff' -language is a high-level programming language for text processing, the -intermediate output language is a kind of low-level assembler language -by specifying all positions on the page for writing and drawing. - - The intermediate output produced by `gtroff' is fairly readable, -while output from AT&T `troff' is rather hard to understand because of -strange habits that are still supported, but not used any longer by -`gtroff'. - -* Menu: - -* Language Concepts:: -* Command Reference:: -* Intermediate Output Examples:: -* Output Language Compatibility:: - - -File: groff, Node: gtroff Output-Footnotes, Up: gtroff Output - - (1) The parser and postprocessor for intermediate output can be -found in the file -`GROFF-SOURCE-DIR/src/libs/libdriver/input.cpp'. - - -File: groff, Node: Language Concepts, Next: Command Reference, Prev: gtroff Output, Up: gtroff Output - -Language Concepts ------------------ - - During the run of `gtroff', the input data is cracked down to the -information on what has to be printed at what position on the intended -device. So the language of the intermediate output format can be quite -small. Its only elements are commands with and without arguments. In -this section, the term "command" always refers to the intermediate -output language, and never to the `gtroff' language used for document -formatting. There are commands for positioning and text writing, for -drawing, and for device controlling. - -* Menu: - -* Separation:: -* Argument Units:: -* Document Parts:: - - -File: groff, Node: Separation, Next: Argument Units, Prev: Language Concepts, Up: Language Concepts - -Separation -.......... - - AT&T `troff' output has strange requirements on whitespace. The -`gtroff' output parser, however, is smart about whitespace by making it -maximally optional. The whitespace characters, i.e., the tab, space, -and newline characters, always have a syntactical meaning. They are -never printable because spacing within the output is always done by -positioning commands. - - Any sequence of space or tab characters is treated as a single -"syntactical space". It separates commands and arguments, but is only -required when there would occur a clashing between the command code and -the arguments without the space. Most often, this happens when -variable-length command names, arguments, argument lists, or command -clusters meet. Commands and arguments with a known, fixed length need -not be separated by syntactical space. - - A line break is a syntactical element, too. Every command argument -can be followed by whitespace, a comment, or a newline character. Thus -a "syntactical line break" is defined to consist of optional -syntactical space that is optionally followed by a comment, and a -newline character. - - The normal commands, those for positioning and text, consist of a -single letter taking a fixed number of arguments. For historical -reasons, the parser allows to stack such commands on the same line, but -fortunately, in `gtroff''s intermediate output, every command with at -least one argument is followed by a line break, thus providing -excellent readability. - - The other commands - those for drawing and device controlling - have -a more complicated structure; some recognize long command names, and -some take a variable number of arguments. So all `D' and `x' commands -were designed to request a syntactical line break after their last -argument. Only one command, `x X', has an argument that can stretch -over several lines; all other commands must have all of their arguments -on the same line as the command, i.e., the arguments may not be -splitted by a line break. - - Empty lines (these are lines containing only space and/or a -comment), can occur everywhere. They are just ignored. - - -File: groff, Node: Argument Units, Next: Document Parts, Prev: Separation, Up: Language Concepts - -Argument Units -.............. - - Some commands take integer arguments that are assumed to represent -values in a measurement unit, but the letter for the corresponding -scale indicator is not written with the output command arguments. Most -commands assume the scale indicator `u', the basic unit of the device, -some use `z', the scaled point unit of the device, while others, such -as the color commands, expect plain integers. - - Note that single characters can have the eighth bit set, as can the -names of fonts and special characters. The names of characters and -fonts can be of arbitrary length. A character that is to be printed -will always be in the current font. - - A string argument is always terminated by the next whitespace -character (space, tab, or newline); an embedded `#' character is -regarded as part of the argument, not as the beginning of a comment -command. An integer argument is already terminated by the next -non-digit character, which then is regarded as the first character of -the next argument or command. - - -File: groff, Node: Document Parts, Prev: Argument Units, Up: Language Concepts - -Document Parts -.............. - - A correct intermediate output document consists of two parts, the -"prologue" and the "body". - - The task of the prologue is to set the general device parameters -using three exactly specified commands. `gtroff''s prologue is -guaranteed to consist of the following three lines (in that order): - - - x T DEVICE - x res N H V - x init - -with the arguments set as outlined in *Note Device Control Commands::. -Note that the parser for the intermediate output format is able to -swallow additional whitespace and comments as well even in the prologue. - - The body is the main section for processing the document data. -Syntactically, it is a sequence of any commands different from the ones -used in the prologue. Processing is terminated as soon as the first -`x stop' command is encountered; the last line of any `gtroff' -intermediate output always contains such a command. - - Semantically, the body is page oriented. A new page is started by a -`p' command. Positioning, writing, and drawing commands are always -done within the current page, so they cannot occur before the first `p' -command. Absolute positioning (by the `H' and `V' commands) is done -relative to the current page; all other positioning is done relative to -the current location within this page. - - -File: groff, Node: Command Reference, Next: Intermediate Output Examples, Prev: Language Concepts, Up: gtroff Output - -Command Reference ------------------ - - This section describes all intermediate output commands, both from -AT&T `troff' as well as the `gtroff' extensions. - -* Menu: - -* Comment Command:: -* Simple Commands:: -* Graphics Commands:: -* Device Control Commands:: -* Obsolete Command:: - - -File: groff, Node: Comment Command, Next: Simple Commands, Prev: Command Reference, Up: Command Reference - -Comment Command -............... - -`#ANYTHING' - A comment. Ignore any characters from the `#' character up to the - next newline character. - - This command is the only possibility for commenting in the - intermediate output. Each comment can be preceded by arbitrary - syntactical space; every command can be terminated by a comment. - - -File: groff, Node: Simple Commands, Next: Graphics Commands, Prev: Comment Command, Up: Command Reference - -Simple Commands -............... - - The commands in this subsection have a command code consisting of a -single character, taking a fixed number of arguments. Most of them are -commands for positioning and text writing. These commands are smart -about whitespace. Optionally, syntactical space can be inserted -before, after, and between the command letter and its arguments. All -of these commands are stackable, i.e., they can be preceded by other -simple commands or followed by arbitrary other commands on the same -line. A separating syntactical space is only necessary when two -integer arguments would clash or if the preceding argument ends with a -string argument. - -`C XXX' - Print a special character named XXX. The trailing syntactical - space or line break is necessary to allow glyph names of arbitrary - length. The glyph is printed at the current print position; the - glyph's size is read from the font file. The print position is - not changed. - -`c G' - Print glyph G at the current print position;(1) (*note Simple - Commands-Footnote-1::) the glyph's size is read from the font - file. The print position is not changed. - -`f N' - Set font to font number N (a non-negative integer). - -`H N' - Move right to the absolute vertical position N (a non-negative - integer in basic units `u' relative to left edge of current page. - -`h N' - Move N (a non-negative integer) basic units `u' horizontally to - the right. The original UNIX troff manual allows negative values - for N also, but `gtroff' doesn't use this. - -`m COLOR-SCHEME [COMPONENT ...]' - Set the color for text (glyphs), line drawing, and the outline of - graphic objects using different color schemes; the analoguous - command for the filling color of graphic objects is `DF'. The - color components are specified as integer arguments between 0 and - 65536. The number of color components and their meaning vary for - the different color schemes. These commands are generated by - `gtroff''s escape sequence `\m'. No position changing. These - commands are a `gtroff' extension. - - `mc CYAN MAGENTA YELLOW' - Set color using the CMY color scheme, having the 3 color - components CYAN, MAGENTA, and YELLOW. - - `md' - Set color to the default color value (black in most cases). - No component arguments. - - `mg GRAY' - Set color to the shade of gray given by the argument, an - integer between 0 (black) and 65536 (white). - - `mk CYAN MAGENTA YELLOW BLACK' - Set color using the CMYK color scheme, having the 4 color - components CYAN, MAGENTA, YELLOW, and BLACK. - - `mr RED GREEN BLUE' - Set color using the RGB color scheme, having the 3 color - components RED, GREEN, and BLUE. - - -`N N' - Print glyph with index N (a non-negative integer) of the current - font. This command is a `gtroff' extension. - -`n B A' - Inform the device about a line break, but no positioning is done by - this command. In AT&T `troff', the integer arguments B and A - informed about the space before and after the current line to make - the intermediate output more human readable without performing any - action. In `groff', they are just ignored, but they must be - provided for compatibility reasons. - -`p N' - Begin a new page in the outprint. The page number is set to N. - This page is completely independent of pages formerly processed - even if those have the same page number. The vertical position on - the outprint is automatically set to 0. All positioning, writing, - and drawing is always done relative to a page, so a `p' command - must be issued before any of these commands. - -`s N' - Set point size to N scaled points (this is unit `z'). AT&T - `troff' used the unit points (`p') instead. *Note Output Language - Compatibility::. - -`t XXX' -`t XXX DUMMY-ARG' - Print a word, i.e., a sequence of characters XXX representing - output glyphs which names are single characters, terminated by a - space character or a line break; an optional second integer - argument is ignored (this allows the formatter to generate an even - number of arguments). The first glyph should be printed at the - current position, the current horizontal position should then be - increased by the width of the first glyph, and so on for each - glyph. The widths of the glyphs are read from the font file, - scaled for the current point size, and rounded to a multiple of - the horizontal resolution. Special characters cannot be printed - using this command (use the `C' command for special characters). - This command is a `gtroff' extension; it is only used for devices - whose `DESC' file contains the `tcommand' keyword (*note DESC File - Format::). - -`u N XXX' - Print word with track kerning. This is the same as the `t' - command except that after printing each glyph, the current - horizontal position is increased by the sum of the width of that - glyph and N (an integer in basic units `u'). This command is a - `gtroff' extension; it is only used for devices whose `DESC' file - contains the `tcommand' keyword (*note DESC File Format::). - -`V N' - Move down to the absolute vertical position N (a non-negative - integer in basic units `u') relative to upper edge of current page. - -`v N' - Move N basic units `u' down (N is a non-negative integer). The - original UNIX troff manual allows negative values for N also, but - `gtroff' doesn't use this. - -`w' - Informs about a paddable white space to increase readability. The - spacing itself must be performed explicitly by a move command. - - - -File: groff, Node: Simple Commands-Footnotes, Up: Simple Commands - - (1) `c' is actually a misnomer since it outputs a glyph. - - -File: groff, Node: Graphics Commands, Next: Device Control Commands, Prev: Simple Commands, Up: Command Reference - -Graphics Commands -................. - - Each graphics or drawing command in the intermediate output starts -with the letter `D', followed by one or two characters that specify a -subcommand; this is followed by a fixed or variable number of integer -arguments that are separated by a single space character. A `D' -command may not be followed by another command on the same line (apart -from a comment), so each `D' command is terminated by a syntactical -line break. - - `gtroff' output follows the classical spacing rules (no space -between command and subcommand, all arguments are preceded by a single -space character), but the parser allows optional space between the -command letters and makes the space before the first argument optional. -As usual, each space can be any sequence of tab and space characters. - - Some graphics commands can take a variable number of arguments. In -this case, they are integers representing a size measured in basic -units `u'. The arguments called H1, H2, ..., HN stand for horizontal -distances where positive means right, negative left. The arguments -called V1, V2, ..., VN stand for vertical distances where positive -means down, negative up. All these distances are offsets relative to -the current location. - - Each graphics command directly corresponds to a similar `gtroff' -`\D' escape sequence. *Note Drawing Requests::. - - Unknown `D' commands are assumed to be device-specific. Its -arguments are parsed as strings; the whole information is then sent to -the postprocessor. - - In the following command reference, the syntax element -means a syntactical line break as defined above. - -`D~ H1 V1 H2 V2 ... HN VN' - Draw B-spline from current position to offset (H1,V1), then to - offset (H2,V2), if given, etc. up to (HN,VN). This command takes - a variable number of argument pairs; the current position is moved - to the terminal point of the drawn curve. - -`Da H1 V1 H2 V2' - Draw arc from current position to (H1,V1)+(H2,V2) with center at - (H1,V1); then move the current position to the final point of the - arc. - -`DC D' -`DC D DUMMY-ARG' - Draw a solid circle using the current fill color with diameter D - (integer in basic units `u') with leftmost point at the current - position; then move the current position to the rightmost point of - the circle. An optional second integer argument is ignored (this - allows the formatter to generate an even number of arguments). - This command is a `gtroff' extension. - -`Dc D' - Draw circle line with diameter D (integer in basic units `u') with - leftmost point at the current position; then move the current - position to the rightmost point of the circle. - -`DE H V' - Draw a solid ellipse in the current fill color with a horizontal - diameter of H and a vertical diameter of V (both integers in basic - units `u') with the leftmost point at the current position; then - move to the rightmost point of the ellipse. This command is a - `gtroff' extension. - -`De H V' - Draw an outlined ellipse with a horizontal diameter of H and a - vertical diameter of V (both integers in basic units `u') with the - leftmost point at current position; then move to the rightmost - point of the ellipse. - -`DF COLOR-SCHEME [COMPONENT ...]' - Set fill color for solid drawing objects using different color - schemes; the analoguous command for setting the color of text, line - graphics, and the outline of graphic objects is `m'. The color - components are specified as integer arguments between 0 and 65536. - The number of color components and their meaning vary for the - different color schemes. These commands are generated by - `gtroff''s escape sequences `\D'F ...'' and `\M' (with no other - corresponding graphics commands). No position changing. This - command is a `gtroff' extension. - - `DFc CYAN MAGENTA YELLOW' - Set fill color for solid drawing objects using the CMY color - scheme, having the 3 color components CYAN, MAGENTA, and - YELLOW. - - `DFd' - Set fill color for solid drawing objects to the default fill - color value (black in most cases). No component arguments. - - `DFg GRAY' - Set fill color for solid drawing objects to the shade of gray - given by the argument, an integer between 0 (black) and 65536 - (white). - - `DFk CYAN MAGENTA YELLOW BLACK' - Set fill color for solid drawing objects using the CMYK color - scheme, having the 4 color components CYAN, MAGENTA, YELLOW, - and BLACK. - - `DFr RED GREEN BLUE' - Set fill color for solid drawing objects using the RGB color - scheme, having the 3 color components RED, GREEN, and BLUE. - - -`Df N' - The argument N must be an integer in the range -32767 to 32767. - - 0 <= N <= 1000 - Set the color for filling solid drawing objects to a shade of - gray, where 0 corresponds to solid white, 1000 (the default) - to solid black, and values in between to intermediate shades - of gray; this is obsoleted by command `DFg'. - - N < 0 or N > 1000 - Set the filling color to the color that is currently being - used for the text and the outline, see command `m'. For - example, the command sequence - - - mg 0 0 65536 - Df -1 - - sets all colors to blue. - - - No position changing. This command is a `gtroff' extension. - -`Dl H V' - Draw line from current position to offset (H,V) (integers in basic - units `u'); then set current position to the end of the drawn line. - -`Dp H1 V1 H2 V2 ... HN VN' - Draw a polygon line from current position to offset (H1,V1), from - there to offset (H2,V2), etc. up to offset (HN,VN), and from there - back to the starting position. For historical reasons, the - position is changed by adding the sum of all arguments with odd - index to the actual horizontal position and the even ones to the - vertical position. Although this doesn't make sense it is kept - for compatibility. This command is a `gtroff' extension. - -`Dp H1 V1 H2 V2 ... HN VN' - Draw a solid polygon in the current fill color rather than an - outlined polygon, using the same arguments and positioning as the - corresponding `Dp' command. This command is a `gtroff' extension. - -`Dt N' - Set the current line thickness to N (an integer in basic units - `u') if N>0; if N=0 select the smallest available line thickness; - if N<0 set the line thickness proportional to the point size (this - is the default before the first `Dt' command was specified). For - historical reasons, the horizontal position is changed by adding - the argument to the actual horizontal position, while the vertical - position is not changed. Although this doesn't make sense it is - kept for compatibility. This command is a `gtroff' extension. - - - -File: groff, Node: Device Control Commands, Next: Obsolete Command, Prev: Graphics Commands, Up: Command Reference - -Device Control Commands -....................... - - Each device control command starts with the letter `x', followed by -a space character (optional or arbitrary space or tab in `gtroff') and -a subcommand letter or word; each argument (if any) must be preceded by -a syntactical space. All `x' commands are terminated by a syntactical -line break; no device control command can be followed by another -command on the same line (except a comment). - - The subcommand is basically a single letter, but to increase -readability, it can be written as a word, i.e., an arbitrary sequence -of characters terminated by the next tab, space, or newline character. -All characters of the subcommand word but the first are simply ignored. -For example, `gtroff' outputs the initialization command `x i' as -`x init' and the resolution command `x r' as `x res'. - - In the following, the syntax element means a -syntactical line break (*note Separation::). - -`xF NAME' - The `F' stands for FILENAME. - - Use NAME as the intended name for the current file in error - reports. This is useful for remembering the original file name - when `gtroff' uses an internal piping mechanism. The input file is - not changed by this command. This command is a `gtroff' extension. - -`xf N S' - The `f' stands for FONT. - - Mount font position N (a non-negative integer) with font named S - (a text word). *Note Font Positions::. - -`xH N' - The `H' stands for HEIGHT. - - Set glyph height to N (a positive integer in scaled points `z'). - AT&T `troff' uses the unit points (`p') instead. *Note Output - Language Compatibility::. - -`xi' - The `i' stands for INIT. - - Initialize device. This is the third command of the prologue. - -`xp' - The `p' stands for PAUSE. - - Parsed but ignored. The original UNIX troff manual writes - - pause device, can be restarted - -`xr N H V' - The `r' stands for RESOLUTION. - - Resolution is N, while H is the minimal horizontal motion, and V - the minimal vertical motion possible with this device; all - arguments are positive integers in basic units `u' per inch. This - is the second command of the prologue. - -`xS N' - The `S' stands for SLANT. - - Set slant to N (an integer in basic units `u'). - -`xs' - The `s' stands for STOP. - - Terminates the processing of the current file; issued as the last - command of any intermediate troff output. - -`xt' - The `t' stands for TRAILER. - - Generate trailer information, if any. In GTROFF, this is actually - just ignored. - -`xT XXX' - The `T' stands for TYPESETTER. - - Set name of device to word XXX, a sequence of characters ended by - the next white space character. The possible device names coincide - with those from the `groff' `-T' option. This is the first - command of the prologue. - -`xu N' - The `u' stands for UNDERLINE. - - Configure underlining of spaces. If N is 1, start underlining of - spaces; if N is 0, stop underlining of spaces. This is needed for - the `cu' request in nroff mode and is ignored otherwise. This - command is a `gtroff' extension. - -`xX ANYTHING' - The `x' stands for X-ESCAPE. - - Send string ANYTHING uninterpreted to the device. If the line - following this command starts with a `+' character this line is - interpreted as a continuation line in the following sense. The - `+' is ignored, but a newline character is sent instead to the - device, the rest of the line is sent uninterpreted. The same - applies to all following lines until the first character of a line - is not a `+' character. This command is generated by the `gtroff' - escape sequence `\X'. The line-continuing feature is a `gtroff' - extension. - - - -File: groff, Node: Obsolete Command, Prev: Device Control Commands, Up: Command Reference - -Obsolete Command -................ - - In AT&T `troff' output, the writing of a single glyph is mostly done -by a very strange command that combines a horizontal move and a single -character giving the glyph name. It doesn't have a command code, but -is represented by a 3-character argument consisting of exactly 2 digits -and a character. - -DDG - Move right DD (exactly two decimal digits) basic units `u', then - print glyph G (represented as a single character). - - In `gtroff', arbitrary syntactical space around and within this - command is allowed to be added. Only when a preceding command on - the same line ends with an argument of variable length a - separating space is obligatory. In AT&T `troff', large clusters - of these and other commands are used, mostly without spaces; this - made such output almost unreadable. - - - For modern high-resolution devices, this command does not make sense -because the width of the glyphs can become much larger than two decimal -digits. In `gtroff', this is only used for the devices `X75', -`X75-12', `X100', and `X100-12'. For other devices, the commands `t' -and `u' provide a better functionality. - - -File: groff, Node: Intermediate Output Examples, Next: Output Language Compatibility, Prev: Command Reference, Up: gtroff Output - -Intermediate Output Examples ----------------------------- - - This section presents the intermediate output generated from the same -input for three different devices. The input is the sentence `hell -world' fed into `gtroff' on the command line. - -High-resolution device `ps' - This is the standard output of `gtroff' if no `-T' option is given. - - shell> echo "hell world" | groff -Z -T ps - - x T ps - x res 72000 1 1 - x init - p1 - x font 5 TR - f5 - s10000 - V12000 - H72000 - thell - wh2500 - tw - H96620 - torld - n12000 0 - x trailer - V792000 - x stop - - This output can be fed into `grops' to get its representation as a - PostScript file. - -Low-resolution device `latin1' - This is similar to the high-resolution device except that the - positioning is done at a minor scale. Some comments (lines - starting with `#') were added for clarification; they were not - generated by the formatter. - - shell> echo "hell world" | groff -Z -T latin1 - - # prologue - x T latin1 - x res 240 24 40 - x init - # begin a new page - p1 - # font setup - x font 1 R - f1 - s10 - # initial positioning on the page - V40 - H0 - # write text `hell' - thell - # inform about space, and issue a horizontal jump - wh24 - # write text `world' - tworld - # announce line break, but do nothing because ... - n40 0 - # ... the end of the document has been reached - x trailer - V2640 - x stop - - This output can be fed into `grotty' to get a formatted text - document. - -AT&T `troff' output - Since a computer monitor has a very low resolution compared to - modern printers the intermediate output for the X Window devices - can use the jump-and-write command with its 2-digit displacements. - - shell> echo "hell world" | groff -Z -T X100 - - x T X100 - x res 100 1 1 - x init - p1 - x font 5 TR - f5 - s10 - V16 - H100 - # write text with jump-and-write commands - ch07e07l03lw06w11o07r05l03dh7 - n16 0 - x trailer - V1100 - x stop - - This output can be fed into `xditview' or `gxditview' for - displaying in X. - - Due to the obsolete jump-and-write command, the text clusters in - the AT&T `troff' output are almost unreadable. - - - -File: groff, Node: Output Language Compatibility, Prev: Intermediate Output Examples, Up: gtroff Output - -Output Language Compatibility ------------------------------ - - The intermediate output language of AT&T `troff' was first -documented in the UNIX troff manual, with later additions documented in -`A Typesetter-indenpendent TROFF', written by Brian Kernighan. - - The `gtroff' intermediate output format is compatible with this -specification except for the following features. - - * The classical quasi device independence is not yet implemented. - - * The old hardware was very different from what we use today. So the - `groff' devices are also fundamentally different from the ones in - AT&T `troff'. For example, the AT&T PostScript device is called - `post' and has a resolution of only 720 units per inch, suitable - for printers 20 years ago, while `groff''s `ps' device has a - resolution of 72000 units per inch. Maybe, by implementing some - rescaling mechanism similar to the classical quasi device - independence, `groff' could emulate AT&T's `post' device. - - * The B-spline command `D~' is correctly handled by the intermediate - output parser, but the drawing routines aren't implemented in some - of the postprocessor programs. - - * The argument of the commands `s' and `x H' has the implicit unit - scaled point `z' in `gtroff', while AT&T `troff' has point (`p'). - This isn't an incompatibility but a compatible extension, for both - units coincide for all devices without a `sizescale' parameter in - the `DESC' file, including all postprocessors from AT&T and - `groff''s text devices. The few `groff' devices with a - `sizescale' parameter either do not exist for AT&T `troff', have a - different name, or seem to have a different resolution. So - conflicts are very unlikely. - - * The position changing after the commands `Dp', `DP', and `Dt' is - illogical, but as old versions of `gtroff' used this feature it is - kept for compatibility reasons. - - - -File: groff, Node: Font Files, Prev: gtroff Output, Up: File formats - -Font Files -========== - - The `gtroff' font format is roughly a superset of the `ditroff' font -format (as used in later versions of AT&T `troff' and its descendants). -Unlike the `ditroff' font format, there is no associated binary -format; all files are text files.(1) (*note Font Files-Footnote-1::) -The font files for device NAME are stored in a directory `devNAME'. -There are two types of file: a device description file called `DESC' -and for each font F a font file called `F'. - -* Menu: - -* DESC File Format:: -* Font File Format:: - - -File: groff, Node: Font Files-Footnotes, Up: Font Files - - (1) Plan 9 `troff' has also abandoned the binary format. - diff --git a/contrib/groff/doc/groff-9 b/contrib/groff/doc/groff-9 deleted file mode 100644 index 3f653d3..0000000 --- a/contrib/groff/doc/groff-9 +++ /dev/null @@ -1,985 +0,0 @@ -This is groff, produced by makeinfo version 4.3d from ./groff.texinfo. - -This manual documents GNU `troff' version 1.19. - - Copyright (C) 1994-2000, 2001, 2002, 2003 Free Software Foundation, -Inc. - - Permission is granted to copy, distribute and/or modify this - document under the terms of the GNU Free Documentation License, - Version 1.1 or any later version published by the Free Software - Foundation; with no Invariant Sections, with the Front-Cover texts - being `A GNU Manual," and with the Back-Cover Texts as in (a) - below. A copy of the license is included in the section entitled - `GNU Free Documentation License." - - (a) The FSF's Back-Cover Text is: `You have freedom to copy and - modify this GNU Manual, like GNU software. Copies published by - the Free Software Foundation raise funds for GNU development." - -INFO-DIR-SECTION Typesetting -START-INFO-DIR-ENTRY -* Groff: (groff). The GNU troff document formatting system. -END-INFO-DIR-ENTRY - - -File: groff, Node: DESC File Format, Next: Font File Format, Prev: Font Files, Up: Font Files - -`DESC' File Format ------------------- - - The `DESC' file can contain the following types of line. Except for -the `charset' keyword which must comes last (if at all), the order of -the lines is not important. - -`res N' - There are N machine units per inch. - -`hor N' - The horizontal resolution is N machine units. All horizontal - quantities are rounded to be multiples of this value. - -`vert N' - The vertical resolution is N machine units. All vertical - quantities are rounded to be multiples of this value. - -`sizescale N' - The scale factor for point sizes. By default this has a value - of 1. One scaled point is equal to one point/N. The arguments to - the `unitwidth' and `sizes' commands are given in scaled points. - *Note Fractional Type Sizes::, for more information. - -`unitwidth N' - Quantities in the font files are given in machine units for fonts - whose point size is N scaled points. - -`prepro PROGRAM' - Call PROGRAM as a preprocessor. Currently, this keyword is used - by `groff' with option `-Thtml' only. - -`postpro PROGRAM' - Call PROGRAM as a postprocessor. For example, the line - - - postpro grodvi - - in the file `devdvi/DESC' makes `groff' call `grodvi' if option - `-Tdvi' is given (and `-Z' isn't used). - -`tcommand' - This means that the postprocessor can handle the `t' and `u' - intermediate output commands. - -`sizes S1 S2 ... SN 0' - This means that the device has fonts at S1, S2, ... SN scaled - points. The list of sizes must be terminated by 0 (this is digit - zero). Each SI can also be a range of sizes M-N. The list can - extend over more than one line. - -`styles S1 S2 ... SM' - The first M font positions are associated with styles S1 ... SM. - -`fonts N F1 F2 F3 ... FN' - Fonts F1 ... FN are mounted in the font positions M+1, ..., M+N - where M is the number of styles. This command may extend over - more than one line. A font name of 0 means no font is mounted on - the corresponding font position. - -`family FAM' - The default font family is FAM. - -`use_charnames_in_special' - This command indicates that `gtroff' should encode special - characters inside special commands. Currently, this is only used - by the HTML output device. *Note Postprocessor Access::. - -`papersize STRING ...' - Select a paper size. Valid values for STRING are the ISO paper - types `A0'-`A7', `B0'-`B7', `C0'-`C7', `D0'-`D7', `DL', and the US - paper types `letter', `legal', `tabloid', `ledger', `statement', - `executive', `com10', and `monarch'. Case is not significant for - STRING if it holds predefined paper types. Alternatively, STRING - can be a file name (e.g. `/etc/papersize'); if the file can be - opened, `groff' reads the first line and tests for the above paper - sizes. Finally, STRING can be a custom paper size in the format - `LENGTH,WIDTH' (no spaces before and after the comma). Both - LENGTH and WIDTH must have a unit appended; valid values are `i' - for inches, `C' for centimeters, `p' for points, and `P' for - picas. Example: `12c,235p'. An argument which starts with a - digit is always treated as a custom paper format. `papersize' - sets both the vertical and horizontal dimension of the output - medium. - - More than one argument can be specified; `groff' scans from left to - right and uses the first valid paper specification. - -`pass_filenames' - Tell `gtroff' to emit the name of the source file currently being - processed. This is achieved by the intermediate output command - `F'. Currently, this is only used by the HTML output device. - -`print PROGRAM' - Use PROGRAM as a spooler program for printing. If omitted, the - `-l' and `-L' options of `groff' are ignored. - -`charset' - This line and everything following in the file are ignored. It is - allowed for the sake of backwards compatibility. - - The `res', `unitwidth', `fonts', and `sizes' lines are mandatory. -Other commands are ignored by `gtroff' but may be used by -postprocessors to store arbitrary information about the device in the -`DESC' file. - - Here a list of obsolete keywords which are recognized by `groff' but -completely ignored: `spare1', `spare2', `biggestfont'. - - -File: groff, Node: Font File Format, Prev: DESC File Format, Up: Font Files - -Font File Format ----------------- - - A "font file", also (and probably better) called a "font description -file", has two sections. The first section is a sequence of lines each -containing a sequence of blank delimited words; the first word in the -line is a key, and subsequent words give a value for that key. - -`name F' - The name of the font is F. - -`spacewidth N' - The normal width of a space is N. - -`slant N' - The glyphs of the font have a slant of N degrees. (Positive means - forward.) - -`ligatures LIG1 LIG2 ... LIGN [0]' - Glyphs LIG1, LIG2, ..., LIGN are ligatures; possible ligatures are - `ff', `fi', `fl', `ffi' and `ffl'. For backwards compatibility, - the list of ligatures may be terminated with a 0. The list of - ligatures may not extend over more than one line. - -`special' - The font is "special"; this means that when a glyph is requested - that is not present in the current font, it is searched for in any - special fonts that are mounted. - - Other commands are ignored by `gtroff' but may be used by -postprocessors to store arbitrary information about the font in the font -file. - - The first section can contain comments which start with the `#' -character and extend to the end of a line. - - The second section contains one or two subsections. It must contain -a `charset' subsection and it may also contain a `kernpairs' -subsection. These subsections can appear in any order. Each -subsection starts with a word on a line by itself. - - The word `charset' starts the character set subsection.(1) (*note -Font File Format-Footnote-1::) The `charset' line is followed by a -sequence of lines. Each line gives information for one glyph. A line -comprises a number of fields separated by blanks or tabs. The format is - - NAME METRICS TYPE CODE [ENTITY-NAME] [`--' COMMENT] - -NAME identifies the glyph name(2) (*note Font File Format-Footnote-2::): -If NAME is a single character C then it corresponds to the `gtroff' -input character C; if it is of the form `\C' where C is a single -character, then it corresponds to the special character `\[C]'; -otherwise it corresponds to the special character `\[NAME]'. If it is -exactly two characters XX it can be entered as `\(XX'. Note that -single-letter special characters can't be accessed as `\C'; the only -exception is `\-' which is identical to `\[-]'. - - `gtroff' supports 8-bit input characters; however some utilities -have difficulties with eight-bit characters. For this reason, there is -a convention that the entity name `charN' is equivalent to the single -input character whose code is N. For example, `char163' would be -equivalent to the character with code 163 which is the pounds sterling -sign in the ISO Latin-1 character set. You shouldn't use `charN' -entities in font description files since they are related to input, not -output. Otherwise, you get hard-coded connections between input and -output encoding which prevents use of different (input) character sets. - - The name `---' is special and indicates that the glyph is unnamed; -such glyphs can only be used by means of the `\N' escape sequence in -`gtroff'. - - The TYPE field gives the glyph type: - -`1' - the glyph has a descender, for example, `p'; - -`2' - the glyph has an ascender, for example, `b'; - -`3' - the glyph has both an ascender and a descender, for example, `('. - - The CODE field gives the code which the postprocessor uses to print -the glyph. The glyph can also be input to `gtroff' using this code by -means of the `\N' escape sequence. CODE can be any integer. If it -starts with `0' it is interpreted as octal; if it starts with `0x' or -`0X' it is interpreted as hexadecimal. Note, however, that the `\N' -escape sequence only accepts a decimal integer. - - The ENTITY-NAME field gives an ASCII string identifying the glyph -which the postprocessor uses to print the `gtroff' glyph NAME. This -field is optional and has been introduced so that the HTML device -driver can encode its character set. For example, the glyph `\[Po]' is -represented as `£' in HTML 4.0. - - Anything on the line after the ENTITY-NAME field resp. after `--' -will be ignored. - - The METRICS field has the form: - - WIDTH[`,'HEIGHT[`,'DEPTH[`,'ITALIC-CORRECTION - [`,'LEFT-ITALIC-CORRECTION[`,'SUBSCRIPT-CORRECTION]]]]] - -There must not be any spaces between these subfields (it has been split -here into two lines for better legibility only). Missing subfields are -assumed to be 0. The subfields are all decimal integers. Since there -is no associated binary format, these values are not required to fit -into a variable of type `char' as they are in `ditroff'. The WIDTH -subfield gives the width of the glyph. The HEIGHT subfield gives the -height of the glyph (upwards is positive); if a glyph does not extend -above the baseline, it should be given a zero height, rather than a -negative height. The DEPTH subfield gives the depth of the glyph, that -is, the distance from the baseline to the lowest point below the -baseline to which the glyph extends (downwards is positive); if a glyph -does not extend below the baseline, it should be given a zero depth, -rather than a negative depth. The ITALIC-CORRECTION subfield gives the -amount of space that should be added after the glyph when it is -immediately to be followed by a glyph from a roman font. The -LEFT-ITALIC-CORRECTION subfield gives the amount of space that should -be added before the glyph when it is immediately to be preceded by a -glyph from a roman font. The SUBSCRIPT-CORRECTION gives the amount of -space that should be added after a glyph before adding a subscript. -This should be less than the italic correction. - - A line in the `charset' section can also have the format - - - NAME " - -This indicates that NAME is just another name for the glyph mentioned -in the preceding line. - - The word `kernpairs' starts the kernpairs section. This contains a -sequence of lines of the form: - - - C1 C2 N - -This means that when glyph C1 appears next to glyph C2 the space -between them should be increased by N. Most entries in the kernpairs -section have a negative value for N. - - -File: groff, Node: Font File Format-Footnotes, Up: Font File Format - - (1) This keyword is misnamed since it starts a list of ordered -glyphs, not characters. - - (2) The distinction between input, characters, and output, glyphs, -is not clearly separated in the terminology of `groff'; for example, -the `char' request should be called `glyph' since it defines an output -entity. - - -File: groff, Node: Installation, Next: Copying This Manual, Prev: File formats, Up: Top - -Installation -************ - - -File: groff, Node: Copying This Manual, Next: Request Index, Prev: Installation, Up: Top - -Copying This Manual -******************* - -* Menu: - -* GNU Free Documentation License:: License for copying this manual. - - -File: groff, Node: GNU Free Documentation License, Up: Copying This Manual - -GNU Free Documentation License -============================== - - Version 1.1, March 2000 - Copyright (C) 2000 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. - - 0. PREAMBLE - - The purpose of this License is to make a manual, textbook, or other - written document "free" in the sense of freedom: to assure everyone - the effective freedom to copy and redistribute it, with or without - modifying it, either commercially or noncommercially. Secondarily, - this License preserves for the author and publisher a way to get - credit for their work, while not being considered responsible for - modifications made by others. - - This License is a kind of "copyleft", which means that derivative - works of the document must themselves be free in the same sense. - It complements the GNU General Public License, which is a copyleft - license designed for free software. - - We have designed this License in order to use it for manuals for - free software, because free software needs free documentation: a - free program should come with manuals providing the same freedoms - that the software does. But this License is not limited to - software manuals; it can be used for any textual work, regardless - of subject matter or whether it is published as a printed book. - We recommend this License principally for works whose purpose is - instruction or reference. - - 1. APPLICABILITY AND DEFINITIONS - - This License applies to any manual or other work that contains a - notice placed by the copyright holder saying it can be distributed - under the terms of this License. The "Document", below, refers to - any such manual or work. Any member of the public is a licensee, - and is addressed as "you". - - A "Modified Version" of the Document means any work containing the - Document or a portion of it, either copied verbatim, or with - modifications and/or translated into another language. - - A "Secondary Section" is a named appendix or a front-matter - section of the Document that deals exclusively with the - relationship of the publishers or authors of the Document to the - Document's overall subject (or to related matters) and contains - nothing that could fall directly within that overall subject. - (For example, if the Document is in part a textbook of - mathematics, a Secondary Section may not explain any mathematics.) - The relationship could be a matter of historical connection with - the subject or with related matters, or of legal, commercial, - philosophical, ethical or political position regarding them. - - The "Invariant Sections" are certain Secondary Sections whose - titles are designated, as being those of Invariant Sections, in - the notice that says that the Document is released under this - License. - - The "Cover Texts" are certain short passages of text that are - listed, as Front-Cover Texts or Back-Cover Texts, in the notice - that says that the Document is released under this License. - - A "Transparent" copy of the Document means a machine-readable copy, - represented in a format whose specification is available to the - general public, whose contents can be viewed and edited directly - and straightforwardly with generic text editors or (for images - composed of pixels) generic paint programs or (for drawings) some - widely available drawing editor, and that is suitable for input to - text formatters or for automatic translation to a variety of - formats suitable for input to text formatters. A copy made in an - otherwise Transparent file format whose markup has been designed - to thwart or discourage subsequent modification by readers is not - Transparent. A copy that is not "Transparent" is called "Opaque". - - Examples of suitable formats for Transparent copies include plain - ASCII without markup, Texinfo input format, LaTeX input format, - SGML or XML using a publicly available DTD, and - standard-conforming simple HTML designed for human modification. - Opaque formats include PostScript, PDF, proprietary formats that - can be read and edited only by proprietary word processors, SGML - or XML for which the DTD and/or processing tools are not generally - available, and the machine-generated HTML produced by some word - processors for output purposes only. - - The "Title Page" means, for a printed book, the title page itself, - plus such following pages as are needed to hold, legibly, the - material this License requires to appear in the title page. For - works in formats which do not have any title page as such, "Title - Page" means the text near the most prominent appearance of the - work's title, preceding the beginning of the body of the text. - - 2. VERBATIM COPYING - - You may copy and distribute the Document in any medium, either - commercially or noncommercially, provided that this License, the - copyright notices, and the license notice saying this License - applies to the Document are reproduced in all copies, and that you - add no other conditions whatsoever to those of this License. You - may not use technical measures to obstruct or control the reading - or further copying of the copies you make or distribute. However, - you may accept compensation in exchange for copies. If you - distribute a large enough number of copies you must also follow - the conditions in section 3. - - You may also lend copies, under the same conditions stated above, - and you may publicly display copies. - - 3. COPYING IN QUANTITY - - If you publish printed copies of the Document numbering more than - 100, and the Document's license notice requires Cover Texts, you - must enclose the copies in covers that carry, clearly and legibly, - all these Cover Texts: Front-Cover Texts on the front cover, and - Back-Cover Texts on the back cover. Both covers must also clearly - and legibly identify you as the publisher of these copies. The - front cover must present the full title with all words of the - title equally prominent and visible. You may add other material - on the covers in addition. Copying with changes limited to the - covers, as long as they preserve the title of the Document and - satisfy these conditions, can be treated as verbatim copying in - other respects. - - If the required texts for either cover are too voluminous to fit - legibly, you should put the first ones listed (as many as fit - reasonably) on the actual cover, and continue the rest onto - adjacent pages. - - If you publish or distribute Opaque copies of the Document - numbering more than 100, you must either include a - machine-readable Transparent copy along with each Opaque copy, or - state in or with each Opaque copy a publicly-accessible - computer-network location containing a complete Transparent copy - of the Document, free of added material, which the general - network-using public has access to download anonymously at no - charge using public-standard network protocols. If you use the - latter option, you must take reasonably prudent steps, when you - begin distribution of Opaque copies in quantity, to ensure that - this Transparent copy will remain thus accessible at the stated - location until at least one year after the last time you - distribute an Opaque copy (directly or through your agents or - retailers) of that edition to the public. - - It is requested, but not required, that you contact the authors of - the Document well before redistributing any large number of - copies, to give them a chance to provide you with an updated - version of the Document. - - 4. MODIFICATIONS - - You may copy and distribute a Modified Version of the Document - under the conditions of sections 2 and 3 above, provided that you - release the Modified Version under precisely this License, with - the Modified Version filling the role of the Document, thus - licensing distribution and modification of the Modified Version to - whoever possesses a copy of it. In addition, you must do these - things in the Modified Version: - - A. Use in the Title Page (and on the covers, if any) a title - distinct from that of the Document, and from those of - previous versions (which should, if there were any, be listed - in the History section of the Document). You may use the - same title as a previous version if the original publisher of - that version gives permission. - - B. List on the Title Page, as authors, one or more persons or - entities responsible for authorship of the modifications in - the Modified Version, together with at least five of the - principal authors of the Document (all of its principal - authors, if it has less than five). - - C. State on the Title page the name of the publisher of the - Modified Version, as the publisher. - - D. Preserve all the copyright notices of the Document. - - E. Add an appropriate copyright notice for your modifications - adjacent to the other copyright notices. - - F. Include, immediately after the copyright notices, a license - notice giving the public permission to use the Modified - Version under the terms of this License, in the form shown in - the Addendum below. - - G. Preserve in that license notice the full lists of Invariant - Sections and required Cover Texts given in the Document's - license notice. - - H. Include an unaltered copy of this License. - - I. Preserve the section entitled "History", and its title, and - add to it an item stating at least the title, year, new - authors, and publisher of the Modified Version as given on - the Title Page. If there is no section entitled "History" in - the Document, create one stating the title, year, authors, - and publisher of the Document as given on its Title Page, - then add an item describing the Modified Version as stated in - the previous sentence. - - J. Preserve the network location, if any, given in the Document - for public access to a Transparent copy of the Document, and - likewise the network locations given in the Document for - previous versions it was based on. These may be placed in - the "History" section. You may omit a network location for a - work that was published at least four years before the - Document itself, or if the original publisher of the version - it refers to gives permission. - - K. In any section entitled "Acknowledgments" or "Dedications", - preserve the section's title, and preserve in the section all - the substance and tone of each of the contributor - acknowledgments and/or dedications given therein. - - L. Preserve all the Invariant Sections of the Document, - unaltered in their text and in their titles. Section numbers - or the equivalent are not considered part of the section - titles. - - M. Delete any section entitled "Endorsements". Such a section - may not be included in the Modified Version. - - N. Do not retitle any existing section as "Endorsements" or to - conflict in title with any Invariant Section. - - If the Modified Version includes new front-matter sections or - appendices that qualify as Secondary Sections and contain no - material copied from the Document, you may at your option - designate some or all of these sections as invariant. To do this, - add their titles to the list of Invariant Sections in the Modified - Version's license notice. These titles must be distinct from any - other section titles. - - You may add a section entitled "Endorsements", provided it contains - nothing but endorsements of your Modified Version by various - parties--for example, statements of peer review or that the text - has been approved by an organization as the authoritative - definition of a standard. - - You may add a passage of up to five words as a Front-Cover Text, - and a passage of up to 25 words as a Back-Cover Text, to the end - of the list of Cover Texts in the Modified Version. Only one - passage of Front-Cover Text and one of Back-Cover Text may be - added by (or through arrangements made by) any one entity. If the - Document already includes a cover text for the same cover, - previously added by you or by arrangement made by the same entity - you are acting on behalf of, you may not add another; but you may - replace the old one, on explicit permission from the previous - publisher that added the old one. - - The author(s) and publisher(s) of the Document do not by this - License give permission to use their names for publicity for or to - assert or imply endorsement of any Modified Version. - - 5. COMBINING DOCUMENTS - - You may combine the Document with other documents released under - this License, under the terms defined in section 4 above for - modified versions, provided that you include in the combination - all of the Invariant Sections of all of the original documents, - unmodified, and list them all as Invariant Sections of your - combined work in its license notice. - - The combined work need only contain one copy of this License, and - multiple identical Invariant Sections may be replaced with a single - copy. If there are multiple Invariant Sections with the same name - but different contents, make the title of each such section unique - by adding at the end of it, in parentheses, the name of the - original author or publisher of that section if known, or else a - unique number. Make the same adjustment to the section titles in - the list of Invariant Sections in the license notice of the - combined work. - - In the combination, you must combine any sections entitled - "History" in the various original documents, forming one section - entitled "History"; likewise combine any sections entitled - "Acknowledgments", and any sections entitled "Dedications". You - must delete all sections entitled "Endorsements." - - 6. COLLECTIONS OF DOCUMENTS - - You may make a collection consisting of the Document and other - documents released under this License, and replace the individual - copies of this License in the various documents with a single copy - that is included in the collection, provided that you follow the - rules of this License for verbatim copying of each of the - documents in all other respects. - - You may extract a single document from such a collection, and - distribute it individually under this License, provided you insert - a copy of this License into the extracted document, and follow - this License in all other respects regarding verbatim copying of - that document. - - 7. AGGREGATION WITH INDEPENDENT WORKS - - A compilation of the Document or its derivatives with other - separate and independent documents or works, in or on a volume of - a storage or distribution medium, does not as a whole count as a - Modified Version of the Document, provided no compilation - copyright is claimed for the compilation. Such a compilation is - called an "aggregate", and this License does not apply to the - other self-contained works thus compiled with the Document, on - account of their being thus compiled, if they are not themselves - derivative works of the Document. - - If the Cover Text requirement of section 3 is applicable to these - copies of the Document, then if the Document is less than one - quarter of the entire aggregate, the Document's Cover Texts may be - placed on covers that surround only the Document within the - aggregate. Otherwise they must appear on covers around the whole - aggregate. - - 8. TRANSLATION - - Translation is considered a kind of modification, so you may - distribute translations of the Document under the terms of section - 4. Replacing Invariant Sections with translations requires special - permission from their copyright holders, but you may include - translations of some or all Invariant Sections in addition to the - original versions of these Invariant Sections. You may include a - translation of this License provided that you also include the - original English version of this License. In case of a - disagreement between the translation and the original English - version of this License, the original English version will prevail. - - 9. TERMINATION - - You may not copy, modify, sublicense, or distribute the Document - except as expressly provided for under this License. Any other - attempt to copy, modify, sublicense or distribute the Document 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. - - 10. FUTURE REVISIONS OF THIS LICENSE - - The Free Software Foundation may publish new, revised versions of - the GNU Free Documentation 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. See - `http://www.gnu.org/copyleft/'. - - Each version of the License is given a distinguishing version - number. If the Document specifies that a particular numbered - version of this License "or any later version" applies to it, you - have the option of following the terms and conditions either of - that specified version or of any later version that has been - published (not as a draft) by the Free Software Foundation. If - the Document does not specify a version number of this License, - you may choose any version ever published (not as a draft) by the - Free Software Foundation. - -ADDENDUM: How to use this License for your documents ----------------------------------------------------- - - To use this License in a document you have written, include a copy of -the License in the document and put the following copyright and license -notices just after the title page: - - Copyright (C) YEAR YOUR NAME. - Permission is granted to copy, distribute and/or modify this document - under the terms of the GNU Free Documentation License, Version 1.1 - or any later version published by the Free Software Foundation; - with the Invariant Sections being LIST THEIR TITLES, with the - Front-Cover Texts being LIST, and with the Back-Cover Texts being LIST. - A copy of the license is included in the section entitled ``GNU - Free Documentation License''. - - If you have no Invariant Sections, write "with no Invariant Sections" -instead of saying which ones are invariant. If you have no Front-Cover -Texts, write "no Front-Cover Texts" instead of "Front-Cover Texts being -LIST"; likewise for Back-Cover Texts. - - If your document contains nontrivial examples of program code, we -recommend releasing these examples in parallel under your choice of -free software license, such as the GNU General Public License, to -permit their use in free software. - - -File: groff, Node: Request Index, Next: Escape Index, Prev: Copying This Manual, Up: Top - -Request Index -************* - - Requests appear without the leading control character (normally -either `.' or `''). - -* Menu: - -* ab: Debugging. -* ad: Manipulating Filling and Adjusting. -* af: Assigning Formats. -* aln: Setting Registers. -* als: Strings. -* am: Writing Macros. -* am1: Writing Macros. -* ami: Writing Macros. -* as: Strings. -* as1: Strings. -* asciify: Diversions. -* backtrace: Debugging. -* bd: Artificial Fonts. -* blm: Blank Line Traps. -* box: Diversions. -* boxa: Diversions. -* bp: Page Control. -* br: Manipulating Filling and Adjusting. -* break: while. -* brp: Manipulating Filling and Adjusting. -* c2: Character Translations. -* cc: Character Translations. -* ce: Manipulating Filling and Adjusting. -* cf: I/O. -* cflags: Using Symbols. -* ch: Page Location Traps. -* char: Using Symbols. -* chop: Strings. -* close: I/O. -* color: Colors. -* composite: Using Symbols. -* continue: while. -* cp: Implementation Differences. -* cs: Artificial Fonts. -* cu: Artificial Fonts. -* da: Diversions. -* de: Writing Macros. -* de1: Writing Macros. -* defcolor: Colors. -* dei: Writing Macros. -* di: Diversions. -* do: Implementation Differences. -* ds: Strings. -* ds1: Strings. -* dt: Diversion Traps. -* ec: Character Translations. -* ecr: Character Translations. -* ecs: Character Translations. -* el: if-else. -* em: End-of-input Traps. -* eo: Character Translations. -* ev: Environments. -* evc: Environments. -* ex: Debugging. -* fam: Font Families. -* fc: Fields. -* fchar: Using Symbols. -* fi: Manipulating Filling and Adjusting. -* fl: Debugging. -* fp: Font Positions. -* fschar: Using Symbols. -* fspecial: Special Fonts. -* ft <1>: Font Positions. -* ft: Changing Fonts. -* ftr: Changing Fonts. -* hc: Manipulating Hyphenation. -* hcode: Manipulating Hyphenation. -* hla: Manipulating Hyphenation. -* hlm: Manipulating Hyphenation. -* hpf: Manipulating Hyphenation. -* hpfa: Manipulating Hyphenation. -* hpfcode: Manipulating Hyphenation. -* hw: Manipulating Hyphenation. -* hy: Manipulating Hyphenation. -* hym: Manipulating Hyphenation. -* hys: Manipulating Hyphenation. -* ie: if-else. -* if: if-else. -* ig: Comments. -* in: Line Layout. -* it: Input Line Traps. -* itc: Input Line Traps. -* kern: Ligatures and Kerning. -* lc: Leaders. -* length: Strings. -* lf: Debugging. -* lg: Ligatures and Kerning. -* linetabs: Tabs and Fields. -* ll: Line Layout. -* ls: Manipulating Spacing. -* lt: Page Layout. -* mc: Miscellaneous. -* mk: Page Motions. -* mso: I/O. -* na: Manipulating Filling and Adjusting. -* ne: Page Control. -* nf: Manipulating Filling and Adjusting. -* nh: Manipulating Hyphenation. -* nm: Miscellaneous. -* nn: Miscellaneous. -* nop: if-else. -* nr <1>: Auto-increment. -* nr: Setting Registers. -* nroff: Troff and Nroff Mode. -* ns: Manipulating Spacing. -* nx: I/O. -* open: I/O. -* opena: I/O. -* os: Page Control. -* output: Diversions. -* pc: Page Layout. -* pi: I/O. -* pl: Page Layout. -* pm: Debugging. -* pn: Page Layout. -* pnr: Debugging. -* po: Line Layout. -* ps: Changing Type Sizes. -* psbb: Miscellaneous. -* pso: I/O. -* ptr: Debugging. -* pvs: Changing Type Sizes. -* rchar: Using Symbols. -* rd: I/O. -* return: Writing Macros. -* rfschar: Using Symbols. -* rj: Manipulating Filling and Adjusting. -* rm: Strings. -* rn: Strings. -* rnn: Setting Registers. -* rr: Setting Registers. -* rs: Manipulating Spacing. -* rt: Page Motions. -* schar: Using Symbols. -* shc: Manipulating Hyphenation. -* shift: Parameters. -* sizes: Changing Type Sizes. -* so: I/O. -* sp: Manipulating Spacing. -* special: Special Fonts. -* spreadwarn: Debugging. -* ss: Manipulating Filling and Adjusting. -* sty: Font Families. -* substring: Strings. -* sv: Page Control. -* sy: I/O. -* ta: Tabs and Fields. -* tc: Tabs and Fields. -* ti: Line Layout. -* tkf: Ligatures and Kerning. -* tl: Page Layout. -* tm: Debugging. -* tm1: Debugging. -* tmc: Debugging. -* tr: Character Translations. -* trf: I/O. -* trin: Character Translations. -* trnt: Character Translations. -* troff: Troff and Nroff Mode. -* uf: Artificial Fonts. -* ul: Artificial Fonts. -* unformat: Diversions. -* vpt: Page Location Traps. -* vs: Changing Type Sizes. -* warn: Debugging. -* warnscale: Debugging. -* wh: Page Location Traps. -* while: while. -* write: I/O. -* writec: I/O. -* writem: I/O. - - -File: groff, Node: Escape Index, Next: Operator Index, Prev: Request Index, Up: Top - -Escape Index -************ - - Any escape sequence `\X' with X not in the list below emits a -warning, printing glyph X. - -* Menu: - -* \: Using Symbols. -* \!: Diversions. -* \": Comments. -* \#: Comments. -* \$: Parameters. -* \$*: Parameters. -* \$0: Parameters. -* \$@: Parameters. -* \%: Manipulating Hyphenation. -* \&: Ligatures and Kerning. -* \': Using Symbols. -* \): Ligatures and Kerning. -* \*: Strings. -* \,: Ligatures and Kerning. -* \-: Using Symbols. -* \.: Character Translations. -* \/: Ligatures and Kerning. -* \0: Page Motions. -* \: Manipulating Hyphenation. -* \: Line Control. -* \: Page Motions. -* \?: Diversions. -* \\: Character Translations. -* \^: Page Motions. -* \`: Using Symbols. -* \a: Leaders. -* \A: Identifiers. -* \b: Drawing Requests. -* \B: Expressions. -* \C: Using Symbols. -* \c: Line Control. -* \D: Drawing Requests. -* \d: Page Motions. -* \E: Character Translations. -* \e: Character Translations. -* \f: Font Positions. -* \F: Font Families. -* \f: Changing Fonts. -* \g: Assigning Formats. -* \h: Page Motions. -* \H: Artificial Fonts. -* \k: Page Motions. -* \L: Drawing Requests. -* \l: Drawing Requests. -* \M: Colors. -* \m: Colors. -* \N: Using Symbols. -* \n <1>: Auto-increment. -* \n: Interpolating Registers. -* \O: Suppressing output. -* \o: Page Motions. -* \p: Manipulating Filling and Adjusting. -* \r: Page Motions. -* \R: Setting Registers. -* \s: Changing Type Sizes. -* \S: Artificial Fonts. -* \t: Tabs and Fields. -* \u: Page Motions. -* \V: I/O. -* \v: Page Motions. -* \w: Page Motions. -* \X: Postprocessor Access. -* \x: Manipulating Spacing. -* \Y: Postprocessor Access. -* \Z: Page Motions. -* \z: Page Motions. -* \{: if-else. -* \|: Page Motions. -* \}: if-else. -* \~: Page Motions. - - -File: groff, Node: Operator Index, Next: Register Index, Prev: Escape Index, Up: Top - -Operator Index -************** - -* Menu: - -* !: Expressions. -* %: Expressions. -* &: Expressions. -* (: Expressions. -* ): Expressions. -* *: Expressions. -* +: Expressions. -* -: Expressions. -* /: Expressions. -* <: Expressions. -* <=: Expressions. -* : Expressions. -* =: Expressions. -* ==: Expressions. -* >: Expressions. -* >=: Expressions. -* >?: Expressions. - diff --git a/contrib/groff/src/include/groff-getopt.h b/contrib/groff/src/include/groff-getopt.h deleted file mode 100644 index a30e197..0000000 --- a/contrib/groff/src/include/groff-getopt.h +++ /dev/null @@ -1,68 +0,0 @@ -// -*- C++ -*- -/* Copyright (C) 2000, 2001 Free Software Foundation, Inc. - Written by Werner Lemberg (wl@gnu.org) - -This file is part of groff. - -groff 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, or (at your option) any later -version. - -groff 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 groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* - This file has to be included from within lib.h instead of getopt.h - to avoid problems with picky C++ compilers. -*/ - -#ifndef _GROFF_GETOPT_H -#define _GROFF_GETOPT_H - -#ifdef __cplusplus -extern "C" { -#endif - -extern char *optarg; -extern int optind; -extern int opterr; -extern int optopt; - -struct option -{ - const char *name; - int has_arg; - int *flag; - int val; -}; - -#define no_argument 0 -#define required_argument 1 -#define optional_argument 2 - -extern int getopt(int, // __argc - char *const *, // __argv - const char *); // __shortopts -extern int getopt_long(int, // __argc - char *const *, // __argv - const char *, // __shortopts - const struct option *, // __longopts - int *); // __longind -extern int getopt_long_only(int, // __argc - char *const *, // __argv - const char *, // __shortopts - const struct option *, // __longopts - int *); // __longind - -#ifdef __cplusplus -} -#endif - -#endif /* _GROFF_GETOPT_H */ diff --git a/contrib/groff/src/libs/libgroff/progname.cpp b/contrib/groff/src/libs/libgroff/progname.cpp deleted file mode 100644 index a70e341..0000000 --- a/contrib/groff/src/libs/libgroff/progname.cpp +++ /dev/null @@ -1 +0,0 @@ -const char *program_name = 0; diff --git a/contrib/groff/src/roff/troff/glyphuni.cpp b/contrib/groff/src/roff/troff/glyphuni.cpp deleted file mode 100644 index 7e242ce..0000000 --- a/contrib/groff/src/roff/troff/glyphuni.cpp +++ /dev/null @@ -1,503 +0,0 @@ -// -*- C++ -*- -/* Copyright (C) 2002, 2003 - Free Software Foundation, Inc. - Written by Werner Lemberg - -This file is part of groff. - -groff 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, or (at your option) any later -version. - -groff 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 groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "lib.h" -#include "stringclass.h" -#include "ptable.h" - -#include "unicode.h" - -struct glyph_to_unicode { - char *value; -}; - -declare_ptable(glyph_to_unicode) -implement_ptable(glyph_to_unicode) - -PTABLE(glyph_to_unicode) glyph_to_unicode_table; - -struct { - const char *key; - const char *value; -} glyph_to_unicode_list[] = { - { "!", "0021" }, - { "\"", "0022" }, - { "dq", "0022" }, - { "#", "0023" }, - { "sh", "0023" }, - { "$", "0024" }, - { "Do", "0024" }, - { "%", "0025" }, - { "&", "0026" }, - { "aq", "0027" }, - { "(", "0028" }, - { ")", "0029" }, - { "*", "002A" }, - { "+", "002B" }, - { "pl", "002B" }, - { ",", "002C" }, - { ".", "002E" }, - { "/", "002F" }, - { "sl", "002F" }, - { "0", "0030" }, - { "1", "0031" }, - { "2", "0032" }, - { "3", "0033" }, - { "4", "0034" }, - { "5", "0035" }, - { "6", "0036" }, - { "7", "0037" }, - { "8", "0038" }, - { "9", "0039" }, - { ":", "003A" }, - { ";", "003B" }, - { "<", "003C" }, - { "=", "003D" }, - { "eq", "003D" }, - { ">", "003E" }, - { "?", "003F" }, - { "@", "0040" }, - { "at", "0040" }, - { "A", "0041" }, - { "B", "0042" }, - { "C", "0043" }, - { "D", "0044" }, - { "E", "0045" }, - { "F", "0046" }, - { "G", "0047" }, - { "H", "0048" }, - { "I", "0049" }, - { "J", "004A" }, - { "K", "004B" }, - { "L", "004C" }, - { "M", "004D" }, - { "N", "004E" }, - { "O", "004F" }, - { "P", "0050" }, - { "Q", "0051" }, - { "R", "0052" }, - { "S", "0053" }, - { "T", "0054" }, - { "U", "0055" }, - { "V", "0056" }, - { "W", "0057" }, - { "X", "0058" }, - { "Y", "0059" }, - { "Z", "005A" }, -//{ "[", "005B" }, - { "lB", "005B" }, -//{ "\\", "005C" }, - { "rs", "005C" }, -//{ "]", "005D" }, - { "rB", "005D" }, - { "a^", "005E" }, - { "^", "005E" }, - { "ha", "005E" }, - { "_", "005F" }, - { "ru", "005F" }, - { "ul", "005F" }, -//{ "\\`", "0060" }, - { "ga", "0060" }, - { "a", "0061" }, - { "b", "0062" }, - { "c", "0063" }, - { "d", "0064" }, - { "e", "0065" }, - { "f", "0066" }, - { "ff", "0066_0066" }, - { "Fi", "0066_0066_0069" }, - { "Fl", "0066_0066_006C" }, - { "fi", "0066_0069" }, - { "fl", "0066_006C" }, - { "g", "0067" }, - { "h", "0068" }, - { "i", "0069" }, - { "j", "006A" }, - { "k", "006B" }, - { "l", "006C" }, - { "m", "006D" }, - { "n", "006E" }, - { "o", "006F" }, - { "p", "0070" }, - { "q", "0071" }, - { "r", "0072" }, - { "s", "0073" }, - { "t", "0074" }, - { "u", "0075" }, - { "v", "0076" }, - { "w", "0077" }, - { "x", "0078" }, - { "y", "0079" }, - { "z", "007A" }, - { "lC", "007B" }, - { "{", "007B" }, - { "ba", "007C" }, - { "or", "007C" }, - { "|", "007C" }, - { "rC", "007D" }, - { "}", "007D" }, - { "a~", "007E" }, - { "~", "007E" }, - { "ti", "007E" }, - { "r!", "00A1" }, - { "ct", "00A2" }, - { "Po", "00A3" }, - { "Cs", "00A4" }, - { "Ye", "00A5" }, - { "bb", "00A6" }, - { "sc", "00A7" }, - { "ad", "00A8" }, - { "co", "00A9" }, - { "Of", "00AA" }, - { "Fo", "00AB" }, - { "no", "00AC" }, - { "tno", "00AC" }, - { "shc", "00AD" }, - { "rg", "00AE" }, - { "a-", "00AF" }, - { "de", "00B0" }, - { "+-", "00B1" }, - { "t+-", "00B1" }, - { "S2", "00B2" }, - { "S3", "00B3" }, - { "aa", "00B4" }, -//{ "\\'", "00B4" }, - { "mc", "00B5" }, - { "ps", "00B6" }, - { "pc", "00B7" }, - { "ac", "00B8" }, - { "S1", "00B9" }, - { "Om", "00BA" }, - { "Fc", "00BB" }, - { "14", "00BC" }, - { "12", "00BD" }, - { "34", "00BE" }, - { "r?", "00BF" }, - { "`A", "00C0" }, - { "'A", "00C1" }, - { "^A", "00C2" }, - { "~A", "00C3" }, - { ":A", "00C4" }, - { "oA", "00C5" }, - { "AE", "00C6" }, - { ",C", "00C7" }, - { "`E", "00C8" }, - { "'E", "00C9" }, - { "^E", "00CA" }, - { ":E", "00CB" }, - { "`I", "00CC" }, - { "'I", "00CD" }, - { "^I", "00CE" }, - { ":I", "00CF" }, - { "-D", "00D0" }, - { "~N", "00D1" }, - { "`O", "00D2" }, - { "'O", "00D3" }, - { "^O", "00D4" }, - { "~O", "00D5" }, - { ":O", "00D6" }, - { "mu", "00D7" }, - { "tmu", "00D7" }, - { "/O", "00D8" }, - { "`U", "00D9" }, - { "'U", "00DA" }, - { "^U", "00DB" }, - { ":U", "00DC" }, - { "'Y", "00DD" }, - { "TP", "00DE" }, - { "ss", "00DF" }, - { "`a", "00E0" }, - { "'a", "00E1" }, - { "^a", "00E2" }, - { "~a", "00E3" }, - { ":a", "00E4" }, - { "oa", "00E5" }, - { "ae", "00E6" }, - { ",c", "00E7" }, - { "`e", "00E8" }, - { "'e", "00E9" }, - { "^e", "00EA" }, - { ":e", "00EB" }, - { "`i", "00EC" }, - { "'i", "00ED" }, - { "^i", "00EE" }, - { ":i", "00EF" }, - { "Sd", "00F0" }, - { "~n", "00F1" }, - { "`o", "00F2" }, - { "'o", "00F3" }, - { "^o", "00F4" }, - { "~o", "00F5" }, - { ":o", "00F6" }, - { "di", "00F7" }, - { "tdi", "00F7" }, - { "/o", "00F8" }, - { "`u", "00F9" }, - { "'u", "00FA" }, - { "^u", "00FB" }, - { ":u", "00FC" }, - { "'y", "00FD" }, - { "Tp", "00FE" }, - { ":y", "00FF" }, - { "'C", "0106" }, - { "'c", "0107" }, - { ".i", "0131" }, - { "IJ", "0132" }, - { "ij", "0133" }, - { "/L", "0141" }, - { "/l", "0142" }, - { "OE", "0152" }, - { "oe", "0153" }, - { "vS", "0160" }, - { "vs", "0161" }, - { ":Y", "0178" }, - { "vZ", "017D" }, - { "vz", "017E" }, - { "Fn", "0192" }, - { "ah", "02C7" }, - { "ab", "02D8" }, - { "a.", "02D9" }, - { "ao", "02DA" }, - { "ho", "02DB" }, - { "a\"", "02DD" }, - { "*A", "0391" }, - { "*B", "0392" }, - { "*G", "0393" }, - { "*D", "0394" }, - { "*E", "0395" }, - { "*Z", "0396" }, - { "*Y", "0397" }, - { "*H", "0398" }, - { "*I", "0399" }, - { "*K", "039A" }, - { "*L", "039B" }, - { "*M", "039C" }, - { "*N", "039D" }, - { "*C", "039E" }, - { "*O", "039F" }, - { "*P", "03A0" }, - { "*R", "03A1" }, - { "*S", "03A3" }, - { "*T", "03A4" }, - { "*U", "03A5" }, - { "*F", "03A6" }, - { "*X", "03A7" }, - { "*Q", "03A8" }, - { "*W", "03A9" }, - { "*a", "03B1" }, - { "*b", "03B2" }, - { "*g", "03B3" }, - { "*d", "03B4" }, - { "*e", "03B5" }, - { "*z", "03B6" }, - { "*y", "03B7" }, - { "*h", "03B8" }, - { "*i", "03B9" }, - { "*k", "03BA" }, - { "*l", "03BB" }, - { "*m", "03BC" }, - { "*n", "03BD" }, - { "*c", "03BE" }, - { "*o", "03BF" }, - { "*p", "03C0" }, - { "*r", "03C1" }, - { "ts", "03C2" }, - { "*s", "03C3" }, - { "*t", "03C4" }, - { "*u", "03C5" }, - { "*f", "03C6" }, - { "*x", "03C7" }, - { "*q", "03C8" }, - { "*w", "03C9" }, - { "+h", "03D1" }, - { "+f", "03D5" }, - { "+p", "03D6" }, - { "+e", "03F5" }, - { "-", "2010" }, - { "hy", "2010" }, - { "en", "2013" }, - { "em", "2014" }, - { "`", "2018" }, - { "oq", "2018" }, - { "'", "2019" }, - { "cq", "2019" }, - { "bq", "201A" }, - { "lq", "201C" }, - { "rq", "201D" }, - { "Bq", "201E" }, - { "dg", "2020" }, - { "dd", "2021" }, - { "bu", "2022" }, - { "%0", "2030" }, - { "fm", "2032" }, - { "sd", "2033" }, - { "fo", "2039" }, - { "fc", "203A" }, - { "rn", "203E" }, - { "f/", "2044" }, - { "eu", "20AC" }, - { "Eu", "20AC" }, - { "-h", "210F" }, - { "hbar", "210F" }, - { "Im", "2111" }, - { "wp", "2118" }, - { "Re", "211C" }, - { "tm", "2122" }, - { "Ah", "2135" }, - { "18", "215B" }, - { "38", "215C" }, - { "58", "215D" }, - { "78", "215E" }, - { "<-", "2190" }, - { "ua", "2191" }, - { "->", "2192" }, - { "da", "2193" }, - { "<>", "2194" }, - { "va", "2195" }, - { "CR", "21B5" }, - { "lA", "21D0" }, - { "uA", "21D1" }, - { "rA", "21D2" }, - { "dA", "21D3" }, - { "hA", "21D4" }, - { "vA", "21D5" }, - { "fa", "2200" }, - { "pd", "2202" }, - { "te", "2203" }, - { "es", "2205" }, - { "gr", "2207" }, - { "mo", "2208" }, - { "nm", "2209" }, - { "st", "220B" }, - { "product", "220F" }, - { "sum", "2211" }, -//{ "\\-", "2212" }, - { "mi", "2212" }, - { "-+", "2213" }, - { "**", "2217" }, - { "sr", "221A" }, - { "pt", "221D" }, - { "if", "221E" }, - { "/_", "2220" }, - { "AN", "2227" }, - { "OR", "2228" }, - { "ca", "2229" }, - { "cu", "222A" }, - { "is", "222B" }, - { "integral", "222B" }, - { "tf", "2234" }, - { "3d", "2234" }, - { "ap", "223C" }, - { "|=", "2243" }, - { "=~", "2245" }, - { "~~", "2248" }, - { "~=", "2248" }, - { "!=", "2260" }, - { "==", "2261" }, - { "ne", "2262" }, - { "<=", "2264" }, - { ">=", "2265" }, - { ">>", "226A" }, - { "<<", "226B" }, - { "sb", "2282" }, - { "sp", "2283" }, - { "nb", "2284" }, - { "nc", "2285" }, - { "ib", "2286" }, - { "ip", "2287" }, - { "c+", "2295" }, - { "c*", "2297" }, - { "pp", "22A5" }, - { "md", "22C5" }, - { "lc", "2308" }, - { "rc", "2309" }, - { "lf", "230A" }, - { "rf", "230B" }, - { "parenlefttp", "239B" }, - { "parenleftex", "239C" }, - { "parenleftbt", "239D" }, - { "parenrighttp", "239E" }, - { "parenrightex", "239F" }, - { "parenrightbt", "23A0" }, - { "bracketlefttp", "23A1" }, - { "bracketleftex", "23A2" }, - { "bracketleftbt", "23A3" }, - { "bracketrighttp", "23A4" }, - { "bracketrightex", "23A5" }, - { "bracketrightbt", "23A6" }, - { "lt", "23A7" }, - { "bracelefttp", "23A7" }, - { "lk", "23A8" }, - { "braceleftmid", "23A8" }, - { "lb", "23A9" }, - { "braceleftbt", "23A9" }, - { "bv", "23AA" }, - { "braceex", "23AA" }, - { "braceleftex", "23AA" }, - { "bracerightex", "23AA" }, - { "rt", "23AB" }, - { "bracerighttp", "23AB" }, - { "rk", "23AC" }, - { "bracerightmid", "23AC" }, - { "rb", "23AD" }, - { "bracerightbt", "23AD" }, - { "an", "23AF" }, - { "br", "2502" }, - { "rk", "251D" }, - { "lk", "2525" }, - { "lt", "256D" }, - { "rt", "256E" }, - { "rb", "256F" }, - { "lb", "2570" }, - { "sq", "25A1" }, - { "lz", "25CA" }, - { "ci", "25CB" }, - { "lh", "261C" }, - { "rh", "261E" }, - { "SP", "2660" }, - { "CL", "2663" }, - { "HE", "2665" }, - { "DI", "2666" }, - { "OK", "2713" }, - { "la", "27E8" }, - { "ra", "27E9" }, -}; - -// global constructor -static struct glyph_to_unicode_init { - glyph_to_unicode_init(); -} _glyph_to_unicode_init; - -glyph_to_unicode_init::glyph_to_unicode_init() { - for (unsigned int i = 0; - i < sizeof(glyph_to_unicode_list)/sizeof(glyph_to_unicode_list[0]); - i++) { - glyph_to_unicode *gtu = new glyph_to_unicode[1]; - gtu->value = (char *)glyph_to_unicode_list[i].value; - glyph_to_unicode_table.define(glyph_to_unicode_list[i].key, gtu); - } -} - -const char *glyph_name_to_unicode(const char *s) -{ - glyph_to_unicode *result = glyph_to_unicode_table.lookup(s); - return result ? result->value : 0; -} diff --git a/contrib/groff/src/roff/troff/symbol.cpp b/contrib/groff/src/roff/troff/symbol.cpp deleted file mode 100644 index 09f4c98..0000000 --- a/contrib/groff/src/roff/troff/symbol.cpp +++ /dev/null @@ -1,154 +0,0 @@ -// -*- C++ -*- -/* Copyright (C) 1989, 1990, 1991, 1992, 2002 Free Software Foundation, Inc. - Written by James Clark (jjc@jclark.com) - -This file is part of groff. - -groff 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, or (at your option) any later -version. - -groff 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 groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - - -#include "troff.h" -#include "symbol.h" - -const char **symbol::table = 0; -int symbol::table_used = 0; -int symbol::table_size = 0; -char *symbol::block = 0; -int symbol::block_size = 0; - -const symbol NULL_SYMBOL; -const symbol EMPTY_SYMBOL(""); - -#ifdef BLOCK_SIZE -#undef BLOCK_SIZE -#endif - -const int BLOCK_SIZE = 1024; -// the table will increase in size as necessary -// the size will be chosen from the following array -// add some more if you want -static const unsigned int table_sizes[] = { - 101, 503, 1009, 2003, 3001, 4001, 5003, 10007, 20011, 40009, 80021, - 160001, 500009, 1000003, 1500007, 2000003, 0 -}; -const double FULL_MAX = 0.3; // don't let the table get more than this full - -static unsigned int hash_string(const char *p) -{ - // compute a hash code; this assumes 32-bit unsigned ints - // see p436 of Compilers by Aho, Sethi & Ullman - // give special treatment to two-character names - unsigned int hc = 0, g; - if (*p != 0) { - hc = *p++; - if (*p != 0) { - hc <<= 7; - hc += *p++; - for (; *p != 0; p++) { - hc <<= 4; - hc += *p; - if ((g = (hc & 0xf0000000)) == 0) { - hc ^= g >> 24; - hc ^= g; - } - } - } - } - return hc; -} - -// Tell compiler that a variable is intentionally unused. -inline void unused(void *) { } - -symbol::symbol(const char *p, int how) -{ - if (p == 0) { - s = 0; - return; - } - if (*p == 0) { - s = ""; - return; - } - if (table == 0) { - table_size = table_sizes[0]; - table = (const char **)new char*[table_size]; - for (int i = 0; i < table_size; i++) - table[i] = 0; - table_used = 0; - } - unsigned int hc = hash_string(p); - const char **pp; - for (pp = table + hc % table_size; - *pp != 0; - (pp == table ? pp = table + table_size - 1 : --pp)) - if (strcmp(p, *pp) == 0) { - s = *pp; - return; - } - if (how == MUST_ALREADY_EXIST) { - s = 0; - return; - } - if (table_used >= table_size - 1 || table_used >= table_size*FULL_MAX) { - const char **old_table = table; - unsigned int old_table_size = table_size; - int i; - for (i = 1; table_sizes[i] <= old_table_size; i++) - if (table_sizes[i] == 0) - fatal("too many symbols"); - table_size = table_sizes[i]; - table_used = 0; - table = (const char **)new char*[table_size]; - for (i = 0; i < table_size; i++) - table[i] = 0; - for (pp = old_table + old_table_size - 1; - pp >= old_table; - --pp) { - symbol temp(*pp, 1); /* insert it into the new table */ - unused(&temp); - } - a_delete old_table; - for (pp = table + hc % table_size; - *pp != 0; - (pp == table ? pp = table + table_size - 1 : --pp)) - ; - } - ++table_used; - if (how == DONT_STORE) { - s = *pp = p; - } - else { - int len = strlen(p)+1; - if (block == 0 || block_size < len) { - block_size = len > BLOCK_SIZE ? len : BLOCK_SIZE; - block = new char [block_size]; - } - (void)strcpy(block, p); - s = *pp = block; - block += len; - block_size -= len; - } -} - -symbol concat(symbol s1, symbol s2) -{ - char *buf = new char [strlen(s1.contents()) + strlen(s2.contents()) + 1]; - strcpy(buf, s1.contents()); - strcat(buf, s2.contents()); - symbol res(buf); - a_delete buf; - return res; -} diff --git a/contrib/groff/src/roff/troff/symbol.h b/contrib/groff/src/roff/troff/symbol.h deleted file mode 100644 index 5b7c9b1..0000000 --- a/contrib/groff/src/roff/troff/symbol.h +++ /dev/null @@ -1,80 +0,0 @@ -// -*- C++ -*- -/* Copyright (C) 1989, 1990, 1991, 1992, 2002 Free Software Foundation, Inc. - Written by James Clark (jjc@jclark.com) - -This file is part of groff. - -groff 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, or (at your option) any later -version. - -groff 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 groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#define DONT_STORE 1 -#define MUST_ALREADY_EXIST 2 - -class symbol { - static const char **table; - static int table_used; - static int table_size; - static char *block; - static int block_size; - const char *s; -public: - symbol(const char *p, int how = 0); - symbol(); - unsigned long hash() const; - int operator ==(symbol) const; - int operator !=(symbol) const; - const char *contents() const; - int is_null() const; - int is_empty() const; -}; - - -extern const symbol NULL_SYMBOL; -extern const symbol EMPTY_SYMBOL; - -inline symbol::symbol() : s(0) -{ -} - -inline int symbol::operator==(symbol p) const -{ - return s == p.s; -} - -inline int symbol::operator!=(symbol p) const -{ - return s != p.s; -} - -inline unsigned long symbol::hash() const -{ - return (unsigned long)s; -} - -inline const char *symbol::contents() const -{ - return s; -} - -inline int symbol::is_null() const -{ - return s == 0; -} - -inline int symbol::is_empty() const -{ - return s != 0 && *s == 0; -} - -symbol concat(symbol, symbol); diff --git a/contrib/groff/src/roff/troff/unicode.cpp b/contrib/groff/src/roff/troff/unicode.cpp deleted file mode 100644 index 2117463..0000000 --- a/contrib/groff/src/roff/troff/unicode.cpp +++ /dev/null @@ -1,67 +0,0 @@ -// -*- C++ -*- -/* Copyright (C) 2002 - Free Software Foundation, Inc. - Written by Werner Lemberg - -This file is part of groff. - -groff 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, or (at your option) any later -version. - -groff 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 groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "lib.h" -#include "cset.h" -#include "stringclass.h" - -#include "unicode.h" - -const char *check_unicode_name(const char *u) -{ - if (*u != 'u') - return 0; - const char *p = ++u; - for (;;) { - int val = 0; - const char *start = p; - for (;;) { - // only uppercase hex digits allowed - if (!csxdigit(*p)) - return 0; - if (csdigit(*p)) - val = val*0x10 + (*p-'0'); - else if (csupper(*p)) - val = val*0x10 + (*p-'A'+10); - else - return 0; - // biggest Unicode value is U+10FFFF - if (val > 0x10FFFF) - return 0; - p++; - if (*p == '\0' || *p == '_') - break; - } - // surrogates not allowed - if ((val >= 0xD800 && val <= 0xDBFF) || (val >= 0xDC00 && val <= 0xDFFF)) - return 0; - if (val > 0xFFFF) { - if (*start == '0') // no leading zeros allowed if > 0xFFFF - return 0; - } - else if (p - start != 4) // otherwise, check for exactly 4 hex digits - return 0; - if (*p == '\0') - break; - p++; - } - return u; -} diff --git a/contrib/groff/src/roff/troff/unicode.h b/contrib/groff/src/roff/troff/unicode.h deleted file mode 100644 index 846a70e..0000000 --- a/contrib/groff/src/roff/troff/unicode.h +++ /dev/null @@ -1,26 +0,0 @@ -// -*- C++ -*- -/* Copyright (C) 2002 - Free Software Foundation, Inc. - Written by Werner Lemberg - -This file is part of groff. - -groff 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, or (at your option) any later -version. - -groff 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 groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -extern const char *glyph_name_to_unicode(const char *); -extern const char *unicode_to_glyph_name(const char *); -extern const char *decompose_unicode(const char *); - -extern const char *check_unicode_name(const char *); diff --git a/contrib/groff/src/roff/troff/uniglyph.cpp b/contrib/groff/src/roff/troff/uniglyph.cpp deleted file mode 100644 index 3428605..0000000 --- a/contrib/groff/src/roff/troff/uniglyph.cpp +++ /dev/null @@ -1,503 +0,0 @@ -// -*- C++ -*- -/* Copyright (C) 2002, 2003 - Free Software Foundation, Inc. - Written by Werner Lemberg - -This file is part of groff. - -groff 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, or (at your option) any later -version. - -groff 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 groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#include "lib.h" -#include "stringclass.h" -#include "ptable.h" - -#include "unicode.h" - -struct unicode_to_glyph { - char *value; -}; - -declare_ptable(unicode_to_glyph) -implement_ptable(unicode_to_glyph) - -PTABLE(unicode_to_glyph) unicode_to_glyph_table; - -struct { - const char *key; - const char *value; -} unicode_to_glyph_list[] = { - { "0021", "!" }, -//{ "0022", "\"" }, - { "0022", "dq" }, -//{ "0023", "#" }, - { "0023", "sh" }, -//{ "0024", "$" }, - { "0024", "Do" }, - { "0025", "%" }, - { "0026", "&" }, - { "0027", "aq" }, - { "0028", "(" }, - { "0029", ")" }, - { "002A", "*" }, -//{ "002B", "+" }, - { "002B", "pl" }, - { "002C", "," }, - { "002E", "." }, -//{ "002F", "/" }, - { "002F", "sl" }, - { "0030", "0" }, - { "0031", "1" }, - { "0032", "2" }, - { "0033", "3" }, - { "0034", "4" }, - { "0035", "5" }, - { "0036", "6" }, - { "0037", "7" }, - { "0038", "8" }, - { "0039", "9" }, - { "003A", ":" }, - { "003B", ";" }, - { "003C", "<" }, -//{ "003D", "=" }, - { "003D", "eq" }, - { "003D_0338", "!=" }, - { "003E", ">" }, - { "003F", "?" }, -//{ "0040", "@" }, - { "0040", "at" }, - { "0041", "A" }, - { "0041_0300", "`A" }, - { "0041_0301", "'A" }, - { "0041_0302", "^A" }, - { "0041_0303", "~A" }, - { "0041_0308", ":A" }, - { "0041_030A", "oA" }, - { "0042", "B" }, - { "0043", "C" }, - { "0043_0301", "'C" }, - { "0043_0327", ",C" }, - { "0044", "D" }, - { "0045", "E" }, - { "0045_0300", "`E" }, - { "0045_0301", "'E" }, - { "0045_0302", "^E" }, - { "0045_0308", ":E" }, - { "0046", "F" }, - { "0047", "G" }, - { "0048", "H" }, - { "0049", "I" }, - { "0049_0300", "`I" }, - { "0049_0301", "'I" }, - { "0049_0302", "^I" }, - { "0049_0308", ":I" }, - { "004A", "J" }, - { "004B", "K" }, - { "004C", "L" }, - { "004D", "M" }, - { "004E", "N" }, - { "004E_0303", "~N" }, - { "004F", "O" }, - { "004F_0300", "`O" }, - { "004F_0301", "'O" }, - { "004F_0302", "^O" }, - { "004F_0303", "~O" }, - { "004F_0308", ":O" }, - { "0050", "P" }, - { "0051", "Q" }, - { "0052", "R" }, - { "0053", "S" }, - { "0053_030C", "vS" }, - { "0054", "T" }, - { "0055", "U" }, - { "0055_0300", "`U" }, - { "0055_0301", "'U" }, - { "0055_0302", "^U" }, - { "0055_0308", ":U" }, - { "0056", "V" }, - { "0057", "W" }, - { "0058", "X" }, - { "0059", "Y" }, - { "0059_0301", "'Y" }, - { "0059_0308", ":Y" }, - { "005A", "Z" }, - { "005A_030C", "vZ" }, - { "005B", "lB" }, -//{ "005B", "[" }, - { "005C", "rs" }, -//{ "005C", "\\" }, - { "005D", "rB" }, -//{ "005D", "]" }, -//{ "005E", "^" }, -//{ "005E", "a^" }, - { "005E", "ha" }, -//{ "005F", "_" }, -//{ "005F", "ru" }, - { "005F", "ul" }, - { "0060", "ga" }, -//{ "0060", "\\`" }, - { "0061", "a" }, - { "0061_0300", "`a" }, - { "0061_0301", "'a" }, - { "0061_0302", "^a" }, - { "0061_0303", "~a" }, - { "0061_0308", ":a" }, - { "0061_030A", "oa" }, - { "0062", "b" }, - { "0063", "c" }, - { "0063_0301", "'c" }, - { "0063_0327", ",c" }, - { "0064", "d" }, - { "0065", "e" }, - { "0065_0300", "`e" }, - { "0065_0301", "'e" }, - { "0065_0302", "^e" }, - { "0065_0308", ":e" }, - { "0066", "f" }, - { "0066_0066", "ff" }, - { "0066_0066_0069", "Fi" }, - { "0066_0066_006C", "Fl" }, - { "0066_0069", "fi" }, - { "0066_006C", "fl" }, - { "0067", "g" }, - { "0068", "h" }, - { "0069", "i" }, - { "0069_0300", "`i" }, - { "0069_0301", "'i" }, - { "0069_0302", "^i" }, - { "0069_0308", ":i" }, - { "006A", "j" }, - { "006B", "k" }, - { "006C", "l" }, - { "006D", "m" }, - { "006E", "n" }, - { "006E_0303", "~n" }, - { "006F", "o" }, - { "006F_0300", "`o" }, - { "006F_0301", "'o" }, - { "006F_0302", "^o" }, - { "006F_0303", "~o" }, - { "006F_0308", ":o" }, - { "0070", "p" }, - { "0071", "q" }, - { "0072", "r" }, - { "0073", "s" }, - { "0073_030C", "vs" }, - { "0074", "t" }, - { "0075", "u" }, - { "0075_0300", "`u" }, - { "0075_0301", "'u" }, - { "0075_0302", "^u" }, - { "0075_0308", ":u" }, - { "0076", "v" }, - { "0077", "w" }, - { "0078", "x" }, - { "0079", "y" }, - { "0079_0301", "'y" }, - { "0079_0308", ":y" }, - { "007A", "z" }, - { "007A_030C", "vz" }, - { "007B", "lC" }, -//{ "007B", "{" }, - { "007C", "ba" }, -//{ "007C", "or" }, -//{ "007C", "|" }, - { "007D", "rC" }, -//{ "007D", "}" }, -//{ "007E", "a~" }, - { "007E", "ti" }, -//{ "007E", "~" }, - { "00A1", "r!" }, - { "00A2", "ct" }, - { "00A3", "Po" }, - { "00A4", "Cs" }, - { "00A5", "Ye" }, - { "00A6", "bb" }, - { "00A7", "sc" }, - { "00A8", "ad" }, - { "00A9", "co" }, - { "00AA", "Of" }, - { "00AB", "Fo" }, - { "00AC", "no" }, -//{ "00AC", "tno" }, - { "00AD", "shc" }, - { "00AE", "rg" }, - { "00AF", "a-" }, - { "00B0", "de" }, - { "00B1", "+-" }, -//{ "00B1", "t+-" }, - { "00B2", "S2" }, - { "00B3", "S3" }, - { "00B4", "aa" }, -//{ "00B4", "\\'" }, - { "00B5", "mc" }, - { "00B6", "ps" }, - { "00B7", "pc" }, - { "00B8", "ac" }, - { "00B9", "S1" }, - { "00BA", "Om" }, - { "00BB", "Fc" }, - { "00BC", "14" }, - { "00BD", "12" }, - { "00BE", "34" }, - { "00BF", "r?" }, - { "00C6", "AE" }, - { "00D0", "-D" }, - { "00D7", "mu" }, -//{ "00D7", "tmu" }, - { "00D8", "/O" }, - { "00DE", "TP" }, - { "00DF", "ss" }, - { "00E6", "ae" }, - { "00F0", "Sd" }, - { "00F7", "di" }, -//{ "00F7", "tdi" }, - { "00F8", "/o" }, - { "00FE", "Tp" }, - { "0131", ".i" }, - { "0132", "IJ" }, - { "0133", "ij" }, - { "0141", "/L" }, - { "0142", "/l" }, - { "0152", "OE" }, - { "0153", "oe" }, - { "0192", "Fn" }, - { "02C7", "ah" }, - { "02D8", "ab" }, - { "02D9", "a." }, - { "02DA", "ao" }, - { "02DB", "ho" }, - { "02DD", "a\"" }, - { "0391", "*A" }, - { "0392", "*B" }, - { "0393", "*G" }, - { "0394", "*D" }, - { "0395", "*E" }, - { "0396", "*Z" }, - { "0397", "*Y" }, - { "0398", "*H" }, - { "0399", "*I" }, - { "039A", "*K" }, - { "039B", "*L" }, - { "039C", "*M" }, - { "039D", "*N" }, - { "039E", "*C" }, - { "039F", "*O" }, - { "03A0", "*P" }, - { "03A1", "*R" }, - { "03A3", "*S" }, - { "03A4", "*T" }, - { "03A5", "*U" }, - { "03A6", "*F" }, - { "03A7", "*X" }, - { "03A8", "*Q" }, - { "03A9", "*W" }, - { "03B1", "*a" }, - { "03B2", "*b" }, - { "03B3", "*g" }, - { "03B4", "*d" }, - { "03B5", "*e" }, - { "03B6", "*z" }, - { "03B7", "*y" }, - { "03B8", "*h" }, - { "03B9", "*i" }, - { "03BA", "*k" }, - { "03BB", "*l" }, - { "03BC", "*m" }, - { "03BD", "*n" }, - { "03BE", "*c" }, - { "03BF", "*o" }, - { "03C0", "*p" }, - { "03C1", "*r" }, - { "03C2", "ts" }, - { "03C3", "*s" }, - { "03C4", "*t" }, - { "03C5", "*u" }, - { "03C6", "*f" }, - { "03C7", "*x" }, - { "03C8", "*q" }, - { "03C9", "*w" }, - { "03D1", "+h" }, - { "03D5", "+f" }, - { "03D6", "+p" }, - { "03F5", "+e" }, -//{ "2010", "-" }, - { "2010", "hy" }, - { "2013", "en" }, - { "2014", "em" }, -//{ "2018", "`" }, - { "2018", "oq" }, -//{ "2019", "'" }, - { "2019", "cq" }, - { "201A", "bq" }, - { "201C", "lq" }, - { "201D", "rq" }, - { "201E", "Bq" }, - { "2020", "dg" }, - { "2021", "dd" }, - { "2022", "bu" }, - { "2030", "%0" }, - { "2032", "fm" }, - { "2033", "sd" }, - { "2039", "fo" }, - { "203A", "fc" }, - { "203E", "rn" }, - { "2044", "f/" }, - { "20AC", "Eu" }, -//{ "20AC", "eu" }, - { "210F", "-h" }, -//{ "210F", "hbar" }, - { "2111", "Im" }, - { "2118", "wp" }, - { "211C", "Re" }, - { "2122", "tm" }, - { "2135", "Ah" }, - { "215B", "18" }, - { "215C", "38" }, - { "215D", "58" }, - { "215E", "78" }, - { "2190", "<-" }, - { "2191", "ua" }, - { "2192", "->" }, - { "2193", "da" }, - { "2194", "<>" }, - { "2195", "va" }, - { "21B5", "CR" }, - { "21D0", "lA" }, - { "21D1", "uA" }, - { "21D2", "rA" }, - { "21D3", "dA" }, - { "21D4", "hA" }, - { "21D5", "vA" }, - { "2200", "fa" }, - { "2202", "pd" }, - { "2203", "te" }, - { "2205", "es" }, - { "2207", "gr" }, - { "2208", "mo" }, - { "2208_0338", "nm" }, - { "220B", "st" }, - { "220F", "product" }, - { "2211", "sum" }, - { "2212", "mi" }, -//{ "2212", "\\-" }, - { "2213", "-+" }, - { "2217", "**" }, - { "221A", "sr" }, - { "221D", "pt" }, - { "221E", "if" }, - { "2220", "/_" }, - { "2227", "AN" }, - { "2228", "OR" }, - { "2229", "ca" }, - { "222A", "cu" }, - { "222B", "is" }, -//{ "222B", "integral" }, -//{ "2234", "3d" }, - { "2234", "tf" }, - { "223C", "ap" }, - { "2243", "|=" }, - { "2245", "=~" }, -//{ "2248", "~=" }, - { "2248", "~~" }, - { "2261", "==" }, - { "2261_0338", "ne" }, - { "2264", "<=" }, - { "2265", ">=" }, - { "226A", ">>" }, - { "226B", "<<" }, - { "2282", "sb" }, - { "2282_0338", "nb" }, - { "2283", "sp" }, - { "2283_0338", "nc" }, - { "2286", "ib" }, - { "2287", "ip" }, - { "2295", "c+" }, - { "2297", "c*" }, - { "22A5", "pp" }, - { "22C5", "md" }, - { "2308", "lc" }, - { "2309", "rc" }, - { "230A", "lf" }, - { "230B", "rf" }, - { "239B", "parenlefttp" }, - { "239C", "parenleftex" }, - { "239D", "parenleftbt" }, - { "239E", "parenrighttp" }, - { "239F", "parenrightex" }, - { "23A0", "parenrightbt" }, -//{ "23A1", "bracketlefttp" }, - { "23A2", "bracketleftex" }, -//{ "23A3", "bracketleftbt" }, -//{ "23A4", "bracketrighttp" }, - { "23A5", "bracketrightex" }, -//{ "23A6", "bracketrightbt" }, - { "23A7", "lt" }, -//{ "23A7", "bracelefttp" }, - { "23A8", "lk" }, -//{ "23A8", "braceleftmid" }, - { "23A9", "lb" }, -//{ "23A9", "braceleftbt" }, - { "23AA", "bv" }, -//{ "23AA", "braceex" }, -//{ "23AA", "braceleftex" }, -//{ "23AA", "bracerightex" }, - { "23AB", "rt" }, -//{ "23AB", "bracerighttp" }, - { "23AC", "rk" }, -//{ "23AC", "bracerightmid" }, - { "23AD", "rb" }, -//{ "23AD", "bracerightbt" }, - { "23AF", "an" }, - { "2502", "br" }, - { "251D", "rk" }, - { "2525", "lk" }, - { "256D", "lt" }, - { "256E", "rt" }, - { "256F", "rb" }, - { "2570", "lb" }, - { "25A1", "sq" }, - { "25CA", "lz" }, - { "25CB", "ci" }, - { "261C", "lh" }, - { "261E", "rh" }, - { "2660", "SP" }, - { "2663", "CL" }, - { "2665", "HE" }, - { "2666", "DI" }, - { "2713", "OK" }, - { "27E8", "la" }, - { "27E9", "ra" }, -}; - -// global constructor -static struct unicode_to_glyph_init { - unicode_to_glyph_init(); -} _unicode_to_glyph_init; - -unicode_to_glyph_init::unicode_to_glyph_init() { - for (unsigned int i = 0; - i < sizeof(unicode_to_glyph_list)/sizeof(unicode_to_glyph_list[0]); - i++) { - unicode_to_glyph *utg = new unicode_to_glyph[1]; - utg->value = (char *)unicode_to_glyph_list[i].value; - unicode_to_glyph_table.define(unicode_to_glyph_list[i].key, utg); - } -} - -const char *unicode_to_glyph_name(const char *s) -{ - unicode_to_glyph *result = unicode_to_glyph_table.lookup(s); - return result ? result->value : 0; -} diff --git a/contrib/groff/src/roff/troff/uniuni.cpp b/contrib/groff/src/roff/troff/uniuni.cpp deleted file mode 100644 index 3f4baa4..0000000 --- a/contrib/groff/src/roff/troff/uniuni.cpp +++ /dev/null @@ -1,1994 +0,0 @@ -// -*- C++ -*- -/* Copyright (C) 2002, 2003 - Free Software Foundation, Inc. - Written by Werner Lemberg - -This file is part of groff. - -groff 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, or (at your option) any later -version. - -groff 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 groff; see the file COPYING. If not, write to the Free Software -Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -// This code has been algorithmically derived from the file -// UnicodeData-3.2.0.txt, available from unicode.org. - -#include "lib.h" -#include "stringclass.h" -#include "ptable.h" - -#include "unicode.h" - -struct unicode_decompose { - char *value; -}; - -declare_ptable(unicode_decompose) -implement_ptable(unicode_decompose) - -PTABLE(unicode_decompose) unicode_decompose_table; - -// the first digit in the composite string gives the number of composites - -struct { - const char *key; - const char *value; -} unicode_decompose_list[] = { - { "00C0", "20041_0300" }, - { "00C1", "20041_0301" }, - { "00C2", "20041_0302" }, - { "00C3", "20041_0303" }, - { "00C4", "20041_0308" }, - { "00C5", "20041_030A" }, - { "00C7", "20043_0327" }, - { "00C8", "20045_0300" }, - { "00C9", "20045_0301" }, - { "00CA", "20045_0302" }, - { "00CB", "20045_0308" }, - { "00CC", "20049_0300" }, - { "00CD", "20049_0301" }, - { "00CE", "20049_0302" }, - { "00CF", "20049_0308" }, - { "00D1", "2004E_0303" }, - { "00D2", "2004F_0300" }, - { "00D3", "2004F_0301" }, - { "00D4", "2004F_0302" }, - { "00D5", "2004F_0303" }, - { "00D6", "2004F_0308" }, - { "00D9", "20055_0300" }, - { "00DA", "20055_0301" }, - { "00DB", "20055_0302" }, - { "00DC", "20055_0308" }, - { "00DD", "20059_0301" }, - { "00E0", "20061_0300" }, - { "00E1", "20061_0301" }, - { "00E2", "20061_0302" }, - { "00E3", "20061_0303" }, - { "00E4", "20061_0308" }, - { "00E5", "20061_030A" }, - { "00E7", "20063_0327" }, - { "00E8", "20065_0300" }, - { "00E9", "20065_0301" }, - { "00EA", "20065_0302" }, - { "00EB", "20065_0308" }, - { "00EC", "20069_0300" }, - { "00ED", "20069_0301" }, - { "00EE", "20069_0302" }, - { "00EF", "20069_0308" }, - { "00F1", "2006E_0303" }, - { "00F2", "2006F_0300" }, - { "00F3", "2006F_0301" }, - { "00F4", "2006F_0302" }, - { "00F5", "2006F_0303" }, - { "00F6", "2006F_0308" }, - { "00F9", "20075_0300" }, - { "00FA", "20075_0301" }, - { "00FB", "20075_0302" }, - { "00FC", "20075_0308" }, - { "00FD", "20079_0301" }, - { "00FF", "20079_0308" }, - { "0100", "20041_0304" }, - { "0101", "20061_0304" }, - { "0102", "20041_0306" }, - { "0103", "20061_0306" }, - { "0104", "20041_0328" }, - { "0105", "20061_0328" }, - { "0106", "20043_0301" }, - { "0107", "20063_0301" }, - { "0108", "20043_0302" }, - { "0109", "20063_0302" }, - { "010A", "20043_0307" }, - { "010B", "20063_0307" }, - { "010C", "20043_030C" }, - { "010D", "20063_030C" }, - { "010E", "20044_030C" }, - { "010F", "20064_030C" }, - { "0112", "20045_0304" }, - { "0113", "20065_0304" }, - { "0114", "20045_0306" }, - { "0115", "20065_0306" }, - { "0116", "20045_0307" }, - { "0117", "20065_0307" }, - { "0118", "20045_0328" }, - { "0119", "20065_0328" }, - { "011A", "20045_030C" }, - { "011B", "20065_030C" }, - { "011C", "20047_0302" }, - { "011D", "20067_0302" }, - { "011E", "20047_0306" }, - { "011F", "20067_0306" }, - { "0120", "20047_0307" }, - { "0121", "20067_0307" }, - { "0122", "20047_0327" }, - { "0123", "20067_0327" }, - { "0124", "20048_0302" }, - { "0125", "20068_0302" }, - { "0128", "20049_0303" }, - { "0129", "20069_0303" }, - { "012A", "20049_0304" }, - { "012B", "20069_0304" }, - { "012C", "20049_0306" }, - { "012D", "20069_0306" }, - { "012E", "20049_0328" }, - { "012F", "20069_0328" }, - { "0130", "20049_0307" }, - { "0134", "2004A_0302" }, - { "0135", "2006A_0302" }, - { "0136", "2004B_0327" }, - { "0137", "2006B_0327" }, - { "0139", "2004C_0301" }, - { "013A", "2006C_0301" }, - { "013B", "2004C_0327" }, - { "013C", "2006C_0327" }, - { "013D", "2004C_030C" }, - { "013E", "2006C_030C" }, - { "0143", "2004E_0301" }, - { "0144", "2006E_0301" }, - { "0145", "2004E_0327" }, - { "0146", "2006E_0327" }, - { "0147", "2004E_030C" }, - { "0148", "2006E_030C" }, - { "014C", "2004F_0304" }, - { "014D", "2006F_0304" }, - { "014E", "2004F_0306" }, - { "014F", "2006F_0306" }, - { "0150", "2004F_030B" }, - { "0151", "2006F_030B" }, - { "0154", "20052_0301" }, - { "0155", "20072_0301" }, - { "0156", "20052_0327" }, - { "0157", "20072_0327" }, - { "0158", "20052_030C" }, - { "0159", "20072_030C" }, - { "015A", "20053_0301" }, - { "015B", "20073_0301" }, - { "015C", "20053_0302" }, - { "015D", "20073_0302" }, - { "015E", "20053_0327" }, - { "015F", "20073_0327" }, - { "0160", "20053_030C" }, - { "0161", "20073_030C" }, - { "0162", "20054_0327" }, - { "0163", "20074_0327" }, - { "0164", "20054_030C" }, - { "0165", "20074_030C" }, - { "0168", "20055_0303" }, - { "0169", "20075_0303" }, - { "016A", "20055_0304" }, - { "016B", "20075_0304" }, - { "016C", "20055_0306" }, - { "016D", "20075_0306" }, - { "016E", "20055_030A" }, - { "016F", "20075_030A" }, - { "0170", "20055_030B" }, - { "0171", "20075_030B" }, - { "0172", "20055_0328" }, - { "0173", "20075_0328" }, - { "0174", "20057_0302" }, - { "0175", "20077_0302" }, - { "0176", "20059_0302" }, - { "0177", "20079_0302" }, - { "0178", "20059_0308" }, - { "0179", "2005A_0301" }, - { "017A", "2007A_0301" }, - { "017B", "2005A_0307" }, - { "017C", "2007A_0307" }, - { "017D", "2005A_030C" }, - { "017E", "2007A_030C" }, - { "01A0", "2004F_031B" }, - { "01A1", "2006F_031B" }, - { "01AF", "20055_031B" }, - { "01B0", "20075_031B" }, - { "01CD", "20041_030C" }, - { "01CE", "20061_030C" }, - { "01CF", "20049_030C" }, - { "01D0", "20069_030C" }, - { "01D1", "2004F_030C" }, - { "01D2", "2006F_030C" }, - { "01D3", "20055_030C" }, - { "01D4", "20075_030C" }, - { "01D5", "30055_0308_0304" }, - { "01D6", "30075_0308_0304" }, - { "01D7", "30055_0308_0301" }, - { "01D8", "30075_0308_0301" }, - { "01D9", "30055_0308_030C" }, - { "01DA", "30075_0308_030C" }, - { "01DB", "30055_0308_0300" }, - { "01DC", "30075_0308_0300" }, - { "01DE", "30041_0308_0304" }, - { "01DF", "30061_0308_0304" }, - { "01E0", "30041_0307_0304" }, - { "01E1", "30061_0307_0304" }, - { "01E2", "200C6_0304" }, - { "01E3", "200E6_0304" }, - { "01E6", "20047_030C" }, - { "01E7", "20067_030C" }, - { "01E8", "2004B_030C" }, - { "01E9", "2006B_030C" }, - { "01EA", "2004F_0328" }, - { "01EB", "2006F_0328" }, - { "01EC", "3004F_0328_0304" }, - { "01ED", "3006F_0328_0304" }, - { "01EE", "201B7_030C" }, - { "01EF", "20292_030C" }, - { "01F0", "2006A_030C" }, - { "01F4", "20047_0301" }, - { "01F5", "20067_0301" }, - { "01F8", "2004E_0300" }, - { "01F9", "2006E_0300" }, - { "01FA", "30041_030A_0301" }, - { "01FB", "30061_030A_0301" }, - { "01FC", "200C6_0301" }, - { "01FD", "200E6_0301" }, - { "01FE", "200D8_0301" }, - { "01FF", "200F8_0301" }, - { "0200", "20041_030F" }, - { "0201", "20061_030F" }, - { "0202", "20041_0311" }, - { "0203", "20061_0311" }, - { "0204", "20045_030F" }, - { "0205", "20065_030F" }, - { "0206", "20045_0311" }, - { "0207", "20065_0311" }, - { "0208", "20049_030F" }, - { "0209", "20069_030F" }, - { "020A", "20049_0311" }, - { "020B", "20069_0311" }, - { "020C", "2004F_030F" }, - { "020D", "2006F_030F" }, - { "020E", "2004F_0311" }, - { "020F", "2006F_0311" }, - { "0210", "20052_030F" }, - { "0211", "20072_030F" }, - { "0212", "20052_0311" }, - { "0213", "20072_0311" }, - { "0214", "20055_030F" }, - { "0215", "20075_030F" }, - { "0216", "20055_0311" }, - { "0217", "20075_0311" }, - { "0218", "20053_0326" }, - { "0219", "20073_0326" }, - { "021A", "20054_0326" }, - { "021B", "20074_0326" }, - { "021E", "20048_030C" }, - { "021F", "20068_030C" }, - { "0226", "20041_0307" }, - { "0227", "20061_0307" }, - { "0228", "20045_0327" }, - { "0229", "20065_0327" }, - { "022A", "3004F_0308_0304" }, - { "022B", "3006F_0308_0304" }, - { "022C", "3004F_0303_0304" }, - { "022D", "3006F_0303_0304" }, - { "022E", "2004F_0307" }, - { "022F", "2006F_0307" }, - { "0230", "3004F_0307_0304" }, - { "0231", "3006F_0307_0304" }, - { "0232", "20059_0304" }, - { "0233", "20079_0304" }, - { "0340", "10300" }, - { "0341", "10301" }, - { "0343", "10313" }, - { "0344", "20308_0301" }, - { "0374", "102B9" }, - { "037E", "1003B" }, - { "0385", "200A8_0301" }, - { "0386", "20391_0301" }, - { "0387", "100B7" }, - { "0388", "20395_0301" }, - { "0389", "20397_0301" }, - { "038A", "20399_0301" }, - { "038C", "2039F_0301" }, - { "038E", "203A5_0301" }, - { "038F", "203A9_0301" }, - { "0390", "303B9_0308_0301" }, - { "03AA", "20399_0308" }, - { "03AB", "203A5_0308" }, - { "03AC", "203B1_0301" }, - { "03AD", "203B5_0301" }, - { "03AE", "203B7_0301" }, - { "03AF", "203B9_0301" }, - { "03B0", "303C5_0308_0301" }, - { "03CA", "203B9_0308" }, - { "03CB", "203C5_0308" }, - { "03CC", "203BF_0301" }, - { "03CD", "203C5_0301" }, - { "03CE", "203C9_0301" }, - { "03D3", "203D2_0301" }, - { "03D4", "203D2_0308" }, - { "0400", "20415_0300" }, - { "0401", "20415_0308" }, - { "0403", "20413_0301" }, - { "0407", "20406_0308" }, - { "040C", "2041A_0301" }, - { "040D", "20418_0300" }, - { "040E", "20423_0306" }, - { "0419", "20418_0306" }, - { "0439", "20438_0306" }, - { "0450", "20435_0300" }, - { "0451", "20435_0308" }, - { "0453", "20433_0301" }, - { "0457", "20456_0308" }, - { "045C", "2043A_0301" }, - { "045D", "20438_0300" }, - { "045E", "20443_0306" }, - { "0476", "20474_030F" }, - { "0477", "20475_030F" }, - { "04C1", "20416_0306" }, - { "04C2", "20436_0306" }, - { "04D0", "20410_0306" }, - { "04D1", "20430_0306" }, - { "04D2", "20410_0308" }, - { "04D3", "20430_0308" }, - { "04D6", "20415_0306" }, - { "04D7", "20435_0306" }, - { "04DA", "204D8_0308" }, - { "04DB", "204D9_0308" }, - { "04DC", "20416_0308" }, - { "04DD", "20436_0308" }, - { "04DE", "20417_0308" }, - { "04DF", "20437_0308" }, - { "04E2", "20418_0304" }, - { "04E3", "20438_0304" }, - { "04E4", "20418_0308" }, - { "04E5", "20438_0308" }, - { "04E6", "2041E_0308" }, - { "04E7", "2043E_0308" }, - { "04EA", "204E8_0308" }, - { "04EB", "204E9_0308" }, - { "04EC", "2042D_0308" }, - { "04ED", "2044D_0308" }, - { "04EE", "20423_0304" }, - { "04EF", "20443_0304" }, - { "04F0", "20423_0308" }, - { "04F1", "20443_0308" }, - { "04F2", "20423_030B" }, - { "04F3", "20443_030B" }, - { "04F4", "20427_0308" }, - { "04F5", "20447_0308" }, - { "04F8", "2042B_0308" }, - { "04F9", "2044B_0308" }, - { "0622", "20627_0653" }, - { "0623", "20627_0654" }, - { "0624", "20648_0654" }, - { "0625", "20627_0655" }, - { "0626", "2064A_0654" }, - { "06C0", "206D5_0654" }, - { "06C2", "206C1_0654" }, - { "06D3", "206D2_0654" }, - { "0929", "20928_093C" }, - { "0931", "20930_093C" }, - { "0934", "20933_093C" }, - { "0958", "20915_093C" }, - { "0959", "20916_093C" }, - { "095A", "20917_093C" }, - { "095B", "2091C_093C" }, - { "095C", "20921_093C" }, - { "095D", "20922_093C" }, - { "095E", "2092B_093C" }, - { "095F", "2092F_093C" }, - { "09CB", "209C7_09BE" }, - { "09CC", "209C7_09D7" }, - { "09DC", "209A1_09BC" }, - { "09DD", "209A2_09BC" }, - { "09DF", "209AF_09BC" }, - { "0A33", "20A32_0A3C" }, - { "0A36", "20A38_0A3C" }, - { "0A59", "20A16_0A3C" }, - { "0A5A", "20A17_0A3C" }, - { "0A5B", "20A1C_0A3C" }, - { "0A5E", "20A2B_0A3C" }, - { "0B48", "20B47_0B56" }, - { "0B4B", "20B47_0B3E" }, - { "0B4C", "20B47_0B57" }, - { "0B5C", "20B21_0B3C" }, - { "0B5D", "20B22_0B3C" }, - { "0B94", "20B92_0BD7" }, - { "0BCA", "20BC6_0BBE" }, - { "0BCB", "20BC7_0BBE" }, - { "0BCC", "20BC6_0BD7" }, - { "0C48", "20C46_0C56" }, - { "0CC0", "20CBF_0CD5" }, - { "0CC7", "20CC6_0CD5" }, - { "0CC8", "20CC6_0CD6" }, - { "0CCA", "20CC6_0CC2" }, - { "0CCB", "30CC6_0CC2_0CD5" }, - { "0D4A", "20D46_0D3E" }, - { "0D4B", "20D47_0D3E" }, - { "0D4C", "20D46_0D57" }, - { "0DDA", "20DD9_0DCA" }, - { "0DDC", "20DD9_0DCF" }, - { "0DDD", "30DD9_0DCF_0DCA" }, - { "0DDE", "20DD9_0DDF" }, - { "0F43", "20F42_0FB7" }, - { "0F4D", "20F4C_0FB7" }, - { "0F52", "20F51_0FB7" }, - { "0F57", "20F56_0FB7" }, - { "0F5C", "20F5B_0FB7" }, - { "0F69", "20F40_0FB5" }, - { "0F73", "20F71_0F72" }, - { "0F75", "20F71_0F74" }, - { "0F76", "20FB2_0F80" }, - { "0F78", "20FB3_0F80" }, - { "0F81", "20F71_0F80" }, - { "0F93", "20F92_0FB7" }, - { "0F9D", "20F9C_0FB7" }, - { "0FA2", "20FA1_0FB7" }, - { "0FA7", "20FA6_0FB7" }, - { "0FAC", "20FAB_0FB7" }, - { "0FB9", "20F90_0FB5" }, - { "1026", "21025_102E" }, - { "1E00", "20041_0325" }, - { "1E01", "20061_0325" }, - { "1E02", "20042_0307" }, - { "1E03", "20062_0307" }, - { "1E04", "20042_0323" }, - { "1E05", "20062_0323" }, - { "1E06", "20042_0331" }, - { "1E07", "20062_0331" }, - { "1E08", "30043_0327_0301" }, - { "1E09", "30063_0327_0301" }, - { "1E0A", "20044_0307" }, - { "1E0B", "20064_0307" }, - { "1E0C", "20044_0323" }, - { "1E0D", "20064_0323" }, - { "1E0E", "20044_0331" }, - { "1E0F", "20064_0331" }, - { "1E10", "20044_0327" }, - { "1E11", "20064_0327" }, - { "1E12", "20044_032D" }, - { "1E13", "20064_032D" }, - { "1E14", "30045_0304_0300" }, - { "1E15", "30065_0304_0300" }, - { "1E16", "30045_0304_0301" }, - { "1E17", "30065_0304_0301" }, - { "1E18", "20045_032D" }, - { "1E19", "20065_032D" }, - { "1E1A", "20045_0330" }, - { "1E1B", "20065_0330" }, - { "1E1C", "30045_0327_0306" }, - { "1E1D", "30065_0327_0306" }, - { "1E1E", "20046_0307" }, - { "1E1F", "20066_0307" }, - { "1E20", "20047_0304" }, - { "1E21", "20067_0304" }, - { "1E22", "20048_0307" }, - { "1E23", "20068_0307" }, - { "1E24", "20048_0323" }, - { "1E25", "20068_0323" }, - { "1E26", "20048_0308" }, - { "1E27", "20068_0308" }, - { "1E28", "20048_0327" }, - { "1E29", "20068_0327" }, - { "1E2A", "20048_032E" }, - { "1E2B", "20068_032E" }, - { "1E2C", "20049_0330" }, - { "1E2D", "20069_0330" }, - { "1E2E", "30049_0308_0301" }, - { "1E2F", "30069_0308_0301" }, - { "1E30", "2004B_0301" }, - { "1E31", "2006B_0301" }, - { "1E32", "2004B_0323" }, - { "1E33", "2006B_0323" }, - { "1E34", "2004B_0331" }, - { "1E35", "2006B_0331" }, - { "1E36", "2004C_0323" }, - { "1E37", "2006C_0323" }, - { "1E38", "3004C_0323_0304" }, - { "1E39", "3006C_0323_0304" }, - { "1E3A", "2004C_0331" }, - { "1E3B", "2006C_0331" }, - { "1E3C", "2004C_032D" }, - { "1E3D", "2006C_032D" }, - { "1E3E", "2004D_0301" }, - { "1E3F", "2006D_0301" }, - { "1E40", "2004D_0307" }, - { "1E41", "2006D_0307" }, - { "1E42", "2004D_0323" }, - { "1E43", "2006D_0323" }, - { "1E44", "2004E_0307" }, - { "1E45", "2006E_0307" }, - { "1E46", "2004E_0323" }, - { "1E47", "2006E_0323" }, - { "1E48", "2004E_0331" }, - { "1E49", "2006E_0331" }, - { "1E4A", "2004E_032D" }, - { "1E4B", "2006E_032D" }, - { "1E4C", "3004F_0303_0301" }, - { "1E4D", "3006F_0303_0301" }, - { "1E4E", "3004F_0303_0308" }, - { "1E4F", "3006F_0303_0308" }, - { "1E50", "3004F_0304_0300" }, - { "1E51", "3006F_0304_0300" }, - { "1E52", "3004F_0304_0301" }, - { "1E53", "3006F_0304_0301" }, - { "1E54", "20050_0301" }, - { "1E55", "20070_0301" }, - { "1E56", "20050_0307" }, - { "1E57", "20070_0307" }, - { "1E58", "20052_0307" }, - { "1E59", "20072_0307" }, - { "1E5A", "20052_0323" }, - { "1E5B", "20072_0323" }, - { "1E5C", "30052_0323_0304" }, - { "1E5D", "30072_0323_0304" }, - { "1E5E", "20052_0331" }, - { "1E5F", "20072_0331" }, - { "1E60", "20053_0307" }, - { "1E61", "20073_0307" }, - { "1E62", "20053_0323" }, - { "1E63", "20073_0323" }, - { "1E64", "30053_0301_0307" }, - { "1E65", "30073_0301_0307" }, - { "1E66", "30053_030C_0307" }, - { "1E67", "30073_030C_0307" }, - { "1E68", "30053_0323_0307" }, - { "1E69", "30073_0323_0307" }, - { "1E6A", "20054_0307" }, - { "1E6B", "20074_0307" }, - { "1E6C", "20054_0323" }, - { "1E6D", "20074_0323" }, - { "1E6E", "20054_0331" }, - { "1E6F", "20074_0331" }, - { "1E70", "20054_032D" }, - { "1E71", "20074_032D" }, - { "1E72", "20055_0324" }, - { "1E73", "20075_0324" }, - { "1E74", "20055_0330" }, - { "1E75", "20075_0330" }, - { "1E76", "20055_032D" }, - { "1E77", "20075_032D" }, - { "1E78", "30055_0303_0301" }, - { "1E79", "30075_0303_0301" }, - { "1E7A", "30055_0304_0308" }, - { "1E7B", "30075_0304_0308" }, - { "1E7C", "20056_0303" }, - { "1E7D", "20076_0303" }, - { "1E7E", "20056_0323" }, - { "1E7F", "20076_0323" }, - { "1E80", "20057_0300" }, - { "1E81", "20077_0300" }, - { "1E82", "20057_0301" }, - { "1E83", "20077_0301" }, - { "1E84", "20057_0308" }, - { "1E85", "20077_0308" }, - { "1E86", "20057_0307" }, - { "1E87", "20077_0307" }, - { "1E88", "20057_0323" }, - { "1E89", "20077_0323" }, - { "1E8A", "20058_0307" }, - { "1E8B", "20078_0307" }, - { "1E8C", "20058_0308" }, - { "1E8D", "20078_0308" }, - { "1E8E", "20059_0307" }, - { "1E8F", "20079_0307" }, - { "1E90", "2005A_0302" }, - { "1E91", "2007A_0302" }, - { "1E92", "2005A_0323" }, - { "1E93", "2007A_0323" }, - { "1E94", "2005A_0331" }, - { "1E95", "2007A_0331" }, - { "1E96", "20068_0331" }, - { "1E97", "20074_0308" }, - { "1E98", "20077_030A" }, - { "1E99", "20079_030A" }, - { "1E9B", "2017F_0307" }, - { "1EA0", "20041_0323" }, - { "1EA1", "20061_0323" }, - { "1EA2", "20041_0309" }, - { "1EA3", "20061_0309" }, - { "1EA4", "30041_0302_0301" }, - { "1EA5", "30061_0302_0301" }, - { "1EA6", "30041_0302_0300" }, - { "1EA7", "30061_0302_0300" }, - { "1EA8", "30041_0302_0309" }, - { "1EA9", "30061_0302_0309" }, - { "1EAA", "30041_0302_0303" }, - { "1EAB", "30061_0302_0303" }, - { "1EAC", "30041_0323_0302" }, - { "1EAD", "30061_0323_0302" }, - { "1EAE", "30041_0306_0301" }, - { "1EAF", "30061_0306_0301" }, - { "1EB0", "30041_0306_0300" }, - { "1EB1", "30061_0306_0300" }, - { "1EB2", "30041_0306_0309" }, - { "1EB3", "30061_0306_0309" }, - { "1EB4", "30041_0306_0303" }, - { "1EB5", "30061_0306_0303" }, - { "1EB6", "30041_0323_0306" }, - { "1EB7", "30061_0323_0306" }, - { "1EB8", "20045_0323" }, - { "1EB9", "20065_0323" }, - { "1EBA", "20045_0309" }, - { "1EBB", "20065_0309" }, - { "1EBC", "20045_0303" }, - { "1EBD", "20065_0303" }, - { "1EBE", "30045_0302_0301" }, - { "1EBF", "30065_0302_0301" }, - { "1EC0", "30045_0302_0300" }, - { "1EC1", "30065_0302_0300" }, - { "1EC2", "30045_0302_0309" }, - { "1EC3", "30065_0302_0309" }, - { "1EC4", "30045_0302_0303" }, - { "1EC5", "30065_0302_0303" }, - { "1EC6", "30045_0323_0302" }, - { "1EC7", "30065_0323_0302" }, - { "1EC8", "20049_0309" }, - { "1EC9", "20069_0309" }, - { "1ECA", "20049_0323" }, - { "1ECB", "20069_0323" }, - { "1ECC", "2004F_0323" }, - { "1ECD", "2006F_0323" }, - { "1ECE", "2004F_0309" }, - { "1ECF", "2006F_0309" }, - { "1ED0", "3004F_0302_0301" }, - { "1ED1", "3006F_0302_0301" }, - { "1ED2", "3004F_0302_0300" }, - { "1ED3", "3006F_0302_0300" }, - { "1ED4", "3004F_0302_0309" }, - { "1ED5", "3006F_0302_0309" }, - { "1ED6", "3004F_0302_0303" }, - { "1ED7", "3006F_0302_0303" }, - { "1ED8", "3004F_0323_0302" }, - { "1ED9", "3006F_0323_0302" }, - { "1EDA", "3004F_031B_0301" }, - { "1EDB", "3006F_031B_0301" }, - { "1EDC", "3004F_031B_0300" }, - { "1EDD", "3006F_031B_0300" }, - { "1EDE", "3004F_031B_0309" }, - { "1EDF", "3006F_031B_0309" }, - { "1EE0", "3004F_031B_0303" }, - { "1EE1", "3006F_031B_0303" }, - { "1EE2", "3004F_031B_0323" }, - { "1EE3", "3006F_031B_0323" }, - { "1EE4", "20055_0323" }, - { "1EE5", "20075_0323" }, - { "1EE6", "20055_0309" }, - { "1EE7", "20075_0309" }, - { "1EE8", "30055_031B_0301" }, - { "1EE9", "30075_031B_0301" }, - { "1EEA", "30055_031B_0300" }, - { "1EEB", "30075_031B_0300" }, - { "1EEC", "30055_031B_0309" }, - { "1EED", "30075_031B_0309" }, - { "1EEE", "30055_031B_0303" }, - { "1EEF", "30075_031B_0303" }, - { "1EF0", "30055_031B_0323" }, - { "1EF1", "30075_031B_0323" }, - { "1EF2", "20059_0300" }, - { "1EF3", "20079_0300" }, - { "1EF4", "20059_0323" }, - { "1EF5", "20079_0323" }, - { "1EF6", "20059_0309" }, - { "1EF7", "20079_0309" }, - { "1EF8", "20059_0303" }, - { "1EF9", "20079_0303" }, - { "1F00", "203B1_0313" }, - { "1F01", "203B1_0314" }, - { "1F02", "303B1_0313_0300" }, - { "1F03", "303B1_0314_0300" }, - { "1F04", "303B1_0313_0301" }, - { "1F05", "303B1_0314_0301" }, - { "1F06", "303B1_0313_0342" }, - { "1F07", "303B1_0314_0342" }, - { "1F08", "20391_0313" }, - { "1F09", "20391_0314" }, - { "1F0A", "30391_0313_0300" }, - { "1F0B", "30391_0314_0300" }, - { "1F0C", "30391_0313_0301" }, - { "1F0D", "30391_0314_0301" }, - { "1F0E", "30391_0313_0342" }, - { "1F0F", "30391_0314_0342" }, - { "1F10", "203B5_0313" }, - { "1F11", "203B5_0314" }, - { "1F12", "303B5_0313_0300" }, - { "1F13", "303B5_0314_0300" }, - { "1F14", "303B5_0313_0301" }, - { "1F15", "303B5_0314_0301" }, - { "1F18", "20395_0313" }, - { "1F19", "20395_0314" }, - { "1F1A", "30395_0313_0300" }, - { "1F1B", "30395_0314_0300" }, - { "1F1C", "30395_0313_0301" }, - { "1F1D", "30395_0314_0301" }, - { "1F20", "203B7_0313" }, - { "1F21", "203B7_0314" }, - { "1F22", "303B7_0313_0300" }, - { "1F23", "303B7_0314_0300" }, - { "1F24", "303B7_0313_0301" }, - { "1F25", "303B7_0314_0301" }, - { "1F26", "303B7_0313_0342" }, - { "1F27", "303B7_0314_0342" }, - { "1F28", "20397_0313" }, - { "1F29", "20397_0314" }, - { "1F2A", "30397_0313_0300" }, - { "1F2B", "30397_0314_0300" }, - { "1F2C", "30397_0313_0301" }, - { "1F2D", "30397_0314_0301" }, - { "1F2E", "30397_0313_0342" }, - { "1F2F", "30397_0314_0342" }, - { "1F30", "203B9_0313" }, - { "1F31", "203B9_0314" }, - { "1F32", "303B9_0313_0300" }, - { "1F33", "303B9_0314_0300" }, - { "1F34", "303B9_0313_0301" }, - { "1F35", "303B9_0314_0301" }, - { "1F36", "303B9_0313_0342" }, - { "1F37", "303B9_0314_0342" }, - { "1F38", "20399_0313" }, - { "1F39", "20399_0314" }, - { "1F3A", "30399_0313_0300" }, - { "1F3B", "30399_0314_0300" }, - { "1F3C", "30399_0313_0301" }, - { "1F3D", "30399_0314_0301" }, - { "1F3E", "30399_0313_0342" }, - { "1F3F", "30399_0314_0342" }, - { "1F40", "203BF_0313" }, - { "1F41", "203BF_0314" }, - { "1F42", "303BF_0313_0300" }, - { "1F43", "303BF_0314_0300" }, - { "1F44", "303BF_0313_0301" }, - { "1F45", "303BF_0314_0301" }, - { "1F48", "2039F_0313" }, - { "1F49", "2039F_0314" }, - { "1F4A", "3039F_0313_0300" }, - { "1F4B", "3039F_0314_0300" }, - { "1F4C", "3039F_0313_0301" }, - { "1F4D", "3039F_0314_0301" }, - { "1F50", "203C5_0313" }, - { "1F51", "203C5_0314" }, - { "1F52", "303C5_0313_0300" }, - { "1F53", "303C5_0314_0300" }, - { "1F54", "303C5_0313_0301" }, - { "1F55", "303C5_0314_0301" }, - { "1F56", "303C5_0313_0342" }, - { "1F57", "303C5_0314_0342" }, - { "1F59", "203A5_0314" }, - { "1F5B", "303A5_0314_0300" }, - { "1F5D", "303A5_0314_0301" }, - { "1F5F", "303A5_0314_0342" }, - { "1F60", "203C9_0313" }, - { "1F61", "203C9_0314" }, - { "1F62", "303C9_0313_0300" }, - { "1F63", "303C9_0314_0300" }, - { "1F64", "303C9_0313_0301" }, - { "1F65", "303C9_0314_0301" }, - { "1F66", "303C9_0313_0342" }, - { "1F67", "303C9_0314_0342" }, - { "1F68", "203A9_0313" }, - { "1F69", "203A9_0314" }, - { "1F6A", "303A9_0313_0300" }, - { "1F6B", "303A9_0314_0300" }, - { "1F6C", "303A9_0313_0301" }, - { "1F6D", "303A9_0314_0301" }, - { "1F6E", "303A9_0313_0342" }, - { "1F6F", "303A9_0314_0342" }, - { "1F70", "203B1_0300" }, - { "1F71", "203B1_0301" }, - { "1F72", "203B5_0300" }, - { "1F73", "203B5_0301" }, - { "1F74", "203B7_0300" }, - { "1F75", "203B7_0301" }, - { "1F76", "203B9_0300" }, - { "1F77", "203B9_0301" }, - { "1F78", "203BF_0300" }, - { "1F79", "203BF_0301" }, - { "1F7A", "203C5_0300" }, - { "1F7B", "203C5_0301" }, - { "1F7C", "203C9_0300" }, - { "1F7D", "203C9_0301" }, - { "1F80", "303B1_0313_0345" }, - { "1F81", "303B1_0314_0345" }, - { "1F82", "403B1_0313_0300_0345" }, - { "1F83", "403B1_0314_0300_0345" }, - { "1F84", "403B1_0313_0301_0345" }, - { "1F85", "403B1_0314_0301_0345" }, - { "1F86", "403B1_0313_0342_0345" }, - { "1F87", "403B1_0314_0342_0345" }, - { "1F88", "30391_0313_0345" }, - { "1F89", "30391_0314_0345" }, - { "1F8A", "40391_0313_0300_0345" }, - { "1F8B", "40391_0314_0300_0345" }, - { "1F8C", "40391_0313_0301_0345" }, - { "1F8D", "40391_0314_0301_0345" }, - { "1F8E", "40391_0313_0342_0345" }, - { "1F8F", "40391_0314_0342_0345" }, - { "1F90", "303B7_0313_0345" }, - { "1F91", "303B7_0314_0345" }, - { "1F92", "403B7_0313_0300_0345" }, - { "1F93", "403B7_0314_0300_0345" }, - { "1F94", "403B7_0313_0301_0345" }, - { "1F95", "403B7_0314_0301_0345" }, - { "1F96", "403B7_0313_0342_0345" }, - { "1F97", "403B7_0314_0342_0345" }, - { "1F98", "30397_0313_0345" }, - { "1F99", "30397_0314_0345" }, - { "1F9A", "40397_0313_0300_0345" }, - { "1F9B", "40397_0314_0300_0345" }, - { "1F9C", "40397_0313_0301_0345" }, - { "1F9D", "40397_0314_0301_0345" }, - { "1F9E", "40397_0313_0342_0345" }, - { "1F9F", "40397_0314_0342_0345" }, - { "1FA0", "303C9_0313_0345" }, - { "1FA1", "303C9_0314_0345" }, - { "1FA2", "403C9_0313_0300_0345" }, - { "1FA3", "403C9_0314_0300_0345" }, - { "1FA4", "403C9_0313_0301_0345" }, - { "1FA5", "403C9_0314_0301_0345" }, - { "1FA6", "403C9_0313_0342_0345" }, - { "1FA7", "403C9_0314_0342_0345" }, - { "1FA8", "303A9_0313_0345" }, - { "1FA9", "303A9_0314_0345" }, - { "1FAA", "403A9_0313_0300_0345" }, - { "1FAB", "403A9_0314_0300_0345" }, - { "1FAC", "403A9_0313_0301_0345" }, - { "1FAD", "403A9_0314_0301_0345" }, - { "1FAE", "403A9_0313_0342_0345" }, - { "1FAF", "403A9_0314_0342_0345" }, - { "1FB0", "203B1_0306" }, - { "1FB1", "203B1_0304" }, - { "1FB2", "303B1_0300_0345" }, - { "1FB3", "203B1_0345" }, - { "1FB4", "303B1_0301_0345" }, - { "1FB6", "203B1_0342" }, - { "1FB7", "303B1_0342_0345" }, - { "1FB8", "20391_0306" }, - { "1FB9", "20391_0304" }, - { "1FBA", "20391_0300" }, - { "1FBB", "20391_0301" }, - { "1FBC", "20391_0345" }, - { "1FBE", "103B9" }, - { "1FC1", "200A8_0342" }, - { "1FC2", "303B7_0300_0345" }, - { "1FC3", "203B7_0345" }, - { "1FC4", "303B7_0301_0345" }, - { "1FC6", "203B7_0342" }, - { "1FC7", "303B7_0342_0345" }, - { "1FC8", "20395_0300" }, - { "1FC9", "20395_0301" }, - { "1FCA", "20397_0300" }, - { "1FCB", "20397_0301" }, - { "1FCC", "20397_0345" }, - { "1FCD", "21FBF_0300" }, - { "1FCE", "21FBF_0301" }, - { "1FCF", "21FBF_0342" }, - { "1FD0", "203B9_0306" }, - { "1FD1", "203B9_0304" }, - { "1FD2", "303B9_0308_0300" }, - { "1FD3", "303B9_0308_0301" }, - { "1FD6", "203B9_0342" }, - { "1FD7", "303B9_0308_0342" }, - { "1FD8", "20399_0306" }, - { "1FD9", "20399_0304" }, - { "1FDA", "20399_0300" }, - { "1FDB", "20399_0301" }, - { "1FDD", "21FFE_0300" }, - { "1FDE", "21FFE_0301" }, - { "1FDF", "21FFE_0342" }, - { "1FE0", "203C5_0306" }, - { "1FE1", "203C5_0304" }, - { "1FE2", "303C5_0308_0300" }, - { "1FE3", "303C5_0308_0301" }, - { "1FE4", "203C1_0313" }, - { "1FE5", "203C1_0314" }, - { "1FE6", "203C5_0342" }, - { "1FE7", "303C5_0308_0342" }, - { "1FE8", "203A5_0306" }, - { "1FE9", "203A5_0304" }, - { "1FEA", "203A5_0300" }, - { "1FEB", "203A5_0301" }, - { "1FEC", "203A1_0314" }, - { "1FED", "200A8_0300" }, - { "1FEE", "200A8_0301" }, - { "1FEF", "10060" }, - { "1FF2", "303C9_0300_0345" }, - { "1FF3", "203C9_0345" }, - { "1FF4", "303C9_0301_0345" }, - { "1FF6", "203C9_0342" }, - { "1FF7", "303C9_0342_0345" }, - { "1FF8", "2039F_0300" }, - { "1FF9", "2039F_0301" }, - { "1FFA", "203A9_0300" }, - { "1FFB", "203A9_0301" }, - { "1FFC", "203A9_0345" }, - { "1FFD", "100B4" }, - { "2000", "12002" }, - { "2001", "12003" }, - { "2126", "103A9" }, - { "212A", "1004B" }, - { "212B", "20041_030A" }, - { "219A", "22190_0338" }, - { "219B", "22192_0338" }, - { "21AE", "22194_0338" }, - { "21CD", "221D0_0338" }, - { "21CE", "221D4_0338" }, - { "21CF", "221D2_0338" }, - { "2204", "22203_0338" }, - { "2209", "22208_0338" }, - { "220C", "2220B_0338" }, - { "2224", "22223_0338" }, - { "2226", "22225_0338" }, - { "2241", "2223C_0338" }, - { "2244", "22243_0338" }, - { "2247", "22245_0338" }, - { "2249", "22248_0338" }, - { "2260", "2003D_0338" }, - { "2262", "22261_0338" }, - { "226D", "2224D_0338" }, - { "226E", "2003C_0338" }, - { "226F", "2003E_0338" }, - { "2270", "22264_0338" }, - { "2271", "22265_0338" }, - { "2274", "22272_0338" }, - { "2275", "22273_0338" }, - { "2278", "22276_0338" }, - { "2279", "22277_0338" }, - { "2280", "2227A_0338" }, - { "2281", "2227B_0338" }, - { "2284", "22282_0338" }, - { "2285", "22283_0338" }, - { "2288", "22286_0338" }, - { "2289", "22287_0338" }, - { "22AC", "222A2_0338" }, - { "22AD", "222A8_0338" }, - { "22AE", "222A9_0338" }, - { "22AF", "222AB_0338" }, - { "22E0", "2227C_0338" }, - { "22E1", "2227D_0338" }, - { "22E2", "22291_0338" }, - { "22E3", "22292_0338" }, - { "22EA", "222B2_0338" }, - { "22EB", "222B3_0338" }, - { "22EC", "222B4_0338" }, - { "22ED", "222B5_0338" }, - { "2329", "13008" }, - { "232A", "13009" }, - { "2ADC", "22ADD_0338" }, - { "304C", "2304B_3099" }, - { "304E", "2304D_3099" }, - { "3050", "2304F_3099" }, - { "3052", "23051_3099" }, - { "3054", "23053_3099" }, - { "3056", "23055_3099" }, - { "3058", "23057_3099" }, - { "305A", "23059_3099" }, - { "305C", "2305B_3099" }, - { "305E", "2305D_3099" }, - { "3060", "2305F_3099" }, - { "3062", "23061_3099" }, - { "3065", "23064_3099" }, - { "3067", "23066_3099" }, - { "3069", "23068_3099" }, - { "3070", "2306F_3099" }, - { "3071", "2306F_309A" }, - { "3073", "23072_3099" }, - { "3074", "23072_309A" }, - { "3076", "23075_3099" }, - { "3077", "23075_309A" }, - { "3079", "23078_3099" }, - { "307A", "23078_309A" }, - { "307C", "2307B_3099" }, - { "307D", "2307B_309A" }, - { "3094", "23046_3099" }, - { "309E", "2309D_3099" }, - { "30AC", "230AB_3099" }, - { "30AE", "230AD_3099" }, - { "30B0", "230AF_3099" }, - { "30B2", "230B1_3099" }, - { "30B4", "230B3_3099" }, - { "30B6", "230B5_3099" }, - { "30B8", "230B7_3099" }, - { "30BA", "230B9_3099" }, - { "30BC", "230BB_3099" }, - { "30BE", "230BD_3099" }, - { "30C0", "230BF_3099" }, - { "30C2", "230C1_3099" }, - { "30C5", "230C4_3099" }, - { "30C7", "230C6_3099" }, - { "30C9", "230C8_3099" }, - { "30D0", "230CF_3099" }, - { "30D1", "230CF_309A" }, - { "30D3", "230D2_3099" }, - { "30D4", "230D2_309A" }, - { "30D6", "230D5_3099" }, - { "30D7", "230D5_309A" }, - { "30D9", "230D8_3099" }, - { "30DA", "230D8_309A" }, - { "30DC", "230DB_3099" }, - { "30DD", "230DB_309A" }, - { "30F4", "230A6_3099" }, - { "30F7", "230EF_3099" }, - { "30F8", "230F0_3099" }, - { "30F9", "230F1_3099" }, - { "30FA", "230F2_3099" }, - { "30FE", "230FD_3099" }, - { "F900", "18C48" }, - { "F901", "166F4" }, - { "F902", "18ECA" }, - { "F903", "18CC8" }, - { "F904", "16ED1" }, - { "F905", "14E32" }, - { "F906", "153E5" }, - { "F907", "19F9C" }, - { "F908", "19F9C" }, - { "F909", "15951" }, - { "F90A", "191D1" }, - { "F90B", "15587" }, - { "F90C", "15948" }, - { "F90D", "161F6" }, - { "F90E", "17669" }, - { "F90F", "17F85" }, - { "F910", "1863F" }, - { "F911", "187BA" }, - { "F912", "188F8" }, - { "F913", "1908F" }, - { "F914", "16A02" }, - { "F915", "16D1B" }, - { "F916", "170D9" }, - { "F917", "173DE" }, - { "F918", "1843D" }, - { "F919", "1916A" }, - { "F91A", "199F1" }, - { "F91B", "14E82" }, - { "F91C", "15375" }, - { "F91D", "16B04" }, - { "F91E", "1721B" }, - { "F91F", "1862D" }, - { "F920", "19E1E" }, - { "F921", "15D50" }, - { "F922", "16FEB" }, - { "F923", "185CD" }, - { "F924", "18964" }, - { "F925", "162C9" }, - { "F926", "181D8" }, - { "F927", "1881F" }, - { "F928", "15ECA" }, - { "F929", "16717" }, - { "F92A", "16D6A" }, - { "F92B", "172FC" }, - { "F92C", "190CE" }, - { "F92D", "14F86" }, - { "F92E", "151B7" }, - { "F92F", "152DE" }, - { "F930", "164C4" }, - { "F931", "16AD3" }, - { "F932", "17210" }, - { "F933", "176E7" }, - { "F934", "18001" }, - { "F935", "18606" }, - { "F936", "1865C" }, - { "F937", "18DEF" }, - { "F938", "19732" }, - { "F939", "19B6F" }, - { "F93A", "19DFA" }, - { "F93B", "1788C" }, - { "F93C", "1797F" }, - { "F93D", "17DA0" }, - { "F93E", "183C9" }, - { "F93F", "19304" }, - { "F940", "19E7F" }, - { "F941", "18AD6" }, - { "F942", "158DF" }, - { "F943", "15F04" }, - { "F944", "17C60" }, - { "F945", "1807E" }, - { "F946", "17262" }, - { "F947", "178CA" }, - { "F948", "18CC2" }, - { "F949", "196F7" }, - { "F94A", "158D8" }, - { "F94B", "15C62" }, - { "F94C", "16A13" }, - { "F94D", "16DDA" }, - { "F94E", "16F0F" }, - { "F94F", "17D2F" }, - { "F950", "17E37" }, - { "F951", "1964B" }, - { "F952", "152D2" }, - { "F953", "1808B" }, - { "F954", "151DC" }, - { "F955", "151CC" }, - { "F956", "17A1C" }, - { "F957", "17DBE" }, - { "F958", "183F1" }, - { "F959", "19675" }, - { "F95A", "18B80" }, - { "F95B", "162CF" }, - { "F95C", "16A02" }, - { "F95D", "18AFE" }, - { "F95E", "14E39" }, - { "F95F", "15BE7" }, - { "F960", "16012" }, - { "F961", "17387" }, - { "F962", "17570" }, - { "F963", "15317" }, - { "F964", "178FB" }, - { "F965", "14FBF" }, - { "F966", "15FA9" }, - { "F967", "14E0D" }, - { "F968", "16CCC" }, - { "F969", "16578" }, - { "F96A", "17D22" }, - { "F96B", "153C3" }, - { "F96C", "1585E" }, - { "F96D", "17701" }, - { "F96E", "18449" }, - { "F96F", "18AAA" }, - { "F970", "16BBA" }, - { "F971", "18FB0" }, - { "F972", "16C88" }, - { "F973", "162FE" }, - { "F974", "182E5" }, - { "F975", "163A0" }, - { "F976", "17565" }, - { "F977", "14EAE" }, - { "F978", "15169" }, - { "F979", "151C9" }, - { "F97A", "16881" }, - { "F97B", "17CE7" }, - { "F97C", "1826F" }, - { "F97D", "18AD2" }, - { "F97E", "191CF" }, - { "F97F", "152F5" }, - { "F980", "15442" }, - { "F981", "15973" }, - { "F982", "15EEC" }, - { "F983", "165C5" }, - { "F984", "16FFE" }, - { "F985", "1792A" }, - { "F986", "195AD" }, - { "F987", "19A6A" }, - { "F988", "19E97" }, - { "F989", "19ECE" }, - { "F98A", "1529B" }, - { "F98B", "166C6" }, - { "F98C", "16B77" }, - { "F98D", "18F62" }, - { "F98E", "15E74" }, - { "F98F", "16190" }, - { "F990", "16200" }, - { "F991", "1649A" }, - { "F992", "16F23" }, - { "F993", "17149" }, - { "F994", "17489" }, - { "F995", "179CA" }, - { "F996", "17DF4" }, - { "F997", "1806F" }, - { "F998", "18F26" }, - { "F999", "184EE" }, - { "F99A", "19023" }, - { "F99B", "1934A" }, - { "F99C", "15217" }, - { "F99D", "152A3" }, - { "F99E", "154BD" }, - { "F99F", "170C8" }, - { "F9A0", "188C2" }, - { "F9A1", "18AAA" }, - { "F9A2", "15EC9" }, - { "F9A3", "15FF5" }, - { "F9A4", "1637B" }, - { "F9A5", "16BAE" }, - { "F9A6", "17C3E" }, - { "F9A7", "17375" }, - { "F9A8", "14EE4" }, - { "F9A9", "156F9" }, - { "F9AA", "15BE7" }, - { "F9AB", "15DBA" }, - { "F9AC", "1601C" }, - { "F9AD", "173B2" }, - { "F9AE", "17469" }, - { "F9AF", "17F9A" }, - { "F9B0", "18046" }, - { "F9B1", "19234" }, - { "F9B2", "196F6" }, - { "F9B3", "19748" }, - { "F9B4", "19818" }, - { "F9B5", "14F8B" }, - { "F9B6", "179AE" }, - { "F9B7", "191B4" }, - { "F9B8", "196B8" }, - { "F9B9", "160E1" }, - { "F9BA", "14E86" }, - { "F9BB", "150DA" }, - { "F9BC", "15BEE" }, - { "F9BD", "15C3F" }, - { "F9BE", "16599" }, - { "F9BF", "16A02" }, - { "F9C0", "171CE" }, - { "F9C1", "17642" }, - { "F9C2", "184FC" }, - { "F9C3", "1907C" }, - { "F9C4", "19F8D" }, - { "F9C5", "16688" }, - { "F9C6", "1962E" }, - { "F9C7", "15289" }, - { "F9C8", "1677B" }, - { "F9C9", "167F3" }, - { "F9CA", "16D41" }, - { "F9CB", "16E9C" }, - { "F9CC", "17409" }, - { "F9CD", "17559" }, - { "F9CE", "1786B" }, - { "F9CF", "17D10" }, - { "F9D0", "1985E" }, - { "F9D1", "1516D" }, - { "F9D2", "1622E" }, - { "F9D3", "19678" }, - { "F9D4", "1502B" }, - { "F9D5", "15D19" }, - { "F9D6", "16DEA" }, - { "F9D7", "18F2A" }, - { "F9D8", "15F8B" }, - { "F9D9", "16144" }, - { "F9DA", "16817" }, - { "F9DB", "17387" }, - { "F9DC", "19686" }, - { "F9DD", "15229" }, - { "F9DE", "1540F" }, - { "F9DF", "15C65" }, - { "F9E0", "16613" }, - { "F9E1", "1674E" }, - { "F9E2", "168A8" }, - { "F9E3", "16CE5" }, - { "F9E4", "17406" }, - { "F9E5", "175E2" }, - { "F9E6", "17F79" }, - { "F9E7", "188CF" }, - { "F9E8", "188E1" }, - { "F9E9", "191CC" }, - { "F9EA", "196E2" }, - { "F9EB", "1533F" }, - { "F9EC", "16EBA" }, - { "F9ED", "1541D" }, - { "F9EE", "171D0" }, - { "F9EF", "17498" }, - { "F9F0", "185FA" }, - { "F9F1", "196A3" }, - { "F9F2", "19C57" }, - { "F9F3", "19E9F" }, - { "F9F4", "16797" }, - { "F9F5", "16DCB" }, - { "F9F6", "181E8" }, - { "F9F7", "17ACB" }, - { "F9F8", "17B20" }, - { "F9F9", "17C92" }, - { "F9FA", "172C0" }, - { "F9FB", "17099" }, - { "F9FC", "18B58" }, - { "F9FD", "14EC0" }, - { "F9FE", "18336" }, - { "F9FF", "1523A" }, - { "FA00", "15207" }, - { "FA01", "15EA6" }, - { "FA02", "162D3" }, - { "FA03", "17CD6" }, - { "FA04", "15B85" }, - { "FA05", "16D1E" }, - { "FA06", "166B4" }, - { "FA07", "18F3B" }, - { "FA08", "1884C" }, - { "FA09", "1964D" }, - { "FA0A", "1898B" }, - { "FA0B", "15ED3" }, - { "FA0C", "15140" }, - { "FA0D", "155C0" }, - { "FA10", "1585A" }, - { "FA12", "16674" }, - { "FA15", "151DE" }, - { "FA16", "1732A" }, - { "FA17", "176CA" }, - { "FA18", "1793C" }, - { "FA19", "1795E" }, - { "FA1A", "17965" }, - { "FA1B", "1798F" }, - { "FA1C", "19756" }, - { "FA1D", "17CBE" }, - { "FA1E", "17FBD" }, - { "FA20", "18612" }, - { "FA22", "18AF8" }, - { "FA25", "19038" }, - { "FA26", "190FD" }, - { "FA2A", "198EF" }, - { "FA2B", "198FC" }, - { "FA2C", "19928" }, - { "FA2D", "19DB4" }, - { "FA30", "14FAE" }, - { "FA31", "150E7" }, - { "FA32", "1514D" }, - { "FA33", "152C9" }, - { "FA34", "152E4" }, - { "FA35", "15351" }, - { "FA36", "1559D" }, - { "FA37", "15606" }, - { "FA38", "15668" }, - { "FA39", "15840" }, - { "FA3A", "158A8" }, - { "FA3B", "15C64" }, - { "FA3C", "15C6E" }, - { "FA3D", "16094" }, - { "FA3E", "16168" }, - { "FA3F", "1618E" }, - { "FA40", "161F2" }, - { "FA41", "1654F" }, - { "FA42", "165E2" }, - { "FA43", "16691" }, - { "FA44", "16885" }, - { "FA45", "16D77" }, - { "FA46", "16E1A" }, - { "FA47", "16F22" }, - { "FA48", "1716E" }, - { "FA49", "1722B" }, - { "FA4A", "17422" }, - { "FA4B", "17891" }, - { "FA4C", "1793E" }, - { "FA4D", "17949" }, - { "FA4E", "17948" }, - { "FA4F", "17950" }, - { "FA50", "17956" }, - { "FA51", "1795D" }, - { "FA52", "1798D" }, - { "FA53", "1798E" }, - { "FA54", "17A40" }, - { "FA55", "17A81" }, - { "FA56", "17BC0" }, - { "FA57", "17DF4" }, - { "FA58", "17E09" }, - { "FA59", "17E41" }, - { "FA5A", "17F72" }, - { "FA5B", "18005" }, - { "FA5C", "181ED" }, - { "FA5D", "18279" }, - { "FA5E", "18279" }, - { "FA5F", "18457" }, - { "FA60", "18910" }, - { "FA61", "18996" }, - { "FA62", "18B01" }, - { "FA63", "18B39" }, - { "FA64", "18CD3" }, - { "FA65", "18D08" }, - { "FA66", "18FB6" }, - { "FA67", "19038" }, - { "FA68", "196E3" }, - { "FA69", "197FF" }, - { "FA6A", "1983B" }, - { "FB1D", "205D9_05B4" }, - { "FB1F", "205F2_05B7" }, - { "FB2A", "205E9_05C1" }, - { "FB2B", "205E9_05C2" }, - { "FB2C", "305E9_05BC_05C1" }, - { "FB2D", "305E9_05BC_05C2" }, - { "FB2E", "205D0_05B7" }, - { "FB2F", "205D0_05B8" }, - { "FB30", "205D0_05BC" }, - { "FB31", "205D1_05BC" }, - { "FB32", "205D2_05BC" }, - { "FB33", "205D3_05BC" }, - { "FB34", "205D4_05BC" }, - { "FB35", "205D5_05BC" }, - { "FB36", "205D6_05BC" }, - { "FB38", "205D8_05BC" }, - { "FB39", "205D9_05BC" }, - { "FB3A", "205DA_05BC" }, - { "FB3B", "205DB_05BC" }, - { "FB3C", "205DC_05BC" }, - { "FB3E", "205DE_05BC" }, - { "FB40", "205E0_05BC" }, - { "FB41", "205E1_05BC" }, - { "FB43", "205E3_05BC" }, - { "FB44", "205E4_05BC" }, - { "FB46", "205E6_05BC" }, - { "FB47", "205E7_05BC" }, - { "FB48", "205E8_05BC" }, - { "FB49", "205E9_05BC" }, - { "FB4A", "205EA_05BC" }, - { "FB4B", "205D5_05B9" }, - { "FB4C", "205D1_05BF" }, - { "FB4D", "205DB_05BF" }, - { "FB4E", "205E4_05BF" }, - { "1D15E", "21D157_1D165" }, - { "1D15F", "21D158_1D165" }, - { "1D160", "31D158_1D165_1D16E" }, - { "1D161", "31D158_1D165_1D16F" }, - { "1D162", "31D158_1D165_1D170" }, - { "1D163", "31D158_1D165_1D171" }, - { "1D164", "31D158_1D165_1D172" }, - { "1D1BB", "21D1B9_1D165" }, - { "1D1BC", "21D1BA_1D165" }, - { "1D1BD", "31D1B9_1D165_1D16E" }, - { "1D1BE", "31D1BA_1D165_1D16E" }, - { "1D1BF", "31D1B9_1D165_1D16F" }, - { "1D1C0", "31D1BA_1D165_1D16F" }, - { "2F800", "14E3D" }, - { "2F801", "14E38" }, - { "2F802", "14E41" }, - { "2F803", "120122" }, - { "2F804", "14F60" }, - { "2F805", "14FAE" }, - { "2F806", "14FBB" }, - { "2F807", "15002" }, - { "2F808", "1507A" }, - { "2F809", "15099" }, - { "2F80A", "150E7" }, - { "2F80B", "150CF" }, - { "2F80C", "1349E" }, - { "2F80D", "12063A" }, - { "2F80E", "1514D" }, - { "2F80F", "15154" }, - { "2F810", "15164" }, - { "2F811", "15177" }, - { "2F812", "12051C" }, - { "2F813", "134B9" }, - { "2F814", "15167" }, - { "2F815", "1518D" }, - { "2F816", "12054B" }, - { "2F817", "15197" }, - { "2F818", "151A4" }, - { "2F819", "14ECC" }, - { "2F81A", "151AC" }, - { "2F81B", "151B5" }, - { "2F81C", "1291DF" }, - { "2F81D", "151F5" }, - { "2F81E", "15203" }, - { "2F81F", "134DF" }, - { "2F820", "1523B" }, - { "2F821", "15246" }, - { "2F822", "15272" }, - { "2F823", "15277" }, - { "2F824", "13515" }, - { "2F825", "152C7" }, - { "2F826", "152C9" }, - { "2F827", "152E4" }, - { "2F828", "152FA" }, - { "2F829", "15305" }, - { "2F82A", "15306" }, - { "2F82B", "15317" }, - { "2F82C", "15349" }, - { "2F82D", "15351" }, - { "2F82E", "1535A" }, - { "2F82F", "15373" }, - { "2F830", "1537D" }, - { "2F831", "1537F" }, - { "2F832", "1537F" }, - { "2F833", "1537F" }, - { "2F834", "120A2C" }, - { "2F835", "17070" }, - { "2F836", "153CA" }, - { "2F837", "153DF" }, - { "2F838", "120B63" }, - { "2F839", "153EB" }, - { "2F83A", "153F1" }, - { "2F83B", "15406" }, - { "2F83C", "1549E" }, - { "2F83D", "15438" }, - { "2F83E", "15448" }, - { "2F83F", "15468" }, - { "2F840", "154A2" }, - { "2F841", "154F6" }, - { "2F842", "15510" }, - { "2F843", "15553" }, - { "2F844", "15563" }, - { "2F845", "15584" }, - { "2F846", "15584" }, - { "2F847", "15599" }, - { "2F848", "155AB" }, - { "2F849", "155B3" }, - { "2F84A", "155C2" }, - { "2F84B", "15716" }, - { "2F84C", "15606" }, - { "2F84D", "15717" }, - { "2F84E", "15651" }, - { "2F84F", "15674" }, - { "2F850", "15207" }, - { "2F851", "158EE" }, - { "2F852", "157CE" }, - { "2F853", "157F4" }, - { "2F854", "1580D" }, - { "2F855", "1578B" }, - { "2F856", "15832" }, - { "2F857", "15831" }, - { "2F858", "158AC" }, - { "2F859", "1214E4" }, - { "2F85A", "158F2" }, - { "2F85B", "158F7" }, - { "2F85C", "15906" }, - { "2F85D", "1591A" }, - { "2F85E", "15922" }, - { "2F85F", "15962" }, - { "2F860", "1216A8" }, - { "2F861", "1216EA" }, - { "2F862", "159EC" }, - { "2F863", "15A1B" }, - { "2F864", "15A27" }, - { "2F865", "159D8" }, - { "2F866", "15A66" }, - { "2F867", "136EE" }, - { "2F868", "12136A" }, - { "2F869", "15B08" }, - { "2F86A", "15B3E" }, - { "2F86B", "15B3E" }, - { "2F86C", "1219C8" }, - { "2F86D", "15BC3" }, - { "2F86E", "15BD8" }, - { "2F86F", "15BE7" }, - { "2F870", "15BF3" }, - { "2F871", "121B18" }, - { "2F872", "15BFF" }, - { "2F873", "15C06" }, - { "2F874", "15F33" }, - { "2F875", "15C22" }, - { "2F876", "13781" }, - { "2F877", "15C60" }, - { "2F878", "15C6E" }, - { "2F879", "15CC0" }, - { "2F87A", "15C8D" }, - { "2F87B", "121DE4" }, - { "2F87C", "15D43" }, - { "2F87D", "121DE6" }, - { "2F87E", "15D6E" }, - { "2F87F", "15D6B" }, - { "2F880", "15D7C" }, - { "2F881", "15DE1" }, - { "2F882", "15DE2" }, - { "2F883", "1382F" }, - { "2F884", "15DFD" }, - { "2F885", "15E28" }, - { "2F886", "15E3D" }, - { "2F887", "15E69" }, - { "2F888", "13862" }, - { "2F889", "122183" }, - { "2F88A", "1387C" }, - { "2F88B", "15EB0" }, - { "2F88C", "15EB3" }, - { "2F88D", "15EB6" }, - { "2F88E", "15ECA" }, - { "2F88F", "12A392" }, - { "2F890", "15EFE" }, - { "2F891", "122331" }, - { "2F892", "122331" }, - { "2F893", "18201" }, - { "2F894", "15F22" }, - { "2F895", "15F22" }, - { "2F896", "138C7" }, - { "2F897", "1232B8" }, - { "2F898", "1261DA" }, - { "2F899", "15F62" }, - { "2F89A", "15F6B" }, - { "2F89B", "138E3" }, - { "2F89C", "15F9A" }, - { "2F89D", "15FCD" }, - { "2F89E", "15FD7" }, - { "2F89F", "15FF9" }, - { "2F8A0", "16081" }, - { "2F8A1", "1393A" }, - { "2F8A2", "1391C" }, - { "2F8A3", "16094" }, - { "2F8A4", "1226D4" }, - { "2F8A5", "160C7" }, - { "2F8A6", "16148" }, - { "2F8A7", "1614C" }, - { "2F8A8", "1614E" }, - { "2F8A9", "1614C" }, - { "2F8AA", "1617A" }, - { "2F8AB", "1618E" }, - { "2F8AC", "161B2" }, - { "2F8AD", "161A4" }, - { "2F8AE", "161AF" }, - { "2F8AF", "161DE" }, - { "2F8B0", "161F2" }, - { "2F8B1", "161F6" }, - { "2F8B2", "16210" }, - { "2F8B3", "1621B" }, - { "2F8B4", "1625D" }, - { "2F8B5", "162B1" }, - { "2F8B6", "162D4" }, - { "2F8B7", "16350" }, - { "2F8B8", "122B0C" }, - { "2F8B9", "1633D" }, - { "2F8BA", "162FC" }, - { "2F8BB", "16368" }, - { "2F8BC", "16383" }, - { "2F8BD", "163E4" }, - { "2F8BE", "122BF1" }, - { "2F8BF", "16422" }, - { "2F8C0", "163C5" }, - { "2F8C1", "163A9" }, - { "2F8C2", "13A2E" }, - { "2F8C3", "16469" }, - { "2F8C4", "1647E" }, - { "2F8C5", "1649D" }, - { "2F8C6", "16477" }, - { "2F8C7", "13A6C" }, - { "2F8C8", "1654F" }, - { "2F8C9", "1656C" }, - { "2F8CA", "12300A" }, - { "2F8CB", "165E3" }, - { "2F8CC", "166F8" }, - { "2F8CD", "16649" }, - { "2F8CE", "13B19" }, - { "2F8CF", "16691" }, - { "2F8D0", "13B08" }, - { "2F8D1", "13AE4" }, - { "2F8D2", "15192" }, - { "2F8D3", "15195" }, - { "2F8D4", "16700" }, - { "2F8D5", "1669C" }, - { "2F8D6", "180AD" }, - { "2F8D7", "143D9" }, - { "2F8D8", "16717" }, - { "2F8D9", "1671B" }, - { "2F8DA", "16721" }, - { "2F8DB", "1675E" }, - { "2F8DC", "16753" }, - { "2F8DD", "1233C3" }, - { "2F8DE", "13B49" }, - { "2F8DF", "167FA" }, - { "2F8E0", "16785" }, - { "2F8E1", "16852" }, - { "2F8E2", "16885" }, - { "2F8E3", "12346D" }, - { "2F8E4", "1688E" }, - { "2F8E5", "1681F" }, - { "2F8E6", "16914" }, - { "2F8E7", "13B9D" }, - { "2F8E8", "16942" }, - { "2F8E9", "169A3" }, - { "2F8EA", "169EA" }, - { "2F8EB", "16AA8" }, - { "2F8EC", "1236A3" }, - { "2F8ED", "16ADB" }, - { "2F8EE", "13C18" }, - { "2F8EF", "16B21" }, - { "2F8F0", "1238A7" }, - { "2F8F1", "16B54" }, - { "2F8F2", "13C4E" }, - { "2F8F3", "16B72" }, - { "2F8F4", "16B9F" }, - { "2F8F5", "16BBA" }, - { "2F8F6", "16BBB" }, - { "2F8F7", "123A8D" }, - { "2F8F8", "121D0B" }, - { "2F8F9", "123AFA" }, - { "2F8FA", "16C4E" }, - { "2F8FB", "123CBC" }, - { "2F8FC", "16CBF" }, - { "2F8FD", "16CCD" }, - { "2F8FE", "16C67" }, - { "2F8FF", "16D16" }, - { "2F900", "16D3E" }, - { "2F901", "16D77" }, - { "2F902", "16D41" }, - { "2F903", "16D69" }, - { "2F904", "16D78" }, - { "2F905", "16D85" }, - { "2F906", "123D1E" }, - { "2F907", "16D34" }, - { "2F908", "16E2F" }, - { "2F909", "16E6E" }, - { "2F90A", "13D33" }, - { "2F90B", "16ECB" }, - { "2F90C", "16EC7" }, - { "2F90D", "123ED1" }, - { "2F90E", "16DF9" }, - { "2F90F", "16F6E" }, - { "2F910", "123F5E" }, - { "2F911", "123F8E" }, - { "2F912", "16FC6" }, - { "2F913", "17039" }, - { "2F914", "1701E" }, - { "2F915", "1701B" }, - { "2F916", "13D96" }, - { "2F917", "1704A" }, - { "2F918", "1707D" }, - { "2F919", "17077" }, - { "2F91A", "170AD" }, - { "2F91B", "120525" }, - { "2F91C", "17145" }, - { "2F91D", "124263" }, - { "2F91E", "1719C" }, - { "2F91F", "143AB" }, - { "2F920", "17228" }, - { "2F921", "17235" }, - { "2F922", "17250" }, - { "2F923", "124608" }, - { "2F924", "17280" }, - { "2F925", "17295" }, - { "2F926", "124735" }, - { "2F927", "124814" }, - { "2F928", "1737A" }, - { "2F929", "1738B" }, - { "2F92A", "13EAC" }, - { "2F92B", "173A5" }, - { "2F92C", "13EB8" }, - { "2F92D", "13EB8" }, - { "2F92E", "17447" }, - { "2F92F", "1745C" }, - { "2F930", "17471" }, - { "2F931", "17485" }, - { "2F932", "174CA" }, - { "2F933", "13F1B" }, - { "2F934", "17524" }, - { "2F935", "124C36" }, - { "2F936", "1753E" }, - { "2F937", "124C92" }, - { "2F938", "17570" }, - { "2F939", "12219F" }, - { "2F93A", "17610" }, - { "2F93B", "124FA1" }, - { "2F93C", "124FB8" }, - { "2F93D", "125044" }, - { "2F93E", "13FFC" }, - { "2F93F", "14008" }, - { "2F940", "176F4" }, - { "2F941", "1250F3" }, - { "2F942", "1250F2" }, - { "2F943", "125119" }, - { "2F944", "125133" }, - { "2F945", "1771E" }, - { "2F946", "1771F" }, - { "2F947", "1771F" }, - { "2F948", "1774A" }, - { "2F949", "14039" }, - { "2F94A", "1778B" }, - { "2F94B", "14046" }, - { "2F94C", "14096" }, - { "2F94D", "12541D" }, - { "2F94E", "1784E" }, - { "2F94F", "1788C" }, - { "2F950", "178CC" }, - { "2F951", "140E3" }, - { "2F952", "125626" }, - { "2F953", "17956" }, - { "2F954", "12569A" }, - { "2F955", "1256C5" }, - { "2F956", "1798F" }, - { "2F957", "179EB" }, - { "2F958", "1412F" }, - { "2F959", "17A40" }, - { "2F95A", "17A4A" }, - { "2F95B", "17A4F" }, - { "2F95C", "12597C" }, - { "2F95D", "125AA7" }, - { "2F95E", "125AA7" }, - { "2F95F", "17AAE" }, - { "2F960", "14202" }, - { "2F961", "125BAB" }, - { "2F962", "17BC6" }, - { "2F963", "17BC9" }, - { "2F964", "14227" }, - { "2F965", "125C80" }, - { "2F966", "17CD2" }, - { "2F967", "142A0" }, - { "2F968", "17CE8" }, - { "2F969", "17CE3" }, - { "2F96A", "17D00" }, - { "2F96B", "125F86" }, - { "2F96C", "17D63" }, - { "2F96D", "14301" }, - { "2F96E", "17DC7" }, - { "2F96F", "17E02" }, - { "2F970", "17E45" }, - { "2F971", "14334" }, - { "2F972", "126228" }, - { "2F973", "126247" }, - { "2F974", "14359" }, - { "2F975", "1262D9" }, - { "2F976", "17F7A" }, - { "2F977", "12633E" }, - { "2F978", "17F95" }, - { "2F979", "17FFA" }, - { "2F97A", "18005" }, - { "2F97B", "1264DA" }, - { "2F97C", "126523" }, - { "2F97D", "18060" }, - { "2F97E", "1265A8" }, - { "2F97F", "18070" }, - { "2F980", "12335F" }, - { "2F981", "143D5" }, - { "2F982", "180B2" }, - { "2F983", "18103" }, - { "2F984", "1440B" }, - { "2F985", "1813E" }, - { "2F986", "15AB5" }, - { "2F987", "1267A7" }, - { "2F988", "1267B5" }, - { "2F989", "123393" }, - { "2F98A", "12339C" }, - { "2F98B", "18201" }, - { "2F98C", "18204" }, - { "2F98D", "18F9E" }, - { "2F98E", "1446B" }, - { "2F98F", "18291" }, - { "2F990", "1828B" }, - { "2F991", "1829D" }, - { "2F992", "152B3" }, - { "2F993", "182B1" }, - { "2F994", "182B3" }, - { "2F995", "182BD" }, - { "2F996", "182E6" }, - { "2F997", "126B3C" }, - { "2F998", "182E5" }, - { "2F999", "1831D" }, - { "2F99A", "18363" }, - { "2F99B", "183AD" }, - { "2F99C", "18323" }, - { "2F99D", "183BD" }, - { "2F99E", "183E7" }, - { "2F99F", "18457" }, - { "2F9A0", "18353" }, - { "2F9A1", "183CA" }, - { "2F9A2", "183CC" }, - { "2F9A3", "183DC" }, - { "2F9A4", "126C36" }, - { "2F9A5", "126D6B" }, - { "2F9A6", "126CD5" }, - { "2F9A7", "1452B" }, - { "2F9A8", "184F1" }, - { "2F9A9", "184F3" }, - { "2F9AA", "18516" }, - { "2F9AB", "1273CA" }, - { "2F9AC", "18564" }, - { "2F9AD", "126F2C" }, - { "2F9AE", "1455D" }, - { "2F9AF", "14561" }, - { "2F9B0", "126FB1" }, - { "2F9B1", "1270D2" }, - { "2F9B2", "1456B" }, - { "2F9B3", "18650" }, - { "2F9B4", "1865C" }, - { "2F9B5", "18667" }, - { "2F9B6", "18669" }, - { "2F9B7", "186A9" }, - { "2F9B8", "18688" }, - { "2F9B9", "1870E" }, - { "2F9BA", "186E2" }, - { "2F9BB", "18779" }, - { "2F9BC", "18728" }, - { "2F9BD", "1876B" }, - { "2F9BE", "18786" }, - { "2F9BF", "14D57" }, - { "2F9C0", "187E1" }, - { "2F9C1", "18801" }, - { "2F9C2", "145F9" }, - { "2F9C3", "18860" }, - { "2F9C4", "18863" }, - { "2F9C5", "127667" }, - { "2F9C6", "188D7" }, - { "2F9C7", "188DE" }, - { "2F9C8", "14635" }, - { "2F9C9", "188FA" }, - { "2F9CA", "134BB" }, - { "2F9CB", "1278AE" }, - { "2F9CC", "127966" }, - { "2F9CD", "146BE" }, - { "2F9CE", "146C7" }, - { "2F9CF", "18AA0" }, - { "2F9D0", "18AED" }, - { "2F9D1", "18B8A" }, - { "2F9D2", "18C55" }, - { "2F9D3", "127CA8" }, - { "2F9D4", "18CAB" }, - { "2F9D5", "18CC1" }, - { "2F9D6", "18D1B" }, - { "2F9D7", "18D77" }, - { "2F9D8", "127F2F" }, - { "2F9D9", "120804" }, - { "2F9DA", "18DCB" }, - { "2F9DB", "18DBC" }, - { "2F9DC", "18DF0" }, - { "2F9DD", "1208DE" }, - { "2F9DE", "18ED4" }, - { "2F9DF", "18F38" }, - { "2F9E0", "1285D2" }, - { "2F9E1", "1285ED" }, - { "2F9E2", "19094" }, - { "2F9E3", "190F1" }, - { "2F9E4", "19111" }, - { "2F9E5", "12872E" }, - { "2F9E6", "1911B" }, - { "2F9E7", "19238" }, - { "2F9E8", "192D7" }, - { "2F9E9", "192D8" }, - { "2F9EA", "1927C" }, - { "2F9EB", "193F9" }, - { "2F9EC", "19415" }, - { "2F9ED", "128BFA" }, - { "2F9EE", "1958B" }, - { "2F9EF", "14995" }, - { "2F9F0", "195B7" }, - { "2F9F1", "128D77" }, - { "2F9F2", "149E6" }, - { "2F9F3", "196C3" }, - { "2F9F4", "15DB2" }, - { "2F9F5", "19723" }, - { "2F9F6", "129145" }, - { "2F9F7", "12921A" }, - { "2F9F8", "14A6E" }, - { "2F9F9", "14A76" }, - { "2F9FA", "197E0" }, - { "2F9FB", "12940A" }, - { "2F9FC", "14AB2" }, - { "2F9FD", "129496" }, - { "2F9FE", "1980B" }, - { "2F9FF", "1980B" }, - { "2FA00", "19829" }, - { "2FA01", "1295B6" }, - { "2FA02", "198E2" }, - { "2FA03", "14B33" }, - { "2FA04", "19929" }, - { "2FA05", "199A7" }, - { "2FA06", "199C2" }, - { "2FA07", "199FE" }, - { "2FA08", "14BCE" }, - { "2FA09", "129B30" }, - { "2FA0A", "19B12" }, - { "2FA0B", "19C40" }, - { "2FA0C", "19CFD" }, - { "2FA0D", "14CCE" }, - { "2FA0E", "14CED" }, - { "2FA0F", "19D67" }, - { "2FA10", "12A0CE" }, - { "2FA11", "14CF8" }, - { "2FA12", "12A105" }, - { "2FA13", "12A20E" }, - { "2FA14", "12A291" }, - { "2FA15", "19EBB" }, - { "2FA16", "14D56" }, - { "2FA17", "19EF9" }, - { "2FA18", "19EFE" }, - { "2FA19", "19F05" }, - { "2FA1A", "19F0F" }, - { "2FA1B", "19F16" }, - { "2FA1C", "19F3B" }, - { "2FA1D", "12A600" }, -}; - -// global constructor - -static struct unicode_decompose_init { - unicode_decompose_init(); -} _unicode_decompose_init; - -unicode_decompose_init::unicode_decompose_init() { - for (unsigned int i = 0; - i < sizeof(unicode_decompose_list)/sizeof(unicode_decompose_list[0]); - i++) { - unicode_decompose *dec = new unicode_decompose[1]; - dec->value = (char *)unicode_decompose_list[i].value; - unicode_decompose_table.define(unicode_decompose_list[i].key, dec); - } -} - -const char *decompose_unicode(const char *s) -{ - unicode_decompose *result = unicode_decompose_table.lookup(s); - return result ? result->value : 0; -} diff --git a/contrib/groff/src/xditview/ChangeLog b/contrib/groff/src/xditview/ChangeLog deleted file mode 100644 index a63d984..0000000 --- a/contrib/groff/src/xditview/ChangeLog +++ /dev/null @@ -1,520 +0,0 @@ -Version 1.19 released -===================== - -2003-03-03 Werner LEMBERG - - * Imakefile.in (extraclean): Added gxditview._man. - -2003-01-28 Werner LEMBERG - - * Imakefile.in (SEP): New variable; set to @PATH_SEPARATOR@. - (GROFF_FONTPATH): Use it. - -2003-01-07 Werner LEMBERG - - * DviChar.c (Adobe_Symbol_map): Add `sqrt'. - -2003-01-06 Werner LEMBERG - - * DviChar.c (Adobe_Symbol_map): Add `integral'. - -2002-12-29 Werner LEMBERG - - * DviChar.c (ISO_8859_1_map): Remove `ap' and `eq'. - -2002-12-20 Werner LEMBERG - - * DviChar.c (Adobe_Symbol_map): Don't include `or'. - * draw.c (AdjustCharDeltas): Apply correction only if nadj > 1. - (DoCharacter): Call FlushCharCache if font size and font number - differ. - Reset `dw->dvi.cache.adjustable' properly. - -2002-12-09 Werner LEMBERG - - * DviChar.c (ISO_8859_1_map): Use `tno' symbol instead of `no'. - -2002-12-01 Werner LEMBERG - - * Imakefile.in: Use `InstallAppDefaultsLong' instead of - `InstallAppDefaults' to make it work if build directory isn't - $srcdir. - -2002-11-24 Werner LEMBERG - - * DviChar.c (Adobe_Symbol_map): Add glyph `braceex'. - -2002-11-14 Werner LEMBERG - - * DviChar.c (ISO_8859_1_map): Don't include `or'. - -Version 1.18.1 released -======================= - -2002-09-16 Werner LEMBERG - - * Imakefile.in (GROFF_LOCALFONTDIR): New variable. - (GROFF_FONTPATH): Use it. - Remove /usr/local/lib/font. - -Version 1.18.0 released -======================= - -2002-06-22 Werner LEMBERG - - * gxditview.c (main): Handle `-help' and `--help' correctly. - -2002-06-17 Colin Watson - - * Imakefile.in: s/@top_builddir@/@groff_top_builddir@/. - -2002-04-06 Werner LEMBERG - - * DviChar.c (ISO_8859_1_map, Adobe_Symbol_map): Remove all - characters > 0x80. - * parse.c (ParseInput): Ignore `m' command. - (ParseDrawFunction): Don't move for unknown drawing functions. - Don't move for `f' drawing function. - -2002-03-25 Werner LEMBERG - - * DviChar.c (ISO_8859_1_map): Use `t+-', `tmu', and `tdi' symbols - instead of `+-', `mu', and `di', respectively. - -2002-02-23 Werner LEMBERG - - * DviChar.c (ISO_8859_1_map): Add `mc' symbol. - -2001-09-22 Werner LEMBERG - - * Imakefile.in: Redefine `ProgramTargetHelper' as - `ProgramTargetHelperNoMan' and add a call to `InstallManPageLong' - to make the `install.man' target work if the build directory isn't - $srcdir. - -Version 1.17.2 released -======================= - -Version 1.17.1 released -======================= - -2001-04-21 Albert Chin-A-Young - - * Imakefile.in: Add support for recent HP architectures. - -Version 1.17 released -===================== - -2001-01-04 Rob Daasch - - * parse.c (ParseInput): Added 'F' to command switch to swallow - filename strings as ignored comments. - -2000-12-02 Werner LEMBERG - - * device.c (find_file): Remove home directory in search path. - -2000-11-14 Werner LEMBERG - - * device.c (open_device_file): Remove `path' parameter. - (find_file): Construct font path similar to groff: First the contents - of GROFF_FONT_PATH, then the home directory, and finally the default - font path. - * Imakefile.in: Fix GROFF_DATAPROGRAMDIR and GROFF_FONTPATH. - -2000-10-23 Werner LEMBERG - - Change installation structure for data files from .../groff/... to - .../groff//... to be conform with other GNU - programs. - - * Imakefile.in: Implement it. - -Version 1.16.1 released -======================= - -Version 1.16 released -===================== - -2000-05-18 Werner LEMBERG - - * DviChar.c: Adding `cq' as an alias for "'" in latin-1 map. - -2000-05-03 Werner LEMBERG - - * DviChar.c: Adding `dq' as an alias for `"' in latin-1 map. - -2000-04-28 Werner LEMBERG - - * DviChar.c: Replacing `md' glyph name with `pc' in latin-1 map to - make it distinct from the `md' glyph in the symbol font. - -2000-03-03 Werner LEMBERG - - * Imakefile replaced with Imakefile.in which will be configured by - the main configure script of groff. This will set the correct font - path, and it will make it possible to build xditview in a directory - different from $srcdir. - -2000-03-01 Colin Phipps - - * Dvi.c (OpenFile): Use tmpdir() for security reasons. - * xtotroff.c (MapFont): Avoid race while opening file. - -2000-02-06 Werner LEMBERG - - * Imakefile: Adapted to new directory structure. - - * README: Updated. - -Version 1.15 released -===================== - -1999-12-21 Werner LEMBERG - - * README: Fixed ftp GNU address. - -1999-12-13 Werner LEMBERG - - * device.c: Use extern declarations of strtok(), strchr(), and - getenv() only if not defined as macros. - -1999-11-18 Larry Jones - - * xditview.c: Add fallback_resources to allow running without - access to the app-defaults file. - - * Imakefile: Added rule to create app-defaults to a C header file. - - * GXditview-ad.h: New file containing fallback default resources. - - * ad2c: New file to do the app-defaults -> C header file - conversion. - -1999-10-27 Larry Jones - - * font.c (DisposeFontSizes): If there's a problem loading a font, - xditview will fall-back and use the default font, but it hasn't - checked before unloading fonts which could result in unloading the - default font (possibly multiple times) and then X errors. - -1999-09-13 Werner LEMBERG - - * Imakefile (extraclean): Added Makefile. - - * xditview.c (main, MakePrompt): Fixing compilation warnings. - - * TODO: Imakefile should be replaced with a configure script. - -1999-09-13 Werner LEMBERG - - * Makefile: Removed. - -1999-09-12 Werner LEMBERG - - * Imakefile (GROFF_FONTPATH): Another addition. - - * device.c (FONTPATH): Update to match current groff version. - -1999-09-11 Larry Jones - - * Imakefile (GROFF_LIBDIR, GROFF_FONTPATH): Update to match - current groff version. - - * Dvi.c (Realize, Destroy), DviP.h, draw.c (setFillGC), gray*.bm: - Allow 8 levels of gray rather than just 1. - - * draw.c (DrawFilledCircle, DrawFilledEllipse, DrawFilledPolygon): - Draw outlines to prevent gaps between abutting figures. - -1999-05-27 Werner LEMBERG - - * xtotroff.c (usage): Fixed typo. - -Mon Sep 11 10:40:33 1995 James Clark - - * device.c (INT_MIN, INT_MAX): Don't define if already defined. - -Mon Aug 8 11:14:11 1994 James Clark (jjc@jclark.com) - - * DviChar.c (Adobe_Symbol_map): Use \(nb for notsubset. - -Tue Apr 19 04:41:16 1994 James Clark (jjc@jclark.com) - - * Dvi.c (resources): Change default for background and foreground - to "XtDefaultBackground" and "XtDefaultForeground". - -Sat Feb 12 10:38:47 1994 James Clark (jjc@jclark.com) - - * DviChar.c (Adobe_Symbol_map): Rename radicalex to rn. - -Thu May 27 20:30:12 1993 James Clark (jjc@jclark.com) - - * device.c (isascii): Define if necessary. - (canonicalize_name): Cast argument to isdigit() to unsigned char. - -Thu Apr 29 18:36:57 1993 James Clark (jjc at jclark.com) - - * xditview.c: Include . - (NewFile): Don't declare rindex(). Use strrchr() rather than - rindex(). - -Tue Mar 30 15:12:09 1993 James Clark (jjc at jclark) - - * draw.c (charExists): Check that fi->per_char is not NULL. - -Sat Dec 12 17:42:40 1992 James Clark (jjc at jclark) - - * Dvi.c (SetGeometry): Cast XtMakeGeometryRequest arguments. - - * draw.c (DrawPolygon, DrawFilledPolygon): Cast Xtfree argument. - - * font.c (DisposeFontSizes): Add declaration. - - * draw.c (FakeCharacter): Add declaration. - -Wed Oct 28 13:24:00 1992 James Clark (jjc at jclark) - - * Imakefile (install.dev): Deleted. - (fonts): New target. - -Mon Oct 12 10:50:44 1992 James Clark (jjc at jclark) - - * Imakefile (install.dev): Say when we're installing devX*-12. - - * Imakefile (install.dev): Depends on DESC and FontMap. - -Thu Oct 1 20:03:45 1992 James Clark (jjc at jclark) - - * xditview.c (Syntax): Mention -filename option. - -Sat Aug 15 12:56:39 1992 James Clark (jjc at jclark) - - * GXditview.ad: Bind space and return to NextPage. Bind backspace - and delete to previous page. - - * DviChar.c (Adobe_Symbol_map): Add `an'. - - * DviChar.c (Adobe_Symbol_map): Add arrowvertex, arrowverttp, and - arrowvertbt. - -Mon Aug 10 11:54:27 1992 James Clark (jjc at jclark) - - * FontMap: Add m/p fields to the fonts names. - -Sat Aug 8 12:00:28 1992 James Clark (jjc at jclark) - - * DESC: Leave font positions 5-9 blank. - -Tue Jul 28 11:37:05 1992 James Clark (jjc at jclark) - - * Imakefile: Don't use gendef. Pass definition of FONTPATH using - DEFINES. - (path.h): Deleted. - (device.c): Don't include path.h. Provide default definition of - FONTPATH. - -Mon Jul 6 14:06:53 1992 James Clark (jjc at jclark) - - * Imakefile: Don't install tmac.X and tmac.Xps. - * tmac.X, tmac.Xps: Moved to ../macros. - - * Imakefile: Don't install eqnchar. - * eqnchar: Deleted. - -Sun Jun 14 12:55:02 1992 James Clark (jjc@jclark) - - * tmac.Xps: Handle OE, oe, lq, rq. - * draw.c (FakeCharacter): Don't handle these. - - * draw.c (FakeCharacter): Don't handle f/. - -Mon Jun 8 11:46:37 1992 James Clark (jjc@jclark) - - * tmac.X: Translate char160 to space. - -Sun Jun 7 14:39:53 1992 James Clark (jjc@jclark) - - * tmac.X: Do `mso tmac.psic' before restoring compatibility mode. - - * tmac.X: Add \(OE, \(oe, \(ah, \(ao, \(ho. - - * tmac.Xps: Make it work in compatibility mode. - Redo existing character definitions with .Xps-char. - Add more character definitions. - (Xps-char): New macro. - -Sat Jun 6 21:46:03 1992 James Clark (jjc@jclark) - - * DviChar.c (Adobe_Symbol_map): Add +h, +f, +p, Fn, lz. - * tmac.X: Add \(bq, \(Bq, \(aq. - * tmac.Xps: Handle \(aq, \(bq, \(Bq, \(Fn. - -Wed Jun 3 11:11:15 1992 James Clark (jjc@jclark) - - * DviChar.c (Adobe_Symbol_map): Add wp. - -Tue Apr 21 09:21:59 1992 James Clark (jjc at jclark) - - * GXditview.ad: Bind n, p, q keys to NextPage, PreviousPage and - Quit actions. - - * xditview.c (RerasterizeAction): New function. - (xditview_actions): Add RerasterizeAction. - * GXditview.ad: Bind r key to Rerasterize action. - -Fri Apr 17 08:25:36 1992 James Clark (jjc at jclark) - - * xditview.c: Add -filename option. - (main): Copy any -filename argument into current_file_name. - -Mon Mar 16 10:21:58 1992 James Clark (jjc at jclark) - - * tmac.X: Load tmac.pspic. - -Sun Mar 8 11:27:19 1992 James Clark (jjc at jclark) - - * Lex.c (GetLine, GetWord, GetNumber): Rewrite. - -Sat Oct 12 22:58:52 1991 James Clark (jjc at jclark) - - * Dvi.c (SetDevice): If the size change request is refused but a - larger geometry is offered, request that. - -Wed Oct 9 12:27:48 1991 James Clark (jjc at jclark) - - * font.c (InstallFontSizes): Ignore FontNameAverageWidth component. - - * Dvi.c (default_font_map): Add `adobe' to font names to avoid - ambiguity. - - * FontMap: New file. - * FontMap.X100, FontMap.X75: Deleted. - * xtotroff.c (main, usage): Add -s and -r options. - (MapFont): Change the font pattern to have the selected resolution and - size. - * Imakefile (install.dev): Use FontMap and supply appropriate -s - and -r options. - - * xtotroff.c (MapFont): Check for ambiguity by comparing canonicalized - font names. - - * DviP.h (DviFontList): Add initialized and scalable members. - (font.c): Add support for scalable fonts based on R5 xditview. - - * DviChar.c: Use xmalloc rather than malloc. - * xditview.c (xmalloc): New function. - * xtotroff.c (xmalloc): New function. - * other files: Use XtMalloc and XtFree instead of malloc and free. - -Thu Aug 29 20:15:31 1991 James Clark (jjc at jclark) - - * draw.c (setGC): Do multiplication in floating point to avoid - overflow. - -Tue Aug 13 12:04:41 1991 James Clark (jjc at jclark) - - * draw.c (FakeCharacter): Remove casts in defintion of pack2. - -Tue Jul 30 11:42:39 1991 James Clark (jjc at jclark) - - * tmac.Xps: New file. - * Imakefile (install): Install tmac.Xps. - -Tue Jul 2 09:31:37 1991 James Clark (jjc at jclark) - - * xtotroff.c (main): Pass argv[0] to usage(). - -Sun Jun 30 12:34:06 1991 James Clark (jjc at jclark) - - * xtotroff.c (MapFont): Handle the case where XLoadQueryFont - returns NULL. - -Sat Jun 29 12:32:52 1991 James Clark (jjc at jclark) - - * Imakefile: Use ../gendef to generate path.h. - -Sun Jun 16 13:26:34 1991 James Clark (jjc at jclark) - - * Imakefile (depend.o): Change to device.o. - -Sun Jun 2 12:17:56 1991 James Clark (jjc at jclark) - - * Imakefile: Remove spaces from the beginning of variable - assignment lines. - -Sun May 26 14:14:01 1991 James Clark (jjc at jclark) - - * xditview.c (Syntax): Update. - - * Dvi.c (DviSaveToFile, SaveToFile): New functions. - (FindPage): Check that we're not readingTmp before checking for - end of file of normal input file. - (ClassPartInitialize): New function. - * Dvi.h: Add declaration of DviSaveToFile. - * DviP.h: Add save method to DviClassPart. Declare - InheritSaveToFile. - * xditview.c (DoPrint, Print, PrintAction): New functions. - * xditview.c: Add print menu entry. - * xditview.c: Provide printCommand application resource. - * lex.c: Don't output EOF to temporary file. - - * Dvi.c (QueryGeometry): Check request->request_mode. - - * Dvi.c (SetDevice): New function. - (SetDeviceResolution): Deleted. - - * Dvi.c: Add resolution resource. - * DviP.h: Add definitions of XtNResolution and XtCResolution. - * xditview.c: Add -resolution argument. - * GXditview.ad: Add default for GXditview.height. - * Dvi.c (Initialize, SetDevice): Use default_resolution. - - * Dvi.c: Make MY_HEIGHT and MY_WIDTH use the paperlength and - paperwidth commands in the DESC file. - - * Dvi.c: Add SS font to default font map. - - * draw.c: Rewritten so as not to assume device and display - resolution is the same. - * DviP.h: Include device.h. Add device_font member to DviFontList. - Add adjustable array to DviCharCache. Add text_x_width, - text_device_width, word_flag, device_font, device_font_number, - device, native, device_resolution, display_resolution, - paperlength, paperwidth, scale_factor, sizescale members. - * Dvi.c (Initialize): Initialize new variable used by draw.c. - (Destroy): Call device_destroy. - * font.c (MaxFontPosition): New function. - (LookupFontSizeBySize): Handle sizescale. - (InstallFont): Load the device font. - (ForgetFonts): New function. - (QueryDeviceFont): New function. - * parse.c (ParseInput): Handle t and u commands. Split off - character output into draw.c. - (ParseDeviceControl): Ignore res command. Use the device argument - to the T command. - - * font.c (MapXNameToDviName): Ifdefed out. - - * path.h: New file. - * device.c, device.h: New files. - - * DviChar.c: Add entries for lB, rB, oq, lC, rC, md. - - * INSTALL: New file. - - * libxdvi: Merged into main directory. - * xtotroff.c, xditview.c: Change includes accordingly. - - * devX75, devX100: Merged into main directory. - * xditview.man: Renamed to gxditview.man. - - * Xditview.ad: Renamed to GXditview.ad. - * xditview.c (main): Use class of GXditview rather than xditview. - - * Imakefile: New file. - * Makefile: Deleted. - - * xtotroff.c (MapFont): Unlink output file before opening it. - - * Started separate ChangeLog. diff --git a/contrib/groff/src/xditview/DESC b/contrib/groff/src/xditview/DESC deleted file mode 100644 index 172170c..0000000 --- a/contrib/groff/src/xditview/DESC +++ /dev/null @@ -1,9 +0,0 @@ -styles R I B BI -fonts 6 0 0 0 0 0 S -sizes 8 10 12 14 18 24 0 -res 75 -X11 -hor 1 -vert 1 -unitwidth 10 -postpro gxditview diff --git a/contrib/groff/src/xditview/Dvi.c b/contrib/groff/src/xditview/Dvi.c deleted file mode 100644 index 08eb810..0000000 --- a/contrib/groff/src/xditview/Dvi.c +++ /dev/null @@ -1,573 +0,0 @@ -#ifndef SABER -#ifndef lint -static char Xrcsid[] = "$XConsortium: Dvi.c,v 1.9 89/12/10 16:12:25 rws Exp $"; -#endif /* lint */ -#endif /* SABER */ - -/* - * Dvi.c - Dvi display widget - * - */ - -#define XtStrlen(s) ((s) ? strlen(s) : 0) - - /* The following are defined for the reader's convenience. Any - Xt..Field macro in this code just refers to some field in - one of the substructures of the WidgetRec. */ - -#include -#include -#include -#include -#include -#include "DviP.h" - -/**************************************************************** - * - * Full class record constant - * - ****************************************************************/ - -/* Private Data */ - -static char default_font_map[] = "\ -TR -adobe-times-medium-r-normal--*-100-*-*-*-*-iso8859-1\n\ -TI -adobe-times-medium-i-normal--*-100-*-*-*-*-iso8859-1\n\ -TB -adobe-times-bold-r-normal--*-100-*-*-*-*-iso8859-1\n\ -TBI -adobe-times-bold-i-normal--*-100-*-*-*-*-iso8859-1\n\ -CR -adobe-courier-medium-r-normal--*-100-*-*-*-*-iso8859-1\n\ -CI -adobe-courier-medium-o-normal--*-100-*-*-*-*-iso8859-1\n\ -CB -adobe-courier-bold-r-normal--*-100-*-*-*-*-iso8859-1\n\ -CBI -adobe-courier-bold-o-normal--*-100-*-*-*-*-iso8859-1\n\ -HR -adobe-helvetica-medium-r-normal--*-100-*-*-*-*-iso8859-1\n\ -HI -adobe-helvetica-medium-o-normal--*-100-*-*-*-*-iso8859-1\n\ -HB -adobe-helvetica-bold-r-normal--*-100-*-*-*-*-iso8859-1\n\ -HBI -adobe-helvetica-bold-o-normal--*-100-*-*-*-*-iso8859-1\n\ -NR -adobe-new century schoolbook-medium-r-normal--*-100-*-*-*-*-iso8859-1\n\ -NI -adobe-new century schoolbook-medium-i-normal--*-100-*-*-*-*-iso8859-1\n\ -NB -adobe-new century schoolbook-bold-r-normal--*-100-*-*-*-*-iso8859-1\n\ -NBI -adobe-new century schoolbook-bold-i-normal--*-100-*-*-*-*-iso8859-1\n\ -S -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\n\ -SS -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\n\ -"; - -#define offset(field) XtOffset(DviWidget, field) - -#define MY_WIDTH(dw) ((int)(dw->dvi.paperwidth * dw->dvi.scale_factor + .5)) -#define MY_HEIGHT(dw) ((int)(dw->dvi.paperlength * dw->dvi.scale_factor + .5)) - -static XtResource resources[] = { - {XtNfontMap, XtCFontMap, XtRString, sizeof (char *), - offset(dvi.font_map_string), XtRString, default_font_map}, - {XtNforeground, XtCForeground, XtRPixel, sizeof (unsigned long), - offset(dvi.foreground), XtRString, "XtDefaultForeground"}, - {XtNbackground, XtCBackground, XtRPixel, sizeof (unsigned long), - offset(dvi.background), XtRString, "XtDefaultBackground"}, - {XtNpageNumber, XtCPageNumber, XtRInt, sizeof (int), - offset(dvi.requested_page), XtRString, "1"}, - {XtNlastPageNumber, XtCLastPageNumber, XtRInt, sizeof (int), - offset (dvi.last_page), XtRString, "0"}, - {XtNfile, XtCFile, XtRFile, sizeof (FILE *), - offset (dvi.file), XtRFile, (char *) 0}, - {XtNseek, XtCSeek, XtRBoolean, sizeof (Boolean), - offset(dvi.seek), XtRString, "false"}, - {XtNfont, XtCFont, XtRFontStruct, sizeof (XFontStruct *), - offset(dvi.default_font), XtRString, "xtdefaultfont"}, - {XtNbackingStore, XtCBackingStore, XtRBackingStore, sizeof (int), - offset(dvi.backing_store), XtRString, "default"}, - {XtNnoPolyText, XtCNoPolyText, XtRBoolean, sizeof (Boolean), - offset(dvi.noPolyText), XtRString, "false"}, - {XtNresolution, XtCResolution, XtRInt, sizeof(int), - offset(dvi.default_resolution), XtRString, "75"}, -}; - -#undef offset - -static void ClassInitialize (); -static void ClassPartInitialize(); -static void Initialize(), Realize (), Destroy (), Redisplay (); -static Boolean SetValues (), SetValuesHook (); -static XtGeometryResult QueryGeometry (); -static void ShowDvi (); -static void CloseFile (), OpenFile (); -static void FindPage (); - -static void SaveToFile (); - -DviClassRec dviClassRec = { -{ - &widgetClassRec, /* superclass */ - "Dvi", /* class_name */ - sizeof(DviRec), /* size */ - ClassInitialize, /* class_initialize */ - ClassPartInitialize, /* class_part_initialize */ - FALSE, /* class_inited */ - Initialize, /* initialize */ - NULL, /* initialize_hook */ - Realize, /* realize */ - NULL, /* actions */ - 0, /* num_actions */ - resources, /* resources */ - XtNumber(resources), /* resource_count */ - NULLQUARK, /* xrm_class */ - FALSE, /* compress_motion */ - TRUE, /* compress_exposure */ - TRUE, /* compress_enterleave */ - FALSE, /* visible_interest */ - Destroy, /* destroy */ - NULL, /* resize */ - Redisplay, /* expose */ - SetValues, /* set_values */ - SetValuesHook, /* set_values_hook */ - NULL, /* set_values_almost */ - NULL, /* get_values_hook */ - NULL, /* accept_focus */ - XtVersion, /* version */ - NULL, /* callback_private */ - 0, /* tm_table */ - QueryGeometry, /* query_geometry */ - NULL, /* display_accelerator */ - NULL /* extension */ -},{ - SaveToFile, /* save */ -}, -}; - -WidgetClass dviWidgetClass = (WidgetClass) &dviClassRec; - -static void ClassInitialize () -{ - XtAddConverter( XtRString, XtRBackingStore, XmuCvtStringToBackingStore, - NULL, 0 ); -} - -/**************************************************************** - * - * Private Procedures - * - ****************************************************************/ - -/* ARGSUSED */ -static void Initialize(request, new) - Widget request, new; -{ - DviWidget dw = (DviWidget) new; - - dw->dvi.current_page = 0; - dw->dvi.font_map = 0; - dw->dvi.cache.index = 0; - dw->dvi.text_x_width = 0; - dw->dvi.text_device_width = 0; - dw->dvi.word_flag = 0; - dw->dvi.file = 0; - dw->dvi.tmpFile = 0; - dw->dvi.state = 0; - dw->dvi.readingTmp = 0; - dw->dvi.cache.char_index = 0; - dw->dvi.cache.font_size = -1; - dw->dvi.cache.font_number = -1; - dw->dvi.cache.adjustable[0] = 0; - dw->dvi.file_map = 0; - dw->dvi.fonts = 0; - dw->dvi.seek = False; - dw->dvi.device_resolution = dw->dvi.default_resolution; - dw->dvi.display_resolution = dw->dvi.default_resolution; - dw->dvi.paperlength = dw->dvi.default_resolution*11; - dw->dvi.paperwidth = (dw->dvi.default_resolution*8 - + dw->dvi.default_resolution/2); - dw->dvi.scale_factor = 1.0; - dw->dvi.sizescale = 1; - dw->dvi.line_thickness = -1; - dw->dvi.line_width = 1; - dw->dvi.fill = DVI_FILL_MAX; - dw->dvi.device_font = 0; - dw->dvi.device_font_number = -1; - dw->dvi.device = 0; - dw->dvi.native = 0; -} - -#include "gray1.bm" -#include "gray2.bm" -#include "gray3.bm" -#include "gray4.bm" -#include "gray5.bm" -#include "gray6.bm" -#include "gray7.bm" -#include "gray8.bm" - -static void -Realize (w, valueMask, attrs) - Widget w; - XtValueMask *valueMask; - XSetWindowAttributes *attrs; -{ - DviWidget dw = (DviWidget) w; - XGCValues values; - - if (dw->dvi.backing_store != Always + WhenMapped + NotUseful) { - attrs->backing_store = dw->dvi.backing_store; - *valueMask |= CWBackingStore; - } - XtCreateWindow (w, (unsigned)InputOutput, (Visual *) CopyFromParent, - *valueMask, attrs); - values.foreground = dw->dvi.foreground; - values.cap_style = CapRound; - values.join_style = JoinRound; - values.line_width = dw->dvi.line_width; - dw->dvi.normal_GC = XCreateGC (XtDisplay (w), XtWindow (w), - GCForeground|GCCapStyle|GCJoinStyle - |GCLineWidth, - &values); - dw->dvi.gray[0] = XCreateBitmapFromData(XtDisplay (w), XtWindow (w), - gray1_bits, - gray1_width, gray1_height); - dw->dvi.gray[1] = XCreateBitmapFromData(XtDisplay (w), XtWindow (w), - gray2_bits, - gray2_width, gray2_height); - dw->dvi.gray[2] = XCreateBitmapFromData(XtDisplay (w), XtWindow (w), - gray3_bits, - gray3_width, gray3_height); - dw->dvi.gray[3] = XCreateBitmapFromData(XtDisplay (w), XtWindow (w), - gray4_bits, - gray4_width, gray4_height); - dw->dvi.gray[4] = XCreateBitmapFromData(XtDisplay (w), XtWindow (w), - gray5_bits, - gray5_width, gray5_height); - dw->dvi.gray[5] = XCreateBitmapFromData(XtDisplay (w), XtWindow (w), - gray6_bits, - gray6_width, gray6_height); - dw->dvi.gray[6] = XCreateBitmapFromData(XtDisplay (w), XtWindow (w), - gray7_bits, - gray7_width, gray7_height); - dw->dvi.gray[7] = XCreateBitmapFromData(XtDisplay (w), XtWindow (w), - gray8_bits, - gray8_width, gray8_height); - values.background = dw->dvi.background; - values.stipple = dw->dvi.gray[5]; - dw->dvi.fill_GC = XCreateGC (XtDisplay (w), XtWindow (w), - GCForeground|GCBackground|GCStipple, - &values); - - dw->dvi.fill_type = 9; - - if (dw->dvi.file) - OpenFile (dw); - ParseFontMap (dw); -} - -static void -Destroy(w) - Widget w; -{ - DviWidget dw = (DviWidget) w; - - XFreeGC (XtDisplay (w), dw->dvi.normal_GC); - XFreeGC (XtDisplay (w), dw->dvi.fill_GC); - XFreePixmap (XtDisplay (w), dw->dvi.gray[0]); - XFreePixmap (XtDisplay (w), dw->dvi.gray[1]); - XFreePixmap (XtDisplay (w), dw->dvi.gray[2]); - XFreePixmap (XtDisplay (w), dw->dvi.gray[3]); - XFreePixmap (XtDisplay (w), dw->dvi.gray[4]); - XFreePixmap (XtDisplay (w), dw->dvi.gray[5]); - XFreePixmap (XtDisplay (w), dw->dvi.gray[6]); - XFreePixmap (XtDisplay (w), dw->dvi.gray[7]); - DestroyFontMap (dw->dvi.font_map); - DestroyFileMap (dw->dvi.file_map); - device_destroy (dw->dvi.device); -} - -/* - * Repaint the widget window - */ - -/* ARGSUSED */ -static void -Redisplay(w, event, region) - Widget w; - XEvent *event; - Region region; -{ - DviWidget dw = (DviWidget) w; - XRectangle extents; - - XClipBox (region, &extents); - dw->dvi.extents.x1 = extents.x; - dw->dvi.extents.y1 = extents.y; - dw->dvi.extents.x2 = extents.x + extents.width; - dw->dvi.extents.y2 = extents.y + extents.height; - ShowDvi (dw); -} - -/* - * Set specified arguments into widget - */ -/* ARGSUSED */ -static Boolean -SetValues (current, request, new) - DviWidget current, request, new; -{ - Boolean redisplay = FALSE; - char *new_map; - int cur, req; - - if (current->dvi.font_map_string != request->dvi.font_map_string) { - new_map = XtMalloc (strlen (request->dvi.font_map_string) + 1); - if (new_map) { - redisplay = TRUE; - strcpy (new_map, request->dvi.font_map_string); - new->dvi.font_map_string = new_map; - if (current->dvi.font_map_string) - XtFree (current->dvi.font_map_string); - current->dvi.font_map_string = 0; - ParseFontMap (new); - } - } - - req = request->dvi.requested_page; - cur = current->dvi.requested_page; - if (cur != req) { - if (!request->dvi.file) - req = 0; - else { - if (req < 1) - req = 1; - if (current->dvi.last_page != 0 && - req > current->dvi.last_page) - req = current->dvi.last_page; - } - if (cur != req) - redisplay = TRUE; - new->dvi.requested_page = req; - if (current->dvi.last_page == 0 && req > cur) - FindPage (new); - } - - return redisplay; -} - -/* - * use the set_values_hook entry to check when - * the file is set - */ - -static Boolean -SetValuesHook (dw, args, num_argsp) - DviWidget dw; - ArgList args; - Cardinal *num_argsp; -{ - Cardinal i; - - for (i = 0; i < *num_argsp; i++) { - if (!strcmp (args[i].name, XtNfile)) { - CloseFile (dw); - OpenFile (dw); - return TRUE; - } - } - return FALSE; -} - -static void CloseFile (dw) - DviWidget dw; -{ - if (dw->dvi.tmpFile) - fclose (dw->dvi.tmpFile); - ForgetPagePositions (dw); -} - -static void OpenFile (dw) - DviWidget dw; -{ - dw->dvi.tmpFile = 0; - if (!dw->dvi.seek) - dw->dvi.tmpFile = tmpfile(); - dw->dvi.requested_page = 1; - dw->dvi.last_page = 0; -} - -static XtGeometryResult -QueryGeometry (w, request, geometry_return) - Widget w; - XtWidgetGeometry *request, *geometry_return; -{ - XtGeometryResult ret; - DviWidget dw = (DviWidget) w; - - ret = XtGeometryYes; - if (((request->request_mode & CWWidth) - && request->width < MY_WIDTH(dw)) - || ((request->request_mode & CWHeight) - && request->height < MY_HEIGHT(dw))) - ret = XtGeometryAlmost; - geometry_return->width = MY_WIDTH(dw); - geometry_return->height = MY_HEIGHT(dw); - geometry_return->request_mode = CWWidth|CWHeight; - return ret; -} - -SetDevice (dw, name) - DviWidget dw; - char *name; -{ - XtWidgetGeometry request, reply; - XtGeometryResult ret; - - ForgetFonts (dw); - dw->dvi.device = device_load (name); - if (!dw->dvi.device) - return; - dw->dvi.sizescale = dw->dvi.device->sizescale; - dw->dvi.device_resolution = dw->dvi.device->res; - dw->dvi.native = dw->dvi.device->X11; - dw->dvi.paperlength = dw->dvi.device->paperlength; - dw->dvi.paperwidth = dw->dvi.device->paperwidth; - if (dw->dvi.native) { - dw->dvi.display_resolution = dw->dvi.device_resolution; - dw->dvi.scale_factor = 1.0; - } - else { - dw->dvi.display_resolution = dw->dvi.default_resolution; - dw->dvi.scale_factor = ((double)dw->dvi.display_resolution - / dw->dvi.device_resolution); - } - request.request_mode = CWWidth|CWHeight; - request.width = MY_WIDTH(dw); - request.height = MY_HEIGHT(dw); - ret = XtMakeGeometryRequest ((Widget)dw, &request, &reply); - if (ret == XtGeometryAlmost - && reply.height >= request.height - && reply.width >= request.width) { - request.width = reply.width; - request.height = reply.height; - XtMakeGeometryRequest ((Widget)dw, &request, &reply); - } -} - -static void -ShowDvi (dw) - DviWidget dw; -{ - if (!dw->dvi.file) { - static char Error[] = "No file selected"; - - XSetFont (XtDisplay(dw), dw->dvi.normal_GC, - dw->dvi.default_font->fid); - XDrawString (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, - 20, 20, Error, strlen (Error)); - return; - } - - FindPage (dw); - - dw->dvi.display_enable = 1; - ParseInput (dw); - if (dw->dvi.last_page && dw->dvi.requested_page > dw->dvi.last_page) - dw->dvi.requested_page = dw->dvi.last_page; -} - -static void -FindPage (dw) - DviWidget dw; -{ - int i; - long file_position; - - if (dw->dvi.requested_page < 1) - dw->dvi.requested_page = 1; - - if (dw->dvi.last_page != 0 && dw->dvi.requested_page > dw->dvi.last_page) - dw->dvi.requested_page = dw->dvi.last_page; - - file_position = SearchPagePosition (dw, dw->dvi.requested_page); - if (file_position != -1) { - FileSeek(dw, file_position); - dw->dvi.current_page = dw->dvi.requested_page; - } else { - for (i=dw->dvi.requested_page; i > 0; i--) { - file_position = SearchPagePosition (dw, i); - if (file_position != -1) - break; - } - if (file_position == -1) - file_position = 0; - FileSeek (dw, file_position); - - dw->dvi.current_page = i; - - dw->dvi.display_enable = 0; - while (dw->dvi.current_page != dw->dvi.requested_page) { - dw->dvi.current_page = ParseInput (dw); - /* - * at EOF, seek back to the beginning of this page. - */ - if (!dw->dvi.readingTmp && feof (dw->dvi.file)) { - file_position = SearchPagePosition (dw, - dw->dvi.current_page); - if (file_position != -1) - FileSeek (dw, file_position); - dw->dvi.requested_page = dw->dvi.current_page; - break; - } - } - } -} - -void DviSaveToFile(w, fp) - Widget w; - FILE *fp; -{ - XtCheckSubclass(w, dviWidgetClass, NULL); - (*((DviWidgetClass) XtClass(w))->command_class.save)(w, fp); -} - -static -void SaveToFile(w, fp) - Widget w; - FILE *fp; -{ - DviWidget dw = (DviWidget)w; - long pos; - int c; - - if (dw->dvi.tmpFile) { - pos = ftell(dw->dvi.tmpFile); - if (dw->dvi.ungot) { - pos--; - dw->dvi.ungot = 0; - /* The ungot character is in the tmpFile, so we don't - want to read it from file. */ - (void)getc(dw->dvi.file); - } - } - else - pos = ftell(dw->dvi.file); - FileSeek(dw, 0L); - while (DviGetC(dw, &c) != EOF) - if (putc(c, fp) == EOF) { - /* XXX print error message */ - break; - } - FileSeek(dw, pos); -} - -static -void ClassPartInitialize(widget_class) - WidgetClass widget_class; -{ - DviWidgetClass wc = (DviWidgetClass)widget_class; - DviWidgetClass super = (DviWidgetClass) wc->core_class.superclass; - if (wc->command_class.save == InheritSaveToFile) - wc->command_class.save = super->command_class.save; -} - -/* -Local Variables: -c-indent-level: 8 -c-continued-statement-offset: 8 -c-brace-offset: -8 -c-argdecl-indent: 8 -c-label-offset: -8 -c-tab-always-indent: nil -End: -*/ diff --git a/contrib/groff/src/xditview/Dvi.h b/contrib/groff/src/xditview/Dvi.h deleted file mode 100644 index 5aab7d8..0000000 --- a/contrib/groff/src/xditview/Dvi.h +++ /dev/null @@ -1,46 +0,0 @@ -/* -* $XConsortium: Dvi.h,v 1.4 89/07/21 14:22:06 jim Exp $ -*/ - -#ifndef _XtDvi_h -#define _XtDvi_h - -/*********************************************************************** - * - * Dvi Widget - * - ***********************************************************************/ - -/* Parameters: - - Name Class RepType Default Value - ---- ----- ------- ------------- - background Background pixel White - foreground Foreground Pixel Black - fontMap FontMap char * ... - pageNumber PageNumber int 1 -*/ - -#define XtNfontMap "fontMap" -#define XtNpageNumber "pageNumber" -#define XtNlastPageNumber "lastPageNumber" -#define XtNnoPolyText "noPolyText" -#define XtNseek "seek" -#define XtNresolution "resolution" - -#define XtCFontMap "FontMap" -#define XtCPageNumber "PageNumber" -#define XtCLastPageNumber "LastPageNumber" -#define XtCNoPolyText "NoPolyText" -#define XtCSeek "Seek" -#define XtCResolution "Resolution" - -typedef struct _DviRec *DviWidget; /* completely defined in DviPrivate.h */ -typedef struct _DviClassRec *DviWidgetClass; /* completely defined in DviPrivate.h */ - -extern WidgetClass dviWidgetClass; - -extern void DviSaveToFile(); - -#endif /* _XtDvi_h */ -/* DON'T ADD STUFF AFTER THIS #endif */ diff --git a/contrib/groff/src/xditview/DviChar.c b/contrib/groff/src/xditview/DviChar.c deleted file mode 100644 index ac4d7ce..0000000 --- a/contrib/groff/src/xditview/DviChar.c +++ /dev/null @@ -1,662 +0,0 @@ -/* - * DviChar.c - * - * Map DVI (ditroff output) character names to - * font indexes and back - */ - -#include "DviChar.h" - -extern char *xmalloc(); - -#define allocHash() ((DviCharNameHash *) xmalloc (sizeof (DviCharNameHash))) - -struct map_list { - struct map_list *next; - DviCharNameMap *map; -}; - -static struct map_list *world; - -static int standard_maps_loaded = 0; -static void load_standard_maps (); -static int hash_name (); -static dispose_hash(), compute_hash(); - -DviCharNameMap * -DviFindMap (encoding) - char *encoding; -{ - struct map_list *m; - - if (!standard_maps_loaded) - load_standard_maps (); - for (m = world; m; m=m->next) - if (!strcmp (m->map->encoding, encoding)) - return m->map; - return 0; -} - -void -DviRegisterMap (map) - DviCharNameMap *map; -{ - struct map_list *m; - - if (!standard_maps_loaded) - load_standard_maps (); - for (m = world; m; m = m->next) - if (!strcmp (m->map->encoding, map->encoding)) - break; - if (!m) { - m = (struct map_list *) xmalloc (sizeof *m); - m->next = world; - world = m; - } - dispose_hash (map); - m->map = map; - compute_hash (map); -} - -static -dispose_hash (map) - DviCharNameMap *map; -{ - DviCharNameHash **buckets; - DviCharNameHash *h, *next; - int i; - - buckets = map->buckets; - for (i = 0; i < DVI_HASH_SIZE; i++) { - for (h = buckets[i]; h; h=next) { - next = h->next; - free (h); - } - } -} - -static int -hash_name (name) - char *name; -{ - int i = 0; - - while (*name) - i = (i << 1) ^ *name++; - if (i < 0) - i = -i; - return i; -} - -static -compute_hash (map) - DviCharNameMap *map; -{ - DviCharNameHash **buckets; - int c, s, i; - DviCharNameHash *h; - - buckets = map->buckets; - for (i = 0; i < DVI_HASH_SIZE; i++) - buckets[i] = 0; - for (c = 0; c < DVI_MAP_SIZE; c++) - for (s = 0; s < DVI_MAX_SYNONYMS; s++) { - if (!map->dvi_names[c][s]) - break; - i = hash_name (map->dvi_names[c][s]) % DVI_HASH_SIZE; - h = allocHash (); - h->next = buckets[i]; - buckets[i] = h; - h->name = map->dvi_names[c][s]; - h->position = c; - } - -} - -int -DviCharIndex (map, name) - DviCharNameMap *map; - char *name; -{ - int i; - DviCharNameHash *h; - - i = hash_name (name) % DVI_HASH_SIZE; - for (h = map->buckets[i]; h; h=h->next) - if (!strcmp (h->name, name)) - return h->position; - return -1; -} - -static DviCharNameMap ISO8859_1_map = { - "iso8859-1", - 0, -{ -{ 0, /* 0 */}, -{ 0, /* 1 */}, -{ 0, /* 2 */}, -{ 0, /* 3 */}, -{ 0, /* 4 */}, -{ 0, /* 5 */}, -{ 0, /* 6 */}, -{ 0, /* 7 */}, -{ 0, /* 8 */}, -{ 0, /* 9 */}, -{ 0, /* 10 */}, -{ 0, /* 11 */}, -{ 0, /* 12 */}, -{ 0, /* 13 */}, -{ 0, /* 14 */}, -{ 0, /* 15 */}, -{ 0, /* 16 */}, -{ 0, /* 17 */}, -{ 0, /* 18 */}, -{ 0, /* 19 */}, -{ 0, /* 20 */}, -{ 0, /* 21 */}, -{ 0, /* 22 */}, -{ 0, /* 23 */}, -{ 0, /* 24 */}, -{ 0, /* 25 */}, -{ 0, /* 26 */}, -{ 0, /* 27 */}, -{ 0, /* 28 */}, -{ 0, /* 29 */}, -{ 0, /* 30 */}, -{ 0, /* 31 */}, -{ 0, /* 32 */}, -{ "!", /* 33 */}, -{ "\"", "dq", /* 34 */}, -{ "#", "sh", /* 35 */}, -{ "$", "Do", /* 36 */}, -{ "%", /* 37 */}, -{ "&", /* 38 */}, -{ "'", "cq", /* 39 */}, -{ "(", /* 40 */}, -{ ")", /* 41 */}, -{ "*", /* 42 */}, -{ "+", /* 43 */}, -{ ",", /* 44 */}, -{ "\\-", /* 45 */}, -{ ".", /* 46 */}, -{ "/", "sl", /* 47 */}, -{ "0", /* 48 */}, -{ "1", /* 49 */}, -{ "2", /* 50 */}, -{ "3", /* 51 */}, -{ "4", /* 52 */}, -{ "5", /* 53 */}, -{ "6", /* 54 */}, -{ "7", /* 55 */}, -{ "8", /* 56 */}, -{ "9", /* 57 */}, -{ ":", /* 58 */}, -{ ";", /* 59 */}, -{ "<", /* 60 */}, -{ "=", /* 61 */}, -{ ">", /* 62 */}, -{ "?", /* 63 */}, -{ "@", "at", /* 64 */}, -{ "A", /* 65 */}, -{ "B", /* 66 */}, -{ "C", /* 67 */}, -{ "D", /* 68 */}, -{ "E", /* 69 */}, -{ "F", /* 70 */}, -{ "G", /* 71 */}, -{ "H", /* 72 */}, -{ "I", /* 73 */}, -{ "J", /* 74 */}, -{ "K", /* 75 */}, -{ "L", /* 76 */}, -{ "M", /* 77 */}, -{ "N", /* 78 */}, -{ "O", /* 79 */}, -{ "P", /* 80 */}, -{ "Q", /* 81 */}, -{ "R", /* 82 */}, -{ "S", /* 83 */}, -{ "T", /* 84 */}, -{ "U", /* 85 */}, -{ "V", /* 86 */}, -{ "W", /* 87 */}, -{ "X", /* 88 */}, -{ "Y", /* 89 */}, -{ "Z", /* 90 */}, -{ "[", "lB", /* 91 */}, -{ "\\", "rs", /* 92 */}, -{ "]", "rB", /* 93 */}, -{ "^", "a^", "ha", /* 94 */}, -{ "_", /* 95 */}, -{ "`", "oq", /* 96 */}, -{ "a", /* 97 */}, -{ "b", /* 98 */}, -{ "c", /* 99 */}, -{ "d", /* 100 */}, -{ "e", /* 101 */}, -{ "f", /* 102 */}, -{ "g", /* 103 */}, -{ "h", /* 104 */}, -{ "i", /* 105 */}, -{ "j", /* 106 */}, -{ "k", /* 107 */}, -{ "l", /* 108 */}, -{ "m", /* 109 */}, -{ "n", /* 110 */}, -{ "o", /* 111 */}, -{ "p", /* 112 */}, -{ "q", /* 113 */}, -{ "r", /* 114 */}, -{ "s", /* 115 */}, -{ "t", /* 116 */}, -{ "u", /* 117 */}, -{ "v", /* 118 */}, -{ "w", /* 119 */}, -{ "x", /* 120 */}, -{ "y", /* 121 */}, -{ "z", /* 122 */}, -{ "{", "lC", /* 123 */}, -{ "|", "ba", /* 124 */}, -{ "}", "rC", /* 125 */}, -{ "~", "a~", "ti", /* 126 */}, -{ 0, /* 127 */}, -{ 0, /* 128 */}, -{ 0, /* 129 */}, -{ 0, /* 130 */}, -{ 0, /* 131 */}, -{ 0, /* 132 */}, -{ 0, /* 133 */}, -{ 0, /* 134 */}, -{ 0, /* 135 */}, -{ 0, /* 136 */}, -{ 0, /* 137 */}, -{ 0, /* 138 */}, -{ 0, /* 139 */}, -{ 0, /* 140 */}, -{ 0, /* 141 */}, -{ 0, /* 142 */}, -{ 0, /* 143 */}, -{ 0, /* 144 */}, -{ 0, /* 145 */}, -{ 0, /* 146 */}, -{ 0, /* 147 */}, -{ 0, /* 148 */}, -{ 0, /* 149 */}, -{ 0, /* 150 */}, -{ 0, /* 151 */}, -{ 0, /* 152 */}, -{ 0, /* 153 */}, -{ 0, /* 154 */}, -{ 0, /* 155 */}, -{ 0, /* 156 */}, -{ 0, /* 157 */}, -{ 0, /* 158 */}, -{ 0, /* 159 */}, -{ 0, /* 160 */}, -{ "r!", /* 161 */}, -{ "ct", /* 162 */}, -{ "Po", /* 163 */}, -{ "Cs", /* 164 */}, -{ "Ye", /* 165 */}, -{ "bb", /* 166 */}, -{ "sc", /* 167 */}, -{ "ad", /* 168 */}, -{ "co", /* 169 */}, -{ "Of", /* 170 */}, -{ "Fo", /* 171 */}, -{ "tno", /* 172 */}, -{ "-", "hy", /* 173 */}, -{ "rg", /* 174 */}, -{ "a-", /* 175 */}, -{ "de", /* 176 */}, -{ "t+-", /* 177 */}, -{ "S2", /* 178 */}, -{ "S3", /* 179 */}, -{ "aa", /* 180 */}, -{ "mc", /* 181 */}, -{ "ps", /* 182 */}, -{ "pc", /* 183 */}, -{ "ac", /* 184 */}, -{ "S1", /* 185 */}, -{ "Om", /* 186 */}, -{ "Fc", /* 187 */}, -{ "14", /* 188 */}, -{ "12", /* 189 */}, -{ "34", /* 190 */}, -{ "r?", /* 191 */}, -{ "`A", /* 192 */}, -{ "'A", /* 193 */}, -{ "^A", /* 194 */}, -{ "~A", /* 195 */}, -{ ":A", /* 196 */}, -{ "oA", /* 197 */}, -{ "AE", /* 198 */}, -{ ",C", /* 199 */}, -{ "`E", /* 200 */}, -{ "'E", /* 201 */}, -{ "^E", /* 202 */}, -{ ":E", /* 203 */}, -{ "`I", /* 204 */}, -{ "'I", /* 205 */}, -{ "^I", /* 206 */}, -{ ":I", /* 207 */}, -{ "-D", /* 208 */}, -{ "~N", /* 209 */}, -{ "`O", /* 210 */}, -{ "'O", /* 211 */}, -{ "^O", /* 212 */}, -{ "~O", /* 213 */}, -{ ":O", /* 214 */}, -{ "tmu", /* 215 */}, -{ "/O", /* 216 */}, -{ "`U", /* 217 */}, -{ "'U", /* 218 */}, -{ "^U", /* 219 */}, -{ ":U", /* 220 */}, -{ "'Y", /* 221 */}, -{ "TP", /* 222 */}, -{ "ss", /* 223 */}, -{ "`a", /* 224 */}, -{ "'a", /* 225 */}, -{ "^a", /* 226 */}, -{ "~a", /* 227 */}, -{ ":a", /* 228 */}, -{ "oa", /* 229 */}, -{ "ae", /* 230 */}, -{ ",c", /* 231 */}, -{ "`e", /* 232 */}, -{ "'e", /* 233 */}, -{ "^e", /* 234 */}, -{ ":e", /* 235 */}, -{ "`i", /* 236 */}, -{ "'i", /* 237 */}, -{ "^i", /* 238 */}, -{ ":i", /* 239 */}, -{ "Sd", /* 240 */}, -{ "~n", /* 241 */}, -{ "`o", /* 242 */}, -{ "'o", /* 243 */}, -{ "^o", /* 244 */}, -{ "~o", /* 245 */}, -{ ":o", /* 246 */}, -{ "tdi", /* 247 */}, -{ "/o", /* 248 */}, -{ "`u", /* 249 */}, -{ "'u", /* 250 */}, -{ "^u", /* 251 */}, -{ ":u", /* 252 */}, -{ "'y", /* 253 */}, -{ "Tp", /* 254 */}, -{ ":y", /* 255 */}, -}}; - -static DviCharNameMap Adobe_Symbol_map = { - "adobe-fontspecific", - 1, -{ -{ 0, /* 0 */}, -{ 0, /* 1 */}, -{ 0, /* 2 */}, -{ 0, /* 3 */}, -{ 0, /* 4 */}, -{ 0, /* 5 */}, -{ 0, /* 6 */}, -{ 0, /* 7 */}, -{ 0, /* 8 */}, -{ 0, /* 9 */}, -{ 0, /* 10 */}, -{ 0, /* 11 */}, -{ 0, /* 12 */}, -{ 0, /* 13 */}, -{ 0, /* 14 */}, -{ 0, /* 15 */}, -{ 0, /* 16 */}, -{ 0, /* 17 */}, -{ 0, /* 18 */}, -{ 0, /* 19 */}, -{ 0, /* 20 */}, -{ 0, /* 21 */}, -{ 0, /* 22 */}, -{ 0, /* 23 */}, -{ 0, /* 24 */}, -{ 0, /* 25 */}, -{ 0, /* 26 */}, -{ 0, /* 27 */}, -{ 0, /* 28 */}, -{ 0, /* 29 */}, -{ 0, /* 30 */}, -{ 0, /* 31 */}, -{ 0, /* 32 */}, -{ "!", /* 33 */}, -{ "fa", /* 34 */}, -{ "#", "sh", /* 35 */}, -{ "te", /* 36 */}, -{ "%", /* 37 */}, -{ "&", /* 38 */}, -{ "st", /* 39 */}, -{ "(", /* 40 */}, -{ ")", /* 41 */}, -{ "**", /* 42 */}, -{ "+", "pl", /* 43 */}, -{ ",", /* 44 */}, -{ "\\-", "mi", /* 45 */}, -{ ".", /* 46 */}, -{ "/", "sl", /* 47 */}, -{ "0", /* 48 */}, -{ "1", /* 49 */}, -{ "2", /* 50 */}, -{ "3", /* 51 */}, -{ "4", /* 52 */}, -{ "5", /* 53 */}, -{ "6", /* 54 */}, -{ "7", /* 55 */}, -{ "8", /* 56 */}, -{ "9", /* 57 */}, -{ ":", /* 58 */}, -{ ";", /* 59 */}, -{ "<", /* 60 */}, -{ "=", "eq", /* 61 */}, -{ ">", /* 62 */}, -{ "?", /* 63 */}, -{ "=~", /* 64 */}, -{ "*A", /* 65 */}, -{ "*B", /* 66 */}, -{ "*X", /* 67 */}, -{ "*D", /* 68 */}, -{ "*E", /* 69 */}, -{ "*F", /* 70 */}, -{ "*G", /* 71 */}, -{ "*Y", /* 72 */}, -{ "*I", /* 73 */}, -{ "+h", /* 74 */}, -{ "*K", /* 75 */}, -{ "*L", /* 76 */}, -{ "*M", /* 77 */}, -{ "*N", /* 78 */}, -{ "*O", /* 79 */}, -{ "*P", /* 80 */}, -{ "*H", /* 81 */}, -{ "*R", /* 82 */}, -{ "*S", /* 83 */}, -{ "*T", /* 84 */}, -{ 0, /* 85 */}, -{ "ts", /* 86 */}, -{ "*W", /* 87 */}, -{ "*C", /* 88 */}, -{ "*Q", /* 89 */}, -{ "*Z", /* 90 */}, -{ "[", "lB", /* 91 */}, -{ "tf", "3d", /* 92 */}, -{ "]", "rB", /* 93 */}, -{ "pp", /* 94 */}, -{ "_", /* 95 */}, -{ "radicalex", /* 96 */}, -{ "*a", /* 97 */}, -{ "*b", /* 98 */}, -{ "*x", /* 99 */}, -{ "*d", /* 100 */}, -{ "*e", /* 101 */}, -{ "*f", /* 102 */}, -{ "*g", /* 103 */}, -{ "*y", /* 104 */}, -{ "*i", /* 105 */}, -{ "+f", /* 106 */}, -{ "*k", /* 107 */}, -{ "*l", /* 108 */}, -{ "*m", /* 109 */}, -{ "*n", /* 110 */}, -{ "*o", /* 111 */}, -{ "*p", /* 112 */}, -{ "*h", /* 113 */}, -{ "*r", /* 114 */}, -{ "*s", /* 115 */}, -{ "*t", /* 116 */}, -{ "*u", /* 117 */}, -{ "+p", /* 118 */}, -{ "*w", /* 119 */}, -{ "*c", /* 120 */}, -{ "*q", /* 121 */}, -{ "*z", /* 122 */}, -{ "lC", "{", /* 123 */}, -{ "ba", "|", /* 124 */}, -{ "rC", "}", /* 125 */}, -{ "ap", /* 126 */}, -{ 0, /* 127 */}, -{ 0, /* 128 */}, -{ 0, /* 129 */}, -{ 0, /* 130 */}, -{ 0, /* 131 */}, -{ 0, /* 132 */}, -{ 0, /* 133 */}, -{ 0, /* 134 */}, -{ 0, /* 135 */}, -{ 0, /* 136 */}, -{ 0, /* 137 */}, -{ 0, /* 138 */}, -{ 0, /* 139 */}, -{ 0, /* 140 */}, -{ 0, /* 141 */}, -{ 0, /* 142 */}, -{ 0, /* 143 */}, -{ 0, /* 144 */}, -{ 0, /* 145 */}, -{ 0, /* 146 */}, -{ 0, /* 147 */}, -{ 0, /* 148 */}, -{ 0, /* 149 */}, -{ 0, /* 150 */}, -{ 0, /* 151 */}, -{ 0, /* 152 */}, -{ 0, /* 153 */}, -{ 0, /* 154 */}, -{ 0, /* 155 */}, -{ 0, /* 156 */}, -{ 0, /* 157 */}, -{ 0, /* 158 */}, -{ 0, /* 159 */}, -{ 0, /* 160 */}, -{ "*U", /* 161 */}, -{ "fm", /* 162 */}, -{ "<=", /* 163 */}, -{ "f/", /* 164 */}, -{ "if", /* 165 */}, -{ "Fn", /* 166 */}, -{ "CL", /* 167 */}, -{ "DI", /* 168 */}, -{ "HE", /* 169 */}, -{ "SP", /* 170 */}, -{ "<>", /* 171 */}, -{ "<-", /* 172 */}, -{ "ua", "arrowverttp", /* 173 */}, -{ "->", /* 174 */}, -{ "da", "arrowvertbt", /* 175 */}, -{ "de", /* 176 */}, -{ "+-", /* 177 */}, -{ "sd", /* 178 */}, -{ ">=", /* 179 */}, -{ "mu", /* 180 */}, -{ "pt", /* 181 */}, -{ "pd", /* 182 */}, -{ "bu", /* 183 */}, -{ "di", /* 184 */}, -{ "!=", /* 185 */}, -{ "==", /* 186 */}, -{ "~=", "~~", /* 187 */}, -{ 0, /* 188 */}, -{ "arrowvertex", /* 189 */}, -{ "an", /* 190 */}, -{ "CR", /* 191 */}, -{ "Ah", /* 192 */}, -{ "Im", /* 193 */}, -{ "Re", /* 194 */}, -{ "wp", /* 195 */}, -{ "c*", /* 196 */}, -{ "c+", /* 197 */}, -{ "es", /* 198 */}, -{ "ca", /* 199 */}, -{ "cu", /* 200 */}, -{ "sp", /* 201 */}, -{ "ip", /* 202 */}, -{ "nb", /* 203 */}, -{ "sb", /* 204 */}, -{ "ib", /* 205 */}, -{ "mo", /* 206 */}, -{ "nm", /* 207 */}, -{ "/_", /* 208 */}, -{ "gr", /* 209 */}, -{ "rg", /* 210 */}, -{ "co", /* 211 */}, -{ "tm", /* 212 */}, -{ 0, /* 213 */}, -{ "sr", "sqrt", /* 214 */}, -{ "md", /* 215 */}, -{ "no", /* 216 */}, -{ "AN", /* 217 */}, -{ "OR", /* 218 */}, -{ "hA", /* 219 */}, -{ "lA", /* 220 */}, -{ "uA", /* 221 */}, -{ "rA", /* 222 */}, -{ "dA", /* 223 */}, -{ "lz", /* 224 */}, -{ "la", /* 225 */}, -{ 0, /* 226 */}, -{ 0, /* 227 */}, -{ 0, /* 228 */}, -{ 0, /* 229 */}, -{ "parenlefttp", /* 230 */}, -{ "parenleftex", /* 231 */}, -{ "parenleftbt", /* 232 */}, -{ "bracketlefttp", "lc", /* 233 */}, -{ "bracketleftex", /* 234 */}, -{ "bracketleftbt", "lf", /* 235 */}, -{ "bracelefttp", "lt", /* 236 */}, -{ "braceleftmid", "lk", /* 237 */}, -{ "braceleftbt", "lb", /* 238 */}, -{ "bracerightex", "braceleftex", "braceex", "bv", /* 239 */}, -{ 0, /* 240 */}, -{ "ra", /* 241 */}, -{ "is", "integral", /* 242 */}, -{ 0, /* 243 */}, -{ 0, /* 244 */}, -{ 0, /* 245 */}, -{ "parenrighttp", /* 246 */}, -{ "parenrightex", /* 247 */}, -{ "parenrightbt", /* 248 */}, -{ "bracketrighttp", "rc", /* 249 */}, -{ "bracketrightex", /* 250 */}, -{ "bracketrightbt", "rf", /* 251 */}, -{ "bracerighttp", "rt", /* 252 */}, -{ "bracerightmid", "rk", /* 253 */}, -{ "bracerightbt", "rb", /* 254 */}, -{ 0, /* 255 */}, -}}; - - -static void -load_standard_maps () -{ - standard_maps_loaded = 1; - DviRegisterMap (&ISO8859_1_map); - DviRegisterMap (&Adobe_Symbol_map); -} diff --git a/contrib/groff/src/xditview/DviChar.h b/contrib/groff/src/xditview/DviChar.h deleted file mode 100644 index b075240..0000000 --- a/contrib/groff/src/xditview/DviChar.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * DviChar.h - * - * descriptions for mapping dvi names to - * font indexes and back. Dvi fonts are all - * 256 elements (actually only 256-32 are usable). - * - * The encoding names are taken from X - - * case insensitive, a dash separating the - * CharSetRegistry from the CharSetEncoding - */ - -# define DVI_MAX_SYNONYMS 10 -# define DVI_MAP_SIZE 256 -# define DVI_HASH_SIZE 256 - -typedef struct _dviCharNameHash { - struct _dviCharNameHash *next; - char *name; - int position; -} DviCharNameHash; - -typedef struct _dviCharNameMap { - char *encoding; - int special; - char *dvi_names[DVI_MAP_SIZE][DVI_MAX_SYNONYMS]; - DviCharNameHash *buckets[DVI_HASH_SIZE]; -} DviCharNameMap; - -extern DviCharNameMap *DviFindMap ( /* char *encoding */ ); -extern void DviRegisterMap ( /* DviCharNameMap *map */ ); -#ifdef NOTDEF -extern char *DviCharName ( /* DviCharNameMap *map, int index, int synonym */ ); -#else -#define DviCharName(map,index,synonym) ((map)->dvi_names[index][synonym]) -#endif -extern int DviCharIndex ( /* DviCharNameMap *map, char *name */ ); diff --git a/contrib/groff/src/xditview/DviP.h b/contrib/groff/src/xditview/DviP.h deleted file mode 100644 index 851fdfe..0000000 --- a/contrib/groff/src/xditview/DviP.h +++ /dev/null @@ -1,233 +0,0 @@ -/* - * $XConsortium: DviP.h,v 1.5 89/07/22 19:44:08 keith Exp $ - */ - -/* - * DviP.h - Private definitions for Dvi widget - */ - -#ifndef _XtDviP_h -#define _XtDviP_h - -#include "Dvi.h" -#include "DviChar.h" -#include "device.h" - -/*********************************************************************** - * - * Dvi Widget Private Data - * - ***********************************************************************/ - -/************************************ - * - * Class structure - * - ***********************************/ - -/* Type for save method. */ - -typedef void (*DviSaveProc)(); - -/* - * New fields for the Dvi widget class record - */ - - -typedef struct _DviClass { - DviSaveProc save; -} DviClassPart; - -/* - * Full class record declaration - */ - -typedef struct _DviClassRec { - CoreClassPart core_class; - DviClassPart command_class; -} DviClassRec; - -extern DviClassRec dviClassRec; - -/*************************************** - * - * Instance (widget) structure - * - **************************************/ - -/* - * a list of fonts we've used for this widget - */ - -typedef struct _dviFontSizeList { - struct _dviFontSizeList *next; - int size; - char *x_name; - XFontStruct *font; - int doesnt_exist; -} DviFontSizeList; - -typedef struct _dviFontList { - struct _dviFontList *next; - char *dvi_name; - char *x_name; - int dvi_number; - Boolean initialized; - Boolean scalable; - DviFontSizeList *sizes; - DviCharNameMap *char_map; - DeviceFont *device_font; -} DviFontList; - -typedef struct _dviFontMap { - struct _dviFontMap *next; - char *dvi_name; - char *x_name; -} DviFontMap; - -#define DVI_TEXT_CACHE_SIZE 256 -#define DVI_CHAR_CACHE_SIZE 1024 - -typedef struct _dviCharCache { - XTextItem cache[DVI_TEXT_CACHE_SIZE]; - char adjustable[DVI_TEXT_CACHE_SIZE]; - char char_cache[DVI_CHAR_CACHE_SIZE]; - int index; - int max; - int char_index; - int font_size; - int font_number; - XFontStruct *font; - int start_x, start_y; - int x, y; -} DviCharCache; - -typedef struct _dviState { - struct _dviState *next; - int font_size; - int font_number; - int x; - int y; -} DviState; - -typedef struct _dviFileMap { - struct _dviFileMap *next; - long position; - int page_number; -} DviFileMap; - -/* - * New fields for the Dvi widget record - */ - -typedef struct { - /* - * resource specifiable items - */ - char *font_map_string; - unsigned long foreground; - unsigned long background; - int requested_page; - int last_page; - XFontStruct *default_font; - FILE *file; - Boolean noPolyText; - Boolean seek; /* file is "seekable" */ - int default_resolution; - /* - * private state - */ - FILE *tmpFile; /* used when reading stdin */ - char readingTmp; /* reading now from tmp */ - char ungot; /* have ungetc'd a char */ - GC normal_GC; - GC fill_GC; - DviFileMap *file_map; - DviFontList *fonts; - DviFontMap *font_map; - int current_page; - int font_size; - int font_number; - DeviceFont *device_font; - int device_font_number; - Device *device; - int native; - int device_resolution; - int display_resolution; - int paperlength; - int paperwidth; - double scale_factor; /* display res / device res */ - int sizescale; - int line_thickness; - int line_width; - -#define DVI_FILL_MAX 1000 - - int fill; -#define DVI_FILL_WHITE 0 -#define DVI_FILL_GRAY 1 -#define DVI_FILL_BLACK 2 - int fill_type; - Pixmap gray[8]; - int backing_store; - XFontStruct *font; - int display_enable; - struct ExposedExtents { - int x1, y1, x2, y2; - } extents; - DviState *state; - DviCharCache cache; - int text_x_width; - int text_device_width; - int word_flag; -} DviPart; - -#define DviGetIn(dw,cp)\ - (dw->dvi.tmpFile ? (\ - DviGetAndPut (dw, cp) \ - ) :\ - (*cp = getc (dw->dvi.file))\ -) - -#define DviGetC(dw, cp)\ - (dw->dvi.readingTmp ? (\ - ((*cp = getc (dw->dvi.tmpFile)) == EOF) ? (\ - fseek (dw->dvi.tmpFile, 0l, 2),\ - (dw->dvi.readingTmp = 0),\ - DviGetIn (dw,cp)\ - ) : (\ - *cp\ - )\ - ) : (\ - DviGetIn(dw,cp)\ - )\ -) - -#define DviUngetC(dw, c)\ - (dw->dvi.readingTmp ? (\ - ungetc (c, dw->dvi.tmpFile)\ - ) : ( \ - (dw->dvi.ungot = 1),\ - ungetc (c, dw->dvi.file))) - -/* - * Full widget declaration - */ - -typedef struct _DviRec { - CorePart core; - DviPart dvi; -} DviRec; - -#define InheritSaveToFile ((DviSaveProc)_XtInherit) - -extern XFontStruct *QueryFont (); - -extern DviCharNameMap *QueryFontMap (); - -extern DeviceFont *QueryDeviceFont (); - -extern char *GetWord(), *GetLine(); -#endif /* _XtDviP_h */ - - diff --git a/contrib/groff/src/xditview/FontMap b/contrib/groff/src/xditview/FontMap deleted file mode 100644 index 90911f0..0000000 --- a/contrib/groff/src/xditview/FontMap +++ /dev/null @@ -1,17 +0,0 @@ -TR -adobe-times-medium-r-normal--*-*-*-*-p-*-iso8859-1 -TI -adobe-times-medium-i-normal--*-*-*-*-p-*-iso8859-1 -TB -adobe-times-bold-r-normal--*-*-*-*-p-*-iso8859-1 -TBI -adobe-times-bold-i-normal--*-*-*-*-p-*-iso8859-1 -CR -adobe-courier-medium-r-normal--*-*-*-*-m-*-iso8859-1 -CI -adobe-courier-medium-o-normal--*-*-*-*-m-*-iso8859-1 -CB -adobe-courier-bold-r-normal--*-*-*-*-m-*-iso8859-1 -CBI -adobe-courier-bold-o-normal--*-*-*-*-m-*-iso8859-1 -HR -adobe-helvetica-medium-r-normal--*-*-*-*-p-*-iso8859-1 -HI -adobe-helvetica-medium-o-normal--*-*-*-*-p-*-iso8859-1 -HB -adobe-helvetica-bold-r-normal--*-*-*-*-p-*-iso8859-1 -HBI -adobe-helvetica-bold-o-normal--*-*-*-*-p-*-iso8859-1 -NR -adobe-new century schoolbook-medium-r-normal--*-*-*-*-p-*-iso8859-1 -NI -adobe-new century schoolbook-medium-i-normal--*-*-*-*-p-*-iso8859-1 -NB -adobe-new century schoolbook-bold-r-normal--*-*-*-*-p-*-iso8859-1 -NBI -adobe-new century schoolbook-bold-i-normal--*-*-*-*-p-*-iso8859-1 -S -adobe-symbol-medium-r-normal--*-*-*-*-p-*-adobe-fontspecific diff --git a/contrib/groff/src/xditview/GXditview-ad.h b/contrib/groff/src/xditview/GXditview-ad.h deleted file mode 100644 index d9be3da..0000000 --- a/contrib/groff/src/xditview/GXditview-ad.h +++ /dev/null @@ -1,52 +0,0 @@ -"GXditview.height: 840", -"GXditview.paned.allowResize: true", -"GXditview.paned.viewport.allowVert: true", -"GXditview.paned.viewport.allowHoriz: true", -"GXditview.paned.viewport.skipAdjust: false", -"GXditview.paned.viewport.width: 600", -"GXditview.paned.viewport.height: 800", -"GXditview.paned.viewport.showGrip: false", -"GXditview.paned.label.skipAdjust: true", -"GXditview.paned.viewport.dvi.translations: #augment \ - : XawPositionSimpleMenu(menu) MenuPopup(menu)\\n\ - Next: NextPage()\\n\ - n: NextPage()\\n\ - space: NextPage()\\n\ - Return: NextPage()\\n\ - Prior: PreviousPage()\\n\ - p: PreviousPage()\\n\ - BackSpace: PreviousPage()\\n\ - Delete: PreviousPage()\\n\ - Select: SelectPage()\\n\ - Find: OpenFile()\\n\ - r: Rerasterize()\\n\ - q: Quit()", -"GXditview.paned.label.translations: #augment \ - : XawPositionSimpleMenu(menu) MenuPopup(menu)\\n\ - Next: NextPage()\\n\ - n: NextPage()\\n\ - space: NextPage()\\n\ - Return: NextPage()\\n\ - Prior: PreviousPage()\\n\ - p: PreviousPage()\\n\ - BackSpace: PreviousPage()\\n\ - Delete: PreviousPage()\\n\ - Select: SelectPage()\\n\ - Find: OpenFile()\\n\ - r: Rerasterize()\\n\ - q: Quit()", -"GXditview.menu.nextPage.label: Next Page", -"GXditview.menu.previousPage.label: Previous Page", -"GXditview.menu.selectPage.label: Select Page", -"GXditview.menu.print.label: Print", -"GXditview.menu.openFile.label: Open", -"GXditview.menu.quit.label: Quit", -"GXditview.promptShell.allowShellResize: true", -"GXditview.promptShell.promptDialog.value.translations: #override \ - Return: Accept()", -"GXditview.promptShell.promptDialog.accept.label: Accept", -"GXditview.promptShell.promptDialog.accept.translations: #override \ - : Accept() unset()", -"GXditview.promptShell.promptDialog.cancel.label: Cancel", -"GXditview.promptShell.promptDialog.cancel.translations: #override \ - : Cancel() unset()", diff --git a/contrib/groff/src/xditview/GXditview.ad b/contrib/groff/src/xditview/GXditview.ad deleted file mode 100644 index e99ff5e..0000000 --- a/contrib/groff/src/xditview/GXditview.ad +++ /dev/null @@ -1,57 +0,0 @@ -GXditview.height: 840 - -GXditview.paned.allowResize: true -GXditview.paned.viewport.allowVert: true -GXditview.paned.viewport.allowHoriz: true -GXditview.paned.viewport.skipAdjust: false -GXditview.paned.viewport.width: 600 -GXditview.paned.viewport.height: 800 -GXditview.paned.viewport.showGrip: false -GXditview.paned.label.skipAdjust: true - -GXditview.paned.viewport.dvi.translations: #augment \ - : XawPositionSimpleMenu(menu) MenuPopup(menu)\n\ - Next: NextPage()\n\ - n: NextPage()\n\ - space: NextPage()\n\ - Return: NextPage()\n\ - Prior: PreviousPage()\n\ - p: PreviousPage()\n\ - BackSpace: PreviousPage()\n\ - Delete: PreviousPage()\n\ - Select: SelectPage()\n\ - Find: OpenFile()\n\ - r: Rerasterize()\n\ - q: Quit() -GXditview.paned.label.translations: #augment \ - : XawPositionSimpleMenu(menu) MenuPopup(menu)\n\ - Next: NextPage()\n\ - n: NextPage()\n\ - space: NextPage()\n\ - Return: NextPage()\n\ - Prior: PreviousPage()\n\ - p: PreviousPage()\n\ - BackSpace: PreviousPage()\n\ - Delete: PreviousPage()\n\ - Select: SelectPage()\n\ - Find: OpenFile()\n\ - r: Rerasterize()\n\ - q: Quit() -GXditview.menu.nextPage.label: Next Page -GXditview.menu.previousPage.label: Previous Page -GXditview.menu.selectPage.label: Select Page -GXditview.menu.print.label: Print -GXditview.menu.openFile.label: Open -GXditview.menu.quit.label: Quit - -GXditview.promptShell.allowShellResize: true -GXditview.promptShell.promptDialog.value.translations: #override \ - Return: Accept() - -GXditview.promptShell.promptDialog.accept.label: Accept -GXditview.promptShell.promptDialog.accept.translations: #override \ - : Accept() unset() - -GXditview.promptShell.promptDialog.cancel.label: Cancel -GXditview.promptShell.promptDialog.cancel.translations: #override \ - : Cancel() unset() diff --git a/contrib/groff/src/xditview/INSTALL b/contrib/groff/src/xditview/INSTALL deleted file mode 100644 index 144118f..0000000 --- a/contrib/groff/src/xditview/INSTALL +++ /dev/null @@ -1,20 +0,0 @@ -This version of gxditview uses imake. - -Here are the steps needed to install gxditview: - -- edit the Imakefile if necessary - -- xmkmf - -- make depend - -- make - -- make install - -- make install.man (installs the man page) - -The gxditview binary will be installed in the usual place for X -binaries (eg /usr/bin/X11). Previous versions of gxditview were -installed along with the other groff binaries (eg in /usr/local/bin); -you will need to remove these by hand. diff --git a/contrib/groff/src/xditview/Imakefile.in b/contrib/groff/src/xditview/Imakefile.in deleted file mode 100644 index 1f64fe0..0000000 --- a/contrib/groff/src/xditview/Imakefile.in +++ /dev/null @@ -1,120 +0,0 @@ -srcdir=@srcdir@ -top_srcdir=@top_srcdir@ -VPATH=@srcdir@ -top_builddir=@groff_top_builddir@ -SEP=@PATH_SEPARATOR@ - -version=`cat $(top_srcdir)/VERSION` -# No additional number if revision is zero -revision=`sed -e 's/^0$$//' -e 's/^[1-9].*$$/.&/' $(top_srcdir)/REVISION` - -GROFF_PREFIX = @prefix@ -GROFF_DATADIR = $(GROFF_PREFIX)/share -GROFF_DATAPROGRAMDIR = $(GROFF_DATADIR)/groff -GROFF_DATASUBDIR = $(GROFF_DATAPROGRAMDIR)/$(version)$(revision) -GROFF_FONTDIR = $(GROFF_DATASUBDIR)/font -GROFF_LOCALFONTDIR = $(GROFF_DATAPROGRAMDIR)/site-font -GROFF_FONTPATH = $(GROFF_FONTDIR)$(SEP)$(GROFF_LOCALFONTDIR)$(SEP)/usr/lib/font -DPIS = 75 100 - -PROGRAMS = \ - gxditview \ - xtotroff -DEPLIBS = XawClientDepLibs -#if defined(HPArchitecture) && (OSMajorVersion > 9) -LOCAL_LIBRARIES = -L/usr/contrib/X11R6/lib XawClientLibs -#else -LOCAL_LIBRARIES = XawClientLibs -#endif -SRCS1 = \ - $(srcdir)/xditview.c \ - $(srcdir)/Dvi.c \ - $(srcdir)/draw.c \ - $(srcdir)/font.c \ - $(srcdir)/lex.c \ - $(srcdir)/page.c \ - $(srcdir)/parse.c \ - $(srcdir)/XFontName.c \ - $(srcdir)/DviChar.c \ - $(srcdir)/device.c -OBJS1 = \ - xditview.o \ - Dvi.o \ - draw.o \ - font.o \ - lex.o \ - page.o \ - parse.o \ - XFontName.o \ - DviChar.o \ - device.o -SRCS2 = \ - $(srcdir)/xtotroff.c \ - $(srcdir)/XFontName.c \ - $(srcdir)/DviChar.c -OBJS2 = \ - xtotroff.o \ - XFontName.o \ - DviChar.o -#if defined(HPArchitecture) && (OSMajorVersion > 9) -INCLUDES = \ - -I/usr/contrib/X11R6/include \ - -I$(TOOLKITSRC) \ - -I$(TOP) -#else -INCLUDES = \ - -I$(TOOLKITSRC) \ - -I$(TOP) -#endif -MATHLIB = -lm -DEFINES = \ - $(SIGNAL_DEFINES) \ - -DFONTPATH=\"$(GROFF_FONTPATH)\" # -DX_NOT_STDC_ENV - -DEVDIR = $(top_builddir)/font -MKINSTALLDIRS = $(top_srcdir)/mkinstalldirs - -#undef ProgramTargetHelper -#define ProgramTargetHelper ProgramTargetHelperNoMan -ComplexProgramTarget_1(gxditview,$(LOCAL_LIBRARIES),$(MATHLIB)) -InstallManPageLong($(srcdir)/gxditview,$(MANDIR),gxditview) -NormalProgramTarget(xtotroff,$(OBJS2),$(DEPXLIB),$(XLIB), /**/) - -InstallAppDefaultsLong($(srcdir)/GXditview,GXditview) - -fonts: xtotroff $(srcdir)/DESC $(srcdir)/FontMap - @dir=`pwd`; \ - fonts=`sed -e 's/[ ].*//' $(srcdir)/FontMap`; \ - for dpi in $(DPIS); do \ - echo Making devX$$dpi; \ - test -d $(DEVDIR)/devX$$dpi || \ - $(MKINSTALLDIRS) $(DEVDIR)/devX$$dpi; \ - rm -f $(DEVDIR)/devX$$dpi/DESC; \ - sed -e "s/res 75/res $$dpi/" $(srcdir)/DESC \ - >$(DEVDIR)/devX$$dpi/DESC; \ - (cd $(DEVDIR)/devX$$dpi; \ - rm -f Makefile.sub; \ - echo DEV=X$$dpi >Makefile.sub; \ - echo DEVFILES=DESC $$fonts >>Makefile.sub; \ - $$dir/xtotroff -g -r $$dpi -s 10 $(srcdir)/FontMap); \ - echo Making devX$$dpi-12; \ - test -d $(DEVDIR)/devX$$dpi-12 || \ - $(MKINSTALLDIRS) $(DEVDIR)/devX$$dpi-12; \ - rm -f $(DEVDIR)/devX$$dpi-12/DESC; \ - sed -e "s/res 75/res $$dpi/" \ - -e 's/unitwidth 10/unitwidth 12/' $(srcdir)/DESC \ - >$(DEVDIR)/devX$$dpi-12/DESC; \ - (cd $(DEVDIR)/devX$$dpi-12; \ - rm -f Makefile.sub; \ - echo DEV=X$$dpi-12 >Makefile.sub; \ - echo DEVFILES=DESC $$fonts >>Makefile.sub; \ - $$dir/xtotroff -g -r $$dpi -s 12 $(srcdir)/FontMap); \ - done - -GXditview-ad.h: $(srcdir)/GXditview.ad - /bin/sh $(srcdir)/ad2c $(srcdir)/GXditview.ad >GXditview-ad.h - -extraclean: clean - -rm -f junk tmp grot old Makefile Imakefile $(srcdir)/gxditview._man - -FORCE: diff --git a/contrib/groff/src/xditview/Menu.h b/contrib/groff/src/xditview/Menu.h deleted file mode 100644 index c306b27..0000000 --- a/contrib/groff/src/xditview/Menu.h +++ /dev/null @@ -1,46 +0,0 @@ -/* - * $XConsortium: Menu.h,v 1.2 89/07/21 14:22:10 jim Exp $ - */ - -#ifndef _XtMenu_h -#define _XtMenu_h - -/*********************************************************************** - * - * Menu Widget - * - ***********************************************************************/ - -/* Parameters: - - Name Class RepType Default Value - ---- ----- ------- ------------- - background Background pixel White - border BorderColor pixel Black - borderWidth BorderWidth int 1 - height Height int 120 - mappedWhenManaged MappedWhenManaged Boolean True - reverseVideo ReverseVideo Boolean False - width Width int 120 - x Position int 0 - y Position int 0 - -*/ - -#define XtNmenuEntries "menuEntries" -#define XtNhorizontalPadding "horizontalPadding" -#define XtNverticalPadding "verticalPadding" -#define XtNselection "Selection" - -#define XtCMenuEntries "MenuEntries" -#define XtCPadding "Padding" -#define XtCSelection "Selection" - -typedef struct _MenuRec *MenuWidget; /* completely defined in MenuPrivate.h */ -typedef struct _MenuClassRec *MenuWidgetClass; /* completely defined in MenuPrivate.h */ - -extern WidgetClass menuWidgetClass; - -extern Widget XawMenuCreate (); -#endif /* _XtMenu_h */ -/* DON'T ADD STUFF AFTER THIS #endif */ diff --git a/contrib/groff/src/xditview/README b/contrib/groff/src/xditview/README deleted file mode 100644 index b18f64a..0000000 --- a/contrib/groff/src/xditview/README +++ /dev/null @@ -1,14 +0,0 @@ -This is gxditview, a X11 previewer for groff based on MIT's xditview. -This version can be used with the output of gtroff -Tps as well as -with -TX75 and -TX100. You will need X11R5 or newer to install it (it -might work on X11R4, but I haven't tested it.) - -See the file INSTALL in this directory for installation instructions. - -xditview is copyrighted by MIT under the usual X terms (see -gxditview.man); my changes to it are in the public domain. - -Please report bugs to bug-groff@gnu.org. - -James Clark -jjc@jclark.com diff --git a/contrib/groff/src/xditview/TODO b/contrib/groff/src/xditview/TODO deleted file mode 100644 index 161a7cf..0000000 --- a/contrib/groff/src/xditview/TODO +++ /dev/null @@ -1,17 +0,0 @@ -Replace Imakefile with a configure script. - -Better error handling. - -Resource and command-line option to specify font path. - -Resource to specify name of environment variable from which to get the -font path. - -Have character substitutions (currently done in draw.c:FakeCharacter) -specified in a resource (similar format to FontMap). - -The initial width of the dialog box should expand to accommodate the -default value. - -Option in Print dialog to specify that only the current page should be -printed. diff --git a/contrib/groff/src/xditview/XFontName.c b/contrib/groff/src/xditview/XFontName.c deleted file mode 100644 index 5ca9bb8..0000000 --- a/contrib/groff/src/xditview/XFontName.c +++ /dev/null @@ -1,256 +0,0 @@ -/* - * XFontName.c - * - * build/parse X Font name strings - */ - -#include -#include -#include "XFontName.h" -#include - -static char * -extractStringField (name, buffer, size, attrp, bit) - char *name; - char *buffer; - int size; - unsigned int *attrp; - unsigned int bit; -{ - char *buf = buffer; - - if (!*name) - return 0; - while (*name && *name != '-' && size > 0) { - *buf++ = *name++; - --size; - } - if (size <= 0) - return 0; - *buf = '\0'; - if (buffer[0] != '*' || buffer[1] != '\0') - *attrp |= bit; - if (*name == '-') - return name+1; - return name; -} - -static char * -extractUnsignedField (name, result, attrp, bit) - char *name; - unsigned int *result; - unsigned int *attrp; - unsigned int bit; -{ - char buf[256]; - char *c; - unsigned int i; - - name = extractStringField (name, buf, sizeof (buf), attrp, bit); - if (!name) - return 0; - if (!(*attrp & bit)) - return name; - i = 0; - for (c = buf; *c; c++) { - if (!isdigit (*c)) - return 0; - i = i * 10 + (*c - '0'); - } - *result = i; - return name; -} - -Bool -XParseFontName (fontNameString, fontName, fontNameAttributes) - XFontNameString fontNameString; - XFontName *fontName; - unsigned int *fontNameAttributes; -{ - char *name = fontNameString; - XFontName temp; - unsigned int attributes = 0; - -#define GetString(field,bit)\ - if (!(name = extractStringField \ - (name, temp.field, sizeof (temp.field),\ - &attributes, bit))) \ - return False; - -#define GetUnsigned(field,bit)\ - if (!(name = extractUnsignedField \ - (name, &temp.field, \ - &attributes, bit))) \ - return False; - - GetString (Registry, FontNameRegistry) - GetString (Foundry, FontNameFoundry) - GetString (FamilyName, FontNameFamilyName) - GetString (WeightName, FontNameWeightName) - GetString (Slant, FontNameSlant) - GetString (SetwidthName, FontNameSetwidthName) - GetString (AddStyleName, FontNameAddStyleName) - GetUnsigned (PixelSize, FontNamePixelSize) - GetUnsigned (PointSize, FontNamePointSize) - GetUnsigned (ResolutionX, FontNameResolutionX) - GetUnsigned (ResolutionY, FontNameResolutionY) - GetString (Spacing, FontNameSpacing) - GetUnsigned (AverageWidth, FontNameAverageWidth) - GetString (CharSetRegistry, FontNameCharSetRegistry) - if (!*name) { - temp.CharSetEncoding[0] = '\0'; - attributes |= FontNameCharSetEncoding; - } else { - GetString (CharSetEncoding, FontNameCharSetEncoding) - } - *fontName = temp; - *fontNameAttributes = attributes; - return True; -} - -static char * -utoa (u, s, size) - unsigned int u; - char *s; - int size; -{ - char *t; - - t = s + size; - *--t = '\0'; - do - *--t = (u % 10) + '0'; - while (u /= 10); - return t; -} - -Bool -XFormatFontName (fontName, fontNameAttributes, fontNameString) - XFontName *fontName; - unsigned int fontNameAttributes; - XFontNameString fontNameString; -{ - XFontNameString tmp; - char *name = tmp, *f; - int left = sizeof (tmp) - 1; - char number[32]; - -#define PutString(field, bit)\ - f = (fontNameAttributes & bit) ? \ - fontName->field \ - : "*"; \ - if ((left -= strlen (f)) < 0) \ - return False; \ - while (*f) \ - if ((*name++ = *f++) == '-') \ - return False; -#define PutHyphen()\ - if (--left < 0) \ - return False; \ - *name++ = '-'; - -#define PutUnsigned(field, bit) \ - f = (fontNameAttributes & bit) ? \ - utoa (fontName->field, number, sizeof (number)) \ - : "*"; \ - if ((left -= strlen (f)) < 0) \ - return False; \ - while (*f) \ - *name++ = *f++; - - PutString (Registry, FontNameRegistry) - PutHyphen (); - PutString (Foundry, FontNameFoundry) - PutHyphen (); - PutString (FamilyName, FontNameFamilyName) - PutHyphen (); - PutString (WeightName, FontNameWeightName) - PutHyphen (); - PutString (Slant, FontNameSlant) - PutHyphen (); - PutString (SetwidthName, FontNameSetwidthName) - PutHyphen (); - PutString (AddStyleName, FontNameAddStyleName) - PutHyphen (); - PutUnsigned (PixelSize, FontNamePixelSize) - PutHyphen (); - PutUnsigned (PointSize, FontNamePointSize) - PutHyphen (); - PutUnsigned (ResolutionX, FontNameResolutionX) - PutHyphen (); - PutUnsigned (ResolutionY, FontNameResolutionY) - PutHyphen (); - PutString (Spacing, FontNameSpacing) - PutHyphen (); - PutUnsigned (AverageWidth, FontNameAverageWidth) - PutHyphen (); - PutString (CharSetRegistry, FontNameCharSetRegistry) - PutHyphen (); - PutString (CharSetEncoding, FontNameCharSetEncoding) - *name = '\0'; - strcpy (fontNameString, tmp); - return True; -} - -Bool -XCompareFontName (name1, name2, fontNameAttributes) - XFontName *name1, *name2; - unsigned int fontNameAttributes; -{ -#define CompareString(field,bit) \ - if (fontNameAttributes & bit) \ - if (strcmp (name1->field, name2->field)) \ - return False; - -#define CompareUnsigned(field,bit) \ - if (fontNameAttributes & bit) \ - if (name1->field != name2->field) \ - return False; - - CompareString (Registry, FontNameRegistry) - CompareString (Foundry, FontNameFoundry) - CompareString (FamilyName, FontNameFamilyName) - CompareString (WeightName, FontNameWeightName) - CompareString (Slant, FontNameSlant) - CompareString (SetwidthName, FontNameSetwidthName) - CompareString (AddStyleName, FontNameAddStyleName) - CompareUnsigned (PixelSize, FontNamePixelSize) - CompareUnsigned (PointSize, FontNamePointSize) - CompareUnsigned (ResolutionX, FontNameResolutionX) - CompareUnsigned (ResolutionY, FontNameResolutionY) - CompareString (Spacing, FontNameSpacing) - CompareUnsigned (AverageWidth, FontNameAverageWidth) - CompareString (CharSetRegistry, FontNameCharSetRegistry) - CompareString (CharSetEncoding, FontNameCharSetEncoding) - return True; -} - -XCopyFontName (name1, name2, fontNameAttributes) - XFontName *name1, *name2; - unsigned int fontNameAttributes; -{ -#define CopyString(field,bit) \ - if (fontNameAttributes & bit) \ - strcpy (name2->field, name1->field); - -#define CopyUnsigned(field,bit) \ - if (fontNameAttributes & bit) \ - name2->field = name1->field; - - CopyString (Registry, FontNameRegistry) - CopyString (Foundry, FontNameFoundry) - CopyString (FamilyName, FontNameFamilyName) - CopyString (WeightName, FontNameWeightName) - CopyString (Slant, FontNameSlant) - CopyString (SetwidthName, FontNameSetwidthName) - CopyString (AddStyleName, FontNameAddStyleName) - CopyUnsigned (PixelSize, FontNamePixelSize) - CopyUnsigned (PointSize, FontNamePointSize) - CopyUnsigned (ResolutionX, FontNameResolutionX) - CopyUnsigned (ResolutionY, FontNameResolutionY) - CopyString (Spacing, FontNameSpacing) - CopyUnsigned (AverageWidth, FontNameAverageWidth) - CopyString (CharSetRegistry, FontNameCharSetRegistry) - CopyString (CharSetEncoding, FontNameCharSetEncoding) - return True; -} diff --git a/contrib/groff/src/xditview/XFontName.h b/contrib/groff/src/xditview/XFontName.h deleted file mode 100644 index efe9eb1..0000000 --- a/contrib/groff/src/xditview/XFontName.h +++ /dev/null @@ -1,45 +0,0 @@ -typedef struct _xFontName { - char Registry[256]; - char Foundry[256]; - char FamilyName[256]; - char WeightName[256]; - char Slant[3]; - char SetwidthName[256]; - char AddStyleName[256]; - unsigned int PixelSize; - unsigned int PointSize; - unsigned int ResolutionX; - unsigned int ResolutionY; - char Spacing[2]; - unsigned int AverageWidth; - char CharSetRegistry[256]; - char CharSetEncoding[256]; -} XFontName; - -#define FontNameRegistry (1<<0) -#define FontNameFoundry (1<<1) -#define FontNameFamilyName (1<<2) -#define FontNameWeightName (1<<3) -#define FontNameSlant (1<<4) -#define FontNameSetwidthName (1<<5) -#define FontNameAddStyleName (1<<6) -#define FontNamePixelSize (1<<7) -#define FontNamePointSize (1<<8) -#define FontNameResolutionX (1<<9) -#define FontNameResolutionY (1<<10) -#define FontNameSpacing (1<<11) -#define FontNameAverageWidth (1<<12) -#define FontNameCharSetRegistry (1<<13) -#define FontNameCharSetEncoding (1<<14) - -#define SlantRoman "R" -#define SlantItalic "I" -#define SlantOblique "O" -#define SlantReverseItalic "RI" -#define SlantReverseOblique "RO" - -#define SpacingMonoSpaced "M" -#define SpacingProportional "P" -#define SpacingCharacterCell "C" - -typedef char XFontNameString[256]; diff --git a/contrib/groff/src/xditview/ad2c b/contrib/groff/src/xditview/ad2c deleted file mode 100644 index 651ab8c..0000000 --- a/contrib/groff/src/xditview/ad2c +++ /dev/null @@ -1,62 +0,0 @@ -#!/bin/sh -# -# ad2c : Convert app-defaults file to C strings decls. -# -# George Ferguson, ferguson@cs.rcohester.edu, 12 Nov 1990. -# 19 Mar 1991: gf -# Made it self-contained. -# 6 Jan 1992: mycroft@gnu.ai.mit.edu (Charles Hannum) -# Removed use of "-n" and ":read" label since Gnu and -# IBM sed print pattern space on "n" command. Still works -# with Sun sed, of course. -# 7 Jan 1992: matthew@sunpix.East.Sun.COM (Matthew Stier) -# Escape quotes after escaping backslashes. -# 8 Jul 1992: Version 1.6 -# Manpage fixes. -# 19 Apr 1993: Version 1.7 -# Remove comments that were inside the sed command since -# some versions of sed don't like them. The comments are -# now given here in the header. -# -# Comments on the script by line: -# /^!/d Remove comments -# /^$/d Remove blanks -# s/\\/\\\\/g Escape backslashes... -# s/\\$//g ...except the line continuation ones -# s/"/\\"/g Escape quotes -# s/^/"/ Add leading quote -# : test Establish label for later branch -# /\\$/b slash Branch to label "slash" if line ends in backslash -# s/$/",/ Otherwise add closing quote and comma... -# p ...output the line... -# d ...and clear the pattern space so it's not printed again -# : slash Branch comes here if line ends in backslash -# n Read next line, append to pattern space -# [...] The "d" and "s" commands that follow just delete -# comments and blank lines and escape control sequences -# b test Branch up to see if the line ends in backslash or not -# - -sed ' -/^!/d -/^$/d -s/\\/\\\\/g -s/\\$//g -s/"/\\"/g -s/^/"/ -: test -/\\$/b slash -s/$/",/ -p -d -: slash -n -/^!/d -/^$/d -s/"/\\"/g -s/\\\\/\\/g -s/\\n/\\\\n/g -s/\\t/\\\\t/g -s/\\f/\\\\f/g -s/\\b/\\\\b/g -b test' "$@" diff --git a/contrib/groff/src/xditview/device.c b/contrib/groff/src/xditview/device.c deleted file mode 100644 index 264f681..0000000 --- a/contrib/groff/src/xditview/device.c +++ /dev/null @@ -1,600 +0,0 @@ -/* device.c */ - -#include -#include - -#include -#include - -#include "device.h" - -#ifndef FONTPATH -#define FONTPATH "/usr/local/share/groff/font:/usr/local/lib/font:/usr/lib/font" -#endif - -#ifndef isascii -#define isascii(c) (1) -#endif - -extern void exit(); -#ifndef strtok -extern char *strtok(); -#endif -#ifndef strchr -extern char *strchr(); -#endif -#ifndef getenv -extern char *getenv(); -#endif - -/* Name of environment variable containing path to be used for -searching for device and font description files. */ -#define FONTPATH_ENV_VAR "GROFF_FONT_PATH" - -#define WS " \t\r\n" - -#ifndef INT_MIN -/* Minimum and maximum values a `signed int' can hold. */ -#define INT_MIN (-INT_MAX-1) -#define INT_MAX 2147483647 -#endif - -#define CHAR_TABLE_SIZE 307 - -struct _DeviceFont { - char *name; - int special; - DeviceFont *next; - Device *dev; - struct charinfo *char_table[CHAR_TABLE_SIZE]; - struct charinfo *code_table[256]; -}; - -struct charinfo { - int width; - int code; - struct charinfo *next; - struct charinfo *code_next; - char name[1]; -}; - -static char *current_filename = 0; -static int current_lineno = -1; - -static void error(); -static FILE *open_device_file(); -static DeviceFont *load_font(); -static Device *new_device(); -static DeviceFont *new_font(); -static void delete_font(); -static unsigned hash_name(); -static struct charinfo *add_char(); -static int read_charset_section(); -static char *canonicalize_name(); - -static -Device *new_device(name) - char *name; -{ - Device *dev; - - dev = XtNew(Device); - dev->sizescale = 1; - dev->res = 0; - dev->unitwidth = 0; - dev->fonts = 0; - dev->X11 = 0; - dev->paperlength = 0; - dev->paperwidth = 0; - dev->name = XtNewString(name); - return dev; -} - -void device_destroy(dev) - Device *dev; -{ - DeviceFont *f; - - if (!dev) - return; - f = dev->fonts; - while (f) { - DeviceFont *tem = f; - f = f->next; - delete_font(tem); - } - - XtFree(dev->name); - XtFree((char *)dev); -} - -Device *device_load(name) - char *name; -{ - Device *dev; - FILE *fp; - int err = 0; - char buf[256]; - - fp = open_device_file(name, "DESC", ¤t_filename); - if (!fp) - return 0; - dev = new_device(name); - current_lineno = 0; - while (fgets(buf, sizeof(buf), fp)) { - char *p; - current_lineno++; - p = strtok(buf, WS); - if (p) { - int *np = 0; - char *q; - - if (strcmp(p, "charset") == 0) - break; - if (strcmp(p, "X11") == 0) - dev->X11 = 1; - else if (strcmp(p, "sizescale") == 0) - np = &dev->sizescale; - else if (strcmp(p, "res") == 0) - np = &dev->res; - else if (strcmp(p, "unitwidth") == 0) - np = &dev->unitwidth; - else if (strcmp(p, "paperwidth") == 0) - np = &dev->paperwidth; - else if (strcmp(p, "paperlength") == 0) - np = &dev->paperlength; - - if (np) { - q = strtok((char *)0, WS); - if (!q || sscanf(q, "%d", np) != 1 || *np <= 0) { - error("bad argument"); - err = 1; - break; - } - } - } - } - fclose(fp); - current_lineno = -1; - if (!err) { - if (dev->res == 0) { - error("missing res line"); - err = 1; - } - else if (dev->unitwidth == 0) { - error("missing unitwidth line"); - err = 1; - } - } - if (dev->paperlength == 0) - dev->paperlength = dev->res*11; - if (dev->paperwidth == 0) - dev->paperwidth = dev->res*8 + dev->res/2; - if (err) { - device_destroy(dev); - dev = 0; - } - XtFree(current_filename); - current_filename = 0; - return dev; -} - - -DeviceFont *device_find_font(dev, name) - Device *dev; - char *name; -{ - DeviceFont *f; - - if (!dev) - return 0; - for (f = dev->fonts; f; f = f->next) - if (strcmp(f->name, name) == 0) - return f; - return load_font(dev, name); -} - -static -DeviceFont *load_font(dev, name) - Device *dev; - char *name; -{ - FILE *fp; - char buf[256]; - DeviceFont *f; - int special = 0; - - fp = open_device_file(dev->name, name, ¤t_filename); - if (!fp) - return 0; - current_lineno = 0; - for (;;) { - char *p; - - if (!fgets(buf, sizeof(buf), fp)) { - error("no charset line"); - return 0; - } - current_lineno++; - p = strtok(buf, WS); - /* charset must be on a line by itself */ - if (p && strcmp(p, "charset") == 0 && strtok((char *)0, WS) == 0) - break; - if (p && strcmp(p, "special") == 0) - special = 1; - } - f = new_font(name, dev); - f->special = special; - if (!read_charset_section(f, fp)) { - delete_font(f); - f = 0; - } - else { - f->next = dev->fonts; - dev->fonts = f; - } - fclose(fp); - XtFree(current_filename); - current_filename = 0; - return f; -} - -static -DeviceFont *new_font(name, dev) - char *name; - Device *dev; -{ - int i; - DeviceFont *f; - - f = XtNew(DeviceFont); - f->name = XtNewString(name); - f->dev = dev; - f->special = 0; - f->next = 0; - for (i = 0; i < CHAR_TABLE_SIZE; i++) - f->char_table[i] = 0; - for (i = 0; i < 256; i++) - f->code_table[i] = 0; - return f; -} - -static -void delete_font(f) - DeviceFont *f; -{ - int i; - - if (!f) - return; - XtFree(f->name); - for (i = 0; i < CHAR_TABLE_SIZE; i++) { - struct charinfo *ptr = f->char_table[i]; - while (ptr) { - struct charinfo *tem = ptr; - ptr = ptr->next; - XtFree((char *)tem); - } - } - XtFree((char *)f); -} - - -static -unsigned hash_name(name) - char *name; -{ - unsigned n = 0; - /* XXX do better than this */ - while (*name) - n = (n << 1) ^ *name++; - - return n; -} - -static -int scale_round(n, x, y) - int n, x, y; -{ - int y2; - - if (x == 0) - return 0; - y2 = y/2; - if (n >= 0) { - if (n <= (INT_MAX - y2)/x) - return (n*x + y2)/y; - } - else if (-(unsigned)n <= (-(unsigned)INT_MIN - y2)/x) - return (n*x - y2)/y; - return (int)(n*(double)x/(double)y + .5); -} - -static -char *canonicalize_name(s) - char *s; -{ - static char ch[2]; - if (s[0] == 'c' && s[1] == 'h' && s[2] == 'a' && s[3] == 'r') { - char *p; - int n; - - for (p = s + 4; *p; p++) - if (!isascii(*p) || !isdigit((unsigned char)*p)) - return s; - n = atoi(s + 4); - if (n >= 0 && n <= 0xff) { - ch[0] = (char)n; - return ch; - } - } - return s; -} - -/* Return 1 if the character is present in the font; widthp gets the -width if non-null. */ - -int device_char_width(f, ps, name, widthp) - DeviceFont *f; - int ps; - char *name; - int *widthp; -{ - struct charinfo *p; - - name = canonicalize_name(name); - for (p = f->char_table[hash_name(name) % CHAR_TABLE_SIZE];; p = p->next) { - if (!p) - return 0; - if (strcmp(p->name, name) == 0) - break; - } - *widthp = scale_round(p->width, ps, f->dev->unitwidth); - return 1; -} - -int device_code_width(f, ps, code, widthp) - DeviceFont *f; - int ps; - int code; - int *widthp; -{ - struct charinfo *p; - - for (p = f->code_table[code & 0xff];; p = p->code_next) { - if (!p) - return 0; - if (p->code == code) - break; - } - *widthp = scale_round(p->width, ps, f->dev->unitwidth); - return 1; -} - -char *device_name_for_code(f, code) - DeviceFont *f; - int code; -{ - static struct charinfo *state = 0; - if (f) - state = f->code_table[code & 0xff]; - for (; state; state = state->code_next) - if (state->code == code && state->name[0] != '\0') { - char *name = state->name; - state = state->code_next; - return name; - } - return 0; -} - -int device_font_special(f) - DeviceFont *f; -{ - return f->special; -} - -static -struct charinfo *add_char(f, name, width, code) - DeviceFont *f; - char *name; - int width, code; -{ - struct charinfo **pp; - struct charinfo *ci; - - name = canonicalize_name(name); - if (strcmp(name, "---") == 0) - name = ""; - - ci = (struct charinfo *)XtMalloc(XtOffsetOf(struct charinfo, name[0]) - + strlen(name) + 1); - - strcpy(ci->name, name); - ci->width = width; - ci->code = code; - - if (*name != '\0') { - pp = &f->char_table[hash_name(name) % CHAR_TABLE_SIZE]; - ci->next = *pp; - *pp = ci; - } - pp = &f->code_table[code & 0xff]; - ci->code_next = *pp; - *pp = ci; - return ci; -} - -/* Return non-zero for success. */ - -static -int read_charset_section(f, fp) - DeviceFont *f; - FILE *fp; -{ - struct charinfo *last_charinfo = 0; - char buf[256]; - - while (fgets(buf, sizeof(buf), fp)) { - char *name; - int width; - int code; - char *p; - - current_lineno++; - name = strtok(buf, WS); - if (!name) - continue; /* ignore blank lines */ - p = strtok((char *)0, WS); - if (!p) /* end of charset section */ - break; - if (strcmp(p, "\"") == 0) { - if (!last_charinfo) { - error("first line of charset section cannot use `\"'"); - return 0; - } - else - (void)add_char(f, name, - last_charinfo->width, last_charinfo->code); - } - else { - char *q; - if (sscanf(p, "%d", &width) != 1) { - error("bad width field"); - return 0; - } - p = strtok((char *)0, WS); - if (!p) { - error("missing type field"); - return 0; - } - p = strtok((char *)0, WS); - if (!p) { - error("missing code field"); - return 0; - } - code = (int)strtol(p, &q, 0); - if (q == p) { - error("bad code field"); - return 0; - } - last_charinfo = add_char(f, name, width, code); - } - } - return 1; -} - -static -FILE *find_file(file, result) - char *file, **result; -{ - char *buf = NULL; - int bufsiz = 0; - int flen; - FILE *fp; - char *path; - char *env; - - env = getenv(FONTPATH_ENV_VAR); - path = XtMalloc(((env && *env) ? strlen(env) + 1 : 0) - + strlen(FONTPATH) + 1); - *path = '\0'; - if (env && *env) { - strcat(path, env); - strcat(path, ":"); - } - strcat(path, FONTPATH); - - *result = NULL; - - if (file == NULL) - return NULL; - if (*file == '\0') - return NULL; - - if (*file == '/') { - fp = fopen(file, "r"); - if (fp) - *result = XtNewString(file); - return fp; - } - - flen = strlen(file); - - while (*path) { - int len; - char *start, *end; - - start = path; - end = strchr(path, ':'); - if (end) - path = end + 1; - else - path = end = strchr(path, '\0'); - if (start >= end) - continue; - if (end[-1] == '/') - --end; - len = (end - start) + 1 + flen + 1; - if (len > bufsiz) { - if (buf) - buf = XtRealloc(buf, len); - else - buf = XtMalloc(len); - bufsiz = len; - } - memcpy(buf, start, end - start); - buf[end - start] = '/'; - strcpy(buf + (end - start) + 1, file); - fp = fopen(buf, "r"); - if (fp) { - *result = buf; - return fp; - } - } - XtFree(buf); - return NULL; -} - -static -FILE *open_device_file(device_name, file_name, result) - char *device_name, *file_name, **result; -{ - char *buf, *path; - FILE *fp; - - buf = XtMalloc(3 + strlen(device_name) + 1 + strlen(file_name) + 1); - sprintf(buf, "dev%s/%s", device_name, file_name); - fp = find_file(buf, result); - if (!fp) { - fprintf(stderr, "can't find device file `%s'\n", file_name); - fflush(stderr); - } - XtFree(buf); - return fp; -} - -static -void error(s) - char *s; -{ - if (current_filename) { - fprintf(stderr, "%s:", current_filename); - if (current_lineno > 0) - fprintf(stderr, "%d:", current_lineno); - putc(' ', stderr); - } - fputs(s, stderr); - putc('\n', stderr); - fflush(stderr); -} - -/* -Local Variables: -c-indent-level: 4 -c-continued-statement-offset: 4 -c-brace-offset: -4 -c-argdecl-indent: 4 -c-label-offset: -4 -c-tab-always-indent: nil -End: -*/ diff --git a/contrib/groff/src/xditview/device.h b/contrib/groff/src/xditview/device.h deleted file mode 100644 index 2b9a64b..0000000 --- a/contrib/groff/src/xditview/device.h +++ /dev/null @@ -1,21 +0,0 @@ - -typedef struct _DeviceFont DeviceFont; - -typedef struct _Device { - char *name; - int sizescale; - int res; - int unitwidth; - int paperlength; - int paperwidth; - int X11; - DeviceFont *fonts; -} Device; - -extern void device_destroy(); -extern Device *device_load(); -extern DeviceFont *device_find_font(); -extern int device_char_width(); -extern char *device_name_for_code(); -extern int device_code_width(); -extern int device_font_special(); diff --git a/contrib/groff/src/xditview/draw.c b/contrib/groff/src/xditview/draw.c deleted file mode 100644 index fe7c80f..0000000 --- a/contrib/groff/src/xditview/draw.c +++ /dev/null @@ -1,725 +0,0 @@ -/* - * draw.c - * - * accept dvi function calls and translate to X - */ - -#include -#include -#include -#include -#include -#include - -/* math.h on a Sequent doesn't define M_PI, apparently */ -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif - -#include "DviP.h" - -#define DeviceToX(dw, n) ((int)((n) * (dw)->dvi.scale_factor + .5)) -#define XPos(dw) (DeviceToX((dw), (dw)->dvi.state->x - \ - (dw)->dvi.text_device_width) + (dw)->dvi.text_x_width) -#define YPos(dw) (DeviceToX((dw), (dw)->dvi.state->y)) - -static int FakeCharacter(); - -HorizontalMove(dw, delta) - DviWidget dw; - int delta; -{ - dw->dvi.state->x += delta; -} - -HorizontalGoto(dw, NewPosition) - DviWidget dw; - int NewPosition; -{ - dw->dvi.state->x = NewPosition; -} - -VerticalMove(dw, delta) - DviWidget dw; - int delta; -{ - dw->dvi.state->y += delta; -} - -VerticalGoto(dw, NewPosition) - DviWidget dw; - int NewPosition; -{ - dw->dvi.state->y = NewPosition; -} - -AdjustCacheDeltas (dw) - DviWidget dw; -{ - int extra; - int nadj; - int i; - - nadj = 0; - extra = DeviceToX(dw, dw->dvi.text_device_width) - - dw->dvi.text_x_width; - if (extra == 0) - return; - for (i = 0; i <= dw->dvi.cache.index; i++) - if (dw->dvi.cache.adjustable[i]) - ++nadj; - dw->dvi.text_x_width += extra; - if (nadj <= 1) - return; - for (i = 0; i <= dw->dvi.cache.index; i++) - if (dw->dvi.cache.adjustable[i]) { - int x; - int *deltap; - - x = extra/nadj; - deltap = &dw->dvi.cache.cache[i].delta; -#define MIN_DELTA 2 - if (*deltap > 0 && x + *deltap < MIN_DELTA) { - x = MIN_DELTA - *deltap; - if (x <= 0) - *deltap = MIN_DELTA; - else - x = 0; - } - else - *deltap += x; - extra -= x; - --nadj; - dw->dvi.cache.adjustable[i] = 0; - } -} - -FlushCharCache (dw) - DviWidget dw; -{ - if (dw->dvi.cache.char_index != 0) { - AdjustCacheDeltas (dw); - XDrawText (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, - dw->dvi.cache.start_x, dw->dvi.cache.start_y, - dw->dvi.cache.cache, dw->dvi.cache.index + 1); - } - dw->dvi.cache.index = 0; - dw->dvi.cache.max = DVI_TEXT_CACHE_SIZE; -#if 0 - if (dw->dvi.noPolyText) - dw->dvi.cache.max = 1; -#endif - dw->dvi.cache.char_index = 0; - dw->dvi.cache.cache[0].nchars = 0; - dw->dvi.cache.start_x = dw->dvi.cache.x = XPos (dw); - dw->dvi.cache.start_y = dw->dvi.cache.y = YPos (dw); -} - -Newline (dw) - DviWidget dw; -{ - FlushCharCache (dw); - dw->dvi.text_x_width = dw->dvi.text_device_width = 0; - dw->dvi.word_flag = 0; -} - -Word (dw) - DviWidget dw; -{ - dw->dvi.word_flag = 1; -} - -#define charWidth(fi,c) (\ - (fi)->per_char ?\ - (fi)->per_char[(c) - (fi)->min_char_or_byte2].width\ - :\ - (fi)->max_bounds.width\ -) - - -static -int charExists (fi, c) - XFontStruct *fi; - int c; -{ - XCharStruct *p; - - if (fi->per_char == NULL || - c < fi->min_char_or_byte2 || c > fi->max_char_or_byte2) - return 0; - p = fi->per_char + (c - fi->min_char_or_byte2); - return (p->lbearing != 0 || p->rbearing != 0 || p->width != 0 - || p->ascent != 0 || p->descent != 0 || p->attributes != 0); -} - -static -DoCharacter (dw, c, wid) - DviWidget dw; - int c; - int wid; /* width in device units */ -{ - register XFontStruct *font; - register XTextItem *text; - int x, y; - - x = XPos(dw); - y = YPos(dw); - - /* - * quick and dirty extents calculation: - */ - if (!(y + 24 >= dw->dvi.extents.y1 - && y - 24 <= dw->dvi.extents.y2 -#if 0 - && x + 24 >= dw->dvi.extents.x1 - && x - 24 <= dw->dvi.extents.x2 -#endif - )) - return; - - if (y != dw->dvi.cache.y - || dw->dvi.cache.char_index >= DVI_CHAR_CACHE_SIZE) { - FlushCharCache (dw); - x = dw->dvi.cache.x; - dw->dvi.cache.adjustable[dw->dvi.cache.index] = 0; - } - /* - * load a new font, if the current block is not empty, - * step to the next. - */ - if (dw->dvi.cache.font_size != dw->dvi.state->font_size || - dw->dvi.cache.font_number != dw->dvi.state->font_number) - { - FlushCharCache (dw); - x = dw->dvi.cache.x; - dw->dvi.cache.font_size = dw->dvi.state->font_size; - dw->dvi.cache.font_number = dw->dvi.state->font_number; - dw->dvi.cache.font = QueryFont (dw, - dw->dvi.cache.font_number, - dw->dvi.cache.font_size); - if (dw->dvi.cache.cache[dw->dvi.cache.index].nchars != 0) { - ++dw->dvi.cache.index; - if (dw->dvi.cache.index >= dw->dvi.cache.max) - FlushCharCache (dw); - dw->dvi.cache.cache[dw->dvi.cache.index].nchars = 0; - dw->dvi.cache.adjustable[dw->dvi.cache.index] = 0; - } - } - if (x != dw->dvi.cache.x || dw->dvi.word_flag) { - if (dw->dvi.cache.cache[dw->dvi.cache.index].nchars != 0) { - ++dw->dvi.cache.index; - if (dw->dvi.cache.index >= dw->dvi.cache.max) - FlushCharCache (dw); - dw->dvi.cache.cache[dw->dvi.cache.index].nchars = 0; - dw->dvi.cache.adjustable[dw->dvi.cache.index] = 0; - } - dw->dvi.cache.adjustable[dw->dvi.cache.index] - = dw->dvi.word_flag; - dw->dvi.word_flag = 0; - } - font = dw->dvi.cache.font; - text = &dw->dvi.cache.cache[dw->dvi.cache.index]; - if (text->nchars == 0) { - text->chars = &dw->dvi.cache.char_cache[dw->dvi.cache.char_index]; - text->delta = x - dw->dvi.cache.x; - if (font != dw->dvi.font) { - text->font = font->fid; - dw->dvi.font = font; - } else - text->font = None; - dw->dvi.cache.x += text->delta; - } - if (charExists(font, c)) { - int w; - dw->dvi.cache.char_cache[dw->dvi.cache.char_index++] = (char) c; - ++text->nchars; - w = charWidth(font, c); - dw->dvi.cache.x += w; - if (wid != 0) { - dw->dvi.text_x_width += w; - dw->dvi.text_device_width += wid; - } - } -} - -static -int FindCharWidth (dw, buf, widp) - DviWidget dw; - char *buf; - int *widp; -{ - int maxpos; - int i; - - if (dw->dvi.device_font == 0 - || dw->dvi.state->font_number != dw->dvi.device_font_number) { - dw->dvi.device_font_number = dw->dvi.state->font_number; - dw->dvi.device_font - = QueryDeviceFont (dw, dw->dvi.device_font_number); - } - if (dw->dvi.device_font - && device_char_width (dw->dvi.device_font, - dw->dvi.state->font_size, buf, widp)) - return 1; - - maxpos = MaxFontPosition (dw); - for (i = 1; i <= maxpos; i++) { - DeviceFont *f = QueryDeviceFont (dw, i); - if (f && device_font_special (f) - && device_char_width (f, dw->dvi.state->font_size, - buf, widp)) { - dw->dvi.state->font_number = i; - return 1; - } - } - return 0; -} - -/* Return the width of the character in device units. */ - -int PutCharacter (dw, buf) - DviWidget dw; - char *buf; -{ - int prevFont; - int c = -1; - int wid = 0; - DviCharNameMap *map; - - if (!dw->dvi.display_enable) - return 0; /* The width doesn't matter in this case. */ - prevFont = dw->dvi.state->font_number; - if (!FindCharWidth (dw, buf, &wid)) - return 0; - map = QueryFontMap (dw, dw->dvi.state->font_number); - if (map) - c = DviCharIndex (map, buf); - if (c >= 0) - DoCharacter (dw, c, wid); - else - (void) FakeCharacter (dw, buf, wid); - dw->dvi.state->font_number = prevFont; - return wid; -} - -/* Return 1 if we can fake it; 0 otherwise. */ - -static -int FakeCharacter (dw, buf, wid) - DviWidget dw; - char *buf; - int wid; -{ - int oldx, oldw; - char ch[2]; - char *chars = 0; - - if (buf[0] == '\0' || buf[1] == '\0' || buf[2] != '\0') - return 0; -#define pack2(c1, c2) (((c1) << 8) | (c2)) - - switch (pack2(buf[0], buf[1])) { - case pack2('f', 'i'): - chars = "fi"; - break; - case pack2('f', 'l'): - chars = "fl"; - break; - case pack2('f', 'f'): - chars = "ff"; - break; - case pack2('F', 'i'): - chars = "ffi"; - break; - case pack2('F', 'l'): - chars = "ffl"; - break; - } - if (!chars) - return 0; - oldx = dw->dvi.state->x; - oldw = dw->dvi.text_device_width; - ch[1] = '\0'; - for (; *chars; chars++) { - ch[0] = *chars; - dw->dvi.state->x += PutCharacter (dw, ch); - } - dw->dvi.state->x = oldx; - dw->dvi.text_device_width = oldw + wid; - return 1; -} - -PutNumberedCharacter (dw, c) - DviWidget dw; - int c; -{ - char *name; - int wid; - DviCharNameMap *map; - - if (!dw->dvi.display_enable) - return; - - if (dw->dvi.device_font == 0 - || dw->dvi.state->font_number != dw->dvi.device_font_number) { - dw->dvi.device_font_number = dw->dvi.state->font_number; - dw->dvi.device_font - = QueryDeviceFont (dw, dw->dvi.device_font_number); - } - - if (dw->dvi.device_font == 0 - || !device_code_width (dw->dvi.device_font, - dw->dvi.state->font_size, c, &wid)) - return; - if (dw->dvi.native) { - DoCharacter (dw, c, wid); - return; - } - map = QueryFontMap (dw, dw->dvi.state->font_number); - if (!map) - return; - for (name = device_name_for_code (dw->dvi.device_font, c); - name; - name = device_name_for_code ((DeviceFont *)0, c)) { - int code = DviCharIndex (map, name); - if (code >= 0) { - DoCharacter (dw, code, wid); - break; - } - if (FakeCharacter (dw, name, wid)) - break; - } -} - -ClearPage (dw) - DviWidget dw; -{ - XClearWindow (XtDisplay (dw), XtWindow (dw)); -} - -static -setGC (dw) - DviWidget dw; -{ - int desired_line_width; - - if (dw->dvi.line_thickness < 0) - desired_line_width = (int)(((double)dw->dvi.device_resolution - * dw->dvi.state->font_size) - / (10.0*72.0*dw->dvi.sizescale)); - else - desired_line_width = dw->dvi.line_thickness; - - if (desired_line_width != dw->dvi.line_width) { - XGCValues values; - values.line_width = DeviceToX(dw, desired_line_width); - if (values.line_width == 0) - values.line_width = 1; - XChangeGC(XtDisplay (dw), dw->dvi.normal_GC, - GCLineWidth, &values); - dw->dvi.line_width = desired_line_width; - } -} - -static -setFillGC (dw) - DviWidget dw; -{ - int fill_type; - unsigned long mask = GCFillStyle | GCForeground; - - fill_type = (dw->dvi.fill * 10) / (DVI_FILL_MAX + 1); - if (dw->dvi.fill_type != fill_type) { - XGCValues values; - if (fill_type <= 0) { - values.foreground = dw->dvi.background; - values.fill_style = FillSolid; - } else if (fill_type >= 9) { - values.foreground = dw->dvi.foreground; - values.fill_style = FillSolid; - } else { - values.foreground = dw->dvi.foreground; - values.fill_style = FillOpaqueStippled; - values.stipple = dw->dvi.gray[fill_type - 1]; - mask |= GCStipple; - } - XChangeGC(XtDisplay (dw), dw->dvi.fill_GC, mask, &values); - dw->dvi.fill_type = fill_type; - } -} - -DrawLine (dw, x, y) - DviWidget dw; - int x, y; -{ - int xp, yp; - - AdjustCacheDeltas (dw); - setGC (dw); - xp = XPos (dw); - yp = YPos (dw); - XDrawLine (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, - xp, yp, - xp + DeviceToX (dw, x), yp + DeviceToX (dw, y)); -} - -DrawCircle (dw, diam) - DviWidget dw; - int diam; -{ - int d; - - AdjustCacheDeltas (dw); - setGC (dw); - d = DeviceToX (dw, diam); - XDrawArc (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, - XPos (dw), YPos (dw) - d/2, - d, d, 0, 64*360); -} - -DrawFilledCircle (dw, diam) - DviWidget dw; - int diam; -{ - int d; - - AdjustCacheDeltas (dw); - setFillGC (dw); - d = DeviceToX (dw, diam); - XFillArc (XtDisplay (dw), XtWindow (dw), dw->dvi.fill_GC, - XPos (dw), YPos (dw) - d/2, - d, d, 0, 64*360); - XDrawArc (XtDisplay (dw), XtWindow (dw), dw->dvi.fill_GC, - XPos (dw), YPos (dw) - d/2, - d, d, 0, 64*360); -} - -DrawEllipse (dw, a, b) - DviWidget dw; - int a, b; -{ - AdjustCacheDeltas (dw); - setGC (dw); - XDrawArc (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, - XPos (dw), YPos (dw) - DeviceToX (dw, b/2), - DeviceToX (dw, a), DeviceToX (dw, b), 0, 64*360); -} - -DrawFilledEllipse (dw, a, b) - DviWidget dw; - int a, b; -{ - AdjustCacheDeltas (dw); - setFillGC (dw); - XFillArc (XtDisplay (dw), XtWindow (dw), dw->dvi.fill_GC, - XPos (dw), YPos (dw) - DeviceToX (dw, b/2), - DeviceToX (dw, a), DeviceToX (dw, b), 0, 64*360); - XDrawArc (XtDisplay (dw), XtWindow (dw), dw->dvi.fill_GC, - XPos (dw), YPos (dw) - DeviceToX (dw, b/2), - DeviceToX (dw, a), DeviceToX (dw, b), 0, 64*360); -} - -DrawArc (dw, x0, y0, x1, y1) - DviWidget dw; - int x0, y0, x1, y1; -{ - int angle1, angle2; - int rad = (int)((sqrt ((double)x0*x0 + (double)y0*y0) - + sqrt ((double)x1*x1 + (double)y1*y1) + 1.0)/2.0); - if ((x0 == 0 && y0 == 0) || (x1 == 0 && y1 == 0)) - return; - angle1 = (int)(atan2 ((double)y0, (double)-x0)*180.0*64.0/M_PI); - angle2 = (int)(atan2 ((double)-y1, (double)x1)*180.0*64.0/M_PI); - - angle2 -= angle1; - if (angle2 < 0) - angle2 += 64*360; - - AdjustCacheDeltas (dw); - setGC (dw); - - rad = DeviceToX (dw, rad); - XDrawArc (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, - XPos (dw) + DeviceToX (dw, x0) - rad, - YPos (dw) + DeviceToX (dw, y0) - rad, - rad*2, rad*2, angle1, angle2); -} - -DrawPolygon (dw, v, n) - DviWidget dw; - int *v; - int n; -{ - XPoint *p; - int i; - int dx, dy; - - n /= 2; - - AdjustCacheDeltas (dw); - setGC (dw); - p = (XPoint *)XtMalloc((n + 2)*sizeof(XPoint)); - p[0].x = XPos (dw); - p[0].y = YPos (dw); - dx = 0; - dy = 0; - for (i = 0; i < n; i++) { - dx += v[2*i]; - p[i + 1].x = DeviceToX (dw, dx) + p[0].x; - dy += v[2*i + 1]; - p[i + 1].y = DeviceToX (dw, dy) + p[0].y; - } - p[n+1].x = p[0].x; - p[n+1].y = p[0].y; - XDrawLines (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, - p, n + 2, CoordModeOrigin); - XtFree((char *)p); -} - - -DrawFilledPolygon (dw, v, n) - DviWidget dw; - int *v; - int n; -{ - XPoint *p; - int i; - int dx, dy; - - n /= 2; - if (n < 2) - return; - - AdjustCacheDeltas (dw); - setFillGC (dw); - p = (XPoint *)XtMalloc((n + 2)*sizeof(XPoint)); - p[0].x = p[n+1].x = XPos (dw); - p[0].y = p[n+1].y = YPos (dw); - dx = 0; - dy = 0; - for (i = 0; i < n; i++) { - dx += v[2*i]; - p[i + 1].x = DeviceToX (dw, dx) + p[0].x; - dy += v[2*i + 1]; - p[i + 1].y = DeviceToX (dw, dy) + p[0].y; - } - XFillPolygon (XtDisplay (dw), XtWindow (dw), dw->dvi.fill_GC, - p, n + 1, Complex, CoordModeOrigin); - XDrawLines (XtDisplay (dw), XtWindow (dw), dw->dvi.fill_GC, - p, n + 2, CoordModeOrigin); - XtFree((char *)p); -} - -#define POINTS_MAX 10000 - -static -appendPoint(points, pointi, x, y) - XPoint *points; - int *pointi; - int x, y; -{ - if (*pointi < POINTS_MAX) { - points[*pointi].x = x; - points[*pointi].y = y; - *pointi += 1; - } -} - -#define FLATNESS 1 - -static -flattenCurve(points, pointi, x2, y2, x3, y3, x4, y4) - XPoint *points; - int *pointi; - int x2, y2, x3, y3, x4, y4; -{ - int x1, y1, dx, dy, n1, n2, n; - - x1 = points[*pointi - 1].x; - y1 = points[*pointi - 1].y; - - dx = x4 - x1; - dy = y4 - y1; - - n1 = dy*(x2 - x1) - dx*(y2 - y1); - n2 = dy*(x3 - x1) - dx*(y3 - y1); - if (n1 < 0) - n1 = -n1; - if (n2 < 0) - n2 = -n2; - n = n1 > n2 ? n1 : n2; - - if (n*n / (dy*dy + dx*dx) <= FLATNESS*FLATNESS) - appendPoint (points, pointi, x4, y4); - else { - flattenCurve (points, pointi, - (x1 + x2)/2, (y1 + y2)/2, - (x1 + x2*2 + x3)/4, (y1 + y2*2 + y3)/4, - (x1 +3*x2 + 3*x3 + x4)/8, (y1 +3*y2 + 3*y3 + y4)/8); - flattenCurve (points, pointi, - (x2 + x3*2 + x4)/4, (y2 + y3*2 + y4)/4, - (x3 + x4)/2, (y3 + y4)/2, - x4, y4); - } -} - - -DrawSpline (dw, v, n) - DviWidget dw; - int *v; - int n; -{ - int sx, sy, tx, ty; - int ox, oy, dx, dy; - int i; - int pointi; - XPoint points[POINTS_MAX]; - - if (n == 0 || (n & 1) != 0) - return; - AdjustCacheDeltas (dw); - setGC (dw); - ox = XPos (dw); - oy = YPos (dw); - dx = v[0]; - dy = v[1]; - sx = ox; - sy = oy; - tx = sx + DeviceToX (dw, dx); - ty = sy + DeviceToX (dw, dy); - - pointi = 0; - - appendPoint (points, &pointi, sx, sy); - appendPoint (points, &pointi, (sx + tx)/2, (sy + ty)/2); - - for (i = 2; i < n; i += 2) { - int ux = ox + DeviceToX (dw, dx += v[i]); - int uy = oy + DeviceToX (dw, dy += v[i+1]); - flattenCurve (points, &pointi, - (sx + tx*5)/6, (sy + ty*5)/6, - (tx*5 + ux)/6, (ty*5 + uy)/6, - (tx + ux)/2, (ty + uy)/2); - sx = tx; - sy = ty; - tx = ux; - ty = uy; - } - - appendPoint (points, &pointi, tx, ty); - - XDrawLines (XtDisplay (dw), XtWindow (dw), dw->dvi.normal_GC, - points, pointi, CoordModeOrigin); -} - - -/* -Local Variables: -c-indent-level: 8 -c-continued-statement-offset: 8 -c-brace-offset: -8 -c-argdecl-indent: 8 -c-label-offset: -8 -c-tab-always-indent: nil -End: -*/ diff --git a/contrib/groff/src/xditview/font.c b/contrib/groff/src/xditview/font.c deleted file mode 100644 index 2e028aa..0000000 --- a/contrib/groff/src/xditview/font.c +++ /dev/null @@ -1,471 +0,0 @@ -/* - * font.c - * - * map dvi fonts to X fonts - */ - -#include -#include -#include -#include -#include -#include "DviP.h" -#include "XFontName.h" - -static DisposeFontSizes(); - -static char * -savestr (s) - char *s; -{ - char *n; - - if (!s) - return 0; - n = XtMalloc (strlen (s) + 1); - if (n) - strcpy (n, s); - return n; -} - -static DviFontList * -LookupFontByPosition (dw, position) - DviWidget dw; - int position; -{ - DviFontList *f; - - for (f = dw->dvi.fonts; f; f = f->next) - if (f->dvi_number == position) - break; - return f; -} - -int -MaxFontPosition (dw) - DviWidget dw; -{ - DviFontList *f; - int n = -1; - - for (f = dw->dvi.fonts; f; f = f->next) - if (f->dvi_number > n) - n = f->dvi_number; - return n; -} - -static DviFontSizeList * -LookupFontSizeBySize (dw, f, size) - DviWidget dw; - DviFontList *f; - int size; -{ - DviFontSizeList *fs, *best = 0, *smallest = 0; - int bestsize = 0; - XFontName fontName; - unsigned int fontNameAttributes; - char fontNameString[2048]; - int decipointsize; - - if (f->scalable) { - decipointsize = (10*size)/dw->dvi.sizescale; - for (best = f->sizes; best; best = best->next) - if (best->size == decipointsize) - return best; - best = (DviFontSizeList *) XtMalloc(sizeof *best); - best->next = f->sizes; - best->size = decipointsize; - f->sizes = best; - XParseFontName (f->x_name, &fontName, &fontNameAttributes); - fontNameAttributes &= ~(FontNamePixelSize|FontNameAverageWidth); - fontNameAttributes |= FontNameResolutionX; - fontNameAttributes |= FontNameResolutionY; - fontNameAttributes |= FontNamePointSize; - fontName.ResolutionX = dw->dvi.display_resolution; - fontName.ResolutionY = dw->dvi.display_resolution; - fontName.PointSize = decipointsize; - XFormatFontName (&fontName, fontNameAttributes, fontNameString); - best->x_name = savestr (fontNameString); - best->doesnt_exist = 0; - best->font = 0; - return best; - } - for (fs = f->sizes; fs; fs=fs->next) { - if (dw->dvi.sizescale*fs->size <= 10*size - && fs->size >= bestsize) { - best = fs; - bestsize = fs->size; - } - if (smallest == 0 || fs->size < smallest->size) - smallest = fs; - } - return best ? best : smallest; -} - -static char * -SkipFontNameElement (n) - char *n; -{ - while (*n != '-') - if (!*++n) - return 0; - return n+1; -} - -# define SizePosition 8 -# define EncodingPosition 13 - -static -ConvertFontNameToSize (n) - char *n; -{ - int i, size; - - for (i = 0; i < SizePosition; i++) { - n = SkipFontNameElement (n); - if (!n) - return -1; - } - size = atoi (n); - return size; -} - -static char * -ConvertFontNameToEncoding (n) - char *n; -{ - int i; - for (i = 0; i < EncodingPosition; i++) { - n = SkipFontNameElement (n); - if (!n) - return 0; - } - return n; -} - -DviFontSizeList * -InstallFontSizes (dw, x_name, scalablep) - DviWidget dw; - char *x_name; - Boolean *scalablep; -{ - char fontNameString[2048]; - char **fonts; - int i, count; - int size; - DviFontSizeList *sizes, *new; - XFontName fontName; - unsigned int fontNameAttributes; - - *scalablep = FALSE; - if (!XParseFontName (x_name, &fontName, &fontNameAttributes)) - return 0; - fontNameAttributes &= ~(FontNamePixelSize|FontNamePointSize - |FontNameAverageWidth); - fontNameAttributes |= FontNameResolutionX; - fontNameAttributes |= FontNameResolutionY; - fontName.ResolutionX = dw->dvi.display_resolution; - fontName.ResolutionY = dw->dvi.display_resolution; - XFormatFontName (&fontName, fontNameAttributes, fontNameString); - fonts = XListFonts (XtDisplay (dw), fontNameString, 10000000, &count); - sizes = 0; - for (i = 0; i < count; i++) { - size = ConvertFontNameToSize (fonts[i]); - if (size == 0) { - DisposeFontSizes (dw, sizes); - sizes = 0; - *scalablep = TRUE; - break; - } - if (size != -1) { - new = (DviFontSizeList *) XtMalloc (sizeof *new); - new->next = sizes; - new->size = size; - new->x_name = savestr (fonts[i]); - new->doesnt_exist = 0; - new->font = 0; - sizes = new; - } - } - XFreeFontNames (fonts); - return sizes; -} - -static -DisposeFontSizes (dw, fs) - DviWidget dw; - DviFontSizeList *fs; -{ - DviFontSizeList *next; - - for (; fs; fs=next) { - next = fs->next; - if (fs->x_name) - XtFree (fs->x_name); - if (fs->font && fs->font != dw->dvi.default_font) { - XUnloadFont (XtDisplay (dw), fs->font->fid); - XFree ((char *)fs->font); - } - XtFree ((char *) fs); - } -} - -static DviFontList * -InstallFont (dw, position, dvi_name, x_name) - DviWidget dw; - int position; - char *dvi_name; - char *x_name; -{ - DviFontList *f; - char *encoding; - - if ((f = LookupFontByPosition (dw, position)) != NULL) { - /* - * ignore gratuitous font loading - */ - if (!strcmp (f->dvi_name, dvi_name) && - !strcmp (f->x_name, x_name)) - return f; - - DisposeFontSizes (dw, f->sizes); - if (f->dvi_name) - XtFree (f->dvi_name); - if (f->x_name) - XtFree (f->x_name); - f->device_font = 0; - } else { - f = (DviFontList *) XtMalloc (sizeof (*f)); - f->next = dw->dvi.fonts; - dw->dvi.fonts = f; - } - f->initialized = FALSE; - f->dvi_name = savestr (dvi_name); - f->device_font = device_find_font (dw->dvi.device, dvi_name); - f->x_name = savestr (x_name); - f->dvi_number = position; - f->sizes = 0; - f->scalable = FALSE; - if (f->x_name) { - encoding = ConvertFontNameToEncoding (f->x_name); - f->char_map = DviFindMap (encoding); - } else - f->char_map = 0; - /* - * force requery of fonts - */ - dw->dvi.font = 0; - dw->dvi.font_number = -1; - dw->dvi.cache.font = 0; - dw->dvi.cache.font_number = -1; - dw->dvi.device_font = 0; - dw->dvi.device_font_number = -1; - return f; -} - -ForgetFonts (dw) - DviWidget dw; -{ - DviFontList *f = dw->dvi.fonts; - - while (f) { - DviFontList *tem = f; - - if (f->sizes) - DisposeFontSizes (dw, f->sizes); - if (f->dvi_name) - XtFree (f->dvi_name); - if (f->x_name) - XtFree (f->x_name); - f = f->next; - XtFree ((char *) tem); - } - - /* - * force requery of fonts - */ - dw->dvi.font = 0; - dw->dvi.font_number = -1; - dw->dvi.cache.font = 0; - dw->dvi.cache.font_number = -1; - dw->dvi.device_font = 0; - dw->dvi.device_font_number = -1; - dw->dvi.fonts = 0; -} - - -static char * -MapDviNameToXName (dw, dvi_name) - DviWidget dw; - char *dvi_name; -{ - DviFontMap *fm; - - for (fm = dw->dvi.font_map; fm; fm=fm->next) - if (!strcmp (fm->dvi_name, dvi_name)) - return fm->x_name; - return 0; -} - -#if 0 -static char * -MapXNameToDviName (dw, x_name) - DviWidget dw; - char *x_name; -{ - DviFontMap *fm; - - for (fm = dw->dvi.font_map; fm; fm=fm->next) - if (!strcmp (fm->x_name, x_name)) - return fm->dvi_name; - return 0; -} -#endif - -ParseFontMap (dw) - DviWidget dw; -{ - char dvi_name[1024]; - char x_name[2048]; - char *m, *s; - DviFontMap *fm, *new; - - if (dw->dvi.font_map) - DestroyFontMap (dw->dvi.font_map); - fm = 0; - m = dw->dvi.font_map_string; - while (*m) { - s = m; - while (*m && !isspace (*m)) - ++m; - strncpy (dvi_name, s, m-s); - dvi_name[m-s] = '\0'; - while (isspace (*m)) - ++m; - s = m; - while (*m && *m != '\n') - ++m; - strncpy (x_name, s, m-s); - x_name[m-s] = '\0'; - new = (DviFontMap *) XtMalloc (sizeof *new); - new->x_name = savestr (x_name); - new->dvi_name = savestr (dvi_name); - new->next = fm; - fm = new; - ++m; - } - dw->dvi.font_map = fm; -} - -DestroyFontMap (font_map) - DviFontMap *font_map; -{ - DviFontMap *next; - - for (; font_map; font_map = next) { - next = font_map->next; - if (font_map->x_name) - XtFree (font_map->x_name); - if (font_map->dvi_name) - XtFree (font_map->dvi_name); - XtFree ((char *) font_map); - } -} - -/* ARGSUSED */ - -SetFontPosition (dw, position, dvi_name, extra) - DviWidget dw; - int position; - char *dvi_name; - char *extra; /* unused */ -{ - char *x_name; - - x_name = MapDviNameToXName (dw, dvi_name); - if (x_name) - (void) InstallFont (dw, position, dvi_name, x_name); -} - -XFontStruct * -QueryFont (dw, position, size) - DviWidget dw; - int position; - int size; -{ - DviFontList *f; - DviFontSizeList *fs; - - f = LookupFontByPosition (dw, position); - if (!f) - return dw->dvi.default_font; - if (!f->initialized) { - f->sizes = InstallFontSizes (dw, f->x_name, &f->scalable); - f->initialized = TRUE; - } - fs = LookupFontSizeBySize (dw, f, size); - if (!fs) - return dw->dvi.default_font; - if (!fs->font) { - if (fs->x_name) - fs->font = XLoadQueryFont (XtDisplay (dw), fs->x_name); - if (!fs->font) - fs->font = dw->dvi.default_font; - } - return fs->font; -} - -DeviceFont * -QueryDeviceFont (dw, position) - DviWidget dw; - int position; -{ - DviFontList *f; - - f = LookupFontByPosition (dw, position); - if (!f) - return 0; - return f->device_font; -} - -DviCharNameMap * -QueryFontMap (dw, position) - DviWidget dw; - int position; -{ - DviFontList *f; - - f = LookupFontByPosition (dw, position); - if (f) - return f->char_map; - else - return 0; -} - -#if 0 -LoadFont (dw, position, size) - DviWidget dw; - int position; - int size; -{ - XFontStruct *font; - - font = QueryFont (dw, position, size); - dw->dvi.font_number = position; - dw->dvi.font_size = size; - dw->dvi.font = font; - XSetFont (XtDisplay (dw), dw->dvi.normal_GC, font->fid); - return; -} -#endif - -/* -Local Variables: -c-indent-level: 8 -c-continued-statement-offset: 8 -c-brace-offset: -8 -c-argdecl-indent: 8 -c-label-offset: -8 -c-tab-always-indent: nil -End: -*/ diff --git a/contrib/groff/src/xditview/gray1.bm b/contrib/groff/src/xditview/gray1.bm deleted file mode 100644 index c40a95e..0000000 --- a/contrib/groff/src/xditview/gray1.bm +++ /dev/null @@ -1,4 +0,0 @@ -#define gray1_width 3 -#define gray1_height 3 -static char gray1_bits[] = { - 0x00, 0x02, 0x00}; diff --git a/contrib/groff/src/xditview/gray2.bm b/contrib/groff/src/xditview/gray2.bm deleted file mode 100644 index e87a1bc..0000000 --- a/contrib/groff/src/xditview/gray2.bm +++ /dev/null @@ -1,4 +0,0 @@ -#define gray2_width 3 -#define gray2_height 3 -static char gray2_bits[] = { - 0x00, 0x03, 0x00}; diff --git a/contrib/groff/src/xditview/gray3.bm b/contrib/groff/src/xditview/gray3.bm deleted file mode 100644 index d9313eb..0000000 --- a/contrib/groff/src/xditview/gray3.bm +++ /dev/null @@ -1,4 +0,0 @@ -#define gray3_width 3 -#define gray3_height 3 -static char gray3_bits[] = { - 0x00, 0x03, 0x02}; diff --git a/contrib/groff/src/xditview/gray4.bm b/contrib/groff/src/xditview/gray4.bm deleted file mode 100644 index dad142a..0000000 --- a/contrib/groff/src/xditview/gray4.bm +++ /dev/null @@ -1,4 +0,0 @@ -#define gray4_width 3 -#define gray4_height 3 -static char gray4_bits[] = { - 0x00, 0x07, 0x02}; diff --git a/contrib/groff/src/xditview/gray5.bm b/contrib/groff/src/xditview/gray5.bm deleted file mode 100644 index 5f57618..0000000 --- a/contrib/groff/src/xditview/gray5.bm +++ /dev/null @@ -1,4 +0,0 @@ -#define gray5_width 3 -#define gray5_height 3 -static char gray5_bits[] = { - 0x04, 0x07, 0x02}; diff --git a/contrib/groff/src/xditview/gray6.bm b/contrib/groff/src/xditview/gray6.bm deleted file mode 100644 index b76701d..0000000 --- a/contrib/groff/src/xditview/gray6.bm +++ /dev/null @@ -1,4 +0,0 @@ -#define gray6_width 3 -#define gray6_height 3 -static char gray6_bits[] = { - 0x04, 0x07, 0x03}; diff --git a/contrib/groff/src/xditview/gray7.bm b/contrib/groff/src/xditview/gray7.bm deleted file mode 100644 index ef47bc6..0000000 --- a/contrib/groff/src/xditview/gray7.bm +++ /dev/null @@ -1,4 +0,0 @@ -#define gray7_width 3 -#define gray7_height 3 -static char gray7_bits[] = { - 0x05, 0x07, 0x03}; diff --git a/contrib/groff/src/xditview/gray8.bm b/contrib/groff/src/xditview/gray8.bm deleted file mode 100644 index 12de7cb..0000000 --- a/contrib/groff/src/xditview/gray8.bm +++ /dev/null @@ -1,4 +0,0 @@ -#define gray8_width 3 -#define gray8_height 3 -static char gray8_bits[] = { - 0x05, 0x07, 0x07}; diff --git a/contrib/groff/src/xditview/gxditview.man b/contrib/groff/src/xditview/gxditview.man deleted file mode 100644 index 8680001..0000000 --- a/contrib/groff/src/xditview/gxditview.man +++ /dev/null @@ -1,249 +0,0 @@ -.TH GXDITVIEW 1 "Release 5" "X Version 11" -.SH NAME -gxditview \- display gtroff output files -.SH SYNOPSIS -.B gxditview -.RI [\fB\- toolkitoption\ .\|.\|.\|] -.RI [\fB\- option\ .\|.\|.\|] -.RI [ filename ] -.SH DESCRIPTION -The -.I gxditview -program displays gtroff output on an X display. -It uses the standard X11 fonts, -so it does not require access to the server machine for font loading. -.PP -If -.I filename -is -.BR \- , -.I gxditview -will read the standard input. -.PP -The left mouse button brings up a menu with the following entries: -.TP 8 -.B "Next Page" -Display the next page. -.TP -.B "Previous Page" -Display the previous page. -.TP -.B "Select Page" -Select a particular numbered page specified by a dialog box. -.TP -.B Print -Print the gtroff output using a command specified by a dialog box. -The default command initially displayed is controlled by the -.B printCommand -application resource, and by the -.B \-printCommand -option. -.TP -.B Open -Open for display a new file specified by a dialog box. -The file should contain gtroff output. -If the filename starts with -.B | -it will be taken to be a command to read from. -.TP -.B Quit -Exit from -.IR gxditview . -.PP -The -.BR n , -Space -and Return keys are bound to the -.B Next\ Page -action. -The -.BR p , -BackSpace -and -Delete -keys are bound to the -.B Previous\ Page -action. -The -.B q -key is bound to the -.B Quit -action. -The -.B r -key is bound to the -.B Rerasterize -action which rereads the current file, and redisplays the current page; -if the current file is a command, the command will be reexecuted. -.PP -The -.B paperlength -and -.B paperwidth -commands in the DESC file specify the length and width in machine units -of the virtual page displayed by -.IR gxditview . -.SH OPTIONS -.I Gxditview -accepts all of the standard X Toolkit command line options along with the -additional options listed below: -.TP 8 -.B \-help -This option indicates that a brief summary of the allowed options should be -printed. -.TP -.B \-page -This option specifies the page number of the document to be displayed. -.TP -.BI \-backingStore\ backing-store-type -Redisplay of the gtroff output window can take upto a second or so, -this option causes the server to save the window contents so that when -it is scrolled around the viewport, the window is painted from -contents saved in backing store. -.I backing-store-type -can be one of -.BR Always , -.B WhenMapped -or -.BR NotUseful . -.TP -.BI \-printCommand\ command -The default command displayed in the dialog box for the -.B Print -menu entry will be -.IR command . -.TP -.BI \-resolution\ res -The gtroff output file will be displayed at a resolution of -.I res -dpi, -unless the DESC file contains the -.B X11 -command, in which case the device resolution will be used. -This corresponds the -.I Dvi -widget's -.B resolution -resource. -The default is 75. -.TP -.BI \-filename\ string -The default filename displayed in the dialog box for the -.B Open -menu entry will be -.IR string . -This can be either a filename, or a command starting with -.BR | . -.PP -The following standard X Toolkit command line arguments are commonly used with -.IR gxditview : -.TP 8 -.BI \-bg\ color -This option specifies the color to use for the background of the window. -The default is \fIwhite\fP. -.TP -.BI \-bd\ color -This option specifies the color to use for the border of the window. -The default is \fIblack\fP. -.TP -.BI \-bw\ number -This option specifies the width in pixels of the border surrounding the window. -.TP -.BI \-fg\ color -This option specifies the color to use for displaying text. The default is -\fIblack\fP. -.TP -.BI \-fn\ font -This option specifies the font to be used for displaying widget text. The -default is \fIfixed\fP. -.TP -.B \-rv -This option indicates that reverse video should be simulated by swapping -the foreground and background colors. -.TP -.BI \-geometry\ geometry -This option specifies the preferred size and position of the window. -.TP -.BI \-display\ host : display -This option specifies the X server to contact. -.TP -.BI \-xrm\ resourcestring -This option specifies a resource string to be used. -.SH X DEFAULTS -This program uses the -.I Dvi -widget in the X Toolkit. It understands all of the core resource names and -classes as well as: -.PP -.TP 8 -.BR width\ (class\ Width ) -Specifies the width of the window. -.TP -.BR height\ (class\ Height ) -Specifies the height of the window. -.TP -.BR foreground\ (class\ Foreground ) -Specifies the default foreground color. -.TP -.BR font\ (class\ Font ) -Specifies the font to be used for error messages. -.TP -.BR fontMap\ (class\ FontMap ) -Specifies the mapping from groff font names to X font names. This -must be a string containing a sequence of lines. Each line contains -two whitespace separated fields: first the groff font name, and -secondly the X font name. The default is -.nf -"\e -TR -adobe-times-medium-r-normal--*-100-*-*-*-*-iso8859-1\en\e -TI -adobe-times-medium-i-normal--*-100-*-*-*-*-iso8859-1\en\e -TB -adobe-times-bold-r-normal--*-100-*-*-*-*-iso8859-1\en\e -TBI -adobe-times-bold-i-normal--*-100-*-*-*-*-iso8859-1\en\e -CR -adobe-courier-medium-r-normal--*-100-*-*-*-*-iso8859-1\en\e -CI -adobe-courier-medium-o-normal--*-100-*-*-*-*-iso8859-1\en\e -CB -adobe-courier-bold-r-normal--*-100-*-*-*-*-iso8859-1\en\e -CBI -adobe-courier-bold-o-normal--*-100-*-*-*-*-iso8859-1\en\e -HR -adobe-helvetica-medium-r-normal--*-100-*-*-*-*-iso8859-1\en\e -HI -adobe-helvetica-medium-o-normal--*-100-*-*-*-*-iso8859-1\en\e -HB -adobe-helvetica-bold-r-normal--*-100-*-*-*-*-iso8859-1\en\e -HBI -adobe-helvetica-bold-o-normal--*-100-*-*-*-*-iso8859-1\en\e -NR -adobe-new century schoolbook-medium-r-normal--*-100-*-*-*-*-iso8859-1\en\e -NI -adobe-new century schoolbook-medium-i-normal--*-100-*-*-*-*-iso8859-1\en\e -NB -adobe-new century schoolbook-bold-r-normal--*-100-*-*-*-*-iso8859-1\en\e -NBI -adobe-new century schoolbook-bold-i-normal--*-100-*-*-*-*-iso8859-1\en\e -S -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\en\e -SS -adobe-symbol-medium-r-normal--*-100-*-*-*-*-adobe-fontspecific\en\e -" -.fi - -.SH "SEE ALSO" -.IR X (1), -.IR xrdb (1), -.IR gtroff (1), -.IR groff (1) -.SH ORIGIN -This program is derived from xditview; -portions of xditview originated in xtroff which was derived -from suntroff. -.SH COPYRIGHT -Copyright 1989, Massachusetts Institute of Technology. -.br -See -.IR X (1) -for a full statement of rights and permissions. -.SH AUTHORS -Keith Packard (MIT X Consortium) -.br -Richard L. Hyde (Purdue) -.br -David Slattengren (Berkeley) -.br -Malcolm Slaney (Schlumberger Palo Alto Research) -.br -Mark Moraes (University of Toronto) -.br -James Clark -. -.\" Local Variables: -.\" mode: nroff -.\" End: diff --git a/contrib/groff/src/xditview/lex.c b/contrib/groff/src/xditview/lex.c deleted file mode 100644 index 32831bd..0000000 --- a/contrib/groff/src/xditview/lex.c +++ /dev/null @@ -1,103 +0,0 @@ -#include -#include -#include -#include -#include "DviP.h" - -DviGetAndPut(dw, cp) - DviWidget dw; - int *cp; -{ - if (dw->dvi.ungot) { - dw->dvi.ungot = 0; - *cp = getc (dw->dvi.file); - } - else { - *cp = getc (dw->dvi.file); - if (*cp != EOF) - putc (*cp, dw->dvi.tmpFile); - } - return *cp; -} - -char * -GetLine(dw, Buffer, Length) - DviWidget dw; - char *Buffer; - int Length; -{ - int i = 0, c; - - Length--; /* Save room for final '\0' */ - - while (DviGetC (dw, &c) != EOF) { - if (Buffer && i < Length) - Buffer[i++] = c; - if (c == '\n') { - DviUngetC(dw, c); - break; - } - } - if (Buffer) - Buffer[i] = '\0'; - return Buffer; -} - -char * -GetWord(dw, Buffer, Length) - DviWidget dw; - char *Buffer; - int Length; -{ - int i = 0, c; - - Length--; /* Save room for final '\0' */ - while (DviGetC(dw, &c) == ' ' || c == '\n') - ; - while (c != EOF) { - if (Buffer && i < Length) - Buffer[i++] = c; - if (DviGetC(dw, &c) == ' ' || c == '\n') { - DviUngetC(dw, c); - break; - } - } - if (Buffer) - Buffer[i] = '\0'; - return Buffer; -} - -GetNumber(dw) - DviWidget dw; -{ - int i = 0, c; - int negative = 0; - - while (DviGetC(dw, &c) == ' ' || c == '\n') - ; - if (c == '-') { - negative = 1; - DviGetC(dw, &c); - } - - for (; c >= '0' && c <= '9'; DviGetC(dw, &c)) { - if (negative) - i = i*10 - (c - '0'); - else - i = i*10 + c - '0'; - } - if (c != EOF) - DviUngetC(dw, c); - return i; -} - -/* -Local Variables: -c-indent-level: 8 -c-continued-statement-offset: 8 -c-brace-offset: -8 -c-argdecl-indent: 8 -c-label-offset: -8 -c-tab-always-indent: nil -End: -*/ diff --git a/contrib/groff/src/xditview/page.c b/contrib/groff/src/xditview/page.c deleted file mode 100644 index 9284199..0000000 --- a/contrib/groff/src/xditview/page.c +++ /dev/null @@ -1,88 +0,0 @@ -/* - * page.c - * - * map page numbers to file position - */ - -#include -#include -#include -#include -#include -#include "DviP.h" - -#ifdef X_NOT_STDC_ENV -extern long ftell(); -#endif - -static DviFileMap * -MapPageNumberToFileMap (dw, number) - DviWidget dw; - int number; -{ - DviFileMap *m; - - for (m = dw->dvi.file_map; m; m=m->next) - if (m->page_number == number) - break; - return m; -} - -DestroyFileMap (m) - DviFileMap *m; -{ - DviFileMap *next; - - for (; m; m = next) { - next = m->next; - XtFree ((char *) m); - } -} - -ForgetPagePositions (dw) - DviWidget dw; -{ - DestroyFileMap (dw->dvi.file_map); - dw->dvi.file_map = 0; -} - -RememberPagePosition(dw, number) - DviWidget dw; - int number; -{ - DviFileMap *m; - - if (!(m = MapPageNumberToFileMap (dw, number))) { - m = (DviFileMap *) XtMalloc (sizeof *m); - m->page_number = number; - m->next = dw->dvi.file_map; - dw->dvi.file_map = m; - } - if (dw->dvi.tmpFile) - m->position = ftell (dw->dvi.tmpFile); - else - m->position = ftell (dw->dvi.file); -} - -SearchPagePosition (dw, number) - DviWidget dw; - int number; -{ - DviFileMap *m; - - if (!(m = MapPageNumberToFileMap (dw, number))) - return -1; - return m->position; -} - -FileSeek(dw, position) -DviWidget dw; -long position; -{ - if (dw->dvi.tmpFile) { - dw->dvi.readingTmp = 1; - fseek (dw->dvi.tmpFile, position, 0); - } else - fseek (dw->dvi.file, position, 0); -} - diff --git a/contrib/groff/src/xditview/parse.c b/contrib/groff/src/xditview/parse.c deleted file mode 100644 index d763268..0000000 --- a/contrib/groff/src/xditview/parse.c +++ /dev/null @@ -1,340 +0,0 @@ -/* - * parse.c - * - * parse dvi input - */ - -#include -#include -#include -#include -#include -#include "DviP.h" - -static int StopSeen = 0; -static ParseDrawFunction(), ParseDeviceControl(); -static push_env(), pop_env(); - -#define HorizontalMove(dw, delta) ((dw)->dvi.state->x += (delta)) - - -ParseInput(dw) - register DviWidget dw; -{ - int n, k; - int c; - char Buffer[BUFSIZ]; - int NextPage; - int otherc; - - StopSeen = 0; - - /* - * make sure some state exists - */ - - if (!dw->dvi.state) - push_env (dw); - for (;;) { - switch (DviGetC(dw, &c)) { - case '\n': - break; - case ' ': /* when input is text */ - case 0: /* occasional noise creeps in */ - break; - case '{': /* push down current environment */ - push_env(dw); - break; - case '}': - pop_env(dw); - break; - /* - * two motion digits plus a character - */ - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - HorizontalMove(dw, (c-'0')*10 + - DviGetC(dw,&otherc)-'0'); - /* fall through */ - case 'c': /* single ascii character */ - DviGetC(dw,&c); - if (c == ' ') - break; - Buffer[0] = c; - Buffer[1] = '\0'; - (void) PutCharacter (dw, Buffer); - break; - case 'C': - GetWord (dw, Buffer, BUFSIZ); - (void) PutCharacter (dw, Buffer); - break; - case 't': - Buffer[1] = '\0'; - while (DviGetC (dw, &c) != EOF - && c != ' ' && c != '\n') { - Buffer[0] = c; - HorizontalMove (dw, PutCharacter (dw, Buffer)); - } - break; - case 'u': - n = GetNumber(dw); - Buffer[1] = '\0'; - while (DviGetC (dw, &c) == ' ') - ; - while (c != EOF && c != ' ' && c != '\n') { - Buffer[0] = c; - HorizontalMove (dw, - PutCharacter (dw, Buffer) + n); - DviGetC (dw, &c); - } - break; - - case 'D': /* draw function */ - (void) GetLine(dw, Buffer, BUFSIZ); - if (dw->dvi.display_enable) - ParseDrawFunction(dw, Buffer); - break; - case 's': /* ignore fractional sizes */ - n = GetNumber(dw); - dw->dvi.state->font_size = n; - break; - case 'f': - n = GetNumber(dw); - dw->dvi.state->font_number = n; - break; - case 'H': /* absolute horizontal motion */ - k = GetNumber(dw); - HorizontalGoto(dw, k); - break; - case 'h': /* relative horizontal motion */ - k = GetNumber(dw); - HorizontalMove(dw, k); - break; - case 'w': /* word space */ - Word (dw); - break; - case 'V': - n = GetNumber(dw); - VerticalGoto(dw, n); - break; - case 'v': - n = GetNumber(dw); - VerticalMove(dw, n); - break; - case 'P': /* new spread */ - break; - case 'p': /* new page */ - (void) GetNumber(dw); - NextPage = dw->dvi.current_page + 1; - RememberPagePosition(dw, NextPage); - FlushCharCache (dw); - return(NextPage); - case 'N': - n = GetNumber(dw); - PutNumberedCharacter (dw, n); - break; - case 'n': /* end of line */ - GetNumber(dw); - GetNumber(dw); - Newline (dw); - HorizontalGoto(dw, 0); - break; - case 'F': /* input files */ - case '+': /* continuation of X device control */ - case 'm': /* color */ - case '#': /* comment */ - GetLine(dw, NULL, 0); - break; - case 'x': /* device control */ - ParseDeviceControl(dw); - break; - case EOF: - dw->dvi.last_page = dw->dvi.current_page; - FlushCharCache (dw); - return dw->dvi.current_page; - default: - break; - } - } -} - -static -push_env(dw) - DviWidget dw; -{ - DviState *new; - - new = (DviState *) XtMalloc (sizeof (*new)); - if (dw->dvi.state) - *new = *(dw->dvi.state); - else { - new->font_size = 10; - new->font_number = 1; - new->x = 0; - new->y = 0; - } - new->next = dw->dvi.state; - dw->dvi.state = new; -} - -static -pop_env(dw) - DviWidget dw; -{ - DviState *old; - - old = dw->dvi.state; - dw->dvi.state = old->next; - XtFree ((char *) old); -} - -static -InitTypesetter (dw) - DviWidget dw; -{ - while (dw->dvi.state) - pop_env (dw); - push_env (dw); - FlushCharCache (dw); -} - -#define DRAW_ARGS_MAX 128 - -static -ParseDrawFunction(dw, buf) -DviWidget dw; -char *buf; -{ - int v[DRAW_ARGS_MAX]; - int i, no_move = 0; - char *ptr; - - v[0] = v[1] = v[2] = v[3] = 0; - - if (buf[0] == '\0') - return; - ptr = buf+1; - - for (i = 0; i < DRAW_ARGS_MAX; i++) { - if (sscanf(ptr, "%d", v + i) != 1) - break; - while (*ptr == ' ') - ptr++; - while (*ptr != '\0' && *ptr != ' ') - ptr++; - } - - switch (buf[0]) { - case 'l': /* draw a line */ - DrawLine(dw, v[0], v[1]); - break; - case 'c': /* circle */ - DrawCircle(dw, v[0]); - break; - case 'C': - DrawFilledCircle(dw, v[0]); - break; - case 'e': /* ellipse */ - DrawEllipse(dw, v[0], v[1]); - break; - case 'E': - DrawFilledEllipse(dw, v[0], v[1]); - break; - case 'a': /* arc */ - DrawArc(dw, v[0], v[1], v[2], v[3]); - break; - case 'p': - DrawPolygon(dw, v, i); - break; - case 'P': - DrawFilledPolygon(dw, v, i); - break; - case '~': /* wiggly line */ - DrawSpline(dw, v, i); - break; - case 't': - dw->dvi.line_thickness = v[0]; - break; - case 'f': - if (i > 0 && v[0] >= 0 && v[0] <= DVI_FILL_MAX) - dw->dvi.fill = v[0]; - no_move = 1; - break; - default: -#if 0 - warning("unknown drawing function %s", buf); -#endif - no_move = 1; - break; - } - - if (!no_move) { - if (buf[0] == 'e') { - if (i > 0) - dw->dvi.state->x += v[0]; - } - else { - while (--i >= 0) { - if (i & 1) - dw->dvi.state->y += v[i]; - else - dw->dvi.state->x += v[i]; - } - } - } -} - -static -ParseDeviceControl(dw) /* Parse the x commands */ - DviWidget dw; -{ - char str[20], str1[50]; - int c, n; - extern int LastPage, CurrentPage; - - GetWord (dw, str, 20); - switch (str[0]) { /* crude for now */ - case 'T': /* output device */ - GetWord (dw, str, 20); - SetDevice (dw, str); - break; - case 'i': /* initialize */ - InitTypesetter (dw); - break; - case 't': /* trailer */ - break; - case 'p': /* pause -- can restart */ - break; - case 's': /* stop */ - StopSeen = 1; - return; - case 'r': /* resolution when prepared */ - break; - case 'f': /* font used */ - n = GetNumber (dw); - GetWord (dw, str, 20); - GetLine (dw, str1, 50); - SetFontPosition (dw, n, str, str1); - break; - case 'H': /* char height */ - break; - case 'S': /* slant */ - break; - } - while (DviGetC (dw, &c) != '\n') /* skip rest of input line */ - if (c == EOF) - return; - return; -} - - -/* -Local Variables: -c-indent-level: 8 -c-continued-statement-offset: 8 -c-brace-offset: -8 -c-argdecl-indent: 8 -c-label-offset: -8 -c-tab-always-indent: nil -End: -*/ diff --git a/contrib/groff/src/xditview/xdit.bm b/contrib/groff/src/xditview/xdit.bm deleted file mode 100644 index 67b9c8a..0000000 --- a/contrib/groff/src/xditview/xdit.bm +++ /dev/null @@ -1,14 +0,0 @@ -#define xdit_width 32 -#define xdit_height 32 -static char xdit_bits[] = { - 0x00, 0x00, 0x00, 0x00, 0xfe, 0xff, 0xff, 0x03, 0x02, 0x00, 0x00, 0x02, - 0x8a, 0xa2, 0xfc, 0x03, 0x52, 0x14, 0x03, 0x04, 0x02, 0x80, 0x00, 0x08, - 0x52, 0x54, 0x00, 0x10, 0x8a, 0x22, 0x8f, 0x23, 0x02, 0x20, 0x06, 0x21, - 0x8a, 0x12, 0x8c, 0x40, 0x52, 0x14, 0x8c, 0x40, 0x02, 0x10, 0x58, 0x40, - 0x52, 0x14, 0x30, 0x40, 0x8a, 0x12, 0x30, 0x40, 0x02, 0x10, 0x70, 0x40, - 0x8a, 0x12, 0xc8, 0x40, 0x52, 0x24, 0xc4, 0xe0, 0x02, 0x20, 0x84, 0xe1, - 0x52, 0x54, 0xce, 0xf3, 0x8a, 0xa2, 0x00, 0xf8, 0x02, 0x00, 0x03, 0xfc, - 0x8a, 0x22, 0xfc, 0xf3, 0x52, 0x14, 0x00, 0xc2, 0x02, 0x00, 0x00, 0x02, - 0x52, 0x14, 0x45, 0x02, 0x8a, 0xa2, 0x28, 0x02, 0x02, 0x00, 0x00, 0x02, - 0x02, 0x00, 0x00, 0x02, 0xfe, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/contrib/groff/src/xditview/xdit_mask.bm b/contrib/groff/src/xditview/xdit_mask.bm deleted file mode 100644 index f34a4f8..0000000 --- a/contrib/groff/src/xditview/xdit_mask.bm +++ /dev/null @@ -1,14 +0,0 @@ -#define xdit_mask_width 32 -#define xdit_mask_height 32 -static char xdit_mask_bits[] = { - 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x07, - 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x0f, 0xff, 0xff, 0xff, 0x1f, - 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0x7f, 0xff, 0xff, 0xff, 0x7f, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xc7, - 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x07, - 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x07, 0xff, 0xff, 0xff, 0x07, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; diff --git a/contrib/groff/src/xditview/xditview.c b/contrib/groff/src/xditview/xditview.c deleted file mode 100644 index 75b7fd1..0000000 --- a/contrib/groff/src/xditview/xditview.c +++ /dev/null @@ -1,596 +0,0 @@ -/* - * Copyright 1991 Massachusetts Institute of Technology - * - * Permission to use, copy, modify, distribute, and sell this software and its - * documentation for any purpose is hereby granted without fee, provided that - * the above copyright notice appear in all copies and that both that - * copyright notice and this permission notice appear in supporting - * documentation, and that the name of M.I.T. not be used in advertising or - * publicity pertaining to distribution of the software without specific, - * written prior permission. M.I.T. makes no representations about the - * suitability of this software for any purpose. It is provided "as is" - * without express or implied warranty. - * - * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T. - * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES - * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION - * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN - * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - * - */ -/* - * xditview -- - * - * Display ditroff output in an X window - */ - -#ifndef SABER -#ifndef lint -static char rcsid[] = "$XConsortium: xditview.c,v 1.17 89/12/10 17:05:08 rws Exp $"; -#endif /* lint */ -#endif /* SABER */ - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include "Dvi.h" - -#include "xdit.bm" -#include "xdit_mask.bm" -#include "stdio.h" - -extern FILE *popen(); -extern void exit(); - -static String fallback_resources[] = { -#include "GXditview-ad.h" - NULL -}; - -static struct app_resources { - char *print_command; - char *filename; -} app_resources; - -#define offset(field) XtOffset(struct app_resources *, field) - -/* Application resources. */ - -static XtResource resources[] = { - {"printCommand", "PrintCommand", XtRString, sizeof(char*), - offset(print_command), XtRString, NULL}, - {"filename", "Filename", XtRString, sizeof(char*), - offset(filename), XtRString, NULL}, -}; - -#undef offset - -/* Command line options table. Only resources are entered here...there is a - pass over the remaining options after XtParseCommand is let loose. */ - -static XrmOptionDescRec options[] = { -{"-page", "*dvi.pageNumber", XrmoptionSepArg, NULL}, -{"-backingStore", "*dvi.backingStore", XrmoptionSepArg, NULL}, -{"-resolution", "*dvi.resolution", XrmoptionSepArg, NULL}, -{"-printCommand", ".printCommand", XrmoptionSepArg, NULL}, -{"-filename", ".filename", XrmoptionSepArg, NULL}, -{"-noPolyText", "*dvi.noPolyText", XrmoptionNoArg, "TRUE"}, -}; - -static char current_print_command[1024]; - -static char current_file_name[1024]; -static FILE *current_file; - -/* - * Report the syntax for calling xditview. - */ - -static -Syntax(call) - char *call; -{ - (void) printf ("Usage: %s [-fg ] [-bg ]\n", call); - (void) printf (" [-bd ] [-bw ] [-help]\n"); - (void) printf (" [-display displayname] [-geometry geom]\n"); - (void) printf (" [-page ] [-backing ]\n"); - (void) printf (" [-resolution ] [-print ]\n"); - (void) printf (" [-filename ] [filename]\n\n"); - exit(1); -} - -static void NewFile (), SetPageNumber (); -static Widget toplevel, paned, viewport, dvi; -static Widget page; -static Widget simpleMenu; - -static void NextPage(), PreviousPage(), SelectPage(), OpenFile(), Quit(); -static void Print(); - -static struct menuEntry { - char *name; - void (*function)(); -} menuEntries[] = { - "nextPage", NextPage, - "previousPage", PreviousPage, - "selectPage", SelectPage, - "print", Print, - "openFile", OpenFile, - "quit", Quit, -}; - -static void NextPageAction(), PreviousPageAction(), SelectPageAction(); -static void OpenFileAction(), QuitAction(); -static void AcceptAction(), CancelAction(); -static void PrintAction(); -static void RerasterizeAction(); - -XtActionsRec xditview_actions[] = { - "NextPage", NextPageAction, - "PreviousPage", PreviousPageAction, - "SelectPage", SelectPageAction, - "Print", PrintAction, - "OpenFile", OpenFileAction, - "Rerasterize", RerasterizeAction, - "Quit", QuitAction, - "Accept", AcceptAction, - "Cancel", CancelAction, -}; - -#define MenuNextPage 0 -#define MenuPreviousPage 1 -#define MenuSelectPage 2 -#define MenuPrint 3 -#define MenuOpenFile 4 -#define MenuQuit 5 - -static char pageLabel[256] = "Page "; - -int main(argc, argv) - int argc; - char **argv; -{ - char *file_name = 0; - int i; - static Arg labelArgs[] = { - {XtNlabel, (XtArgVal) pageLabel}, - }; - XtAppContext xtcontext; - Arg topLevelArgs[2]; - Widget entry; - Arg pageNumberArgs[1]; - int page_number; - - toplevel = XtAppInitialize(&xtcontext, "GXditview", - options, XtNumber (options), - &argc, argv, fallback_resources, NULL, 0); - if (argc > 2 - || (argc == 2 && (!strcmp(argv[1], "-help") - || !strcmp(argv[1], "--help")))) - Syntax(argv[0]); - - XtGetApplicationResources(toplevel, (XtPointer)&app_resources, - resources, XtNumber(resources), - NULL, (Cardinal) 0); - if (app_resources.print_command) - strcpy(current_print_command, app_resources.print_command); - - XtAppAddActions(xtcontext, xditview_actions, XtNumber (xditview_actions)); - - XtSetArg (topLevelArgs[0], XtNiconPixmap, - XCreateBitmapFromData (XtDisplay (toplevel), - XtScreen(toplevel)->root, - xdit_bits, xdit_width, xdit_height)); - - XtSetArg (topLevelArgs[1], XtNiconMask, - XCreateBitmapFromData (XtDisplay (toplevel), - XtScreen(toplevel)->root, - xdit_mask_bits, - xdit_mask_width, xdit_mask_height)); - XtSetValues (toplevel, topLevelArgs, 2); - if (argc > 1) - file_name = argv[1]; - - /* - * create the menu and insert the entries - */ - simpleMenu = XtCreatePopupShell ("menu", simpleMenuWidgetClass, toplevel, - NULL, 0); - for (i = 0; i < XtNumber (menuEntries); i++) { - entry = XtCreateManagedWidget(menuEntries[i].name, - smeBSBObjectClass, simpleMenu, - NULL, (Cardinal) 0); - XtAddCallback(entry, XtNcallback, menuEntries[i].function, NULL); - } - - paned = XtCreateManagedWidget("paned", panedWidgetClass, toplevel, - NULL, (Cardinal) 0); - viewport = XtCreateManagedWidget("viewport", viewportWidgetClass, paned, - NULL, (Cardinal) 0); - dvi = XtCreateManagedWidget ("dvi", dviWidgetClass, viewport, NULL, 0); - page = XtCreateManagedWidget ("label", labelWidgetClass, paned, - labelArgs, XtNumber (labelArgs)); - XtSetArg (pageNumberArgs[0], XtNpageNumber, &page_number); - XtGetValues (dvi, pageNumberArgs, 1); - if (file_name) - NewFile (file_name); - /* NewFile modifies current_file_name, so do this here. */ - if (app_resources.filename) - strcpy(current_file_name, app_resources.filename); - XtRealizeWidget (toplevel); - if (file_name) - SetPageNumber (page_number); - XtAppMainLoop(xtcontext); - return 0; -} - -static void -SetPageNumber (number) -{ - Arg arg[2]; - int actual_number, last_page; - - XtSetArg (arg[0], XtNpageNumber, number); - XtSetValues (dvi, arg, 1); - XtSetArg (arg[0], XtNpageNumber, &actual_number); - XtSetArg (arg[1], XtNlastPageNumber, &last_page); - XtGetValues (dvi, arg, 2); - if (actual_number == 0) - sprintf (pageLabel, "Page "); - else if (last_page > 0) - sprintf (pageLabel, "Page %d of %d", actual_number, last_page); - else - sprintf (pageLabel, "Page %d", actual_number); - XtSetArg (arg[0], XtNlabel, pageLabel); - XtSetValues (page, arg, 1); -} - -static void -SelectPageNumber (number_string) -char *number_string; -{ - SetPageNumber (atoi(number_string)); -} - -static int hadFile = 0; - -static void -NewFile (name) -char *name; -{ - Arg arg[2]; - char *n; - FILE *new_file; - Boolean seek = 0; - - if (current_file) { - if (!strcmp (current_file_name, "-")) - ; - else if (current_file_name[0] == '|') - pclose (current_file); - else - fclose (current_file); - } - if (!strcmp (name, "-")) - new_file = stdin; - else if (name[0] == '|') - new_file = popen (name+1, "r"); - else { - new_file = fopen (name, "r"); - seek = 1; - } - if (!new_file) { - /* XXX display error message */ - return; - } - XtSetArg (arg[0], XtNfile, new_file); - XtSetArg (arg[1], XtNseek, seek); - XtSetValues (dvi, arg, 2); - if (hadFile || name[0] != '-' || name[1] != '\0') { - XtSetArg (arg[0], XtNtitle, name); - if (name[0] != '/' && (n = strrchr (name, '/'))) - n = n + 1; - else - n = name; - XtSetArg (arg[1], XtNiconName, n); - XtSetValues (toplevel, arg, 2); - } - hadFile = 1; - SelectPageNumber ("1"); - strcpy (current_file_name, name); - current_file = new_file; -} - -static char fileBuf[1024]; - -ResetMenuEntry (entry) - Widget entry; -{ - Arg arg[1]; - - XtSetArg (arg[0], XtNpopupOnEntry, entry); - XtSetValues (XtParent(entry) , arg, (Cardinal) 1); -} - -/*ARGSUSED*/ - -static void -NextPage (entry, name, data) - Widget entry; - caddr_t name, data; -{ - NextPageAction(); - ResetMenuEntry (entry); -} - -static void -NextPageAction () -{ - Arg args[1]; - int number; - - XtSetArg (args[0], XtNpageNumber, &number); - XtGetValues (dvi, args, 1); - SetPageNumber (number+1); -} - -/*ARGSUSED*/ - -static void -PreviousPage (entry, name, data) - Widget entry; - caddr_t name, data; -{ - PreviousPageAction (); - ResetMenuEntry (entry); -} - -static void -PreviousPageAction () -{ - Arg args[1]; - int number; - - XtSetArg (args[0], XtNpageNumber, &number); - XtGetValues (dvi, args, 1); - SetPageNumber (number-1); -} - -/* ARGSUSED */ - -static void -SelectPage (entry, name, data) - Widget entry; - caddr_t name, data; -{ - SelectPageAction (); - ResetMenuEntry (entry); -} - -static void -SelectPageAction () -{ - MakePrompt (toplevel, "Page number", SelectPageNumber, ""); -} - - -static void -DoPrint (name) - char *name; -{ - FILE *print_file; -#ifdef SIGNALRETURNSINT - int (*handler)(); -#else - void (*handler)(); -#endif - /* Avoid dieing because of an invalid command. */ - handler = signal(SIGPIPE, SIG_IGN); - - print_file = popen(name, "w"); - if (!print_file) - /* XXX print error message */ - return; - DviSaveToFile(dvi, print_file); - pclose(print_file); - signal(SIGPIPE, handler); - strcpy(current_print_command, name); -} - -static void -RerasterizeAction() -{ - Arg args[1]; - int number; - - if (current_file_name[0] == 0) { - /* XXX display an error message */ - return; - } - XtSetArg (args[0], XtNpageNumber, &number); - XtGetValues (dvi, args, 1); - NewFile(current_file_name); - SetPageNumber (number); -} - -/* ARGSUSED */ - -static void -Print (entry, name, data) - Widget entry; - caddr_t name, data; -{ - PrintAction (); - ResetMenuEntry (entry); -} - -static void -PrintAction () -{ - if (current_print_command[0]) - strcpy (fileBuf, current_print_command); - else - fileBuf[0] = '\0'; - MakePrompt (toplevel, "Print command:", DoPrint, fileBuf); -} - - -/* ARGSUSED */ - -static void -OpenFile (entry, name, data) - Widget entry; - caddr_t name, data; -{ - OpenFileAction (); - ResetMenuEntry (entry); -} - -static void -OpenFileAction () -{ - if (current_file_name[0]) - strcpy (fileBuf, current_file_name); - else - fileBuf[0] = '\0'; - MakePrompt (toplevel, "File to open:", NewFile, fileBuf); -} - -/* ARGSUSED */ - -static void -Quit (entry, closure, data) - Widget entry; - caddr_t closure, data; -{ - QuitAction (); -} - -static void -QuitAction () -{ - exit (0); -} - -Widget promptShell, promptDialog; -void (*promptfunction)(); - -/* ARGSUSED */ -static -void CancelAction (widget, event, params, num_params) - Widget widget; - XEvent *event; - String *params; - Cardinal *num_params; -{ - if (promptShell) { - XtSetKeyboardFocus(toplevel, (Widget) None); - XtDestroyWidget(promptShell); - promptShell = (Widget) 0; - } -} - -static -void AcceptAction (widget, event, params, num_params) - Widget widget; - XEvent *event; - String *params; - Cardinal *num_params; -{ - (*promptfunction)(XawDialogGetValueString(promptDialog)); - CancelAction (widget, event, params, num_params); -} - -MakePrompt(centerw, prompt, func, def) -Widget centerw; -char *prompt; -void (*func)(); -char *def; -{ - static Arg dialogArgs[] = { - {XtNlabel, 0}, - {XtNvalue, 0}, - }; - Arg valueArgs[1]; - Arg centerArgs[2]; - Position source_x, source_y; - Position dest_x, dest_y; - Dimension center_width, center_height; - Dimension prompt_width, prompt_height; - Widget valueWidget; - - CancelAction ((Widget)NULL, (XEvent *) 0, (String *) 0, (Cardinal *) 0); - promptShell = XtCreatePopupShell ("promptShell", transientShellWidgetClass, - toplevel, NULL, (Cardinal) 0); - dialogArgs[0].value = (XtArgVal)prompt; - dialogArgs[1].value = (XtArgVal)def; - promptDialog = XtCreateManagedWidget( "promptDialog", dialogWidgetClass, - promptShell, dialogArgs, XtNumber (dialogArgs)); - XawDialogAddButton(promptDialog, "accept", NULL, (caddr_t) 0); - XawDialogAddButton(promptDialog, "cancel", NULL, (caddr_t) 0); - valueWidget = XtNameToWidget (promptDialog, "value"); - if (valueWidget) { - XtSetArg (valueArgs[0], XtNresizable, TRUE); - XtSetValues (valueWidget, valueArgs, 1); - /* - * as resizable isn't set until just above, the - * default value will be displayed incorrectly. - * rectify the situation by resetting the values - */ - XtSetValues (promptDialog, dialogArgs, XtNumber (dialogArgs)); - } - XtSetKeyboardFocus (promptDialog, valueWidget); - XtSetKeyboardFocus (toplevel, valueWidget); - XtRealizeWidget (promptShell); - /* - * place the widget in the center of the "parent" - */ - XtSetArg (centerArgs[0], XtNwidth, ¢er_width); - XtSetArg (centerArgs[1], XtNheight, ¢er_height); - XtGetValues (centerw, centerArgs, 2); - XtSetArg (centerArgs[0], XtNwidth, &prompt_width); - XtSetArg (centerArgs[1], XtNheight, &prompt_height); - XtGetValues (promptShell, centerArgs, 2); - source_x = (center_width - prompt_width) / 2; - source_y = (center_height - prompt_height) / 3; - XtTranslateCoords (centerw, source_x, source_y, &dest_x, &dest_y); - XtSetArg (centerArgs[0], XtNx, dest_x); - XtSetArg (centerArgs[1], XtNy, dest_y); - XtSetValues (promptShell, centerArgs, 2); - XtMapWidget(promptShell); - promptfunction = func; -} - -/* For DviChar.c */ - -char *xmalloc(n) - int n; -{ - return XtMalloc(n); -} - -/* -Local Variables: -c-indent-level: 4 -c-continued-statement-offset: 4 -c-brace-offset: -4 -c-argdecl-indent: 4 -c-label-offset: -4 -c-tab-always-indent: nil -End: -*/ diff --git a/contrib/groff/src/xditview/xtotroff.c b/contrib/groff/src/xditview/xtotroff.c deleted file mode 100644 index 97cac0a..0000000 --- a/contrib/groff/src/xditview/xtotroff.c +++ /dev/null @@ -1,311 +0,0 @@ -/* - * xtotroff - * - * convert X font metrics into troff font metrics - */ - -#include -#include -#include -#include -#include -#include -#include "XFontName.h" -#include "DviChar.h" - -#ifdef X_NOT_STDC_ENV -char *malloc(); -#else -#include -#endif - -#define charWidth(fi,c) ((fi)->per_char[(c) - (fi)->min_char_or_byte2].width) -#define charHeight(fi,c) ((fi)->per_char[(c) - (fi)->min_char_or_byte2].ascent) -#define charDepth(fi,c) ((fi)->per_char[(c) - (fi)->min_char_or_byte2].descent) -#define charLBearing(fi,c) ((fi)->per_char[(c) - (fi)->min_char_or_byte2].lbearing) -#define charRBearing(fi,c) ((fi)->per_char[(c) - (fi)->min_char_or_byte2].rbearing) - -Display *dpy; -int groff_flag = 0; -unsigned resolution = 75; -unsigned point_size = 10; - -int charExists (fi, c) - XFontStruct *fi; - int c; -{ - XCharStruct *p; - - if (c < fi->min_char_or_byte2 || c > fi->max_char_or_byte2) - return 0; - p = fi->per_char + (c - fi->min_char_or_byte2); - return (p->lbearing != 0 || p->rbearing != 0 || p->width != 0 - || p->ascent != 0 || p->descent != 0 || p->attributes != 0); -} - -/* Canonicalize the font name by replacing scalable parts by *s. */ - -CanonicalizeFontName (font_name, canon_font_name) - char *font_name, *canon_font_name; -{ - unsigned int attributes; - XFontName parsed; - - if (!XParseFontName(font_name, &parsed, &attributes)) { - fprintf (stderr, "not a standard name: %s\n", font_name); - return 0; - } - - attributes &= ~(FontNamePixelSize|FontNameAverageWidth - |FontNamePointSize - |FontNameResolutionX|FontNameResolutionY); - XFormatFontName(&parsed, attributes, canon_font_name); - return 1; -} - -int FontNamesAmbiguous(font_name, names, count) -char *font_name; -char **names; -int count; -{ - char name1[2048], name2[2048]; - int i; - - if (count == 1) - return 0; - - for (i = 0; i < count; i++) { - if (!CanonicalizeFontName(names[i], i == 0 ? name1 : name2)) { - fprintf(stderr, "bad font name: %s\n", names[i]); - return 1; - } - if (i > 0 && strcmp(name1, name2) != 0) { - fprintf(stderr, "ambiguous font name: %s\n", font_name); - fprintf(stderr, " matches %s\n", names[0]); - fprintf(stderr, " and %s\n", names[i]); - return 1; - } - - } - return 0; -} - -MapFont (font_name, troff_name) - char *font_name; - char *troff_name; -{ - XFontStruct *fi; - int count; - char **names; - FILE *out; - int c; - unsigned int attributes; - XFontName parsed; - int j, k; - DviCharNameMap *char_map; - char encoding[256]; - char *s; - int wid; - char name_string[2048]; - - if (!XParseFontName(font_name, &parsed, &attributes)) { - fprintf (stderr, "not a standard name: %s\n", font_name); - return 0; - } - - attributes &= ~(FontNamePixelSize|FontNameAverageWidth); - attributes |= FontNameResolutionX; - attributes |= FontNameResolutionY; - attributes |= FontNamePointSize; - parsed.ResolutionX = resolution; - parsed.ResolutionY = resolution; - parsed.PointSize = point_size*10; - XFormatFontName(&parsed, attributes, name_string); - - names = XListFonts (dpy, name_string, 100000, &count); - if (count < 1) { - fprintf (stderr, "bad font name: %s\n", font_name); - return 0; - } - - if (FontNamesAmbiguous(font_name, names, count)) - return 0; - - XParseFontName(names[0], &parsed, &attributes); - sprintf (encoding, "%s-%s", parsed.CharSetRegistry, - parsed.CharSetEncoding); - for (s = encoding; *s; s++) - if (isupper (*s)) - *s = tolower (*s); - char_map = DviFindMap (encoding); - if (!char_map) { - fprintf (stderr, "not a standard encoding: %s\n", encoding); - return 0; - } - - fi = XLoadQueryFont (dpy, names[0]); - if (!fi) { - fprintf (stderr, "font does not exist: %s\n", names[0]); - return 0; - } - - printf ("%s -> %s\n", names[0], troff_name); - - { /* Avoid race while opening file */ - int fd; - (void) unlink (troff_name); - fd = open (troff_name, O_WRONLY | O_CREAT | O_EXCL, 0600); - out = fdopen (fd, "w"); - } - - if (!out) { - perror (troff_name); - return 0; - } - fprintf (out, "name %s\n", troff_name); - if (!strcmp (char_map->encoding, "adobe-fontspecific")) - fprintf (out, "special\n"); - if (charExists (fi, ' ')) { - int w = charWidth (fi, ' '); - if (w > 0) - fprintf (out, "spacewidth %d\n", w); - } - fprintf (out, "charset\n"); - for (c = fi->min_char_or_byte2; c <= fi->max_char_or_byte2; c++) { - char *name = DviCharName (char_map,c,0); - if (charExists (fi, c) && (groff_flag || name)) { - - wid = charWidth (fi, c); - - fprintf (out, "%s\t%d", - name ? name : "---", - wid); - if (groff_flag) { - int param[5]; - param[0] = charHeight (fi, c); - param[1] = charDepth (fi, c); - param[2] = 0 /* charRBearing (fi, c) - wid */; - param[3] = 0 /* charLBearing (fi, c) */; - param[4] = 0; /* XXX */ - for (j = 0; j < 5; j++) - if (param[j] < 0) - param[j] = 0; - for (j = 4; j >= 0; j--) - if (param[j] != 0) - break; - for (k = 0; k <= j; k++) - fprintf (out, ",%d", param[k]); - } - fprintf (out, "\t0\t0%o\n", c); - - if (name) { - for (k = 1; DviCharName(char_map,c,k); k++) { - fprintf (out, "%s\t\"\n", - DviCharName (char_map,c,k)); - } - } - } - } - XUnloadFont (dpy, fi->fid); - fclose (out); - return 1; -} - -static usage(prog) - char *prog; -{ - fprintf (stderr, - "usage: %s [-g] [-r resolution] [-s pointsize] FontMap\n", - prog); - exit (1); -} - - -/* For use by DviChar.c */ - -char *xmalloc(n) -int n; -{ - char *p = malloc(n); - if (!p) { - fprintf(stderr, "Out of memory\n"); - exit(1); - } - return p; -} - -main (argc, argv) - char **argv; -{ - char troff_name[1024]; - char font_name[1024]; - char line[1024]; - char *a, *b, c; - int position; - FILE *map; - int opt; - extern int optind; - extern char *optarg; - - while ((opt = getopt(argc, argv, "gr:s:")) != EOF) { - switch (opt) { - case 'g': - groff_flag = 1; - break; - case 'r': - sscanf(optarg, "%u", &resolution); - break; - case 's': - sscanf(optarg, "%u", &point_size); - break; - default: - usage(argv[0]); - } - } - if (argc - optind != 1) - usage(argv[0]); - - dpy = XOpenDisplay (0); - if (!dpy) { - fprintf (stderr, "Can't connect to the X server.\n"); - fprintf (stderr, "Make sure the DISPLAY environment variable is set correctly.\n"); - exit (1); - } - position = 1; - - map = fopen (argv[optind], "r"); - if (map == NULL) { - perror (argv[optind]); - exit (1); - } - - while (fgets (line, sizeof (line), map)) { - for (a=line,b=troff_name; *a; a++,b++) { - c = (*b = *a); - if (c == ' ' || c == '\t') - break; - } - *b = '\0'; - while (*a && (*a == ' ' || *a == '\t')) - ++a; - for (b=font_name; *a; a++,b++) - if ((*b = *a) == '\n') - break; - *b = '\0'; - if (!MapFont (font_name, troff_name)) - exit (1); - ++position; - } - exit (0); -} - -/* -Local Variables: -c-indent-level: 8 -c-continued-statement-offset: 8 -c-brace-offset: -8 -c-argdecl-indent: 8 -c-label-offset: -8 -c-tab-always-indent: nil -End: -*/ diff --git a/contrib/groff/test-groff b/contrib/groff/test-groff deleted file mode 100755 index cceecee..0000000 --- a/contrib/groff/test-groff +++ /dev/null @@ -1,42 +0,0 @@ -#! /bin/sh -# This script runs groff without requiring that it be installed. -# The current directory must be the top build directory. - -builddir=./src -srcdir=`echo $0 | sed -e 's;/[^/]*$;;'` - -if test ! -d $builddir/roff/groff || \ - test ! -r $builddir/roff/groff/groff; then - echo $0 must be run with the top build directory as the current directory 2>&1 - exit 1 -fi - -GROFF_BIN_PATH=\ -$builddir/roff/groff:\ -$builddir/roff/troff:\ -$builddir/preproc/pic:\ -$builddir/preproc/eqn:\ -$builddir/preproc/tbl:\ -$builddir/preproc/grn:\ -$builddir/preproc/refer:\ -$builddir/preproc/soelim:\ -$builddir/preproc/html:\ -$builddir/devices/grops:\ -$builddir/devices/grodvi:\ -$builddir/devices/grotty:\ -$builddir/devices/grolj4:\ -$builddir/devices/grolbp:\ -$builddir/devices/grohtml:\ -$srcdir/$builddir/xditview - -test -n "$srcdir" || srcdir=. - -XENVIRONMENT=`cd $srcdir; pwd`/src/xditview/GXditview.ad -export XENVIRONMENT - -GROFF_COMMAND_PREFIX= -GROFF_FONT_PATH=$builddir/../font:$srcdir/font -GROFF_TMAC_PATH=$srcdir/tmac -export GROFF_BIN_PATH GROFF_COMMAND_PREFIX GROFF_FONT_PATH GROFF_TMAC_PATH - -exec $builddir/roff/groff/groff ${1+"$@"} -- cgit v1.1