Provided by: tcllib_1.21+dfsg-1_all bug

NAME

       textutil::adjust - Procedures to adjust, indent, and undent paragraphs

SYNOPSIS

       package require Tcl  8.2

       package require textutil::adjust  ?0.7.3?

       ::textutil::adjust::adjust string ?option value...?

       ::textutil::adjust::readPatterns filename

       ::textutil::adjust::listPredefined

       ::textutil::adjust::getPredefined filename

       ::textutil::adjust::indent string prefix ?skip?

       ::textutil::adjust::undent string

_________________________________________________________________________________________________

DESCRIPTION

       The  package  textutil::adjust  provides commands that manipulate strings or texts (a.k.a.
       long strings or string with embedded newlines  or  paragraphs),  adjusting,  or  indenting
       them.

       The complete set of procedures is described below.

       ::textutil::adjust::adjust string ?option value...?
              Do  a justification on the string according to the options.  The string is taken as
              one big paragraph, ignoring any newlines.  Then the line is formatted according  to
              the options used, and the command returns a new string with enough lines to contain
              all the printable chars in the input string. A line is a set of characters  between
              the  beginning  of  the  string  and a newline, or between 2 newlines, or between a
              newline and the end of the string.  If  the  input  string  is  small  enough,  the
              returned string won't contain any newlines.

              Together  with ::textutil::adjust::indent it is possible to create properly wrapped
              paragraphs with arbitrary indentations.

              By default, any occurrence of space or tabulation  characters  are  replaced  by  a
              single  space so that each word in a line is separated from the next one by exactly
              one space character, and this forms a real line.  Each real line  is  placed  in  a
              logical line, which has exactly a given length (see the option -length below).  The
              real line may be shorter. Again by default,  trailing  spaces  are  ignored  before
              returning the string (see the option -full below).

              The  following  options  may be used after the string parameter, and change the way
              the command places a real line in a logical line.

              -full boolean
                     If set to false (default), trailing  space  characters  are  deleted  before
                     returning the string. If set to true, any trailing space characters are left
                     in the string.

              -hyphenate boolean
                     If set to false (default), no hyphenation will be done. If set to true,  the
                     command  will  try  to  hyphenate the last word of a line. Note: Hyphenation
                     patterns     must     be     loaded     prior,     using     the     command
                     ::textutil::adjust::readPatterns.

              -justify center|left|plain|right
                     Sets  the  justification  of  the  returned string to either left (default),
                     center, plain or right.  The  justification  means  that  any  line  in  the
                     returned  string  but  the last one is build according to the value.  If the
                     justification is set to plain and the number of printable chars in the  last
                     line is less than 90% of the length of a line (see the option -length), then
                     this line is justified with the left value, avoiding the expansion  of  this
                     line when it is too small. The meaning of each value is:

                     center The  real  line  is centered in the logical line. If needed, a set of
                            space characters are added at the beginning (half of the needed  set)
                            and  at the end (half of the needed set) of the line if required (see
                            the option -full).

                     left   The real line is set on the left of the logical line. It  means  that
                            there  are no space chars at the beginning of this line. If required,
                            all needed space chars are added at the end  of  the  line  (see  the
                            option -full).

                     plain  The real line is exactly set in the logical line. It means that there
                            are no leading or trailing space chars. All the  needed  space  chars
                            are added in the real line, between 2 (or more) words.

                     right  The  real line is set on the right of the logical line. It means that
                            there are no space chars at the end of this line, and  there  may  be
                            some space chars at the beginning, despite of the -full option.

              -length integer
                     Set  the  length of the logical line in the string to integer.  integer must
                     be a positive integer value. Defaults to 72.

              -strictlength boolean
                     If set to false (default), a line can exceed  the  specified  -length  if  a
                     single  word  is  longer than -length. If set to true, words that are longer
                     than -length are split so that no line exceeds the specified -length.

       ::textutil::adjust::readPatterns filename
              Loads the internal storage for hyphenation patterns with the contents of  the  file
              filename.  This  has to be done prior to calling command ::textutil::adjust::adjust
              with "-hyphenate true", or the hyphenation process will not work correctly.

              The package comes with a number  of  predefined  pattern  files,  and  the  command
              ::textutil::adjust::listPredefined can be used to find out their names.

       ::textutil::adjust::listPredefined
              This  command  returns  a list containing the names of the hyphenation files coming
              with this package.

       ::textutil::adjust::getPredefined filename
              Use this command to query the package for the full path  name  of  the  hyphenation
              file  filename  coming  with  the  package.  Only  the  filenames found in the list
              returned  by  ::textutil::adjust::listPredefined  are  legal  arguments  for   this
              command.

       ::textutil::adjust::indent string prefix ?skip?
              Each  line  in the string is indented by adding the string prefix at its beginning.
              The modified string is returned as the result of the command.

              If skip is specified the first skip lines are left untouched. The default for  skip
              is  0,  causing the modification of all lines. Negative values for skip are treated
              like 0. In other words, skip > 0 creates a hanging indentation.

              Together with ::textutil::adjust::adjust it is possible to create properly  wrapped
              paragraphs with arbitrary indentations.

       ::textutil::adjust::undent string
              The  command  computes  the common prefix for all lines in string consisting solely
              out of whitespace, removes this from each line and returns the modified string.

              Lines containing only whitespace are always reduced to completely empty lines. They
              and empty lines are also ignored when computing the prefix to remove.

              Together  with ::textutil::adjust::adjust it is possible to create properly wrapped
              paragraphs with arbitrary indentations.

BUGS, IDEAS, FEEDBACK

       This document, and the package it describes,  will  undoubtedly  contain  bugs  and  other
       problems.    Please   report  such  in  the  category  textutil  of  the  Tcllib  Trackers
       [http://core.tcl.tk/tcllib/reportlist].  Please also report any ideas for enhancements you
       may have for either package and/or documentation.

       When proposing code changes, please provide unified diffs, i.e the output of diff -u.

       Note further that attachments are strongly preferred over inlined patches. Attachments can
       be made by going to the Edit form of the ticket immediately after its creation,  and  then
       using the left-most button in the secondary navigation bar.

SEE ALSO

       regexp(3tcl), split(3tcl), string(3tcl)

KEYWORDS

       TeX,  adjusting,  formatting,  hyphenation,  indenting,  justification, paragraph, string,
       undenting

CATEGORY

       Text processing