TkMan,  tkman  -  a  graphical  manual  page browser, with
       hypertext


A BIRD? A PLANE? TKMAN! (TKPERSON?)

       by Tom Phelps written in Tcl 7.4/Tk 4.0  by  John  Ouster-
       hout, icon drawn by Rei Shinozuka
       Compatible  with  Hewlett-Packard  HP-UX,  AT&T  System V,
       SunOS, Sun Solaris, OSF/1, DEC Ultrix,  SGI  IRIX,  Linux,
       SCO,  IBM  AIX,  FreeBSD, BSDI--each of which, believe you
       me, is in some way different from all the others

       Copyright 251 1993-1995 T. A. Phelps
       All Rights Reserved.
       University of California, Berkeley
       Department of Electrical Engineering and Computer Science
       Computer Science Division

       The latest version of TkMan is always available by  anony-
       mous     FTP      at     ftp.cs.Berkeley.EDU     in    the
       /ucb/people/phelps/tcltk directory.

       PERMISSION IS GRANTED TO DISTRIBUTE THIS SOFTWARE  FREELY,
       WITH  THE  EXCEPTION  THAT  ONE  MAY  NOT CHARGE FOR IT OR
       INCLUDE IT WITH SOFTWARE WHICH IS SOLD.

       If you send me bug reports and/or suggestions for new fea-
       tures,  include  the  versions  of  TkMan, Tcl, Tk, X, and
       UNIX, your machine and X window manager names, the  edited
       Makefile,  a copy of your ~/.tkman file, and the first few
       lines of the `tkman' executable.


INTRODUCTION

       A graphical manual page browser, TkMan  offers  two  major
       advantages  over xman : hypertext links to other man pages
       (click on a word in the text which corresponds  to  a  man
       page,  and  you  jump there), and better navigation within
       long man pages with searches (both incremental and regular
       expression)  and  jumps  to  section  headers.  TkMan also
       offers some convenience features, like a user-configurable
       list of commonly used man pages, a one-click printout, and
       integration of whatis  and  apropos  .  Further,  one  may
       highlight,  as if with a yellow marker, arbitrary passages
       of text in man pages and  subsequently  jump  directly  to
       these  passages by selecting an identifying excerpt from a
       pulldown menu. Finally, TkMan gives one control  over  the
       directory-to-menu volume mapping of man pages with a capa-
       bility similar to but superior to xman 's mandesc in  that
       rather  than forcing all who share a man directory to fol-
       low a single organization,  TkMan  gives  control  to  the
       individual.   For  instance,  one may decide he has no use
       for a large set of man pages--say for  instance  the  pro-
       grammer routines in volumes 2, 3, 4, 8--and eliminate them
       listing.

       Other features include:
       *  full  text  search  of  manual  pages  (with   Glimpse;
       optional)
       *  a  pulldown  list  of all man pages matching the search
       name
       * regular expression searches for manual page names
       * a list of recently added or changed manual pages
       * a "history" list of the most recently visited pages
       * a preferences panel to control fonts, colors, and  other
       system settings
       *  compatibility with compressed pages (both as source and
       formatted)
       * diagnostics on your manual page installation
       * elision of those unsightly page headers and footers
       * and, when attempting to print a page that available only
       in  formatted  form,  reverse  compilation  into  [tn]roff
       source, which can  then  be  reformatted  as  good-looking
       PostScript.

       This  help  page  is shipped with the distribution in HTML
       form for easy printing.


USING TKMAN

   Locating a man page
       There are several ways to  specify  the  manual  page  you
       desire.   You  can type its name into the entry box at the
       top of the screen and press Return or click the man   but-
       ton.  The  name may be just the name of the command or may
       include a . n or ( n )  at the end where n   specifies  in
       which section to look. Man pages are matched using regular
       expressions, so you can use .  to match any single charac-
       ter, * to match any (zero or more) of the previous regular
       expression, [ .. ] to match any single  character  in  the
       enclosed  class;  see  Tcl 's regexp(n)  for more informa-
       tion. For instance, .*mail.*\.1 searches section  1  (user
       commands)  for  commands  with  "mail"  anywhere  in their
       names. Likewise, one can collect all  the  various  manual
       pages  relating  to  Perl 5 with perl.* , or see a list of
       all X window managers with .*wm . If you're running  TkMan
       from  a  shell  and  giving it an initial man page name to
       load up as an argument, use this syntax (adequately quoted
       for  protection  from the shell), as opposed to the syntax
       of the standard man  command (which is  man  section  name
       --that  is,  the  section  number  comes first, whereas in
       TkMan it is part of the name.

       Usually TkMan searches the  directories  in  your  MANPATH
       environment variable for the man page, but you may instead
       provide a path name for the man page by beginning it  with
       `~' , `/' , `.'  or `..' ; this is the way to access a man
       TkMan by send ing a message  to  the  function  manShowMan
       with  the  name  of  the desired man page, e.g. send tkman
       manShowMan tcl.n .  If multiple man page names  match  the
       specification, the first match (as searched for in MANPATH
       order) is shown and a pulldown menu appears which contains
       a list of the other matches. Return from reading help or a
       volume listing to the last man page seen  with  C-m   when
       the focus is in the main text display area.

       apropos   information  is available by typing the name and
       clicking apropos  or hitting Shift-Return. The  output  of
       apropos  is piped through sort  and uniq  to remove dupli-
       cates. To pass the  matches  through  additional  filters,
       simply  give the pipe as in a shell, e.g., ` search | grep
       ^g ' (each space character is significant) returns all the
       search-related  commands  which  begin with the letter g .
       The results of the last apropos query are available  under
       the Volumes menu.

       You may also see a button for glimpse , a full text search
       program that requires only small index  files  ("typically
       2-5% the size of the original text" but larger percentages
       for smaller amounts of text), written by Udi  Manber,  Sun
       Wu, and Burra Gopal of the University of Arizona's Depart-
       ment of Computer Science.  In their  performance  measure-
       ments,  "a search for Schwarzkopf allowing two misspelling
       errors in 5600 files occupying 77MB took 7  seconds  on  a
       SUN IPC." For example, one may search for the string `WWW'
       anywhere in any manual page by  typing  in  `WWW'  in  the
       entry  line  at  the top of the screen and clicking on the
       glimpse   button  or  typing   Meta-Return    (for   meta-
       information,  of course). Escape  and C-g  can interrupt a
       search after the current  directory  is  done.  To  employ
       glimpse  's command line options, simply place them before
       the search pattern in the entry box, or add  them  to  the
       default  options  by editing the man(glimpse)  variable in
       your  ~/.tkman   startup  file  (see  Customizing   TkMan,
       below).  For  instance, to search for "perl" as a word and
       not part of another word (as in "properly"),  glimpse  for
       -w  perl  .  Glimpse supports an AND  operation denoted by
       the symbol `;'  and an OR  operation denoted by the symbol
       `,'  . Refer to the glimpse  manual page for more informa-
       tion. The regular expression used by glimpse automatically
       sets the intrapage search expression. The case sensitivity
       of the search is set to the same as the that of  intrapage
       regular  expression  searching.  A complete set of matches
       from the last full text search is available under the Vol-
       umes menu.

       The  Paths  pulldown gives you complete control over which
       directory hierarchies of your MANPATH   are  searched  for
       man pages and apropos information. You can call up a list-
       clicking on its name. New `pseudo-volumes' can  be  added,
       and  arbitrary directories may be added to or deleted from
       a  volume  listing  using  tkmandesc  commands,  described
       below.   In a volume listing, typing a letter jumps to the
       line in the listing starting with that letter (capital and
       lower  case letters are distinct). Return to the last vol-
       ume seen with C-d when the focus is in the main text  dis-
       play area.

       Whenever you have a man page name in the text display box,
       whether from apropos, a  volume  listing  or  a  reference
       within  another  man  page,  you can double-click on it to
       hypertext-jump  to  it.   Pressing  shift  while   double-
       clicking opens up a new viewer box to display the page.

       The  last  few  man  pages  you  looked at can be accessed
       directly through the  History   pulldown  menu.  Shortcuts
       lists  your  personal favorites and is used just like His-
       tory , with the additional options of adding  the  current
       man  page  (by  clicking + ) or removing it ( - ) from the
       list.

       (Man pages specified as above  are  processed  through  an
       nroff  filter. TkMan can also read raw text from a file or
       from a command pipeline, which can then be read,  searched
       and  highlighted  same as a man page. To read from a file,
       make the  first  character  in  the  name  a  <  ,  as  in
       <~/foo.txt  . To open a pipe, make the first character a |
       (vertical bar), as in ` |gzcat  foo.txt.gz  '  or  `  |cat
       ../foo.txt | grep bar ' (that's no space after the first |
       , a space before and after  any  subsequent  ones).  After
       reading  a  file in this way, the current directory is set
       to its directory. Commands are not processed by  a  shell,
       but  the metacharacters . , .. , ~ and $  (for environment
       variables), are expanded  nonetheless.   Typing  is  eased
       further  by  file  name completion, bound to Escape . Lone
       files (i.e., not part of a pipe) are automatically  uncom-
       pressed--no  need  to read compressed files through a zcat
       pipe. It is not expected that reading  raw  text  will  be
       done  much;  it is included so the occasional non-man page
       documentation may be read from the same  environment.  For
       more sophisticated file browsing, use NBT, my Tcl/Tk-based
       file browser, which is available  from  TkMan's  home  FTP
       site, given above.)

   Working within a man page
       The  full  pathname of the current manual page is shown at
       the top of the screen. Via the  Preferences  dialog,  this
       can be changed to the whatis  information for the page.

       To  the  extent  it  follows  convention, a manual page is
       parsed to yield its section and subsection  titles  (which
       Links pulldown). One may jump directly to a section within
       a man page or a man page referenced in the SEE ALSO   sec-
       tion,  respectively,  by selecting the corresponding entry
       from one of these pulldowns.

       Within a man page or raw text file or pipe, you may add ad
       hoc  highlighting,  as though with a yellow marker (under-
       lining on monochrome monitors).  Highlighted  regions  may
       then be scrolled to directly through the Highlights  pull-
       down menu. To highlight a region, select the desired  text
       by  clicking  button  1, dragging to the far extent of the
       desired region and releasing the button, then click on the
       +   next  to Highlights . To remove any highlights or por-
       tions thereof in a region, select it as  before  but  then
       click on - . Highlighting information is persistent across
       executions of TkMan. A complete set of  pages  with  high-
       lighting is available under the Volumes  menu.

       You  can move about the man page by using the scrollbar or
       typing a number of key combinations familiar to Emacs afi-
       cionados.  Space  and  C-v   page down, and delete and M-v
       page up.  C-n  and C-p  scroll up and down,  respectively,
       by a single line ( vi  fans will be happy to hear that C-f
       and C-b  also page down and page up,  respectively).   M-<
       goes  to  the  head and M->  to the tail of the text.  One
       may "scan" the page, which is to say scroll it up and down
       with  the  mouse  but without the use of the scrollbar, by
       dragging on the text display with the middle mouse  button
       pressed.  Like  Emacs,  C-space   will  mark one's current
       location, which can be returned to later with C-x ,  which
       exchanges the then-current position with the saved mark; a
       second C-x swaps back.

       C-s  initiates a search. Subsequently typing a few letters
       attempts  to  find  a  line with that string, starting its
       search with at the current match, if any, or otherwise the
       topmost  visible  line. A second C-s  finds the next match
       of the string typed so far. (If the current search  string
       is empty, a second C-s  retrieves the previous search pat-
       tern.) C-r  is similar to  C-s   but  searches  backwards.
       This  incremental  search  can be used to quickly locate a
       particular command-line option or a particular command  in
       a  group  (as  in csh  with its long list of internal com-
       mands). At the bottom of the screen,  type  in  a  regular
       expression  to  search  for and hit return or click Search
       to begin a search. Hit Next  or  keep  hitting  return  to
       search  for  the next occurance. [ Prev will be added when
       Tk supports a tag prevrange   command.]   Escape   or  C-g
       cancels searching, both incremental and regular expression
       types.

       The Tab  key moves the focus from  the  man  page  type-in
       direction.

   Other commands
       The Occasionals  menu holds commands and options which you
       probably won't use much. Help  returns to this information
       screen.  Although  virtually made obsolete by TkMan, Print
       makes a copy of the current man page on dead trees,  help-
       ing  to  starve  the planet of life-giving oxygen. (If the
       [tn]roff source is not available, TkMan asks if it  should
       try  to  reverse compile the man page. If successful, this
       produces much more appealing output than an ASCII   dump.)
       By  default,  incremental searching is not case sensitive,
       but regular expression searching is; these settings can be
       toggled  with the next two menus. The mysterious iff upper
       means that searching is case  sensitive  if  and  only  if
       their  is  at  least  one  uppercase  letter in the search
       expression--that is, all lowercase searches are  not  case
       sensitive;  this  idea is taken from Emacs (I think). With
       proportional fonts  giving  a  ragged  right  margin,  any
       change  bars in the right margin will form an uneven line;
       by opting for Changebars  on  left  ,  they  will  form  a
       straight line at the left margin.

       As  with  xman  one may instantiate multiple viewers. When
       there is more than one viewer you may choose man pages  in
       one  viewer  and have their contents shown in another. Use
       the Output pulldown (which appears and disappears as rele-
       vant)   to  direct  one  viewer's  output  destination  to
       another. With this feature one may easily compare two sim-
       ilar  man  pages for differences, keep one man page always
       visible, or examine several man pages  from  a  particular
       volume  listing  or  a  SEE  ALSO   section.  Output  only
       affects the display destination of man pages.  TkMan  uses
       a  database  of  all  manual page names in searching for a
       match for a particular name. This database is  constructed
       automatically if it doesn't exist (this includes the first
       time TkMan is run for a particular user) and  whenever  it
       is  out  of  date  due to pages being added or changed, or
       changes in one's MANPATH or tkmandesc  commands.  (If  you
       want to add paths to your MANPATH , or edit ~/.tkman , you
       will have to restart to see any changes take effect,  how-
       ever.)  If  you install new manual pages, invoking Rebuild
       Database  will permit them to show up in the  next  search
       or  volume  listing without the bother of quitting and re-
       executing TkMan. Rebuild  Glimpse  Database   creates  and
       then  maintains  the  index  that  is  used  for full text
       searches.  The Glimpse database is not maintained automat-
       ically.  When  exited via the Quit  button TkMan saves its
       state. One may guard against losing  highlighting,  short-
       cuts and other what-should-be persistent information with-
       out quitting by by invoking Checkpoint state to  .tkman  ;
       Quit, don't update  performs the opposite operation.
       between the proportionally-spaced font  and  a  monospaced
       one, for use in those man pages that rely on a fixed-width
       font to align columns. Quit  exits TkMan, of course, after
       saving some state information (see below). To exit without
       saving status information, select the  Quit   option  from
       the Occasionals pulldown.

   Preferences
       The  Preferences...   choice  in the Occasionals  pulldown
       menu brings up a graphical user interface to setting vari-
       ous  attributes  of  TkMan,  including  fonts, colors, and
       icons. Click on a checkbutton at the top of the window  to
       bring  up the corresponding group of choices. After making
       a set of choices, the Apply button reconfigures  the  run-
       ning  application  to  show  these  changes,  OK  sets the
       changes for use now and in the future,  Cancel  quits  the
       dialog  and  sets  all choices to their settings as of the
       time Preferences was called up, and Defaults   resets  the
       settings in the current group to those set by TkMan out of
       the box.

       The first line in the Fonts group specifies  the  font  to
       use  for  the general user interface, which amounts to the
       labels on buttons and the text in menus. The first menu in
       the line labeled Interface  sets the font family, the next
       menu sets the font size, and the  last  the  font  styling
       (normal,   bold,  italics,  bold-italics).   Text  display
       makes these settings for the text box in which the  manual
       pages  contents  are  displayed.  For  listings of all man
       pages in a particiular volume (as chosen with the  Volumes
       menu),  you  may  wish  to use a smaller font so that more
       names fit on the screen at once. Screen DPI  specifies the
       right set of fonts to use for your monitor.

       Colors  sets  the  foreground and background colors to use
       for the manual page text display  box,  the  general  user
       interface, and the buttons of the user interface. In addi-
       tion it sets the color (or font) in which to show  various
       classes  of  text  in  the text box, including manual page
       references, incremental search  hits,  regular  expression
       search hits, and highlighted regions.

       The  See group specifies what information to display. Usu-
       ally manual page headers and footers are uninteresting and
       therefore  are  stripped  out,  but a canonical header and
       footer (along the date  the  page  was  installed  in  the
       man/man n  directory or formatted to the man/cat n  direc-
       tory) to be shown at the  bottom  of  every  page  can  be
       requested.  Solaris  and IRIX systems come with many "sub-
       volumes"--that is volumes with names like "3x"  and  "4dm"
       that form subgroupings under the main volumes "3" and "4",
       respectively--and you make use tkmandesc commands  to  add
       cascaded  menus.  When  a highlighted passage is jumped to
       via the Highlights menu, some number of lines of back con-
       text  are  included;  the exact number of lines is config-
       urable. The information bar at the top of the  window  can
       display either the short, one-line description from a man-
       ual page's NAME section  or  the  pathname  of  the  page.
       Around the man page display area runs a buffer region, the
       exact width of which is  configurable.  Tk  deviates  from
       Motif  behavior  slightly, as for instance in highlighting
       buttons when they're under the cursor, but you can observe
       strict Motif behavior.

       The Icon group sets all the options relating to iconifica-
       tion.  The pathnames of the  icon  bitmap  and  icon  mask
       should be the full pathnames (beginning with a `/').

       If a man page has not been formatted by nroff , TkMan must
       first pipe the source text through nroff .  By  turing  on
       Cache  formatted  (nroff'ed) pages  in the Misc(ellaneous)
       group, the nroff -formatted text is saved to disk (if pos-
       sible),  thereby  eliminating this time-consuming step the
       next time the man page is read. The on & compress  setting
       will  compress  the page, which saves on disk space (often
       substantially as much of a formatted page is  whitespace),
       but  will  make it unavailable to other manual pagers that
       don't handle compression. TkMan can extract section  head-
       ers  from  all  manual  pages,  but  only some manual page
       macros format sub section headers in a  way  that  can  be
       distinguished  from ordinary text; if your macros do, turn
       this option on to add subsections to  the  Sections  menu.
       The  History   pulldown  must  balance  depth  of the list
       against ease of finding an entry; set your own  inflection
       point  with this menu. Volumes' (recent)  choice will show
       all manual pages that have been added or changed n   days,
       where  n   is  set with this next menu. Glimpse works best
       when  searching  for  relatively  uncommon  words;   guard
       against  getting  too many hits with the last menu in this
       group. Proportional spacing wrecks the spacing used to set
       tables  in  columns,  hence the Mono (space) button on the
       bottom line of the main  screen;  setting  the  Aggressive
       table  parsing   option on will try to identify tables and
       format them in a fixed-width font while keeping  the  rest
       of  the text proportionally spaced.  It is quite difficult
       to identify tables with the single-pass filter that  TkMan
       uses, however, so you'll probably want to leave it off.


CUSTOMIZING TKMAN

       There are four levels of configuration to TkMan.

       (1)  Transparent.  Simply  use  TkMan and it will remember
       your window size and placement, short cuts, and highlights
       (if you quit out of TkMan via the Quit  button).

       (3)  Configuration  file.  Most interesting settings, like
       the command(s) used to print the man  page  and  some  key
       bindings,  can  be changed by editing one's own ~/.tkman .
       Thus, a single copy of TkMan (i.e., the executable tkman )
       can  be  shared, but each user can have his own customized
       setup. (The file ~/.tkman is created/rewritten every  time
       one  quits  TkMan  via  the Quit button in the lower right
       corner. Therefore, to get a ~/.tkman to  edit,  first  run
       and  quit TkMan. Do not create one from scratch as it will
       not have the proper format used for saving  other  persis-
       tent information, and your work will be overwritten, which
       is to say lost.) Be careful not to edit  a  ~/.tkman  file
       only to have it overwritten when a currently-running TkMan
       quits.

       Options that match the defaults are commented  out  (i.e.,
       preceded  by  a  #  ).  This is so that any changes in the
       defaults will propagate nicely, while the file still lists
       all  interesting  variables.  To override the default set-
       tings for these options, first comment in the line.

       The ~/.tkman save file is the place to add or delete  col-
       ors  to  the  default  set, which will subsequently become
       menu choices in Preferences,  by  editing  in  place   the
       variable  man(colors)  .   One  may also edit the order of
       Shortcuts in the man(shortcuts) variable. Other  interest-
       ing variables include man(highlight) , which can be edited
       to change the background in place of  the  foreground,  or
       both  the  foreground and  background, or a color and  the
       font as with the following setting:
       set     man(highlight)      {bold-italics      -background
       #ffd8ffffb332}

       Arbitrary   Tcl  commands,  including  tkmandesc  commands
       (described below), can be appended to ~/.tkman  (after the
       ### your additions go below  line).

       To  set absolutely the volume names for which all directo-
       ries should be searched,  edit   the  parallel  arrays  on
       these existing  lines:
       set man(manList) ...
       set man(manTitleList) ...
       Changing  the  order  volumes in these lists (make sure to
       keep the two lists in parallel correspondence) changes the
       precedence of matches when two or more pages have the same
       name: the page found in the earlier volume in this list is
       show first.

       Additional  useful  commands  include  wm(n) , which deals
       with the window manager; bind(n) , which changes  keyboard
       and mouse bindings not related to the text display window;
       ful  changes  or  have suggestions for some, please report
       them back to me so I may share the wealth  with  the  next
       release.

   Command line options
       The  environment  variable  named TKMAN , if it exists, is
       used to set command line options.  Any  options  specified
       explicitly  (as  from a shell or in a script) override the
       settings in TKMAN .  Any settings made  with  command-line
       options  apply  for  the  current  execution only. Many of
       these options can be set persistently via the  Preferences
       dialog (under the Occasionals  menu).

       -title title   Place title  in the window's title bar.

       -geometry geometry
                      Specify  the  geometry  for this invocation
                      only.  To  assign  a  persistent  geometry,
                      start  up  TkMan, size and place the window
                      as desired, then (this is  important)  quit
                      via  the  Quit   button  in the lower right
                      corner.

       -iconify  and --iconify
                      Start  up  iconified  or  uniconified  (the
                      default), respectively.

       -iconname name Use  name  in place of the uniconified win-
                      dow's title for the icon name.

       -iconbitmap bitmap-path  and -iconmask bitmap-path
                      Specify the icon bitmap and its mask.

       -iconposition (+|-)x(+|-)y
                      Place  the  icon  at  the  given  position;
                      -iconposition  "" "" cancels any such hints
                      to the window manager.

       -startup filename
                      Use filename  in place of ~/.tkman  as  the
                      startup  file;  ""  indictates  no  startup
                      file.

       -database filename
                      Use filename  in place of  ~/.tkmandatabase
                      as  the name of the file in which to create
                      the database of man page  names.  This  can
                      point  to  a shared file to save disk space
                      or share a custom  design,  or  to  an  OS-
                      specific  file  for  systems  with multiple
                      machine  architectures  that   share   home
                      directories.
                      Simply  rebuild the database and quit. This
                      option may be useful in a cron script.

       -quit save  and -quit nosave
                      Specify  that  the  startup  file  (usually
                      ~/.tkman  )  should  be updated ( save ) or
                      not ( nosave ) when quitting  by  the  Quit
                      button.

       -v             Show  the current version of TkMan and exit
                      immediately thereafter.

       -M path-list
                      or -M+ path-list
                      or -+M path-list As with man ,  change  the
                      search  path  for manual pages to the given
                      colon-separated list of directory subtrees.
                      -M+  appends and -+M  prepends these direc-
                      tories to the current list.

       -now           Start up TkMan without checking to  see  if
                      the database is out of date.

   Key bindings
       Key  bindings  related to the text display box are kept in
       the sb  array in ~/.tkman  (for more information on  Tcl's
       arrays,  refer  to  the array(n)  man page. In editing the
       sb(key,...)  keyboard bindings, modifiers MUST  be  listed
       in  the  following  order:  M  (for meta), C  (control), A
       (alt).  DO NOT USE SHIFT. It is not  a  general  modifier:
       Some  keyboards  require  shift  for different characters,
       resulting in incompatibilities in bindings. For this  rea-
       son,  the status of the shift key is supressed in matching
       for bindings. For instance, set  sb(key,M-less)  pagestart
       is  a  valid  binding  on keyboards worldwide, whereas set
       sb(key,MS-less)  is not. To make a binding without a modi-
       fier  key,  precede  the  character  by  `-',  as  in  set
       sb(key,-space) pagedown .

   tkmandesc
       Like xman , TkMan gives you directory-by-directory control
       over  named volume contents. Unlike and superior to xman ,
       however, each individual user controls directory-to-volume
       placement,  rather  than facing a single specification for
       each directory tree that must be observed by all.

       By default a matrix is created by taking  the  product  of
       directories  in  the  MANPATH   crossed with volume names,
       with the yield of each volume containing  all  the  corre-
       sponding  subdirectories  in  the  MANPATH . By adding Tcl
       commands to your ~/.tkman (see above),  you  may  add  new
       volume  names  and  add, move, copy and delete directories
       commands,  so  you may need to learn Tcl--particularly the
       commands that deal with Tcl lists (including lappend(n)  ,
       linsert(n) , lrange(n) , lreplace(n) ) and string matching
       ( string(n) , match subcommand)--to use this  facility  to
       its  fullest.  tkmandesc  commands  are used to handle the
       nonstandard format of SGI's manual page  directories,  and
       the  sgi_bindings.tcl   in the contrib directory is a good
       source of examples in the use of tkmandesc commands.

       Directory titles  and  abbrevations  are  kept  in  lists.
       Abbreviations MUST be unique (capital letters are distinct
       from lower case), but need not correspond to actual direc-
       tories.  In  fact, volume letters specified here supercede
       the defaults in identifying a volume in man page searches.
       COMMANDS

       The  following commands are appended  to the file ~/.tkman
       (see Customizing TkMan, above).

       To recreate a cross product of current section lists:
       manDescDefaults
       This cross product is made implicitly before other  tkman-
       desc  commands. Almost always this is what one expects. If
       it is not, one may supress the cross  product  by  setting
       the variable manx(defaults)  to a non-null, non-zero value
       before other tkmandesc commands are invoked.

       To add "pseudo" sections to the current volume name  list,
       at  various  positions  including  at  end of the list, in
       alphabetical order, or before or after a specific volume:
       manDescAddSects list of (letter, title pairs)
       or manDescAddSects list of (letter, title) pairs sort
       or manDescAddSects list of (letter,  title)  pairs  before
       sect-letter
       or  manDescAddSects  list  of  (letter, title) pairs after
       sect-letter
       In manual page searches that produce multiple matches, the
       page  found  in  the  earlier  volume  is the one shown by
       default.

       To move/copy/delete/add directories:
       manDescMove from-list to-list dir-patterns-list
       manDescCopy from-list to-list dir-patterns-list
       manDescDelete from-list dir-patterns-list
       manDescAdd to-list dir-list

       The dir-patterns-list  uses the same  meta  characters  as
       man page searching (see above). It is matched against MAN-
       PATH directories with volume subdirectory appended, as  in
       /usr/man/man3 , where /usr/man  is a component of the MAN-
       PATH  and man3  is a volume subdirectory.  from-list   and
       to-list  are  Tcl lists of the unique volume abbreviations
       able to Glimpse for its indexing.

       Warning:   Moving  directories  from  their  natural  home
       slightly impairs searching speed when following  a  refer-
       ence within a man page. For instance, say you've moved man
       pages for X Windows subroutines from their natural home in
       volume  3 to their own volume called `X'. Following a ref-
       erence in XButtonEvent to XAnyEvent(3X11)  first  searches
       volume  3;  not finding it, TkMan searches all volumes and
       finally finds it in volume X. With no hint to look in vol-
       ume  3  (as  given  by  the  3X11 suffix), the full volume
       search would have begun straight away.  (Had  you  double-
       clicked  in  the  volume listing for volume X or specified
       the man page as XButtonEvent.X , volume X would have  been
       searched first, successfully.)

       To  help  debug  tkmandesc scripts, invoke manDescShow  to
       dump to stdout the current correspondence  of  directories
       to volumes names. EXAMPLES

       (1) To collect together all man pages in default volumes 2
       and 3 in all directories into a volume called  "Programmer
       Subroutines", add these lines to the tail of ~/.tkman :
       manDescAddSects {{p "Programmer Subroutines"}}
       manDescMove {2 3} p *

       To  place the new section at the same position in the vol-
       ume pulldown list as volumes 2 and 3:
       manDescAddSects {{p "Programmer Subroutines"}} after 2
       manDescMove {2 3} p *

       To move only a selected set of directories:
       manDescAddSects {{p "Programmer Subroutines"}}
       manDescMove * p {/usr/man/man2 /usr/local/man/man3}

       (2) To have a separate volume  with  all  of  your  and  a
       friend's  personal man pages, keeping a duplicate in their
       default locations:
       manDescAddSects  {{t  "Man  Pages  du  Tom"}   {b   "Betty
       Page(s)"}}
       manDescCopy *phelps* t *
       manDescCopy *page* t *

       (3)  To  collect the X windows man pages into two sections
       of their own, one for programmer subroutines  and  another
       for the others:
       manDescAddSects {{x "X Windows"}} after 1
       manDescAddSects {{X "X Subroutines"}} after 3
       manDescMove * x *X11*
       manDescMove x X *3

       (4)  If  you never use the programmer subroutines, why not
       manDescDelete * {*[2348]}  (braces prevent Tcl from trying
       to execute [2348] as a command)

       Alternatively but not equivalently:
       manDescDelete {2 3 4 8} * tkmandesc vs. xman and SGI

       TkMan's tkmandesc capability is patterned  after  xman  's
       mandesc  files. By placing a mandesc file at the root of a
       man page directory tree, one may create pseudo volumes and
       move  and  copy subdirectories into them. Silicon Graphics
       has modified xman  so that simply by creating a  subdirec-
       tory  in a regular man subdirectory one creates a new vol-
       ume. This is  evil.  It  violates  the  individual  user's
       rights  to  arrange  the  directory-volume  mapping  as he
       pleases, as the mandesc file or subdirectory that  sponta-
       neously creates a volume is set a single place and must be
       observed by all who  read  that  directory.  By  contrast,
       TkMan places the directory-to-volume mapping control in an
       individual's own ~/.tkman  file. This gives the individual
       complete  control  and  inflicts  no  pogrom on others who
       share man page directories.  Therefore, mandesc files  are
       not supported in any way by TkMan.

       One may still share custom setups, however, by sharing the
       relevant lines of ~/.tkman . In fact, a tkmandesc  version
       of  the  standard SGI man page directory setup is included
       in the contrib directory of the  TkMan  distribution.  For
       assistance  with SGI-specific directory manipulation, con-
       tact Paul Raines ( raines@bohr.physics.upenn.edu ).


ADDRESSES

       Tom Phelps
       University of California, Berkeley
       Computer Science Division
       387 Soda Hall #1776
       Berkeley, CA 94720-1776
       USA

       phelps@cs.Berkeley.EDU


MORE INFORMATION

       My article "TkMan: A Man Born  Again"  appears  in  The  X
       Resource  ,  issue  10, pages 33--46. Here are the section
       titles: Introduction, Availability,  The  User  Interface,
       Navigating  among  Man  Pages,  Inspecting  Individual Man
       Pages, Customization, Logical Volumes with tkmandesc, Per-
       sistency,  The  RosettaMan  Filter,  Extensions, Problems,
       Future Work, Acknowledgements, Bibliography.

       A World Wide Web page that lists other Tcl/Tk software and
       a  related  Berkeley  Computer  Science Division technical
       report,     CSD-94-802,     can      be      found      at
       Permission to use, copy, modify, and distribute this soft-
       ware and its documentation for educational,  research  and
       non-profit  purposes,  without  fee, and without a written
       agreement is hereby granted, provided that the above copy-
       right notice, this and the following two paragraphs appear
       in all copies.

       IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA  BE  LIABLE
       TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR
       CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OF THIS SOFT-
       WARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF CAL-
       IFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF  SUCH  DAM-
       AGE.

       THE  UNIVERSITY  OF  CALIFORNIA SPECIFICALLY DISCLAIMS ANY
       WARRANTIES, INCLUDING, BUT NOT  LIMITED  TO,  THE  IMPLIED
       WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
       PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN "AS  IS"
       BASIS,  AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION
       TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR
       MODIFICATIONS.

       Help page last revised on $Date: 1995/11/02 21:10:42 $