insertion-break

rule

Syntax
insertion-break string condition?

      

Argument definitions

string
The text to be inserted to break the line. May contain only static text (that is, it may not contain any dynamic format items such as "%d" that cannot be evaluated by the OmniMark compiler), and must contain a newline character ("%n").
condition
An optional condition.


Purpose

Used to specify line-break text. Used in conjunction with break-width.

When a long line is encountered, OmniMark can insert a string specified in the applicable insertion-break declaration at any breakable point that will keep the line within the desired length.

In PCDATA in an SGML or XML document instance, you need nothing more than an insertion-break rule and a break-width declaration to cause line-breaking. Elsewhere, a breakable point must be indicated explicitly by a "%/" format item. The "%/" format item will not work within PCDATA at any point in the input stream that is under the control of the "h" modifier or break suppression.

Often, the end-of-line sequence is preceded by an indication that the line break results from the line-length limitation. In such cases, the line break may not occur at a word boundary. The form of this indication, of course, depends on the program that will process the resulting file.

For example, the TeX formatter uses a final percent sign on the line to indicate that the line-end is not important. An OmniMark program that prepared TeX source files might include the following declaration:

  insertion-break "%%%n"

If there is more than one insertion-break in a program, their conditions must ensure that, at most, one rule will apply at any one time.

The condition on an insertion-break rule is not allowed to contain function calls. This rather extreme provision has been made because of the side effects that would otherwise arise. Two types of side effects are especially troublesome:

  • output and put actions in a function called from within such a condition make synchronizing output unpredictable.
  • It is not clear what the effect of an output-to in such a condition should be.

When a program has no applicable insertion breaks, the "%/" format items are ignored unless a replacement-break rule can be applied.

Related Concepts