Patent Document ID: 5459827
Application ID: 07914529

Base Claim:
1. A layout method for structured documents containing text and graphics and including a generic logical structure, a specific logical structure and a generic layout structure, implemented by a formatting module which reads said generic logical structure, specific logical structure and generic layout structure to create a specific layout structure, wherein said formatting module uses a layout method for laying out a document to create the specific layout structure in accordance with the generic layout structure and information derived from said specific logical structure, said generic logical structure, and layout styles, and a method of laying out the contents of the document by using information contained in presentation styles to lay out various content portions of the document in available zones when said layout method is used, wherein said layout method includes the steps of utilizing a plurality of recursive layout processes to create the specific layout structure, a highest-level object in a hierarchy of the specific layout structure, creating an object called a physical root, and, depending on the generic layout structure, evaluating a "subordinate objects generator" attribute of the physical root to create the entire structure required, wherein when the "subordinate objects generator" contains a required or repetitive term, a layout object is created, and when the "subordinate objects generator" contains an optional term, an optional repetitive term, or a term of choice, a temporary object is created; and, based on the highest-level of a logical root object in the hierarchy of the specific logical structure, applying a recursive operation to all subordinate objects of the logical root and continuing said recursive operation until said logical root is reached again by scrolling upward, establishing constraints of creation and placement, and further wherein, if a "subordinate objects generator" attribute contains a repetitive term, two different objects are created; said different objects including an obligatory object, or a sequence of corresponding objects, and a temporary object containing an optional repetitive term, and, if a temporary repetitive optional object is used, creating objects corresponding thereto and, a different, equivalent, repetitive optional temporary object, and further wherein the recursive layout processes for analysis of the structure are employed by submodules of the formatting module, which comprise a first recursive submodule called a logical submodule and first and second recursive layout submodules, and includes the steps of reading the logical objects by said first recursive submodule until access to the layout structure is gained, analyzing layout objects by the said layout modules until a required layout object has been found, searching for a layout object by the first layout module in a set of layout objects given and invoked by the second layout submodule, which is interested in a current layout object contained in a current flow of information, if the analysis does not successfully find said current layout object, invoking the second layout submodule by the logical submodule or invoking itself and repeating the processes until the analysis has been achieved.

---

Claim 2:
2. The layout method of claim 1, further including the step of initiating a backtracking process for modifying or deleting already formatted portions of the document, including searching by the layout submodules for the layout objects to be displaced and corresponding logical objects, or vice versa, wherein a correspondence is made by using content portions; searching for the object to be reformatted that is a higher-ranking object and is common to all logical objects in question, flagging the object to be reformatted for each hierarchical level, displacing the layout objects and the content portions in question, and conducting dialog between the layout submodules, which send an error message to the logical submodule, which process each logical object and verify whether the logical object in question is flagged, and if said logical object is flagged, reformatting all flagged subordinate objects, while if not flagged, responding with an error message.