Provided by: wp2x_2.5-mhi-13_amd64 bug


        wp2x - A WordPerfect 5.0 to whatever converter


       wp2x [ -s ] [ -v ] [ -nblip ] configfile wpfile


       Wp2x  is  intended to convert simple files stored in WordPerfect 5.1 format into any other
       document processing language that uses plain text files.   Examples  include  TeX,  LaTeX,
       troff,  GML  and  HTML.   For  a quick result without manual configuration you can try the
       following command to convert a WP file into HTML: wp2x html foo.wp > foo.html.

       Wp2x reads a configuration file and a WordPerfect 5.1 input file, and uses the information
       in  them  to  produce  an output file, which is sent to stdout.  If the configuration file
       cannot be found, a suffix of .cfg is appended.  The current directory is searched, as well
       as  the  lib  directory  specified  by  the  WP2X_DIR  variable  in the Makefile. (Usually
       /usr/local/lib/wp2x ) and the directories specified by the environment  variables  PATH  ,
       DPATH , and WP2XLIB .

       Some  codes  are not translated because documents that require these codes typically would
       require significant hand-editing.  Hence, there's no point in trying to emulate  something
       you're going to delete anyway.  (Remember, wp2x is not intended to be used as an automated
       conversion program.  Rather, it is intended to be used as a single step  in  the  document
       conversion  process,  which  gets most of the the grunt work of conversion done and out of
       the way, so that you can concentrate your efforts on converting the trickier parts of  the
       document.   The  object  of  the  game  is to produce a readable conversion, rather than a
       perfect conversion.)

       As the program runs, a dot is printed to stderr for every 1024 characters converted.  This
       can  be  suppressed  with the -s switch, and the interval between dots can be changed with
       the -n switch.


       -s     Suppresses all non-error output  to  stderr,  including  the  typeout  banner,  the
              progress dots, and warnings about undefined expansions.

       -nblip Every  blip tokens, a dot is emitted to stderr, unless the -s switch is given.  The
              value blip must appear immediately following the -n without an  intervening  space.
              If no -n switch is supplied, then a value of 1024 is assumed.

       -v     prints the version number and the program usage.


       The  configuration  file  controls  how the file is converted from WordPerfect 5.1 format.
       Each line of the configuration file is of the form

                                       identifier="list of codes"

       where the list of codes is a string which will be placed in the output stream whenever the
       corresponding   WordPerfect   code  is  encountered.   Standard  C-style  backslash-escape
       sequences are recognized, as well as \xFF for hex values.  You do not have  to  backslash-
       protect  a  newline.   Some  identifiers  supply  replaceable  parameters,  which  can  be
       interpolated as follows:

       %1     interpolate first parameter as a decimal integer.

       %2     interpolate second parameter as a decimal integer.

       %c     interpolate first parameter as an ASCII character.

       %\n    interpolate a newline if the  most-recently-output  character  was  not  already  a
              newline.   (The  \n can be either the C-style escape sequence, or an actual newline
              character.)  Use this if the expansion must take place at the beginning of a  line.
              (For  example,  troff  control characters must appear as the first character in the
              line in order to take effect.)  This sequence is meaningful only at  the  beginning
              of the string; if it appears elsewhere, it is flagged as erroneous.

       %%     interpolate a percent-sign.

       A  percent  sign  followed  by  any other character is considered an error.  It is also an
       error to interpolate a parameter that is not applicable to the identifier  being  defined.
       You  may  interpolate  the  parameters  as many times as, and in whatever order, you wish.
       (With the exception of the %\n code.)

       Here follows a list of the accepted identifiers.  In the discussion, `%1'  represents  the
       first  parameter,  and  `%2'  the  second.   Remember  that the character version of %1 is
       available as `%c'.

       BEGIN          Expanded at the beginning of the file.
       END            Expanded at the end of the file.
       COMMENT        Expanded when wp2x needs to insert a comment into the output.  The  comment
                      is passed as %s.

       PageNo         Insert current page number
       RomanPage      Set page number to %1, and set roman-numeral mode
       ArabicPage     Set page number to %1, and set arabic-numeral mode

       Tab            What to do when you see a tab character.
       BeginTabs      Emitted  when  tab settings are about to change.  The BeginTabs code should
                      delete all existing tabs and prepare for new tab settings  to  start.   All
                      tab values are given in columns measured from the physical left edge of the
                      paper.  (Not from the left margin.)
       SetTab         Set a normal (left-justified) tabstop at column %1.
       SetTabCenter   Set a centered tabstop at column %1.
       SetTabRight    Set a right-justified tabstop at column %1.
       SetTabDecimal  Set a decimal tab at column %1.
       EndTabs        Finish the setting of tabstops.

       For example, if the WordPerfect file contains a  code  that  says  `Set  new  tabstops  as
       follows:   Regular tab at column 15, a centered tab at column 40, a right-justified tab at
       column 59, and a regular tab at column 60', then the  following  expansions  are  made  in


       HSpace Hard (nonbreakable) space.
       HPg    Hard page break.
              Force a new page if fewer than %1 half-lines remain on current page.

       HRt    Hard return.
       SRt    Soft return.

       -      Breakable hyphen.
       --     Breakable hyphen, appearing at the end of a line.
       =      Non-breakable hyphen.
       \-     Discretionary hyphen.
       \--    Discretionary hyphen, appearing at the end of a line.

       Marg   Set left margin at %1 characters and right margin at %2 characters.
              Set top margin to %1 lines.
              Set page length to %1 lines.

       SS     Single spacing.
       DS     Double spacing.
       1.5S   One-and-a-half spacing.
       TS     Triple spacing.
       LS     Other  line spacing.  %1 is twice the desired spacing.  (For example, a request for
              2.5-spacing sets %1=5.)
       LPI    Set %1 lines per inch (%1 is either 6 or 8)

       Bold   Begin boldface
       bold   End boldface
       Und    Begin underline
       und    End underline
              Begin double underline
              End double underline
       Red    Begin redline
       red    End redline
       Strike Begin strikeout
       strike End strikeout
       Rev    Begin reverse video
       rev    End reverse video
              Begin outline text
              End outline text
       Fine   Begin fine font size
       fine   End fine font size
       Over   Begin overstrike font
       over   End overstrike font
       Sup    Begin superscript
       sup    End superscript
       Sub    Begin subscript
       sub    End subscript
       Large  Begin large font size
       large  End large font size
       Small  Begin small font size
       small  End small font size
              Begin very large font size
              End very large font size
              Begin extra large font size
              End extra large font size
              Begin an italics font
              End an italics font
       Shadow Begin shadow font
       shadow End shadow font
              Begin small capitals font (fixed width)
              End small capitals font (fixed width)

              Advance printer up 1/2 line
              Advance printer down 1/2 line
              Advance to absolute vertical position.  %1 is what WordPerfect thinks  the  current
              vertical  page  position  is,  in  half-lines.  %2 is the desired position, also in

       Indent Expanded when an "Indent" code appears.
       indent Expanded at the end of an indented paragraph.
              Expanded when a "left-and-right-indent" code appears.
              Expanded at the end of an double indent
              Margin release.  %1 is the number of characters to move left.

       Center Center current line
       center End centering
              Center line around current column
              End centering

       Align  Begin alignment
       align  End alignment
              Set alignment character
              Begin flush right
              End flush right

       Math   Begin math mode
       math   End math mode
              Begin math calc mode
              Math calc column

              Do subtotal
              Subtotal entry
       Total  Do total
              Total entry
              Do grand total

       Col    Begin column mode
       col    End column mode

       Fn     Expanded at the beginning of a footnote.
       fn     Expanded at the end of a footnote.
       En     Expanded at the beginning of an endnote.
       en     Expanded at the end of an endnote.
       SetFn# Set the number for the next footnote to %1.
       FNote# Footnote number.
       ENote# Endnote number.
              Figure number.
              Insert table of contents here

       Hyph   Enable hyphenation.
       hyph   Disable hyphenation.
       Just   Enable justification.
       just   Disable justification.
       Wid    Enable widow/orphan protection.
       wid    Disable widow/orphan protection.
       HZone  The hyphenation zone.  %1 and %2 are the two magical values that  WordPerfect  uses
              to control hyphenation.
       DAlign Set  the  decimal  alignment  character  to that whose ASCII value is %1.  (`%c' is
              useful here.)

       Header Begin header text
       header End header text
       Footer Begin footer text
       footer End footer text

       Supp   Suppress page number/header/footer information for one page.  %1 argument is a  bit
              field  which  describes  what sort of suppression is desired.  Here's what the bits
                        1 = all
                        2 = page number
                        4 = page numbers moved to bottom
                        8 = all headers
                       16 = header a
                       32 = header b
                       64 = footer a
                      128 = footer b
       CtrPg  Center page vertically

              Change pitch or font.  %1 is the desired pitch.   (Negative  means  proportionally-
              spaced.)  %2 is the font number.
       SetBin Select paper bin to %1 = 0, 1, ...

       PN0    No page numbering.
       PN1    Page number in top left.
       PN2    Page number in top center.
       PN3    Page number in top right.
       PN4    Page number on top outside corners (even/odd).
       PN5    Page number in lower left.
       PN6    Page number in bottom center.
       PN7    Page number in lower right.
       PN8    Page number on bottom outside corners (even/odd).

       If  no  expansion  is supplied for an identifier, then nothing is emitted to stdout, but a
       warning message is sent to stderr.  This warning message will  appear  at  most  once  per
       identifier, and it can be suppressed completely by the -s option.

       The  special  identifier typeout causes its replacement text to be displayed on the screen
       every time the configuration file is read.  This is useful for identification messages, or
       reminders to the user.

       A  special identifier is any character enclosed in single quotation marks, which represent
       themselves.  For example,


       causes the string "{\alpha}" to be emitted when an α is encountered.  This could also have
       been written as


       if the character α has ASCII value 0xE0.  (Which is true for the IBM PC encoding.)

       If no definition exists for a particular special character, it is transmitted undisturbed.
       If a special character is encountered from the upper half of the ASCII character set,  and
       if it has no definition, then a warning message is also emitted.  (Which can be suppressed
       with the -s option.)

       Lines beginning with the # character are comments.


       This is based on an original WP 4.2 to anything translator. The file format has changed  a
       lot  between  4.2 and 5.0. This translator no longer reads WP 4.2 files, although it could
       be extended to do so.

       The 5.0+ format starts with a standard header file. There is a four byte magic  number  at
       the head of the file, followed by various product and version information. All WordPerfect
       Corporation utilities use this standard header. See the WPproducts array in wp2x.c

       Once the contents of the file have been located, there are three kinds  of  codes:  simple
       one  byte  controls  (WP  4.2  had  only these kinds), fixed length controls, and variable
       length controls. There are a large number of undefined types defined for  future  use.  If
       wp2x  detects  something  it  doesn't  understand, it can extract the length and skip that
       code. There are a number of defined codes that are unimplemented.  Please  see  the  code,
       specifically tokens.c where much of the input processing is done.


       The  sample  configuration  files in /usr/local/lib/wp2x give you some sort of idea what a
       `production quality' configuration file might look like.  They are not intended to be used
       as-is, but rather are meant to be modified to suit your particular needs.


       tex(1), latex(1), nroff(1), troff(1), WordPerfectDeveloper'sToolkit getopt(3).


       Ignoring byte [XX]
              Indicates that an unimplemented single byte code was ignored.

       Ignoring fixed [XX]
              Indicates that an unimplemented fixed length code was ignored.

       Ignoring variable [XX] sub [XX] length
              Indicates  that  an  unimplemented  variable length code was ignored, and gives its

       Warning: Expected XX but received XX at pos: YYYY
              something is wrong in the input file at byte YYYY.

       Warning: No expansion for XX (C)
              A WP code for which no expansion was defined in the config file was encountered.

       Internal error: Invalid escape C
              An error occurred while processing an expansion escape (%x substitution).  Probably
              it was not a recognized escape, check the config file.

       Fixed Length block [XX] incorrectly terminated by [YY] as pos Z
              Something is wrong with the input file, a fixed length block was screwed up.

       Reserved code [XX] seen
              Something that WPC defined as reserved was seen. Check with WPC for new meaning.

       Not a recognized file type. The file did not start with the right WPC
              magic number. Maybe this is a 4.2 file, or not a WordPerfect file at all?

       Error: Cannot open X (reason)
              The file X could not be opened, for the indicated reason.

       Error: Expecting a hex digit
              Inside  a  string,  you typed the characters `\x', but the next character was not a
              valid hex digit.

       Error: string pool overflow
              The configuration file contained too many strings.  Increase the value of POOL_SIZE
              and recompile.

       Error: Unknown identifier X
              The  word  X  was  encountered in the configuration file when wp2x expected a token
              identifier like `HRt'.  Most likely, you either misspelled  it,  or  you  got  your
              quotation marks out of sync.

       Error: Identifier not followed by = sign
              After an identifier must come an equals-sign.

       Error: Quotation mark expected
              After the equals-sign must come a quotation mark.

       Error: X: `%\n' not at start of expansion
              The  expansion  for the identifier X contained the indicated sequence of characters
              somewhere other than the beginning of the string.  The `%\n' interpolation code  is
              meaningful only at the beginning of a string.

       Error: X: invalid escape `%x'
              The  expansion  for  the identifier X contained an invalid escape.  Either you used
              `%1', `%2' or `%c' when the identifier X does not supply  that  parameter,  or  you
              meant for a genuine percent sign to be output, in which case you should put `%%' in
              the expansion.

       Error: Invalid character identifier
              Character  identifiers  can  only  be   one   character   long   (after   backslash

       Warning: Expected XX but received YY.
              The  program  expected the next byte from the WP file to be XX, but the byte YY was
              encountered instead.  This means either that your WP file is damaged, or  that  the
              program  is seriously confused.  (Or both.)  The program will pretend that the byte
              in the file was indeed XX, which may lead to synchronization errors later on.

       Warning: No expansion for X
              The WP file contained the token X, but the configuration file did not  contain  any
              expansion text for it.  A null expansion was assumed.

       Warning: No expansion for XX (c)
              The WP file contained the character c (hex code XX), but the configuration file did
              not contain any expansion text  for  it.   The  character  was  emitted  unaltered.
              Beware  that  this  may  give your text formatter indigestion if it does not handle
              eight-bit characters.

       Warning: X code not supported
              The file being converted uses a code which wp2x does not know how  to  convert.   A
              comment is placed in the output file in its place.  If you ever encounter a `WPCorp
              reserved' or a `WPCorp undefined' code, the author would  appreciate  hearing  from

       Internal error:  Invalid escape, %x
              While  processing  text,  wp2x noticed that you used an invalid escape.  Nothing is
              emitted as the escape text.  (The internal-ness is that this error is  supposed  to
              be caught at the time the configuration file is read.)


       Naive  configuration  files  will  fail if your WP file doesn't nest its tags properly.  A
       typical case is

       to produce a centered boldface `Hello'.  If you use the naive encoding of

            Bold="{\\bf "

       then this will expand to

            \centerline{{\bf Hello}

       WordPerfect has no clean concept of grouping; it lets you change fonts at any time and let
       those  changes propagate outside the current environment.  (With the exception of headers,
       footers, footnotes, and endnotes.)

       Now sure, you could  write  complicated  configuration  strings  to  try  to  handle  this
       `properly',  but it'd probably not be worth the trouble.  After all, the purpose is not to
       perform a perfect conversion, but rather to produce a readable conversion, which can  then
       be massaged by hand to produce a perfect manuscript.

       Another  potential problem is combined attributes, like boldface underline.  Under a naive

            [B]Boldface [U]Underlined boldface[b] Underlined[u] normal.

       comes out as

        {\bf Boldface {\it Underlined boldface} Underlined\/} normal.

       which is wrong for two reasons.  One is the nesting problem discussed above.  The other is
       that TeX font attributes do not combine.

       Similar problems exist for other document preparation systems.  So be careful.


       Original  author:  Raymond  Chen  <> Previous maintainer: Michael
       Richardson <> Current maintainer: Martin Hinner <>