aboutsummaryrefslogtreecommitdiff
path: root/contrib/groff/man/groff_tmac.man
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/groff/man/groff_tmac.man')
-rw-r--r--contrib/groff/man/groff_tmac.man1282
1 files changed, 0 insertions, 1282 deletions
diff --git a/contrib/groff/man/groff_tmac.man b/contrib/groff/man/groff_tmac.man
deleted file mode 100644
index 030e739f142d..000000000000
--- a/contrib/groff/man/groff_tmac.man
+++ /dev/null
@@ -1,1282 +0,0 @@
-.TH GROFF_TMAC @MAN5EXT@ "@MDATE@" "Groff Version @VERSION@"
-.SH NAME
-groff_tmac \- macro files in the roff typesetting system
-.SH DESCRIPTION
-.\" The .SH was moved to this place to make `apropos' happy.
-.
-.
-.\" --------------------------------------------------------------------
-.\" Legalize
-.\" --------------------------------------------------------------------
-.
-.ig
-groff_tmac.5
-
-File position: <groff-source>/man/groff_tmac.man
-
-Last update: 27 Jul 2004
-
-This file is part of groff, the GNU roff type-setting system.
-
-Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-written by Bernd Warken <bwarken@mayn.de> and Werner Lemberg
-<wl@gnu.org>
-
-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 this .ig-section and AUTHOR, with no
-Front-Cover Texts, and with no Back-Cover Texts.
-
-A copy of the Free Documentation License is included as a file called
-FDL in the main directory of the groff source package.
-..
-.
-.\" --------------------------------------------------------------------
-.\" Setup
-.\" --------------------------------------------------------------------
-.
-.do nr groff_tmac_C \n[.C]
-.cp 0
-.
-.mso www.tmac
-.
-.if n \{\
-. mso tty-char.tmac
-. ftr CR R
-. ftr CI I
-. ftr CB B
-.\}
-.
-.ds Ellipsis \&.\|.\|.\&\"
-.
-.\" Global static variables for inter-macro communication
-.rr @+Example_font
-.
-.\" --------------------------------------------------------------------
-.\" setup for the macro definitions below
-.\"
-.\" naming: namespace:cathegory_macro.variable_name (experimental)
-.
-.\" --------------------------------------------------------------------
-.\" configuration of prompt for `.Shell_cmd'* macros
-.ds groffer:Shell_cmd.prompt_text sh#\" prompt for shell commands
-.ds groffer:Shell_cmd+.prompt_text >\" prompt on continuation lines
-.ds groffer:Shell_cmd_base.prompt_font I\" font for prompts
-.
-.\" automatically determine setup from the configuration above
-.als @f groffer:Shell_cmd_base.prompt_font\"
-.als @t groffer:Shell_cmd.prompt_text\"
-.als @t+ groffer:Shell_cmd+.prompt_text\"
-.ds groffer:Shell_cmd.prompt \f[\*[@f]]\*[@t]\f[]\" needed
-.ds groffer:Shell_cmd+.prompt \f[\*[@f]]\*[@t+]\f[]\" needed
-.nr @w \w'\*[groffer:Shell_cmd.prompt]'\"
-.nr @w+ \w'\*[groffer:Shell_cmd+.prompt]'\"
-.ft \*[@f]
-.\" Full prompt width is maximum of texts plus 1m
-.nr groffer:Shell_cmd_base.prompt_width (\n[@w]>?\n[@w+]+1m)\" needed
-.ft
-.rm @f
-.rm @f+
-.rm @t
-.rm @t+
-.rr @w
-.rr @w+
-.
-.\"--------------------------------------------------------------------
-.\" Ignore all arguments like a comment, even after a .eo call.
-.de c
-..
-.c --------------------------------------------------------------------
-.de BIR
-. ie (\\n[.$] < 3) \
-. BI \\$@
-. el \{\
-. ds @tmp@ \fB\\$1\f[]\fI\\$2\f[]
-. shift 2
-. Text \\*[@tmp@]\fR\\$*\f[]
-. rm @tmp@
-. \}
-..
-.c --------------------------------------------------------------------
-.c .Env_var (<env_var_name> [<punct>])
-.c
-.c Display an environment variable, with optional punctuation.
-.c
-.de Env_var
-. nh
-. SM
-. Text \f[CB]\\$1\f[]\\$2
-. hy
-..
-.c --------------------------------------------------------------------
-.c .Error (<text>...)
-.c
-.c Print error message to terminal and abort.
-.c
-.de Error
-. tm \\$*
-. ab
-..
-.c --------------------------------------------------------------------
-.de Example
-. if r@+Example_font \
-. Error previous .Example was not terminated by a ./Example
-. nr @+Example_font \\n[.f]
-. nh
-. nf
-. RS
-. ft CR
-..
-.c --------------------------------------------------------------------
-.de /Example
-. if !r@+Example_font \
-. Error no previous call to .Example
-. ft \\n[@+Example_font]
-. RE
-. fi
-. hy
-. rr @+Example_font
-..
-.
-.c --------------------------------------------------------------------
-.c .Shell_cmd (<CR> [<CI>] ...)
-.c
-.c A shell command line; display args alternating in fonts CR and CI.
-.c
-.c Examples:
-.c .Shell_cmd "groffer --dpi 100 file"
-.c result: `sh# groffer --dpi 100 file'
-.c with 'sh#' in font I, the rest in CR
-.c
-.c .Shell_cmd groffer\~--dpi\~100\~file
-.c result: the same as above
-.c
-.c .Shell_cmd "groffer --dpi=" value " file"
-.c result: sh# groffer --dpi=value file
-.c with `groffer --dpi=' and `file' in CR; `value' in CI
-.c
-.c .Shell_cmd groffer\~--dpi= value \~file
-.c result: the same as the previous example
-.c
-.de Shell_cmd
-. groffer:Shell_cmd_base "\*[groffer:Shell_cmd.prompt]" \\$@
-..
-.c --------------------------------------------------------------------
-.c .Shell_cmd+ (<CR> [<CI>] ...)
-.c
-.c A continuation line for .Shell_cmd.
-.c
-.de Shell_cmd+
-. groffer:Shell_cmd_base "\*[groffer:Shell_cmd+.prompt]" \\$@
-..
-.c --------------------------------------------------------------------
-.c .Shell_cmd_base (<prompt> [<CR> [<CI>] ...])
-.c
-.c A shell command line; display args alternating in fonts CR and CI.
-.c Internal, do not use directly.
-.c
-.c Globals: read-only register @.Shell_cmd_width
-.c
-.de groffer:Shell_cmd_base
-. if (\\n[.$] <= 0) \
-. return
-. nr @+font \\n[.f]\"
-. ds @prompt \\$1\"
-. ft CR
-. c gap between prompt and command
-. nr @+gap \\n[groffer:Shell_cmd_base.prompt_width]-\\w'\\*[@prompt]'\"
-. ds @res \\*[@prompt]\h'\\n[@+gap]u'\"
-. shift
-. ds @cf CR\"
-. while (\\n[.$] > 0) \{\
-. as @res \\f[\\*[@cf]]\\$1\"
-. shift
-. ie '\\*[@cf]'CR' \
-. ds @cf I\"
-. el \
-. ds @cf CR\"
-. \}
-. br
-. ad l
-. nh
-. nf
-. Text \\*[@res]\"
-. fi
-. hy
-. ad
-. br
-. ft \\n[@+font]
-. rr @+font
-. rr @+gap
-. rm @cf
-. rm @res
-..
-.c --------------------------------------------------------------------
-.c .Text (<text>...)
-.c
-.c Treat the arguments as text, no matter how they look.
-.c
-.de Text
-. if (\\n[.$] == 0) \
-. return
-. nop \)\\$*\)
-..
-.c --------------------------------------------------------------------
-.c .Topic ([<indent>])
-.c
-.c A bulleted paragraph
-.c
-.de Topic
-. ie (\\n[.$] = 0) \
-. ds @indent 2m\"
-. el \
-. ds @indent \\$1\"
-. TP \\*[@indent]
-. Text \[bu]
-. rm @indent
-..
-.c --------------------------------------------------------------------
-.c .TP+ ()
-.c
-.c Continuation line for .TP header.
-.c
-.de TP+
-. br
-. ns
-. TP \\$1
-..
-.c --------------------------------------------------------------------
-.de 'char
-. ds @tmp@ `\f(CR\\$1\f[]'
-. shift
-. Text \\*[@tmp@]\\$*
-. rm @tmp@
-..
-.c --------------------------------------------------------------------
-.de option
-. ds @tmp@ \f(CB\\$1\f[]
-. shift 1
-. Text \\*[@tmp@]\\$*
-. rm @tmp@
-..
-.c --------------------------------------------------------------------
-.de argument
-. ds @tmp@ \f(CI\\$1\f[]
-. shift 1
-. Text \\*[@tmp@]\\$*
-. rm @tmp@
-..
-.c --------------------------------------------------------------------
-.de request
-. ds @tmp@ \f(CB\\$1\f[]
-. shift 1
-. Text .\\*[@tmp@]\\$*
-. rm @tmp@
-..
-.c --------------------------------------------------------------------
-.de escape
-. ds @tmp@ \f[CB]\\$1\f[]
-. shift 1
-. Text \[rs]\\*[@tmp@]\\$*
-. rm @tmp@
-..
-.\" --------------------------------------------------------------------
-.\" SH DESCRIPTION
-.\" --------------------------------------------------------------------
-.
-The
-.BR roff (@MAN7EXT@)
-type-setting system provides a set of macro packages suitable for
-special kinds of documents.
-.
-Each macro package stores its macros and definitions in a file called
-the package's
-.BR "tmac file" .
-The name is deduced from
-.RB ` T\c
-.IB roff MAC\c
-.IR ros '.
-.
-.P
-The tmac files are normal roff source documents, except that they
-usually contain only definitions and setup commands, but no text.
-.
-All tmac files are kept in a single or a small number of directories,
-the
-.B tmac
-directories.
-.
-.
-.\" --------------------------------------------------------------------
-.SH "GROFF MACRO PACKAGES"
-.\" --------------------------------------------------------------------
-.
-.I groff
-provides all classical macro packages, some more full packages, and
-some secondary packages for special purposes.
-.
-Note that it is not possible to use multiple primary macro packages at the
-same time; saying e.g.\&
-.
-.IP
-.Shell_cmd "groff \-m man \-m ms foo"
-.
-.P
-or
-.
-.IP
-.Shell_cmd "groff \-m man foo \-m ms bar"
-.
-.P
-will fail.
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Man\~Pages"
-.\" --------------------------------------------------------------------
-.
-.TP
-.B man
-This is the classical macro package for UNIX manual pages
-(man\~pages); it is quite handy and easy to use; see
-.BR groff_man (@MAN7EXT@).
-.
-.
-.TP
-.B doc
-.TP+
-.B mdoc
-An alternative macro package for man\~pages mainly used in BSD
-systems; it provides many new features, but it is not the standard for
-man\~pages; see
-.BR groff_mdoc (@MAN7EXT@).
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Full Packages"
-.\" --------------------------------------------------------------------
-.
-The packages in this section provide a complete set of macros for
-writing documents of any kind, up to whole books.
-.
-They are similar in functionality; it is a matter of taste which one
-to use.
-.
-.
-.TP
-.B me
-The classical
-.I me
-macro package; see
-.BR groff_me (@MAN7EXT@).
-.
-.
-.TP
-.B mm
-The semi-classical
-.I mm
-macro package; see
-.BR groff_mm (@MAN7EXT@).
-.
-.
-.TP
-.B mom
-The new
-.I mom
-macro package, only available in groff.
-.
-As this is not based on other packages, it can be freely designed.
-.
-So it is expected to become quite a nice, modern macro package.
-.
-See
-.BR groff_mom (@MAN7EXT@).
-.
-.
-.TP
-.B ms
-The classical
-.I ms
-macro package; see
-.BR groff_ms (@MAN7EXT@).
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Special Packages"
-.\" --------------------------------------------------------------------
-.
-The macro packages in this section are not intended for stand-alone
-usage, but can be used to add special functionality to any other
-macro package or to plain groff.
-.
-.
-.TP
-.B papersize
-This macro file is already loaded at start-up by
-.B @g@troff
-so it isn't necessary to call it explicitly.
-.
-It provides an interface to set the paper size on the command line with
-the option \f[B]\%\-dpaper=\f[]\f[I]size\f[].
-.
-Possible values for
-.I size
-are the same as the predefined
-.B papersize
-values in the DESC file (only lowercase; see
-.BR groff_font (@MAN5EXT@)
-for more) except
-.BR a7 - d7 .
-.
-An appended
-.B l
-(ell) character denotes landscape orientation.
-.
-Examples:
-.BR a4 ,
-.BR c3l ,
-.BR letterl .
-.
-.IP
-Most output drivers need additional command line switches
-.B \-p
-and
-.B \-l
-to override the default paper length and orientation as set in the driver
-specific DESC file.
-.
-For example, use the following for PS output on A4 paper in landscape
-orientation:
-.
-.IP
-.Shell_cmd "groff \-Tps \-dpaper=a4l \-P\-pa4 \-P\-l \-ms foo.ms > foo.ps"
-.
-.
-.TP
-.B pic
-This file provides proper definitions for the macros
-.B PS
-and
-.BR PE ,
-needed for the
-.BR @g@pic (@MAN1EXT@)
-preprocessor.
-.
-They will center each picture.
-.
-Use it only if your macro package doesn't provide proper definitions
-for those two macros (actually, most of them already have).
-.
-.
-.TP
-.B pspic
-A single macro is provided in this file,
-.BR PSPIC ,
-to include a PostScript graphic in a document.
-.
-It makes only sense for output devices which support inclusion of PS
-images:
-.BR \-Tps ,
-.BR \-Tdvi ,
-and
-.BR \-Thtml ;
-the file is then loaded automatically.
-.
-Syntax:
-.RS
-.IP
-\&\fB.PSPIC\fP [\fB\-L\fP|\fB-R\fP|\fB\-I\fP \fIn\fP]\ \fI\|file\fP [\fIwidth\fP [\fIheight\fP]]
-.RE
-.
-.IP
-.I file
-is the name of the file containing the illustration;
-.I width
-and
-.I height
-give the desired width and height of the graphic.
-.
-The
-.I width
-and
-.I height
-arguments may have scaling indicators attached;
-the default scaling indicator is\~\c
-.BR i .
-.
-This macro will scale the graphic uniformly
-in the x and y\~directions so that it is no more than
-.I width
-wide
-and
-.I height
-high.
-.
-By default, the graphic will be horizontally centered.
-.
-The
-.BI \-L
-and
-.BI \-R
-options cause the graphic to be left-aligned and right-aligned,
-respectively.
-.
-The
-.B \-I
-option causes the graphic to be indented by\~\c
-.I n
-(default scaling indicator is\~\c
-.BR m ).
-.
-.
-.TP
-.B trace
-Use this for tracing macro calls.
-.
-It is only useful for debugging.
-.
-See
-.BR groff_trace (@MAN7EXT@) .
-.
-.
-.TP
-.B tty-char
-Overrides the definition of standard troff characters and some groff
-characters for tty devices.
-.
-The optical appearance is intentionally inferior compared to that of
-normal tty formatting to allow processing with critical equipment.
-.
-.
-.TP
-.B www
-Additions of elements known from the html format, as being used in the
-internet (World Wide Web) pages; this includes URL links and mail
-addresses; see
-.BR groff_www (@MAN7EXT@).
-.
-.
-.\" --------------------------------------------------------------------
-.SH NAMING
-.\" --------------------------------------------------------------------
-.
-In classical roff systems, there was a funny naming scheme for macro
-packages, due to a simplistic design in option parsing.
-.
-Macro packages were always included by option
-.option -m;
-when this option was directly followed by its argument without an
-intervening space, this looked like a long option preceded by a single
-minus \[em] a sensation in the computer stone age.
-.
-To make this optically working for macro package names, all classical
-macro packages choose a name that started with the letter
-.'char m ,
-which was omitted in the naming of the macro file.
-.
-.
-.P
-For example, the macro package for the man pages was called
-.IR man ,
-while its macro file
-.IR tmac.an .
-So it could be activated by the argument
-.I an
-to option
-.option -m ,
-or
-.option -man
-for short.
-.
-.
-.P
-For similar reasons, macro packages that did not start with an
-.'char m
-had a leading
-.'char m
-added in the documentation and in talking; for example, the package
-corresponding to
-.I tmac.doc
-was called
-.I mdoc
-in the documentation, although a more suitable name would be
-.IR doc .
-For, when omitting the space between the option and its argument, the
-command line option for activating this package reads
-.option "-mdoc" .
-.
-.
-.P
-To cope with all situations, actual versions of
-.BR groff (@MAN1EXT@)
-are smart about both naming schemes by providing two macro files
-for the inflicted macro packages; one with a leading
-.'char m ,
-the other one without it.
-.
-So in
-.IR groff ,
-the
-.I man
-macro package may be specified as on of the following four methods:
-.
-.IP
-.Shell_cmd "groff\~\-m\~man"
-.Shell_cmd "groff\~\-man"
-.Shell_cmd "groff\~\-mman"
-.Shell_cmd "groff\~\-m\~an"
-.
-.
-.P
-Recent packages that do not start with
-.'char m
-do not use an additional
-.'char m
-in the documentation.
-.
-For example, the
-.I www
-macro package may be specified only as one of the two methods:
-.
-.IP
-.Shell_cmd "groff\~\-m\~www"
-.Shell_cmd "groff\~\-mwww"
-.
-.
-.P
-Obviously, variants like
-.I -mmwww
-would not make much sense.
-.
-.
-.P
-A second strange feature of classical troff was to name macro files
-according to
-.BIR tmac. name .
-In modern operating systems, the type of a file is specified as
-postfix, the file name extension.
-.
-Again, groff copes with this situation by searching both
-.IB anything .tmac
-and
-.BI tmac. anything
-if only
-.I anything
-is specified.
-.
-.
-.P
-The easiest way to find out which macro packages are available on a
-system is to check the man\~page
-.BR groff (@MAN1EXT@),
-or the contents of the
-.I tmac
-directories.
-.
-.
-.P
-In
-.IR groff ,
-most macro packages are described in\~man pages called
-.BR groff_\f[I]name\f[] (@MAN7EXT@),
-with a leading
-.'char m
-for the classical packages.
-.
-.
-.\" --------------------------------------------------------------------
-.SH INCLUSION
-.\" --------------------------------------------------------------------
-.
-There are several ways to use a macro package in a document.
-.
-The classical way is to specify the troff/groff option
-.option \-m
-.argument name
-at run-time; this makes the contents of the macro package
-.I name
-available.
-.
-In groff, the file
-.IB name .tmac
-is searched within the tmac path; if not found,
-.BI tmac. name
-will be searched for instead.
-.
-.
-.P
-Alternatively, it is also possible to include a macro file by adding
-the request
-.request so
-.I filename
-into the document; the argument must be the full file name of an
-existing file, possibly with the directory where it is kept.
-.
-In groff, this was improved by the similar request
-.request mso
-.IR package ,
-which added searching in the tmac path, just like option
-.option -m
-does.
-.
-.
-.P
-Note that in order to resolve the
-.request so
-and
-.request mso
-requests, the roff preprocessor
-.BR soelim (@MAN1EXT@)
-must be called if the files to be included need preprocessing.
-.
-This can be done either directly by a pipeline on the command line or
-by using the troff/groff option
-.option \-s .
-.
-.I man
-calls soelim automatically.
-.
-.
-.P
-For example, suppose a macro file is stored as
-.I @MACRODIR@/macros.tmac
-and is used in some document called
-.IR docu.roff .
-.
-.
-.P
-At run-time, the formatter call for this is
-.
-.IP
-.Shell_cmd "groff\~\-m\~" "macrofile\~document.roff"
-.
-.
-.P
-To include the macro file directly in the document either
-.
-.IP
-.Example
-. Text .mso macrofile.tmac
-./Example
-.
-.P
-is used or
-.
-.IP
-.Example
-. Text .so @MACRODIR@/macros.tmac
-./Example
-.
-.
-.P
-In both cases, the formatter is called with
-.IP
-.Shell_cmd "groff\~\-s\~" docu.roff
-.
-.
-.P
-If you want to write your own groff macro file, call it
-.IB whatever .tmac
-and put it in some directory of the tmac path, see section
-.BR FILES .
-Then documents can include it with the
-.request mso
-request or the option
-.option -m .
-.
-.
-.ig
-.\" --------------------------------------------------------------------
-.SH CONVENTION
-.\" --------------------------------------------------------------------
-.
-.\" This section does not fit into the framework of this document.
-.
-There is a convention that is supported by many modern roff
-type-setters and
-.BR man (1)
-programs, the
-.I preprocessor word
-described in the following.
-.
-.P
-If the first line in a document is a comment, the first word (after the
-comment characters and a blank) constitutes the
-.B preprocessor
-.BR word .
-That means that the letters of this word are interpreted as
-abbreviations for those preprocessor commands that should be run
-when formatting the document.
-.
-Mostly, only the letters corresponding to the options for the
-preprocessors are recognized,
-.'char e
-(for
-.BR eqn ),
-.\" 'char G ,
-.\" 'char g ,
-.'char p ,
-(for
-.BR pic ),
-.'char R
-(for
-.BR refer ),
-.'char s
-(for
-.BR soelim ),
-and
-.'char t
-(for
-.BR tbl ).
-(see
-.BR roff (@MAN7EXT@)).
-.
-.
-.P
-Besides being a good reminder for the user, some formatters (like the
-.BR man (1)
-program) are even able to automatically start the preprocessors
-specified in the preprocessor word, but do not bet on this.
-.
-.
-.P
-The
-.I man
-program handles some preprocessors automatically, such that in
-man\~pages only the following characters should be used:
-.'char e ,
-.'char p ,
-and
-.'char t .
-.
-.
-..
-.\" --------------------------------------------------------------------
-.SH "WRITING MACROS"
-.\" --------------------------------------------------------------------
-.
-A
-.BR roff (@MAN7EXT@)
-document is a text file that is enriched by predefined formatting
-constructs, such as requests, escape sequences, strings, numeric
-registers, and macros from a macro package.
-.
-These elements are described in
-.BR roff (@MAN7EXT@).
-.
-.
-.P
-To give a document a personal style, it is most useful to extend the
-existing elements by defining some macros for repeating tasks; the best
-place for this is near the beginning of the document or in a separate
-file.
-.
-.
-.P
-Macros without arguments are just like strings.
-.
-But the full power of macros reveals when arguments are passed with a
-macro call.
-.
-Within the macro definition, the arguments are available as the escape
-sequences
-.BR $1 ,
-\*[Ellipsis],
-.BR $9 ,
-.BR $[ \*[Ellipsis] ] ,
-.BR $* ,
-and
-.BR $@ ,
-the name under which the macro was called is in
-.BR $0 ,
-and the number of arguments is in register
-.BR \n[.$] ;
-see
-.BR groff (@MAN7EXT@).
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Copy-in Mode"
-.\" --------------------------------------------------------------------
-.
-The phase when groff reads a macro is called
-.I "copy-in mode"
-in roff-talk.
-.
-This is comparable to the C\~preprocessing phase during the development
-of a program written in the C\~language.
-.
-.
-.P
-In this phase, groff interprets all backslashes; that means that all
-escape sequences in the macro body are interpreted and replaced by
-their value.
-.
-For constant expression, this is wanted, but strings and registers
-that might change between calls of the macro must be protected from
-being evaluated.
-.
-This is most easily done by doubling the backslash that introduces the
-escape sequence.
-.
-This doubling is most important for the positional parameters.
-.
-For example, to print information on the arguments that were passed to
-the macro to the terminal, define a macro named `.print_args',
-say.
-.
-.
-.P
-.ds @1 \[rs]f[I]\[rs]\[rs]$0\[rs]f[]\"
-.ds @2 arguments:\"
-.Example
-. Text .ds midpart was called with
-. Text .de print_args
-. Text .\~\~tm\~\*[@1]\~\[rs]\[rs]*[midpart]\~\[rs]\[rs]n[.$]\~\*[@2]
-. Text .\~\~tm\~\[rs]\[rs]$*
-. Text ..
-./Example
-.rm @1
-.rm @2
-.
-.
-.P
-When calling this macro by
-.
-.P
-.Example
-. Text .print_args arg1 arg2
-./Example
-.
-.P
-the following text is printed to the terminal:
-.
-.P
-.Example
-. Text \f[CI]print_args\f[] was called with the following 2 arguments:
-arg1 arg2
-./Example
-.
-.
-.P
-Let's analyze each backslash in the macro definition.
-.
-As the positional parameters and the number of arguments will change
-with each call of the macro their leading backslash must be doubled,
-which results in
-.I \[rs]\[rs]$*
-and
-.IR \[rs]\[rs][.$] .
-The same applies to the macro name because it could be called with an
-alias name, so
-.IR \[rs]\[rs]$0 .
-.
-.
-.P
-On the other hand,
-.I midpart
-is a constant string, it will not change, so no doubling for
-.IR \[rs]*[midpart] .
-The
-.I \[rs]f
-escape sequences are predefined groff elements for setting the font
-within the text.
-.
-Of course, this behavior will not change, so no doubling with
-.I \[rs]f[I]
-and
-.IR \[rs]f[] .
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Draft Mode"
-.\" --------------------------------------------------------------------
-.
-Writing groff macros is easy when the escaping mechanism is temporarily
-disabled.
-.
-In groff, this is done by enclosing the macro definition(s) into a
-pair of
-.B .eo
-and
-.B .ec
-requests.
-.
-Then the body in the macro definition is just like a normal part of
-the document \[em] text enhanced by calls of requests, macros,
-strings, registers, etc.
-.
-For example, the code above can be written in a simpler way by
-.
-.
-.P
-.ds @1 \[rs]f[I]\[rs]$0\[rs]f[]\"
-.ds @2 arguments:\"
-.Example
-. Text .eo
-. Text .ds midpart was called with
-. Text .de print_args
-. Text .\~\~tm\~\*[@1]\~\[rs]*[midpart]\~\[rs]n[.$]\~\*[@2]
-. Text .\~\~tm\~\[rs]$*
-. Text ..
-. Text .ec
-./Example
-.rm @1
-.rm @2
-.
-.
-.P
-Unfortunately, draft mode cannot be used universally.
-.
-Although it is good enough for defining normal macros, draft mode
-will fail with advanced applications, such as indirectly defined
-strings, registers, etc.
-.
-An optimal way is to define and test all macros in draft mode and then
-do the backslash doubling as a final step; do not forget to remove the
-.I .eo
-request.
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Tips for Macro Definitions"
-.\" --------------------------------------------------------------------
-.
-.Topic
-Start every line with a dot, for example, by using the groff request
-.B .nop
-for text lines, or write your own macro that handles also text lines
-with a leading dot.
-.
-.IP
-.Example
-. Text .de Text
-. Text .\~\~if (\[rs]\[rs]n[.$] == 0)\~\[rs]
-. Text .\~\~\~\~return
-. Text .\~nop\~\[rs])\[rs]\[rs]$*[rs]\)
-. Text ..
-./Example
-.
-.Topic
-Write a comment macro that works both for copy-in and draft mode; for
-as escaping is off in draft mode, trouble might occur when normal
-comments are used.
-.
-For example, the following macro just ignores its arguments, so it
-acts like a comment line:
-.
-.IP
-.Example
-. Text .de\~c
-. Text ..
-. Text .c\~This\~is\~like\~a\~comment\~line.
-./Example
-.
-.Topic
-In long macro definitions, make ample use of comment lines or empty
-lines for a better structuring.
-.
-.Topic
-To increase readability, use groff's indentation facility for requests
-and macro calls (arbitrary whitespace after the leading dot).
-.
-.
-.\" --------------------------------------------------------------------
-.SS "Diversions"
-.\" --------------------------------------------------------------------
-.
-Diversions can be used to realize quite advanced programming
-constructs.
-.
-They are comparable to pointers to large data structures in the
-C\~programming language, but their usage is quite different.
-.
-.
-.P
-In their simplest form, diversions are multi-line strings, but
-they get their power when diversions are used dynamically within macros.
-.
-The information stored in a diversion can be retrieved by calling the
-diversion just like a macro.
-.
-.
-.P
-Most of the problems arising with diversions can be avoided if you are
-conscious about the fact that diversions always deal with complete
-lines.
-.
-If diversions are used when the line buffer has not been flashed,
-strange results are produced; not knowing this, many people get
-desperate about diversions.
-.
-To ensure that a diversion works, line breaks should be added at the
-right places.
-.
-To be on the secure side, enclose everything that has to do with
-diversions into a pair of line breaks; for example, by amply using
-.B .br
-requests.
-.
-This rule should be applied to diversion definition, both inside and
-outside, and to all calls of diversions.
-.
-This is a bit of overkill, but it works nicely.
-.
-.
-.P
-[If you really need diversions which should ignore the current partial
-line, use environments to save the current partial line and/\:or use the
-.B .box
-request.]
-.
-.
-.P
-The most powerful feature using diversions is to start a diversion
-within a macro definition and end it within another macro.
-.
-Then everything between each call of this macro pair is stored within
-the diversion and can be manipulated from within the macros.
-.
-.
-.\" --------------------------------------------------------------------
-.SH FILES
-.\" --------------------------------------------------------------------
-.
-All macro names must be named
-.IB name .tmac
-to fully use the tmac mechanism.
-.
-.BI tmac. name
-as with classical packages is possible as well, but deprecated.
-.
-.
-.P
-The macro files are kept in the
-.IR "tmac directories" ;
-a colon separated list of these constitutes the
-.IR "tmac path" .
-.
-.
-.P
-The search sequence for macro files is (in that order):
-.
-.Topic
-the directories specified with troff/groff's
-.B \-M
-command line option
-.
-.Topic
-the directories given in the
-.Env_var $GROFF_TMAC_PATH
-environment variable
-.
-.Topic
-the current directory (only if in unsafe mode, which is enabled by the
-.B \-U
-command line switch)
-.
-.Topic
-the home directory
-.
-.Topic
-a platform-specific directory, being
-.B @SYSTEMMACRODIR@
-in this installation
-.
-.Topic
-a site-specific (platform-independent) directory, being
-.B @LOCALMACRODIR@
-in this installation
-.
-.Topic
-the main tmac directory, being
-.B @MACRODIR@
-in this installation
-.
-.
-.\" --------------------------------------------------------------------
-.SH ENVIRONMENT
-.\" --------------------------------------------------------------------
-.
-.TP
-.Env_var $GROFF_TMAC_PATH
-A colon separated list of additional tmac directories in which to search
-for macro files.
-.
-See the previous section for a detailed description.
-.
-.
-.\" --------------------------------------------------------------------
-.SH AUTHOR
-.\" --------------------------------------------------------------------
-.
-Copyright (C) 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
-.
-.P
-This document is distributed under the terms of the FDL (GNU Free
-Documentation License) version 1.1 or later.
-.
-You should have received a copy of the FDL on your system, it is also
-available on-line at the
-.URL http://\:www.gnu.org/\:copyleft/\:fdl.html "GNU copyleft site" .
-.
-.P
-This document is part of
-.IR groff ,
-the GNU roff distribution.
-.
-It was written by
-.MTO bwarken@mayn.de "Bernd Warken" ;
-it is maintained by
-.MTO wl@gnu.org "Werner Lemberg" .
-.
-.
-.\" --------------------------------------------------------------------
-.SH "SEE ALSO"
-.\" --------------------------------------------------------------------
-.
-A complete reference for all parts of the groff system is found in the
-groff
-.BR info (1)
-file.
-.
-.
-.TP
-.BR groff (@MAN1EXT@)
-an overview of the groff system.
-.
-.
-.TP
-.BR groff_man (@MAN7EXT@),
-.TP+
-.BR groff_mdoc (@MAN7EXT@),
-.TP+
-.BR groff_me (@MAN7EXT@),
-.TP+
-.BR groff_mm (@MAN7EXT@),
-.TP+
-.BR groff_mom (@MAN7EXT@),
-.TP+
-.BR groff_ms (@MAN7EXT@),
-.TP+
-.BR groff_trace (@MAN7EXT@),
-.TP+
-.BR groff_www (@MAN7EXT@).
-the groff tmac macro packages.
-.
-.
-.TP
-.BR groff (@MAN7EXT@)
-the groff language.
-.
-.
-.P
-The Filesystem Hierarchy Standard is available at the
-.URL http://\:www.pathname.com/\:fhs/ "FHS web site" .
-.
-.cp \n[groff_tmac_C]
-.
-.\" Local Variables:
-.\" mode: nroff
-.\" End: