Interfaces typesetters
SILE typesetter class.
Class typesetter
| typesetter:_init(frame) | Constructor | 
| typesetter:declareSettings() | Declare new setting types | 
| typesetter:_repeatEnterLiners(slice) | Any unclosed liner is reopened on the current line, so we clone and repeat it. | 
| typesetter:_reboxLiners(slice) | All pairs of liners are rebuilt as hboxes wrapping their content. | 
| typesetter:_processIfLiner(node) | Check if a node is a liner, and process it if so, in a stack. | 
| typesetter:liner(name, content, outputYourself) | A liner is a construct that may span multiple lines. | 
| typesetter:contentToText(content) | Convert a SILE AST to a textual representation. | 
Class typesetter
- typesetter:_init(frame)
 - 
    Constructor
    
Parameters:
- frame A initial frame to attach the typesetter to.
 
 - typesetter:declareSettings()
 - Declare new setting types
 - typesetter:_repeatEnterLiners(slice)
 - 
    Any unclosed liner is reopened on the current line, so we clone and repeat it.
 An assumption is that the inserts are done after the current slice content,
 supposed to be just before meaningful (visible) content.
    
Parameters:
- slice table Flat nodes from current line
 
Returns:
- 
           boolean
        Whether a liner was reopened
    
 
 - typesetter:_reboxLiners(slice)
 - 
    All pairs of liners are rebuilt as hboxes wrapping their content.
 Migrating content, however, must be kept outside the hboxes at top slice level.
    
Parameters:
- slice table Flat nodes from current line
 
Returns:
- 
           table
        New reboxed slice
    
 
 - typesetter:_processIfLiner(node)
 - 
    Check if a node is a liner, and process it if so, in a stack.
    
Parameters:
- node table Current node (any type)
 
Returns:
- 
           boolean
        Whether a liner was opened
    
 
 - typesetter:liner(name, content, outputYourself)
 - 
    A liner is a construct that may span multiple lines.
 This is the user-facing method for creating such liners in packages.
 The content may be line-broken, and each bit on each line will be wrapped
 into a box.
 These boxes will be formatted according to some output logic.
 The output method has the same signature as the outputYourself method
 of a box, and is responsible for outputting the liner inner content with the
 outputContent(typesetter, line) method, possibly surrounded by some additional
 effects.
 If we are already in horizontal-restricted mode, the liner is processed
 immediately, since line breaking won't occur then.
    
Parameters:
 - typesetter:contentToText(content)
 - 
    Convert a SILE AST to a textual representation.
 This is similar to SU.ast.contentToString(), but it performs a full
 typesetting of the content, and then reconstructs the text from the
 typeset nodes.
    
Parameters:
- content table SILE AST to process
 
Returns:
- 
           string
        Textual representation of the content