c# open pdf file in browser : Delete page pdf online application Library utility azure asp.net winforms visual studio troff3-part1767

nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
6.  Line Length and Indenting
The maximum line length for ll mode may be set with ll. The indent may be set with in; an indent applicable to
only the next output line may be set with ti. The line length includes indent space but not page oset space.  The
line-length minus the indent is the  basis for centering with ce. The eect of ll, in, or ti is delayed, if a partially
collected line  exists, until  after that  line is output.  In ll mode the length  of text  on an output line  is less than
or equal to the line  length minus the indent.  The  current line length  and indent  are available in registers .l and
.i respectively; the .y and .in registers both hold the indent that actually applies to the current line, taking a tem-
porary indent into account.  The length of three-part titles produced by tl (see §14) is independently set by lt.
In ad p mode, indent, temporary indent, and line length should be predened for the entire paragraph at the time
abreak occurs.  To achieve this with indent  and line  length varying inside  a paragraph, a shape can  be  dened
with pshape.  The ll and in requests  are  also  eective  while  formatting  a  paragraph  but  may  result  in  less
optimal line breaking decisions then.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.ll ±N
6.5in
previous
E,m
Line length is set to ±N.
.in ±N
N=0
previous
B,E,m
Indent  is  set  to ±N.  The  indent  is  prepended  to  each  output
line.
.ti ±N
ignored
B,E,m
Temporary indent.  The next output  text  line  will  be  indented
a  distance ±N with  respect to  the  current  indent.  The  result-
ing total indent may not be negative.  The current indent is not
changed.
.pshape ±I1 ±L1 ±I2 ±L2 ... o
E,m
Set a special
shape for the
current  para-
graph  in ad p
mode.  At  the
next break
when the para-
graph  gets  for-
matted,  its rst
line  is  indented
by I1 and has
length L1, its
second line is
indented by I2
and  has  length
L2, and so forth.  Relative numbers refer to the previous indent
or line length pair, or to the values set by in and ll for the rst
pair.  The last of the indent and line length pairs stays eective
if the paragraph  has more lines than pairs are given.  With an
odd number of arguments,
the standard line length as
set by ll is used at the end.
Once the current paragraph
has been printed, the shape
specication  is  forgotten,
and the standard indent and
line  length  values  are  in
eect again unless another
pshape request occurs.  As
an exception, \p preserves
the remaining part of the
shape.  To produce shapes with holes as in this example, diver-
sion traps can be used to move formatted lines in vertical direction.
7.  Macros, Strings, Diversion, and Position Traps
7.1.Macros and strings. A macro is a named set of  arbitrary lines that may be invoked by name or with a trap.
Astring is a named string of characters, not including a newline character, that may be interpolated by name at
any point.  Request, macro, and string names share the same name list.  Macro and string names may consist of
an arbitrary number of
ASCII
characters (§1.1) and may usurp previously dened request, macro, or string names;
this  implies  that build-in  operators  may  be  (irrevocably) redened.  Any of  these  entities  may  be  renamed with
rn or removed with rm. Macros are created by de and di, and appended to by am and da; di and da cause nor-
mal output to be stored in a macro.  Strings are created by ds and appended to by as. A macro is invoked in the
same way as a request; a control line beginning .xx will interpolate the contents of macro xx.  The remainder of
the line may contain arbitrarily many arguments.  The strings x, xx, and xxx are interpolated at any desired point
with \∗x, \∗(xx, and \∗[xxx] respectively; the  form \∗[xxx arg ...] allows to  specify arguments to a string.  String
references and macro invocations may be nested.
-31 -
Delete page pdf online - remove PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Provides Users with Mature Document Manipulating Function for Deleting PDF Pages
delete pages in pdf online; delete pages from pdf without acrobat
Delete page pdf online - VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
Visual Basic Sample Codes to Delete PDF Document Page in .NET
pdf delete page; delete pages on pdf online
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
7.2.Copy mode input interpretation. During the denition and extension of strings and macros (not by diversion)
the input is read in copy mode.  The input is copied without interpretation except that:
The contents of number registers indicated by \n are interpolated.
Strings indicated by \∗ are interpolated.
Arguments indicated by \$ are interpolated.
Environment variables indicated by \V are interpolated.
Device control functions indicated by \X and \Y are executed.
Concealed newlines indicated by \(newline) are eliminated.
Comments indicated by \" or \# are eliminated.
\t and \a are interpreted as
ASCII
horizontal tab and
SOH
respectively (§9).
\\ is interpreted as \.
\. is interpreted as ".".
These interpretations can be suppressed by prepending a \.  For example, since \\ maps into a \, \\n will copy as
\n which will be interpreted as a number register indicator when the macro or string is reread.
7.3.Arguments. When a macro is invoked by name, the remainder of the line is taken to contain arguments.  The
argument separator is the space  character, and  arguments may be surrounded by double-quotes to permit imbed-
ded space characters.  Pairs of double-quotes may be imbedded in double-quoted arguments to represent a single
double-quote character.  The argument "" is explicitly null.  If the desired arguments won’t t on a line, a con-
cealed newline may be used to continue on the next line.  A trailing double quote may be omitted.
Similarly, arguments  may  be  passed  to  strings with  the \∗[ syntax,  separated  by  spaces,  until  the  argument  list
ends with the ] character.  String arguments are otherwise handled exactly like macro arguments.
When  a  macro  is  invoked  the input  level is pushed  down and  any  arguments  available  at  the  previous  level
become  unavailable  until the macro  is  completely read and  the previous level is  restored.  A macro’s own argu-
ments can be interpolated at any point  within the  macro with \$n, \$(nn, or \$[nnn], which interpolates the nth,
nnth, or nnnth  argument,  respectively.  If  an  invoked  argument doesn’t exist, a null  string results.  For example,
the macro xx may be dened by
.de xx
\"begin denition
Today is \\$1 the \\$2.
..
\"end denition
and called by
.xx Monday 14th
to produce the text
Today is Monday the 14th.
Note that the \$ was concealed in the denition with a prepended \.
The escape sequence \$∗ interpolates  all arguments to a  macro, separated  by  spaces; \$@ interpolates all  argu-
ments, each one surrounded  by double quotes, separated by spaces.  The name of the current macro or string is
available with the \$0 escape sequence.  The number of currently available arguments is in the .$ register.
No arguments are available at the top (non-macro) level or within a trap-invoked macro.
Arguments are copied  in copy  mode onto a stack where they are available for reference.  It is advisable  to con-
ceal string references (with an extra \) to delay interpolation until argument reference time.
7.4.Diversions. Processed  output  may  be  diverted  into  a  macro  for  purposes  such  as  footnote  processing  (see
Tutorial §T5) or  determining  the  horizontal  and  vertical size  of some  text for  conditional changing  of pages  or
columns.  A  single  diversion  trap may  be  set  at  a  specied  vertical  position.  The  number registers dn and dl
respectively contain the vertical and  horizontal size of  the most recently ended diversion.  Processed text that is
diverted into  a macro retains the vertical  size of  each  of  its  lines  when reread  in noll mode  regardless  of  the
current V.  Constant-spaced (cs)  or  emboldened  (bd)  text  that  is  diverted  can  be  reread  correctly only  if  these
modes are again or still in eect at reread time.  One way to do this is to imbed in the diversion the appropriate
cs or bd requests with the transparent mechanism described in §10.6.
-32 -
C# PDF File & Page Process Library SDK for C#.net, ASP.NET, MVC
Provides you with examples for adding an (empty) page to a PDF and adding empty pages You may feel free to define some continuous PDF pages and delete.
delete page pdf online; delete blank page in pdf online
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF C# File: Split PDF; C# Page: Insert PDF pages; C# Page: Delete PDF pages;
delete pdf pages reader; cut pages from pdf file
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
Diversions may be nested and certain parameters and registers are associated with the current diversion level (the
top non-diversion level may be thought of as the 0th diversion level).  These are the diversion trap and associated
macro, no-space mode, the internally-saved marked place (see mk and rt), the current vertical place (.d register),
the current high-water text base-line (.h register), and the current diversion name (.z register).  The current diver-
sion level is available in the .dilev register.
A previous partially lled line is included when a diversion begins.  A partially lled line at the end of a diver-
sion is  not included but becomes part of  the surrounding diversion  level.  With the box request, a previous par-
tially lled line is not included.  At the end of the diversion, this partially lled line is restored at  the surround-
ing  level,  discarding  any  partially lled  line from  within  the  diversion.  The  behavior  is  otherwise  the  same  as
with a standard diversion.
7.5.Traps. Five  types  of  trap  mechanisms  are  available—page  traps,  output-line  traps,  a  single  diversion  trap,
multiple  diversion  traps,  and  an input-line-count  trap.  Macro-invocation traps  may  be planted using wh at  any
page position including the top.  This trap position may be changed using ch. Trap positions at or below the bot-
tom of the page have no eect unless or until moved  to within  the page  or rendered eective  by  an  increase  in
page length.  Two traps may be planted at the same position only by rst planting them at dierent positions and
then moving one of the traps; the rst planted trap will conceal the second unless and until the rst one is moved
(see Tutorial Examples §T5). If the rst one is moved back, it again conceals the second trap.  The macro associ-
ated with a page trap is automatically invoked when a line of text is output whose vertical size reaches or sweeps
past the  trap position.  Reaching the  bottom  of  a  page  springs  the  top-of-page trap, if  any, provided  there is  a
next  page.  The distance to the  next trap position is available  in the .t register; if there are no  traps  between the
current position and the bottom of the page, the distance returned is the distance to the page bottom.
An  output-line  trap  is  planted  using  the  escape  sequence \Px, \P(xx,  or \P[xxx].  It  is  converted  to  an  internal
character code that becomes part of the current text.  When the line containing it has been physically output, the
macro x, xx, or xxx, respectively, is invoked.  A line may contain more than one output-line trap; they are invoked
in  the order  they appear.  If a  page trap becomes  eective at the  same point, it is invoked immediately after  all
output-line traps.  Output-line traps are not invoked at  the time they become part  of a diversion.  They can thus
be used  to  determine  e.g. the eective  page  number  of  the  surrounding text,  even  when  it  had  originally  been
diverted on another page.
A single macro-invocation  trap eective  in the current  diversion may be planted  using dt. If  another dt follows
in the same diversion, the trap position is changed.  Multiple traps may be planted in the current diversion using
dwh and dch.  The .t register  works  in  a  diversion;  if there  is  no  subsequent  trap  a large distance is  returned.
For a description of input-line-count traps, see it below.
7.6.Recursion. tro macros can be invoked recursively.  In general,  return information and  arguments for  macro
calls  are stored as frames on a stack.  Since  the size of the stack is limited by available memory, recursive  calls
cannot descend to arbitrary depths.  To avoid consumption of large amounts of memory in case of endless loops,
the depth is deliberately restricted further; the recursionlimit request allows to adjust that restriction.
A macro call can be tail-recursive, that is, the re-invocation of the current macro can occur in its last statement.
tro can then replace the stack frame of the current macro instance with that of the following one, and the stack
size remains constant.  The depth of tail-recursive macro calls is thus principally unlimited, and is not articially
restricted  by  default.  Since tro cannot  determine  the  control  character  at  the  time  the  macro  is  executed  in
advance, the recursive  macro call must not only be the  last statement of a macro, but must actually occur in the
last line for tail-recursion elimination to become eective, although it may be prexed by .if or .el or followed by
\}.
7.7.Local strings. Strings, macros, and diversions are, once dened, normally accessible from any part of a tro
program.  Local  strings,  dened  with lds,  are  accessible  only  within  the  currently  executing  macro  instance,
and  are  not  inherited  to  macros invoked  from  them.  When  the  currently  executing  macro  terminates,  they  are
automatically deleted, and all associated storage is reclaimed.
As long as a local string named xx exists, any reference with \(xx or \[xx] retrieves the value of the local string;
the  global  string xx,  if  any,  becomes  inaccessible  by  this  method.  Calls  to as, substring, index,  and chop
modify the local string. watch with the name of a local string as argument noties on modications of the local
string. rm removes a local string  and possibly makes a global  string visible again, rn renames a local string  to
another local string, and als creates a local alias to a local string.
-33 -
C# PDF Page Insert Library: insert pages into PDF file in C#.net
Free components and online source codes for .NET framework 2.0+. PDF document files by C# code, how to rotate PDF document page, how to delete PDF page using C#
delete pages pdf preview; delete a page from a pdf reader
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF C# File: Split PDF; C# Page: Insert PDF pages; C# Page: Delete PDF pages;
delete pages from pdf document; cut pages out of pdf online
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
It is  not allowed  to dene local macros or diversions.  Calls  to .xx or ´xx reference a global macro or diversion
even if a local string xx exists.  Traps and the \Y escape sequence always operate on global macros or diversions.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.de xx yy
.yy=..
Dene  or  redene  the  macro xx.  The  contents  of  the  macro
begin  on  the  next  input  line.  Input  lines  are  copied  in copy
mode until  the  denition  is  terminated  by  a  line  beginning
with .yy,  whereupon  the  macro yy is  called.  In  the  absence
of yy,  the  denition  is  terminated  by  a  line  beginning  with
"..".  A macro may contain de requests provided the terminat-
ing macros dier or the contained denition terminator is con-
cealed. ".." can be concealed as \\.. which will copy as \.. and
be reread as "..".
.am xx yy
.yy=..
Append to macro (append version of de).
.ds xx string –
ignored
Dene a  string xx containing string.  Any initial  double-quote
in string is stripped o to permit initial blanks.
.as xx string –
ignored
Append string to string xx (append version of ds).
.lds xx string –
ignored
Dene  local  string xx containing string.  Equivalent  to ds at
the top non-macro level.
.substring xx N [M]
M=−1
Replace  string xx by  its  substring  between  indices N and M.
N and M start  at  0.  Negative  values  are  interpreted  relative
to  the  end  of  the  string; −1  implies  the  last  character  of  the
string.
.length R string
Rset to 0
Store the length of string in register R. string is read in copy
mode.
.index R xx string
ignored
Store  the  position  of  the rst  occurence  of string in xx in
register R.  Positions  are  counted  from 0.  If no occurence  is
found, R is set to –1. string is read in copy mode.
.chop xx
ignored
Remove the last character of the macro, string, or diversion xx.
.rm xx
ignored
Remove  request,  macro,  or  string.  The  name xx is  removed
from  the  name  list  and  any  related  storage  space  is  freed.
Subsequent  references  will  have  no  eect.  If  many  mac-
ros and strings are being  created  dynamically, it may  become
necessary  to  remove unused ones to  recapture  internal storage
space  for  newer  registers.  If  a  macro  is  removed  while  it  is
in use, associated storage is not released, and a warning of the
mac category is emitted.
.rn xx yy
ignored
Rename  request,  macro,  or  string xx to yy.  If yy exists,  it  is
rst removed.
.di xx
end
D
Divert output to macro xx.  Normal text processing occurs dur-
ing  diversion  except  that  page  osetting  is  not  done.  The
diversion  ends  when  the  request di or da is  encountered
without  an  argument;  extraneous  requests  of  this  type  should
not appear when nested diversions are being used.
.da xx
end
D
Divert, appending to xx (append version of di).
.box xx
end
D
Divert output to macro xx, excluding a partially lled line.
.boxa xx
end
D
Divert and append to xx, excluding a partially lled line.
-34 -
VB.NET PDF Page Insert Library: insert pages into PDF file in vb.
in VB.NET. Ability to create a blank PDF page with related by using following online VB.NET source code. Support .NET WinForms, ASP
delete pages from pdf; delete pages out of a pdf
VB.NET PDF - Convert PDF Online with VB.NET HTML5 PDF Viewer
RasterEdge. PRODUCTS: ONLINE DEMOS: Online HTML5 Document Viewer; Online XDoc.PDF C# File: Split PDF; C# Page: Insert PDF pages; C# Page: Delete PDF pages;
delete pdf pages; cut pages from pdf
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
.unformat xx –
ignored
Strip line break information from diversion xx.  All breaks that
do not result in explicit vertical movement are discarded, inter-
word  spaces  that had been converted to horizontal movements
during  adjustment  become  space  characters  again,  the  eects
of tabulators  and eld characters are  reverted, and hyphenated
word parts are combined again.
.asciify xx
ignored
All  characters  in  diversion xx changed  to  plain  text.  Has  all
eects  described  for unformat and  additionally  discards  font
and  point  size  information  and  splits  substituted  ligatures  to
their individual characters.
.wh N xx
v
Install a trap to invoke xx at page position N; a negative N will
be  interpreted  with  respect  to  the  page bottom.  Any  macro
previously planted at N is replaced  by xx.  A zero N refers  to
the top of a page.  In the absence of xx, the rst found trap at
N, if any, is removed.
.ch xx N
v
Change the trap position for macro xx to be N.  In the absence
of N, the trap, if any, is removed.
.dwh N xx
D,v
Set  location trap in  current diversion.  Diversion  traps  planted
with dt are not aected; if both a dwh and a dt trap are set at
the same  position,  both  are eective.  A dwh trap previously
set at the same  position is replaced.  At  the top non-diversion
level,  it  is  equivalent  to wh.  Otherwise  with  a  negative  or
zero N, the trap will never be invoked since a diversion has no
bottom and can never reach its top again.
.dch xx N
D,v
Change  trap  location  in  current  diversion; equivalent to ch at
the top non-diversion level.
.dt N xx
o
D,v
Install a diversion trap at position N in the current diversion to
invoke macro xx.  Another dt will redene  the diversion trap.
If no arguments are given, the diversion trap is removed.
.vpt N
1
ignored
Enable  (N≠0)  or  disable  (N=0)  page  ejections  and  vertical
position  traps,  i.e.  those  set with wh or dt.  At  end  of input,
the page is forcefully ejected.  The number register .vpt holds
the current setting.
.it N xx
o
E
Set  an  input-line-count  trap  to  invoke  the  macro xx after N
lines  of text input  have  been  read  (control  or  request  lines
don’t  count).  The  text may be in-line text or text interpolated
by inline or trap-invoked macros.
.itc N xx
o
E
Set  an  input-line-count  trap  like it,  but  ignore  line  interrup-
tions with \c when counting lines.
.return
Immediately return from the current macro to the level above.
.shift N
1
Shift the arguments to the current macro by N.
.als yy xx
yy is  created  as  an  alias  for  the  request,  macro,  or  string xx.
The  alias  name  is  in  every  respect  identical  to  the  original
name.  If xx is  removed  or  renamed, yy continues  to  refer  to
the  object  at  the  time  the  alias  had  been  created  (and  vice-
versa).  If either xx or yy are  redened, both refer  to the new
denition.
.blm xx
none
none
Whenever a blank line is encountered, the macro xx is invoked
instead of the default behavior to output a blank line.
-35 -
VB.NET PDF - Annotate PDF Online with VB.NET HTML5 PDF Viewer
Ability to insert a text note after selected text. Allow users to draw freehand shapes on PDF page. VB.NET HTML5 PDF Viewer: Annotate PDF Online.
delete pages pdf document; delete pages pdf online
C# PDF remove image library: remove, delete images from PDF in C#.
Delete and remove all image objects contained in a specific to remove a specific image from PDF document page. Free .NET PDF SDK library download and online C#
delete pages pdf file; delete page from pdf preview
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
.em xx
none
none
The macro xx will be  invoked  when  all input  has ended.  The
eect is the same as if the  contents of xx had been at the end
of the last le processed, but all processing ceases at the  next
page eject.
.recursionlimit N M
Set  the  maximum  stack  depth  for  generally  recursive  invoca-
tions of macros to N, and for invocations of tail-recursive mac-
ros to M.  If N or M are zero, the respective  depth  is unlim-
ited.  The default is 512 for  the general case,  and no  limit for
tail-recursion.
8.  Number Registers
A variety of parameters are available to the user as predened, named number registers (see Summary and Index,
page  7).  In  addition,  the  user  may dene  his  own named  registers.  Register  names  are  one  or  two  characters
long and do not conict with  request, macro, or string names.  Except  for certain predened read-only registers,
a number register can be read, written, automatically incremented or decremented, and interpolated into the input
in  a  variety  of  formats.  One  common  use  of  user-dened  registers  is  to  automatically  number  sections,  para-
graphs, lines, etc.  A  number  register  may be used any time numerical input  is  expected or desired and  may be
used in numerical expressions (§1.4).
Number  registers  are  created and  modied  using nr,  which  species  the  name,  numerical  value, and the  auto-
increment  size.  Registers  are also modied,  if accessed  with  an  auto-incrementing sequence.  If  the  registers x
and xx both contain N and have the auto-increment size M, the following access sequences have the eect shown:
___________________________________________
Eect on
Value
Sequence
Register
Interpolated
___________________________________________
\nx
none
N
\n(xx
none
N
\n[xxx]
none
N
\n+x
xincremented by M
N+M
\n–x
xdecremented by M
N–M
\n+(xx
xx incremented by M
N+M
\n–(xx
xx decremented by M
N–M
\n+[xxx] xxx incremented by M
N+M
\n–[xxx]
xxx decremented by M
N–M
___________________________________________
Floating-point  registers can  be  created  and modied using nrf.  They share a common name space with integer
registers; a nr request  turns a oating-point register  into an  integer  register.  Access  and  auto-increment  are  as
with integer registers.
When  interpolated,  a  number  register  is  converted  to  decimal  (default),  decimal  with  leading  zeros,  lower-case
Roman, upper-case Roman, lower-case sequential alphabetic, or upper-case sequential alphabetic according to the
format specied by af.
Local  number  registers  can  be  created  and modied  using lnr and lnrf.  Like  local  strings, local  registers  are
accessible  only  within  the  currently  executing  macro  instance,  are  not  inherited  to  macros  invoked  from  them,
and are deleted when the current macro returns.
The  existence of  a  local  number  register xx makes  the  global number  register xx,  if  any,  completely inaccessi-
ble.  The sequences \n(xx and \n[xx] retrieve  the value  of  the  local  register, \R’xx...’, \n+(xx and \n+[xx] (and
likewise)  modify  it,  and \g(xx and \g[xx] retrieve its format.  Subsequent calls to nr, nrf, af, length,  and index
with xx as argument modify the local register. watchn noties on modications of the local register. rr removes
a local register  and possibly  makes  a global  register  visible again, rnn renames  a  local register to  another local
register, and aln creates a local alias to a local register.
-36 -
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.nr R ±N M
u
The  number  register R is  assigned  the  value ±N with  respect
to  the  previous  value,  if  any.  The  increment  for  auto-
incrementing is set to M.  An alternate syntax is available with
the \R´R ±N´ escape sequence.
.nrf R ±F G
u
The oating-point  register R is  assigned  the  value ±F with
respect  to  the  previous  value,  if  any.  Comparison  computa-
tions  in  the  expression F are  performed  using oating-point
values.  The  increment  for  auto-incrementing, which also  is  a
oating-point value, is set to G.
.lnr R ±N M
u
Dene and set local number register R.
.lnrf R ±F G
u
Dene and set local oating-point register R.
.af R c
arabic
Assign format c to register R.  The available formats are:
_______________________________________
Numbering
Format
Sequence
_______________________________________
1
0,1,2,3,4,5,...
001
000,001,002,003,004,005,...
i
0,i,ii,iii,iv,v,...
I
0,I,II,III,IV,V,...
a
0,a,b,c,...,z,aa,ab,...,zz,aaa,...
A
0,A,B,C,...,Z,AA,AB,...,ZZ,AAA,...
_______________________________________
An arabic format having N digits species  a eld  width of N
digits  (example  2  above).  The  read-only  registers,  the width
function (§11.2), and oating-point registers are always arabic.
Warning:  the  value  of  a  number register  in  a  non-Arabic  for-
mat  is not  numeric, and will not  produce the  expected results
in expressions.
The  function \gx, \g(xx,  or \g[xxx] returns  the  format  of  a
number register  in a form suitable for af;  it returns nothing if
the register has not been used.
.rr R
ignored
Remove  register R.  If  many  registers  are  being  created
dynamically,  it  may  become  necessary  to  remove  no  longer
used  registers  to  recapture  internal  storage  space  for  newer
registers.  The  register .R contains  the  number  of  number
registers still available.
.rnn R S
Rename register R to S.  If S exists, it is rst removed.
.aln S R
Register S is  created  as an  alias  for R.  The  alias  name  is  in
every  respect identical  to  the  original name.  If R is removed
or renamed, S continues to refer to the register at the time the
alias had been  created (and vice-versa).  A change in value or
format in R aects S and vice-versa.
9.  Tabs, Leaders, and Fields
9.1.Tabs and leaders. The
ASCII
horizontal tab character and the
ASCII SOH
(hereafter known as the leader char-
acter) can both be used to generate either horizontal motion or a string of repeated characters.  The length of the
generated entity is governed by internal tab stops speciable with ta.  The default dierence is that tabs generate
motion and leaders generate a string of periods; tc and lc oer the choice of repeated character or motion.  There
-37 -
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
are  three  types  of internal  tab stops—left adjusting, right adjusting, and centering.  In the  following table, D is
the  distance  from the  current position  on  the input line  (where a  tab or  leader was  found) to the  next  tab  stop,
next-string consists of  the input characters following the tab  (or  leader) up  to the next tab  (or leader)  or end of
line, and W is the width of next-string.
_____________________________________________________
Tab
Length of motion or
Location of
type
repeated characters
next-string
_____________________________________________________
Left
D
Following D
Right
D–W
Right adjusted within D
Centered
D–W/2
Centered on right end of D
_____________________________________________________
The  length  of  generated  motion  is  allowed  to  be  negative,  but  that  of  a  repeated  character  string  cannot  be.
Repeated  character  strings  contain  an  integer  number  of  characters,  and  any  residual  distance  is  prepended  as
motion.  Tabs or leaders found after the last tab stop are ignored, but may be used as next-string terminators.
Tabs  and  leaders  are  not  interpreted  in copy  mode. \t and \a always  generate  a  non-interpreted  tab  and  leader
respectively, and are equivalent to actual tabs and leaders in copy mode.
9.2.Fields. A eld is contained between a pair of eld delimiter characters, and consists of sub-strings separated
by padding indicator  characters.  The eld  length  is the  distance on  the input line  from  the  position  where  the
eld  begins  to  the  next  tab  stop.  The  dierence  between  the  total  length  of  all  the  sub-strings  and  the eld
length  is  incorporated  as  horizontal  padding  space  that  is  divided  among  the  indicated  padding  places.  The
incorporated padding is allowed to be negative.  For example, if the eld delimiter is # and the padding indicator
is ˆ, #ˆxxxˆright# species a right-adjusted string with the string xxx centered in the remaining space.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.ta Nt ...
0.8; 0.5in
none
E,m
Set  tab stops  and types. t=R, right adjusting; t=C, centering;
tabsent, left adjusting. tro tab stops  are preset  every 0.5in.;
nro every  0.8in.  The  stop  values  are  separated  by  spaces,
and  a  value  preceded  by + is  treated  as  an  increment  to  the
previous  stop  value.  The .tabs register  holds  a  string  with
the  current  tab  stops  in  a  form  that  is  acceptable  for  the ta
request; it can thus be used to save and restore tab stops.
.ta Mv ... Nw T At ... Zua N=0
E,m
Set  repeated  tab  stops  and  types  at Mv,  ..., Nw, N + At,
..., N + Zu, N + Z + At,  ..., N + Z + Zu, N + 2·Z + At,  ...,
N+ 2·Z + Zu, N + 3·Z + At,  ..., N + 3·Z + Zu,  ... .  Thus
.ta T 0.5i sets  tab  stops  every  0.5in,  and .ta 1i 4i T .25i 1i
sets tab stops at 1in, 4in, 4.25in, 5in, 5.25in, 6in, 6.25in, etc.
.tc c
none
none
E
The tab repetition character becomes c, or is removed specify-
ing motion.
.lc c
.
none
E
The  leader  repetition  character  becomes c,  or  is  removed
specifying motion.
.fc a b
o
o
The eld  delimiter  is set  to a;  the  padding  indicator  is set  to
the space character or  to b,  if given.  In the  absence  of argu-
ments the eld mechanism is turned o.
10.  Input and Output Conventions and Character Translations
10.1. Input character translations. Ways of inputting the graphic  character set were discussed in §2.1. The
ASCII
control characters horizontal tab (§9.1),
SOH
(§9.1), and e_backspace (§10.3) are discussed elsewhere.  The new-
line delimits  input lines.  In addition,
STX
,
ETX
,
ENQ
,
ACK
, and
BEL
are accepted,  and may be used  as delim-
iters or translated into a graphic with tr (§10.5). All others are ignored.
The escape character \ introduces escape sequences—causes the following character to mean another character, or
to indicate some function.  A complete list of such sequences is given in the Summary. \ should not be confused
-38 -
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
with the
ASCII
control  character
ESC
of the same  name.  The escape character \ can be input with the sequence
\\.  The escape character can be changed with ec, and all that has been said about the default \ becomes true for
the new escape character. \e can be used to print whatever the current escape character is; this escape sequence
is interpreted  in copy mode. \E evaluates  to the current escape character but  is not interpreted  in copy mode; if
it  is put  into a  string  or macro,  it  will  introduce  an  escape  sequence once  the  string  is printed  or the macro is
executed, respectively. ecs and ecr save and restore the escape character.  If necessary or convenient, the escape
mechanism may be turned o with eo, and restored with ec.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.ec c
\
\
Set escape character to \, or to c, if given.
.eo
on
Turn escape mechanism o.
.ecs
\
Save escape character.
.ecr
\
Restore saved escape character.
10.2. Ligatures. The set of  available  ligatures  is device and  font dependent,  but is  often  a  subset  of , , , ,
and .  They may be input (even in nroff) by \(fi, \(fl, \(ff, \(Fi, and \(Fl respectively.  In troff, the flig request
specifies  the set  of  ligatures  available  with  an  individual  font.  The  ligature mode  is  normally  on  in tro, and
automatically invokes ligatures during input.  At most the ve named ligatures are enabled by default.
The ligature  suppressor \; disables  automatic ligature building  if it is placed between two characters, but  has  no
other eects.  Many other escape sequences, e.g. \&, \%, also disable automatic ligature building.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.lg N
o; on
on
Ligature  mode  is  turned  on  if N is  absent  or  non-zero,  and
turned o if N=0.  If N=2, only the two-character ligatures are
automatically invoked.  Ligature mode  is  inhibited for request,
macro,  string,  register,  or le  names,  and  in copy  mode. No
eect in nro.
.flig F string c ...
ignored
T
Dene the set of ligatures to  be used with font F. string may
consist  of  up  to  four  characters;  its exact occurences are  sub-
stituted  by  the  character c whenever the current font  is F.  If
string starts with a minus sign, ligature subtitution for it is dis-
abled;  the c argument must  not  be  present in  this  case.  It  is
required  that  any  substring  of string that  consists  of  two  or
more characters is also dened as a ligature.  Multiple string/c
pairs  may be  given.  As  a  special  case, .flig F 0 disables  all
ligatures for  font F.  The  default  set  of ligatures is  specic  to
a font and is determined from its metrics le.
As examples, .flig R Th \[T_h] enables a ligature for ‘‘Th’’ in
font R, and .ig R –Th disables it.
.fdeferlig F string ...
ignored
T
Defer  ligature  building  for  the rst  character  of string.  Nor-
mally  when  a  sequence  of  three  characters  appears  for  which
both the rst and  the last two characters are dened as a liga-
ture,  the  ligature  is  built  using  the rst  two  characters.  For
example,  if  ‘‘ffi’’  appears  in  input  and  both  ‘‘ff’’  and  ‘‘fi’’
are dened as ligatures, the ‘‘ff’’ ligature is built, followed by
a single ‘‘i’’ character.  Use of this request causes the ligature
to  be  built  using  the  second  two  characters,  so  in  the  exam-
ple, .fdeferlig R ffi would result in a single ‘‘f’’ character fol-
lowed by a ‘‘fi’’ ligature.
-39 -
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
10.3. Backspacing, underlining, overstriking, etc. Unless in copy mode, the
ASCII
backspace character is replaced
by a backward horizontal motion having the width of the space character.  Underlining as a form of line-drawing
is discussed in §12.4. A generalized overstriking function is described in §12.1.
nro automatically underlines characters in the underline font, speciable with uf, normally that on font position
2 (normally Times  Italic,  see §2.2). In addition to ft and \fF, the  underline font may be selected  by ul and cu.
Underlining is restricted to an output-device-dependent subset of reasonable characters.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.ul N
o
N=1
E
Underline in nro (italicize in tro) the next N input text lines.
Actually,  switch to underline font,  saving  the  current  font  for
later  restoration; other font  changes  within  the  span  of  a ul
will  take  eect,  but  the  restoration will  undo the last change.
Output  generated  by tl (§14) is aected  by  the  font  change,
but  does not decrement N.  If N>1,  there  is  the  risk  that  a
trap interpolated macro may provide text lines within the span;
environment switching can prevent this.
.cu N
o
N=1
E
Continuous underline.  A variant of ul that causes every char-
acter to be underlined in nro. Identical to ul in tro.
.uf F
Italic
Italic
Underline font set to F.  In nro, F may not be on position 1.
10.4. Control characters. Both  the  control  character . and  the no-break control  character ´ may  be  changed,  if
desired.  Such a change must be  compatible with the design  of any macros  used in the span of the change, and
particularly of any trap-invoked macros.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.cc c
.
.
E
The basic control character is set to c, or reset to ".".
.c2 c
´
´
E
The nobreak control character is set to c, or reset to "´".
10.5. Output translation. One character  can  be made  a stand-in  for  another character  using tr. All text  process-
ing (e.g. character comparisons)  takes place  with  the input (stand-in) character which  appears  to have the  width
of  the nal  character.  The  graphic translation occurs  at  the  moment  of  output (including  diversion).  Text in  a
diversion is not translated again when it is output or rediverted unless the asciify request had been applied on it.
A character can be substituted by an arbitrary sequence of characters, motions, drawing commands, etc. by means
of the char request.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.tr abcd.... none
O
Translate a into b, c into d, etc.  If an odd number of charac-
ters is given,  the last  one will be mapped into the  space char-
acter.  To  be  consistent,  a  particular  translation  must  stay  in
eect from input to output time.
.trin abcd.... none
O
Translate a into b, c into d,  etc.  as  with tr,  but  when  the
asciify request is  called, retranslate b to a, d to c, etc.  in  the
diversion it is applied to.
.trnt abcd.... none
O
Translate a into b, c into d, etc. as with tr, unless the output is
written to a diversion in transparent mode.
.ftr F abcd.... none
P,T
Font-specic tr.  If  the  current  character  originates from  font
F, translate character a into b, c into d, etc.
.char c string
ignored
Dene character c to string. string is read in copy mode when
the request is processed.
-40 -
Documents you may be interested
Documents you may be interested