c# open pdf file in browser : Delete a page from a pdf in preview SDK control service wpf web page .net dnn troff4-part1768

nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
Whenever c occurs  in  regular  (not  copy  mode)  later,  a  tem-
porary  copy of  the  current environment  is created,  the escape
character  is temporarily  set to \,  and string is  output  in  noll
mode  to  an  unnamed  diversion.  If c itself  occurs  in string,
no recursive substitution takes place,  but the plain character c
is  selected  instead.  The  resulting  object  continues  to  behave
like the single character c in the data stream, notionally retain-
ing  its font  and  character size  properties.  It  can  thus  be  part
of a kerning  denition, can be hyphenated (possibly requiring
an  explicit  hyphenation  code  to  be  assigned  using  the hcode
request),  can  become  the  tab  or  leader  character,  and  can  be
used for line drawing.
Static letter  space  adjustments  dened  with  the track request
are applied  to  each but  the  last character inside  the  diversion,
and  to  the  object  as  a  whole.  Dynamic  letter  space  adjust-
ments  dened  with  the letadj request  are  only applied  to  the
object as  a  whole.  No  letter reshaping is performed on  either
the object or the contents of the diversion.
If  both tr and char are  dened  for a  character c, tr becomes
eective rst and changes c to the translation dened, but if c
is  the  result  of tr and char is  dened  for it, char is applied.
ftr has  no  eect  on  characters  for  which char is  dened.
Both tr and ftr are applied to characters inside the char diver-
sion as usual.
At  the  time c would  have  been  output,  the  contents  of  the
diversion are printed instead of it.
.fchar c string
ignored
T
Dene character c to string as a fallback only:  If c is present
in  the  current  font,  output c,  otherwise,  output string as with
char.
.rchar c...
ignored
Remove character denitions for c...; applies to both char and
fchar.
10.6. Transparent throughput. An  input  line  beginning  with  a \! is read  in copy  mode and transparently output
(without  the initial \!);  the  text  processor is otherwise unaware  of the line’s presence.  This mechanism may be
used to pass control information to a post-processor or to imbed control lines in a macro created by a diversion.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.output string
ignored
Write string directly  to  intermediate  output,  regardless  of
whether  there  is  a  current  diversion or not. string is  read  in
copy mode, and an initial double-quote is discarded.
10.7. Transparent output. The sequence \X´anything´ copies anything to the tro output, as a device control func-
tion in  the form x X anything (§26). Escape sequences  in anything are  processed.  The  sequence \Yx, \Y(xx, or
\Y[xxx] copies the  contents  of  the string or macro x, xx, or xxx,, respectively,  to  the output as  a device control
function without processing escape sequences.  Newlines in the macro are embedded in the output. nro discards
transparent output sequences and their contents.
10.8. Comments and concealed newlines. An uncomfortably  long  input  line that must  stay  one  line (e.g. a  string
denition,  or  nolled  text)  can  be  split into  many  physical  lines  by ending all  but  the  last one with  the escape
\.  The  sequence \(newline)  is always ignored—except  in a  comment.  Comments  may  be  imbedded at  the end
of any  line by prefacing  them  with \".  This form does not  conceal  the newline at the  end of the  comment.  A
line beginning with \" will appear as a blank line and behave like .sp 1; a comment can be on a line by itself by
beginning  the  line with .\".  The  form \# includes  the  newline  as  part of  the  comment.  It  thus eectively acts
like a concealed newline in concatenating the following line immediately to the current line.
-41 -
Delete a page from a pdf in preview - remove PDF pages in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Provides Users with Mature Document Manipulating Function for Deleting PDF Pages
pdf delete page; delete a page from a pdf reader
Delete a page from a pdf in preview - 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
add and remove pages from pdf file online; delete pages in pdf reader
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
11.  Local Horizontal and Vertical Motions, and the Width Function
11.1. Local Motions. The  functions \v´N´ and \h´N´ can be used  for local vertical  and horizontal  motion  respec-
tively.  The distance N may be negative;  the positive directions are rightward and downward.  A local motion is
one  contained within a line.  To avoid unexpected vertical dislocations, it is necessary  that the net vertical local
motion  within  a  word  in lled  text  and  otherwise  within  a  line  balance  to  zero.  The  above  and  certain  other
escape sequences providing local motion are summarized in the following table.
_____________________________________________________________________________
Vertical
Eect in
Horizontal
Eect in
Local Motion
tro
nro
Local Motion
tro
nro
_____________________________________________________________________________
\v´N´
Move distance N
\h´N´
Move distance N
_____________________________________
\(space)
Unpaddable space-size space
\∼
Paddable no-break space
\u
½ em up
½ line up
\0
Digit-size space
\d
½ em down ½ line down
________________________________________
\r
1 em up
1 line up
\|
1/6 em space
ignored
1/12 em space
ignored
_____________________________________________________________________________
As an example, E
2
could be generated by the sequence E\s–2\v´–0.4m´2\v´0.4m´\s+2; note that the 0.4 em verti-
cal motions are at the smaller size.
11.2. Width Function. The width function \w´string´ generates the numerical width of string (in basic units).  Size
and  font  changes  may  be  safely  imbedded  in string,  and  will not  aect  the  current  environment.  For  example,
.ti –\w´\fB1. ´u could  be used  to  temporarily  indent  leftward  a  distance  equal to  the  size  of  the  string "1. "  in
font B.
The width function also sets ve number registers.  The registers st and sb are set respectively to the highest and
lowest extent of string relative to  the baseline;  then, for  example, the total height of the string  is \n(stu–\n(sbu.
The registers rst and rsb are set respectively to the highest and lowest visual extent of string relative to the base-
line, i.e. to the maximum and minimum extent of the y value of any bounding box of the characters in string.  In
tro the number register ct is set to  a  value between 0 and 3:  0  means that all  of the  characters  in string were
short lower case characters without descenders (like e); 1 means that at least one character has a descender (like
y); 2 means that at  least one character is tall (like H); and 3 means that both tall characters and characters with
descenders are present.
The .w number register contains the width of  the previous character independently of the width function.  Simi-
larly, the .cht and .cdp registers are set respectively to the highest and lowest visual extent of the previous char-
acter relative to the baseline.
11.3. Mark horizontal place. The escape sequence \kx will cause the current horizontal position  in the input line
to  be  stored  in  register x.  As  an  example,  the  construction \kxword\h´ |\nxu+3u´word will  embolden word by
backing up  to almost  its beginning and overprinting it, resulting in wordd.  Likewise, \k(xx and \k[xxx] will store
the horizontal position in register xx or xxx, respectively.  The hp number register also holds the current horizon-
tal position in the input line.
12.  Overstrike, Bracket, Line-drawing, Graphics, and Zero-width Functions
12.1. Overstriking. Automatically centered overstriking of up to nine characters is provided by the overstrike func-
tion \o´string´.  The characters  in string overprinted  with  centers  aligned; the  total  width  is  that  of  the  widest
character. string may not contain  local vertical  motion.  As  examples, \o´e\´´ produces e´,  and \o´\(mo\(sl´ pro-
duces ∈⁄ .
12.2. Zero-width characters and strings. The function \zc will output c without spacing over  it,  and  can  be  used
to  produce  left-aligned  overstruck  combinations.  As  examples, \z\(ci\(pl will  produce
+,  and \(br\z\(rn\(ul\(br
will produce the smallest possible constructed box
_
.
The function \Z’string’ prints string in noll mode and restores the horizontal and vertical position afterwards.
-42 -
How to C#: Preview Document Content Using XDoc.Word
RasterEdge XDoc.Word provide you with APIs to get a thumbnail bitmap of the first page in the word document file. You can be able to get a preview of this word
delete pages from a pdf file; delete pages out of a pdf
How to C#: Preview Document Content Using XDoc.PowerPoint
XDoc.PowerPoint provide you with APIs to get a thumbnail bitmap of the first page in the PowerPoint document file. You can be able to get a preview of this
delete pages on pdf file; add or remove pages from pdf
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
12.3. Large Brackets. The Special Font contains a number of bracket construction pieces (          )
that can be combined into various  bracket  styles.  The  function \b´string´ may be used  to pile  up vertically  the
characters in string (the rst character on top and  the last at the  bottom); the  characters  are vertically  separated
by  1 em  and  the  total  pile  is  centered  1/2em  above  the  current  baseline  (½  line  in nro).  For  example,
\b´ \(lc\(lf ´E\|\b´\(rc\(rf ´ \x´ –0.5m´ \x´0.5m´ produces
E
.
12.4. Line drawing. The function \l´Nc´ (backslash-ell) will draw a string of repeated c ’s towards the  right for a
distance N.  If c looks like  a  continuation  of  an  expression for N,  it  may insulated from N with  a \&.  If c is
not specied, the
_
(baseline rule) is used (underline character in nro).  If N is negative, a backward horizontal
motion of size N is made before drawing the string.  Any space resulting from N/(size of c) having a remainder
is put at the beginning (left end) of the string.  If N is less than the width of c, a single c is centered on a dis-
tance N.  In  the case  of  characters  that  are designed to be connected  such  as baseline-rule
_
,  underrule _,  and
root-en , the remainder space is covered by over-lapping.  If N is less than the width of c, a single c is centered
on a distance N.  As an example, a macro to underscore a string can be written
.de us
\\$1\l´|0\(ul´
..
or one to draw a box around a string
.de bx
\(br\| \\$1\|\(br\l´| 0\(rn´\l´ |0\(ul´
..
such that
.ul "underlined words"
and
.bx "words in a box"
yield underlined words
______________ and
words in a box

_____________.
The  function \L´Nc´ draws  a  vertical  line  consisting  of  the  (optional)  character c stacked  vertically  apart  1em
(1  line  in nro),  with  the rst  two  characters  overlapped,  if  necessary,  to  form  a  continuous  line.  The  default
character is the box rule
(\(br); the  other  suitable character is  the bold vertical  (\(bv).  The  line is begun
without any initial motion relative to the current base line.  A positive N species a line drawn downward and a
negative N species a line drawn upward.  After the line is drawn no compensating motions are made; the instan-
taneous baseline is at the end of the line.
The  horizontal  and  vertical  line  drawing  functions  may  be  used  in  combination  to  produce  large  boxes.  The
zero-width box-rule and the ½-em wide underrule were designed to form corners when using 1-em vertical spac-
ings.  For example the macro
.de eb
.sp –1
\"compensate for next automatic base-line spacing
.nf
\"avoid possibly overowing word buer
\h´–.5n´\L´|\\nau–1´\l´\\n(.lu+1n\(ul´\L´–|\\nau+1´\l´ |0u–.5n\(ul´ \"draw box
.fi
..
will  draw  a  box  around  some  text  whose  beginning  vertical  place  was  saved  in  number  register a (e.g.  using
.mk a) as done for this paragraph.
_______________________________________________________________________________________________
_______________________________________________________________________________________________
12.5. Graphics. The  function \D´c...´ draws  a  graphic  object  of  type c according  to  a  sequence  of  parameters,
which are generally pairs of numbers.
\D´l dh dv´
draw line from current position by dh,dv
\D´p dh1 dv1 dh2 dv2 ...´ draw polygon, i.e. a line to dh1, dv1, then to dh2,dv2, then ...
\D´c d´
draw circle of diameter d with left side at current position
\D´e u v´
draw ellipse of diameters u and v
-43 -
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
resources: Since images are usually or large size, images size reducing can help to reduce PDF file size Delete unimportant contents: Embedded page thumbnails.
delete pdf pages in reader; delete blank page in pdf
C# PDF Page Insert Library: insert pages into PDF file in C#.net
Ability to add PDF page number in preview. such as how to merge PDF document files by C# code, how to rotate PDF document page, how to delete PDF page using C#
delete pages from a pdf document; delete pdf page acrobat
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
\D´a a b c d´
draw arc from current position to a+c, b+d, with center at a, b from current position
\D´∼ a b c d...´
draw B-spline from current position by a, b, then by c, d, then by c,d, then ...
For  example,\D´e0.2i  0.1i´ draws  the  ellipse
,  and \D´l.2i –.1i´\D´l.1i  .1i´ the  line
 A \D with  an
unknown c is  processed  and  copied  through  to  the  output  for  unspecied  interpretation;  coordinates  are  inter-
preted alternately as horizontal and vertical values.
Numbers taken as horizontal (rst, third, etc.)  have default  scaling  of m; vertical numbers (second, fourth, etc.)
have default scaling of v (§1.3). The position after a graphical object has been drawn is at its end; for circles and
ellipses, the ‘‘end’’ is at the right side.
13.  Hyphenation.
Automatic  hyphenation  may  be  switched  o  and  on.  When switched  on  with hy,  several  variants  may be  set.
A hyphenation  indicator character,  by  default \%,  may  be  imbedded in  a  word to  specify  desired hyphenation
points, or  may  be  prexed  to suppress  hyphenation.  The  character \: indicates that a  line break may optionally
occur at  a  point,  but that no hyphen is to be generated.  In addition,  the user may specify a small list of excep-
tion words.
Only  words  that  consist  of  a  central  alphabetic  string  surrounded  by  (usually  null)  non-alphabetic  strings  are
considered  candidates  for  automatic  hyphenation.  Unless  the  set  of  optional  line  break  characters  is  otherwise
congured, words that contain hyphens (minus), em-dashes (\(em), or hyphenation indicator characters are always
subject to splitting after those characters, whether automatic hyphenation is on or o.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.nh
hyphenate
E
Automatic hyphenation is turned o.
.hy N
on,N=1
on,N=1
E
Automatic  hyphenation is  turned on for N≥1, or  o  for N=0.
If N=2, last lines  (ones  that  will  cause  a  trap)  are  not
hyphenated.  For N= 4  and 8,  the  last and rst two characters
respectively  of  a  word  are  not  split  o.  For N= 16  and  32,
the last and rst  characters respectively  of a word are  allowed
to  be  split  o;  this  is  only  eective  for  explicit  hyphenation
points specied with \%, \:, or hw.  These values are additive;
i.e. N= 14 will invoke the three restrictions.  The current value
is available in the .hy number register.
.hylang nameo
o
E
Set  the  hyphenation  language  to name,  which  is  one  of
de_DE, de_DE@traditional, en_US, fr_FR, it_IT, or la_VA.
Other languages can be made available by adding hyphenation
les to the directory /usr/ucblib/doctools/hyphen.  If no name
argument is present, the  hyphenation is  reset to  the traditional
tro mechanism.  The current value is available in the .hylang
number register.
This  request  also  makes  parts  of  words  composed  by -
or \(em characters  subject  to  hyphenation,  unless  otherwise
dened  explicitly  with  the .nhychar request.  Traditionally,
the  only  hyphenation  points  in  such  words  had  been  the
hyphens/dashes.
.shc c
-
-
E
Set  the  soft  hyphenation  character,  i.e.  the  character  that  is
inserted  at  the  end  of  a  hyphenated  word.  The  current  soft
hyphenation character is available in the .shc number register.
.hcode abcd...
E
Hyphenation  code.  When determining  the hyphenation points
for  an  input  word, a is  mapped  to b,  etc.  When  no  hyphe-
nation  code  is  specied  for  a  character,  it  is  mapped  to  its
lower-case variant  if necessary, and  the  ‘‘long ſ’’ character is
mapped to a ‘‘round s’’.
-44 -
C# WinForms Viewer: Load, View, Convert, Annotate and Edit PDF
It makes users easy to view PDF document and edit PDF document in preview. PDF Annotation. • Add sticky notes to PDF document in preview.
delete pages on pdf online; delete pdf pages in preview
C# PDF remove image library: remove, delete images from PDF in C#.
Delete and remove all image objects contained in a to remove a specific image from PDF document page. Remove PDF image in preview without adobe PDF reader
delete pages pdf; delete pages from pdf online
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
.hylen N
5
5
E
Hyphenate only words of  at  least N characters in length.  The
current value is available in the .hylen number register.
.hlm N
o
o
E
Maximum number of consecutive hyphenated lines.  Each time
 line  is  hyphenated  automatically,  the  count  of  consecutive
hyphenated  lines  (accessible  in  the .hlc number  register)  is
incremented; whenever a  line is not automatically  hyphenated,
it  is  reset  to  zero.  This  request  allows  to  set  a  limit  on
the  maximum  number  of  consecutive  hyphenated  lines;  when
the count  of  consecutive  lines  has reached the  maximum,  the
current  line  is  not  hyphenated.  The  default  is  no  limit.  The
current value is accessible in the .hlm number register.
.hypp N M L 0 0 0
00 0
E
Dene  hyphenation  penalties  for ad  p mode.  Every  inserted
hyphen is given a penalty of N when computing optimal break
points; each hyphen that is followed by another hyphen gets an
additional penalty  of M.  A hyphen that is  inserted in the  last
word  of a paragraph  gets an additional penalty of L.  A value
of  zero  means  no  penalty.  Eective  penalties  correspond  to
values  between  10  and  200.  The current values  are  available
in the .hypp, .hypp2, and .hypp3 number registers.
.breakchar c.-—
o
E
Optional  line  break  characters.  A  line  may  always  be  split
after one  of these characters.  The current set  of optional line
break  characters is  available  in  the .breakchar number  regis-
ter.
.nhychar c... -—
o
E
Hyphenation-inhibiting  characters.  A  word  that  contains  one
of the characters c... is not hyphenated, except that it  may be
split  across lines  if one  of these  characters  is  also an optional
line break character.  The current set of hyphenation-inhibiting
characters is available in the .nhychar number register.
.hc c
\%
\%
E
Hyphenation  indicator  character  is  set  to c or  to  the  default
\%.  The indicator does not appear in the output.
.hw word1 ...
ignored
Specify  hyphenation  points  in  words  with  imbedded  minus
signs.  Versions  of  a  word  with  terminal s are  implied;  i.e.
dig–it implies dig–its.  This list is examined initially and after
each sux stripping.
14.  Three-Part Titles.
The titling function tl provides for automatic placement of three elds at the left, center, and right of a line with
a title-length speciable with lt. tl may be used anywhere, and is independent of the normal text collecting pro-
cess.  A common use is in header and footer macros.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.tl ´left´center´right´
The strings left, center, and right are respectively left-adjusted,
centered, and right-adjusted in the current title-length.  Any of
the strings may be empty, and overlapping is permitted.  If the
page-number character (initially %) is found within any of the
elds it is replaced by the current page number having the for-
mat assigned to register %.  Any character may be used as the
string delimiter.
.pc c
%
o
The page number character is set to c, or removed.  The page-
number register remains %.
-45 -
VB.NET PDF delete text library: delete, remove text from PDF file
preview without adobe PDF reader component installed. Able to pull text out of selected PDF page or all PDF document in .NET WinForms application. Able to delete
delete blank pages in pdf; cut pages from pdf online
VB.NET PDF remove image library: remove, delete images from PDF in
Delete image objects in selected PDF page in ASPX webpage. a specific image from PDF document page in VB Remove PDF image in preview without adobe PDF reader
delete pages from a pdf; delete pages of pdf reader
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
.lt ±N
6.5in
previous
E,m
Length  of title set  to ±N.  The  line-length and  the title-length
are independent.  Indents  do  not  apply  to  titles;  page-osets
do.  The current value is available in the .lt number register.
15.  Output Line Numbering.
Automatic sequence  numbering  of  output  lines  may  be  requested  with nm.  When  in  eect,  a  three-digit,
arabic  number  plus  a  digit-space  is  prepended  to  output  text  lines.  The  text  lines  are  thus  oset  by  four
3 digit-spaces,  and  otherwise  retain  their  line  length;  a  reduction  in  line  length  may  be  desired  to  keep  the
right  margin  aligned  with  an  earlier  margin.  Blank  lines,  other  vertical  spaces,  and  lines  generated  by tl
are not numbered.  Numbering  can  be  temporarily suspended  with nn, or with an .nm followed by  a later
6 .nm +0.  In  addition,  a  line  number  indent I,  and  the  number-text  separation S may  be  specied  in  digit-
spaces.  Further, it can be specied that only those line numbers that are multiples of some number M are to
be printed (the others will appear as blank number elds).
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.nm ±N M S I
o
E
Line  number  mode.  If ±N is  given,  line  numbering  is
turned  on,  and  the  next  output  line  numbered  is  numbered
±N.  Default  values  are M=1, S=1,  and I= 0.  Parameters
corresponding  to  missing  arguments  are  unaected;  a  non-
numeric argument is considered missing.  In the absence of all
arguments,  numbering  is  turned  o;  the  next  line  number  is
preserved for possible further use in number register ln.
.nn N
N=1
E
The next N text output lines are not numbered.
9 As an example, the paragraph portions of this section are numbered with M=3: .nm 1 3 was placed at the
beginning; .nm was placed  at  the end of  the rst  paragraph; and .nm +0 was  placed in  front of  this  para-
graph; and .nm nally placed at the end.  Line lengths were also changed (by \w´0000´u) to keep the  right
12 side aligned.  Another example is .nm +5 5 x 3 which turns on numbering with the line number of the next
line to be 5 greater than the last numbered line, with M=5, with spacing S untouched, and with the indent I
set to 3.
16.  Conditional Acceptance of Input
In the following, c is a one-character, built-in condition name, ! signies not, N is an integer numerical expres-
sion, F is  a oating-point  expression, string1 and string2 are  strings delimited  by  any  non-blank,  non-numeric
character not in the strings, and anything represents what is conditionally accepted.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.if c anything
If condition c true, accept anything as input; in multi-line case
use \{anything\}.
.if !c anything
If condition c false, accept anything.
.if N anything
u
If expression N > 0, accept anything.
.if !N anything
u
If expression N ≤ 0 [sic], accept anything.
.if fF anything
u
If oating-point expression F > 0, accept anything.
.if !fF anything
u
If oating-point expression F ≤ 0 [sic], accept anything.
.if ´string1´string2´ anything
If string1 identical to string2, accept anything.
.if ! ´string1´string2´ anything
If string1 not identical to string2, accept anything.
.ie c anything
u
If portion of if-else; all of the forms for if above are valid.
.el anything
Else portion of if-else.
-46 -
C# PDF delete text Library: delete, remove text from PDF file in
Delete text from PDF file in preview without adobe PDF class source code able to help users delete text characters to pull text out of selected PDF page or all
delete pages from pdf in preview; delete pages from pdf without acrobat
How to C#: Preview Document Content Using XDoc.excel
RasterEdge XDoc.Excel provide you with APIs to get a thumbnail bitmap of the first page in the Excel document file. You can be able to get a preview of this
delete pages pdf files; delete pdf pages
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
.while c anything
Execute anything while c is  true; all of the forms  for if above
are valid. anything is stored in an unnamed temporary  macro
each time a while loop is prepared for execution.
In  the  multi-line  case,  the \} terminating  the  loop  must  be
placed at the end of a line.
When anything is  copied  to  the  macro,  neither  copy  mode
nor regular escape interpretation  apply.  References  to number
registers,  strings,  etc.  must  thus  be  written  using  a  single
escape  character  unless  the while request  is  contained  in  a
macro denition.
Nested  loops  will  result  in  many  macro  denitions  and  may
slow down execution, especially if their  body is  large.  Recur-
sive  macros  (§10.6) do  not suer from this problem.  In con-
trast  to  recursive  macro  calls,  there  is  no  mechanism  to  ter-
minate  a loop  automatically  when  a  repetition  limit  has  been
reached.  In case of doubt, an explicit limit termination condi-
tion should be added to prevent endless loops.
.break n
1
Break  out  of n nested while loops,  or  terminate  the  current
loop  if  no  argument  is  given.  It  is  not  necessary  that  all  of
the  loops  are  contained  within  the  same  macro;  if  there  are
any  macros  executing  inside  the  specied  loop,  control  also
returns from  these  macros.  In case  of  a  non-positive  or  non-
numeric  argument, n=1  is  assumed.  If  the  number  of  levels
requested is greater than the number of loops currently execut-
ing, control returns to the highest non-looping level.
.continue n –
1
Continue at the n-th nested while loop, or continue the current
loop if no argument is given.  Execution resumes with the test
of  the  specied while loop;  if  this  test  fails,  the  request  is
eectively  like break. continue also  returns  from  all  inside
macro calls until it  has  reached the specied loop.  In case of
a  non-positive  or  non-numeric  argument, n=1  is  assumed.  If
the  number  of  levels  requested  is  greater  than  the  number  of
loops  currently  executing,  control  returns  to  the  highest  non-
looping level, and no loop is continued.
The built-in condition names are:
_____________________________________________
Condition
Name
True If
_____________________________________________
cG
character G exists in the current font,
where G is  either  an
ASCII
or  local-
ized  input  character,  a tro special
character \(xx or \[xxx],  or  a \U´X´
escape sequence
dxx
there is a request, macro, or string xx
rxx
number register xx has been accessed
o
Current page number is odd
e
Current page number is even
t
Formatter is tro
n
Formatter is nro
_____________________________________________
If the condition c is true,  or if  the number N is greater than  zero, or if the strings compare identically  (includ-
ing motions and character size and font), anything is accepted as input.  If a ! precedes the condition, number, or
string comparison, the sense of the acceptance is reversed.
-47 -
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
Any spaces between the condition and the beginning of anything are skipped over.  The anything can be either a
single input line (text, macro, or whatever) or a number of input lines.  In the multi-line case, the rst line must
begin with a left delimiter \{ and the last line must end with a right delimiter \}.
The  request ie (if-else)  is  identical  to if except  that  the  acceptance  state  is  remembered.  A  subsequent  and
matching el (else) request then uses the reverse sense of that state. ie - el pairs may be nested.
Some examples are:
.if e .tl ´Even Page %´´´
which outputs a title if the page number is even; and
.ie \n%>1 \{\
´sp 0.5i
.tl ´Page %´´´
´sp | 1.2i \}
.el .sp |2.5i
which treats page 1 dierently from other pages.
17.  Environment Switching.
A number of the parameters that control the text processing are gathered together into an environment, which can
be switched by the user.  The  environment parameters are those associated with  requests noting E in their Notes
column; in addition, partially collected lines and words are in the environment.  Everything else is global; exam-
ples  are  page-oriented parameters,  diversion-oriented  parameters, number registers, and  macro  and string deni-
tions.  All  environments  are  initialized  with  default parameter values.  The  number of  possible environments  is
only limited by available memory.
Inside each  environment, a  smaller set of  parameters  forms  the inline environment.  These  are:  the current  and
previous  point  size,  as  set  by ps and \s;  the  current  and  previous  font,  as  set  by ft and \f;  the  control  and
nobreak control character, as set by cc and c2, respectively; the optional hyphenation character, as set by hc; the
hyphenation ag, as set by hy; the tab  and leader  repetition characters, as set by tc and lc, respectively; and the
default line  breaking  penalty, as  set by \J.  The inline environment  is pushed by \@{, meaning  that the  current
values of these parameters are saved.  When a \@} occurs, the last pushed inline environment is popped, mean-
ing that the previous values of the parameters are restored.  Inline environments can be nested to arbitrary depths.
They  dier from \s0 and \fP since  they  form  a stack.  Thus,  the  current  font is  ‘‘B’’  again  after  the  sequence
‘‘\fB...\@{\fR...\@{\fI...\@}...\@}’’, but ‘‘I’’ after the sequence ‘‘\fB...\fR...\fI...\fP...\fP’’.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.ev name
name=0
previous
Environment  switched  to  environment name.  Switching  is
done  in  push-down  fashion  so  that  restoring  a  previous
environment must be  done  with .ev rather  than  specic refer-
ence.  Note  that  what  is  pushed  down  and  restored  is  the
environment name, not its contents.  The name  of the  current
environment is available in the .ev number register.
.evc name
Copy the environment name to the current  environment.  The
temporary  state  of  the  current  environment  is  reset,  and
incompletely lled lines are discarded.
18.  Insertions from the Standard Input
The input  can  be  temporarily switched  to  the system standard  input with rd, which will switch  back  when two
newlines  in  a  row  are  found  (the extra blank  line  is  not  used).  This  mechanism  is  intended  for  insertions  in
form-letter-like documentation.  The standard input can be the user’s keyboard, a pipe, or a le.
-48 -
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.rd prompt –
prompt=
BEL
Read  insertion  from  the  standard  input  until  two  newlines  in
 row  are  found.  If  the  standard  input  is  the  user’s  key-
board, prompt (or a
BEL
)  is  written  onto  the  user’s  terminal.
rd behaves like  a  macro, and  arguments  may  be  placed  after
prompt.
.ex
Exit from nro/tro. Text processing  is terminated  exactly  as
if all input had ended.
If insertions are to be taken from the  terminal keyboard while output is being printed on the terminal, the  com-
mand line option –q will  turn  o  the echoing  of keyboard  input and  prompt  only  with
BEL
 The  regular  input
and insertion input cannot simultaneously come from the standard input.
As an example, multiple  copies of a form letter  may be prepared by entering the insertions for all the copies  in
one le  to be  used  as  the  standard input,  and  causing  the le  containing  the letter  to  reinvoke  itself  using nx
(§19); the process would ultimately be ended by an ex in the insertion le.
19.  Input/Output File Switching
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.so lename
Switch  source le.  The  top  input  (le  reading)  level  is
switched to lename.  When  the  new le  ends, input  is again
taken from the original le.  It is a fatal error if lename can-
not be opened. so’s may be nested.
.pso string
Execute string and read its standard output as text input.
.nx lename
end-of-le
Next le is lename.  The current le is considered ended, and
the input is immediately switched to lename.
.sy string
Execute  program  from string,  which  is  the  rest  of  the  input
line.  The  output  is  not  collected  automatically.  The  number
register $$, which contains  the process  id of  the tro process,
may be useful in generating unique lenames for output.
.pi string
Pipe output to string, which is the rest of the input line.  This
request  must  occur before any  printing  occurs;  typically  it  is
the rst line of input.
.cf lename
Copy  contents  of le lename to  output,  completely  unpro-
cessed.  The le is  assumed to contain something meaningful
to subsequent processes.
.open stream lename
ignored
Open lename for  writing  while  truncating  existing  contents
and associates stream with it for latter use with write etc.
.opena stream lename
ignored
Like open but  appends  to lename instead  of  truncating  an
existing le.
.write stream text
ignored
Write text to le stream, which must have been obtained by a
previous open request. text is interpreted in copy mode.
.writec stream text
ignored
Like write but does not write a terminating newline.
.writem stream xx
ignored
Write  contents  of string,  macro, or diversion xx.  No  newline
is appended, so if xx is a string, the output does not terminate
with a newline.
.close stream
Close the le stream, which must have been obtained by a pre-
vious open request.
-49 -
nro/tro User’s Manual
Heirloom Documentation Tools
September 17, 2007
20.  Miscellaneous
The \Vx, \V(xx,  or \V[xxx] escape sequence  causes  the  value  of  the x, xx, or xxx environment  variable,  respec-
tively, to be printed.  It is interpreted in copy mode.
Request
Initial
If No
Form
Value
Argument
Notes Explanation
.mc c N
o
E,m
Species that a margin character c appear a distance N to  the 
right of the right margin after each non-empty text line (except 
those  produced  by tl).  If  the  output  line  is  too-long  (as  can 
happen  in  noll  mode)  the  character  will  be  appended to  the 
line.  If N is  not  given,  the  previous N is  used;  the  initial N 
is  0.2 inches in nro and 1em  in tro. The margin character 
used with this paragraph was a 12-point box-rule.
.lpfx string o
o
E
Set  the line  prex to string.  ‘‘Whenever a new output  line is
‘‘started, string is then printed at its beginning.  Font and size
‘‘settings  as  well  as  automatic ligatures  in string are  retained
‘‘regardless of  later  changes.  This request  is  mainly  useful  to
‘‘implement  a  historic  form  of  block  quotation.  The  current
‘‘value is available in the .lpfx register.’’
.tm string
newline
After skipping initial blanks, string (rest of the line) is read in
copy mode and written on the standard error.
.tmc string –
newline
Like tm but does not write a terminating newline.
.nop remainder of line
Use remainder of line as input.
.ab string
newline
After  skipping  initial  blanks, string (rest  of  the  line)  is  read
in copy mode and written on  the standard error. tro or nro
then exit.
.ig yy
.yy=..
Ignore input lines. ig behaves  exactly like de (§7) except that
the  input  is  discarded.  The  input  is  read  in copy  mode, and
any auto-incremented registers will be aected.
.lf N lename
Set  line  number  to N and lename  to lename for  purposes
of subsequent  error  messages,  etc.  The  number  register  [sic]
.F contains the  name of  the current input le, as set by  com-
mand  line  arguments, so, nx,  or lf.  The  number  register .c
contains  the  number  of  input  lines  read from  the  current le,
again perhaps as modied by lf.
.pm t
all
Print macros.  The names and sizes of all of the dened mac-
ros and strings are  printed on the standard error; if t is  given,
only  the  total  of  the  sizes  is  printed.  The  sizes  is  given  in
blocks of 128 characters.
.fl
B
Flush output buer.  Force output, including any pending posi-
tion information.
21.  Output and Error Messages, Debugging.
21.1. Output Messages. The output from tm, pm, and the prompt from rd, as well as various error messages are
written onto the  standard  error.  The latter  is  dierent from the standard output, where formatted text goes.  By
default,  both are written  onto  the  user’s  terminal, but  they  can  be  independently  redirected.  An  error  message
additionally  includes  the  line  number  where  the  error  occurred,  the  current  input le  name,  the  current  physi-
cal output page number (if any), and the names of the macros in the frames of the current execution stack.  The
errprint request allows to write custom messages in the same format.
-50 -
Documents you may be interested
Documents you may be interested