WO2007011518A2 - Alignment and breaking of mathematical expressions in documents - Google Patents

Alignment and breaking of mathematical expressions in documents Download PDF

Info

Publication number
WO2007011518A2
WO2007011518A2 PCT/US2006/025684 US2006025684W WO2007011518A2 WO 2007011518 A2 WO2007011518 A2 WO 2007011518A2 US 2006025684 W US2006025684 W US 2006025684W WO 2007011518 A2 WO2007011518 A2 WO 2007011518A2
Authority
WO
WIPO (PCT)
Prior art keywords
expression
margin
alignment
line
indention
Prior art date
Application number
PCT/US2006/025684
Other languages
French (fr)
Other versions
WO2007011518A3 (en
Inventor
Andrei Burago
Sergey Genkin
Victor Kozyrev
Jennifer Michelstein
Alexander Vaschillo
Original Assignee
Microsoft Corporation
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corporation filed Critical Microsoft Corporation
Publication of WO2007011518A2 publication Critical patent/WO2007011518A2/en
Publication of WO2007011518A3 publication Critical patent/WO2007011518A3/en

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/103Formatting, i.e. changing of presentation of documents
    • G06F40/111Mathematical or scientific formatting; Subscripts; Superscripts

Definitions

  • expression editing tools associated with word processing and presentation software programs align the expressions as a whole, e.g., left align, right
  • the expression editing tools generally align the first character of the expression with the left margin of the page, regardless of any character or element within the expression.
  • the users of these expression editing tools generally must endure a tedious, manual, editing process to separately format each expression. Further, the editing process is often
  • One or more of the expressions is formatted, such as by inserting a manual break in the expression.
  • a manual break is a user-inserted format, such as a carriage return, that separates one portion of an expression from another
  • the set of two or more expressions are also a single expression portion of the expression.
  • the set of two or more expressions are also a single expression portion of the expression.
  • the set of expressions are aligned according to two or more alignment points.
  • An alignment point is an element within the expression used to
  • set of expressions are formatted to fit within the width of the document. As such, one or
  • the exemplary embodiments may be implemented as a computer process, a computing system or as an article of manufacture such as a computer program product.
  • the computer program product may be a computer storage medium readable by a computer system and encoding a computer program of instructions for executing a computer process.
  • the computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions
  • Fig. 1 is an embodiment of a document application with an expression editing
  • FIG. 2 is a functional diagram illustrating a computing environment and a basic
  • Fig. 3 is an embodiment of an expression editing tool and a related user interface
  • FIG. 4A, Fig. 4B, and Fig, 4C are embodiments of a user interface illustrating how
  • an expression editing tool formats expressions within a document according to the present
  • FIG. 5 A and Fig. 5B are embodiments of a user interface illustrating how an
  • expression editing tool creates formats in an expression according to the present disclosure.
  • FIG. 6 shows an embodiment of a method for formatting a plurality of expressions
  • Fig. 7 shows an embodiment of a method for moving expressions to create an
  • Fig. 8 shows an embodiment of a method for creating a break in an aligned
  • FIG. 9 shows an embodiment of a method for formatting expressions such that
  • Fig. 1OA, Fig. 1OB, Fig. 1OC, and Fig. 5D are embodiments of a user interface
  • the present exemplary embodiments relate to new and improved methods and
  • the formatting comprises alignment in conjunction with breaking. For instance, a plurality of expressions is first aligned. During alignment, each expression is allowed to have
  • limitless horizontal space such that the margins are ignored and the expression may cross the margins in the document.
  • An anchor point is determined for all expressions, and an alignment point is determined for each expression. Each expression is aligned such that the alignment point in the expression has the same horizontal position as the anchor point. Then, the expressions are no longer considered to have limitless horizontal space, and it is
  • a break is inserted into the expression to locate a portion of the expression on a
  • a document is any representation of information.
  • exemplary embodiments
  • the document is a text document, a graphic diagram, such as a flow chart, an
  • a computer system 100 that may be used to execute an expression editing tool in
  • a "computer system” shall be construed broadly and is defined as one or more devices or machines that
  • the computer system 100 displays information, such as display screen 102.
  • the display screen 102 is enlarged to show details of the display.
  • the display 102 relates to an
  • display 102 displays a set of mathematical equations, many other types of expressions comprising various elements may be generated, formatted, aligned, broke, and displayed in accordance with the present
  • the display 102 has a title bar 104 and a
  • Document window 105 displays a document 106 with a set of expressions, such as
  • Document window 105 provides user controls and other
  • control buttons 107 and menu 109 are potentially many buttons.
  • input mechanisms such as control buttons 107 and menu 109, among potentially many
  • Such user interface controls are generally known in the art and are useful in
  • a document 106 in embodiments, has margins, such as first margin 116, e.g., the
  • margins are left margin, and second margin 126, e.g., the right margin, hi embodiments, margins are
  • Documents are arranged as a series of lines from the top of the document to the bottom of the document.
  • the lines contain the presented material.
  • the material in each line of the document has a
  • horizontal position is the position between a first margin 116 and a second margin 126 that can be calculated in points, inches, or other measure.
  • An expression such as expression 108, is formed from a set of elements, such as elements 112 and 110.
  • An element is any number, variable, operator, abbreviation,
  • each element is enclosed within a "bounding box,” as shown in Fig. 1.
  • This bounding box or “bbox” is the imaginary, bounding, two-dimensional box within which the displayable element will fit.
  • the bboxes may have different dimensions from one another, but, in the exemplary
  • the bboxes are displayed as having similar sizes.
  • the bboxes shown in Fig. 1 are not meant to limit the possible embodiments but are provided merely as an illustration. As one skilled in the art will recognize, the bboxes may be used
  • one or more expressions may have a
  • a user provides input identifying
  • This user provided input is referred to as a
  • portion 130 and portion 156 displayed on separate lines of the document, such as portion 130 and portion 156.
  • Breaking an expression is the process of separating a first portion of the expression from a second portion of the expression. Upon providing the manual break, the user can identify how to "align" the second portion 156 of the expression with the first portion 130 of the
  • the user may determine that element 158 of the second portion 156 should be aligned with element 160 of the first portion 130.
  • portions 130 and 156 can maintain this spatial relationship. As such, embodiments
  • indention for the broken portion is constructed from one or more portions.
  • the set of expressions can be aligned.
  • an anchor point is identified.
  • An anchor point is a location to which an expression will be aligned. Then, an element within each expression is identified as an alignment point.
  • alignment point is a portion of each expression selected by the user that will have the same horizontal position in the document as the anchor point when the expressions are aligned.
  • the anchor point is element 118 and the
  • alignment points are elements 134 and 138. Therefore, every expression 108, 114, and 136 in the exemplary set of expressions will be aligned such that the equals sign in the expressions has the same horizontal position, as is represented by dashed line 120.
  • one expression such as expression 114 is identified.
  • the identified expression 114 is aligned in the document such that the first element 130 of the
  • each expression is allowed to have limitless horizontal space. In other words, the expressions can cross
  • portion 142 crosses a margin
  • portion 148 is identified that can be separated from the rest of the expression.
  • the broken portion is set on the new line. In embodiments, the broken
  • portion is then formatted according to some default positioning, such as left alignment, right alignment, as shown in Fig. 1, or center alignment.
  • the user may specify an alignment, such as adding an indent. This user-specified indent can be
  • FIG. 2 An example of a suitable operating environment in which the embodiments may be implemented is illustrated in Fig. 2.
  • the operating environment is only one example of
  • computing device 200 includes a computing device, such as computing device 200. ha its most basic
  • computing device 200 typically includes at least one processing unit 202 and memory 204.
  • memory 204 may be volatile (such as RAM), non- volatile (such as ROM, flash memory,
  • device 200 may also have additional features or functionality. For example, device 200 may also have additional features or functionality.
  • device 200 may also comprise additional storage (removable and/or non ⁇
  • Computer storage media includes volatile and nonvolatile, removable and
  • non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data.
  • Memory 204, removable storage 208, and non-removable storage 210 are all examples of computer storage media.
  • Computer storage media includes, but is not limited
  • RAM random access memory
  • ROM read only memory
  • EEPROM electrically erasable programmable read-only memory
  • flash memory electrically erasable programmable read-only memory
  • CD-ROM compact disc-read only memory
  • DVD digital versatile disks
  • magnetic cassettes magnetic tape
  • magnetic disk storage magnetic disk storage devices, or any other medium which can be used to store the desired information and which can be accessed by device 200. Any such
  • computer storage media may be part of device 200.
  • Device 200 may also contain communications connection(s) 212 that allow the device to communicate with other devices.
  • Communications connection(s) 212 is an
  • Communication media typically embodies computer
  • modulated data signal means a signal that has one or more of
  • communication media includes wired media, such as a wired network or direct- wired connection, and wireless media, such as acoustic, RF,
  • Device 200 may also have input device(s) 214 such as keyboard, mouse, pen,
  • Output device(s) 216 such as a display,
  • the devices 214 may help form the user interface 102 discussed above while devices 216 may display results 106 discussed above.
  • Computing device 200 typically includes at least some form of computer readable media.
  • Computer readable media can be any available media that can be accessed by
  • computer readable media may comprise computer storage media and communication media. Combinations of the any of the above should also be included within the scope of computer readable media.
  • the software for executing the expression editing tool and aligning and breaking expressions is stored on the computer readable media or in memory 204 and/or
  • the computer device 200 may operate in a networked environment using logical
  • the remote computer may be any remote computer (not shown).
  • the remote computer may be any remote computer
  • a personal computer a server computer system, a router, a network PC, a peer device, or
  • LAN local area network
  • wide area network wide area network
  • WAN wide area network
  • WAN wide area network
  • the computer device 200 When used in a LAN networking environment, the computer device 200 is
  • the computer device 200 typically includes a modem or other
  • the modem which may be internal or external, may be connected to the computer processor 202 via the
  • a remote application programs may reside on memory device connected to the remote computer system. It will be appreciated
  • FIG. 3 An exemplary document application 300 having an expression editing tool 302 and a user interface 304 is shown in Fig. 3.
  • the document application 300 in embodiments, comprises one or more software modules. In one embodiment, the
  • expression editing tool 302 comprises an expression assembly module 306, a manual formatting module 322, an alignment point selection module 310, a movement
  • 304 is operable to display information to a user and receive inputs from the user.
  • the user interface 304 receives inputs for the expressions 308, a manual
  • the expression assembly module 306 receives expression input
  • the expression input 308 comprises a series of elements
  • the expression assembly module 306 assembles the expressions, element by element, into finished expressions.
  • the expressions each comprise a completed
  • the expression may occupy two or more lines,
  • the expression assembly module 306 assembles
  • each expression in the plurality or the set of expressions in similar fashion until the user stops providing expression input 308.
  • the set of expressions is provided to the manual formatting module 322.
  • the manual formatting module 322 receives manual break insertions for one or more expressions.
  • a manual break is a user input that identifies how to separate the expression between two elements. For example, the user places a carriage return between two elements in the expression.
  • Each expression may have one or more manual breaks.
  • the user identifies one or more elements within an expression to insert the one or more manual breaks.
  • the user continues through each expression until possibly every expression in the set of expressions has a manual break. After inserting the manual break,
  • the user in embodiments, also provides an alignment point for the broken part of the
  • second line of the document has an element that is aligned with an element in a first
  • the user provides no manual breaks as is represented by the dotted line forming the manual formatting module 322 and the manual break input 320.
  • the manual formatted expressions are provided to the
  • the alignment point selection module 310 identifies anchor points for the
  • the user selects the anchor point 312 with the user interface 304, and provides the anchor point selection to the alignment point selection
  • module 310 For example, the user highlights an equals sign and then selects a user interface control, such as menu item 140 (Fig. 1), to input the equals sign as the anchor
  • the alignment point selection module 310 automatically selects the anchor point. For example, the alignment point selection module 310 scans and
  • the alignment point selection module 310 compares each expression in the set of expressions to find one or more elements that are common to all expressions. If one element is common to all expressions, the alignment point selection module 310 identifies that element as the anchor point. However, if two or more elements are common to all expressions, the alignment point selection module 310 may identify the first common element presented in the first expression of the set of
  • the alignment point selection module 310 also identifies the alignment point for each expression. Li embodiments, the common element is identified
  • the alignment point One skilled in the art will recognize other methods and systems for identifying the anchor point and the alignment that are included within the scope of the
  • the alignment point selection module 310 provides the
  • the movement determination module 314 determines the direction and distance
  • the movement determination module 314 determines a required indention for each expression to provide that the alignment point of each expression as the same horizontal position as the anchor point. In embodiments, the movement determination module 314 allows each expression to have limitless horizontal
  • the movement determination module 314 aligns the
  • first expression at the top of the set of expressions with a first margin e.g., the left margin.
  • the position of the anchor point in the first expression is then determined. The movement
  • determination module 314 then calculates, for each subsequent expression, the direction and distance of indention or movement to align the alignment point of that expression with
  • the position of the anchor point of the first expression is the position of the anchor point of the first expression.
  • the movement determination module after alignment, the movement determination module
  • the movement determination module 31 in embodiments, determines whether the document is width of the document.
  • determination module 314 searches the expression, near the second margin, for a certain
  • type of element such as a space, an operator, or other type of element.
  • the movement determination module 314 inserts the break in front of the element. In embodiments, the movement determination module 314 then determines on which side of the anchor point, in the first expression, the broken portion of
  • portion of the expression is aligned according to some default formatting, e.g., left align or right align.
  • the breaks and indentions for the broken portions are sent to the expression
  • the expression movement module 316 moves each expression according to the
  • the aligned expressions 318 are provided and presented to the user in the user
  • FIG. 4A A first exemplary embodiment of an alignment 400 is shown in Fig. 4A.
  • two exemplary embodiments 400 is shown in Fig. 4A.
  • two exemplary embodiments 400 is shown in Fig. 4A.
  • the first expression 402 is first moved to abut with a first margin 406.
  • the anchor point 407 is the equals sign.
  • the position 410 of the equals sign is determined for the first expression 402. Then, a determination of the
  • FIG. 4B A second exemplary embodiment of an alignment 414 is shown in Fig. 4B.
  • the alignment is not completed to further enhance the description provided hereinafter.
  • a first expression 416 and a second expression 418 are being aligned. Again, the first expression 416 is first moved to abut with a first margin 420.
  • the movement is determined to be for a distance 424. Since the required direction of the movement is from
  • expression 418 is a "negative indention" equal to the distance 424. However, if only the second expression 418 is moved the negative indention, the alignment points 421 and 423 will not align. As such, both expressions 416 and 418 are moved an additional positive indention equal in length to the negative indention to maintain the alignment and ensure that the second expression 418 does not cross the first margin 420.
  • FIG. 4C A third exemplary embodiment of an alignment 426 is shown in Fig. 4C.
  • the expressions 428 and 430 are being aligned in the center of the
  • the first expression 428 is determined such that the alignment point 437 is centered over
  • a user interface illustrating the identification
  • the expression 502 is shown in the user interface view 500 after an alignment. In this exemplary embodiment, expression 502 was assembled between a first
  • the expression 502 was moved according to positive indention 508.
  • the indention 508 caused a portion 510 of the expression 502 to cross the second margin 506.
  • the portion 510 is in an area of the document that must be moved to ensure the portion 510 is both displayed and/or printed correctly in the width of the document. Thus, a break is necessary.
  • view 500 is moved to a next line 513 of the document.
  • a break point is
  • portion 510 may be
  • the expression 502 has an operator 526 that can be used as the breaking point.
  • a formatting instruction such as a carriage return, is placed in front of the break point, and the portion after the formatting instruction is
  • the indention 518 is calculated for the portion 510.
  • the indention 518 in embodiments, has two
  • a break indention 516 is determined.
  • the break indention 516 is a direction and distance calculation required to align the first element 517 of the portion 510
  • the break indention is the distance
  • a second portion of the indention 518 is an alignment indention 514 that is equivalent to the alignment indention 508.
  • the indentions 518 and 516 ensure the portion 510 maintains the proper position in the expression 502 to maintain the meaning of the expression. For instance, the portion 510 is not placed on the "wrong side" of the
  • portion 510 is aligned according to default formatting.
  • portion 510 is aligned with the second margin 506.
  • a user interface 1000 illustrating the application
  • expression 1002 was
  • the expression 1002 has a first portion 1008 on a first line and a second portion 1010 on a second line.
  • the user also provided an alignment for the broken portion 1010.
  • the second or broken portion 1010 is aligned to element 1014 of the first portion 1008.
  • an indention such as indention 1020, is calculated from the first indention
  • Fig. 1OC shows the same expression 1002 after an alignment with one or more other expressions (not shown).
  • exemplary embodiment
  • an indention 1024 is applied to both the first portion 1008 and the second portion 1010 of
  • the second portion 1010 maintains its alignment 1018 with the first portion 1008 by adding indention 1020 to indention 1008.
  • the indentions 1024 maintain the alignment of the expression 1002 with the other expressions (not shown) in the set of expressions and the position of the first portion 1008 and the second portion 1010 between the first margin 1004 and the second margin 1006.
  • a portion 1026 of the expression 1002 crossed the second margin 1006 and must
  • the lines are not considered to have limitless length after the alignment, and an automatic break point is identified. Certain portions in an expression
  • portion 1028 may be easier to move than a portion of a
  • the expression 1002 has an operator 1032 that can be used as the automatic breaking
  • a formatting instruction such as a carriage return, is placed in front of the break point 1032, and the portion 1028 after the formatting instruction is moved to a next line of the document.
  • a break indention is determined.
  • the break indention is a direction and distance calculation required to align the first element 1032 of the portion 1010 with the another element, such as element 1014 the portion of the expression 1008 on the first line.
  • the break indention is the distance from
  • a second portion of the indention is an alignment indention that is equivalent to the alignment indention 1024.
  • the indentions ensure the portion 1028 maintains the proper position in the expression 1002 to maintain the meaning of the
  • the portion 1010 is not placed on the "wrong side" of the equals sign.
  • the portion 1028 is aligned according to default formatting, as is shown in Fig. 10D.
  • the portion 1028 is aligned with the second margin 1006.
  • Receive operation 901 receives inputs to form a plurality of expressions. In one
  • a user provides expression inputs, such as input 308 (Fig. 3), from a user
  • the expression input may comprise two or
  • Format operation 902 formats the expressions such that each expression has limitless length and
  • execute operation 904 receives and executes at least one manual
  • a user provides a manual break, such as manual break input 320
  • Fig. 3 into a user interface.
  • the user enters a carriage return in front
  • align operation 906 receives an alignment point from the
  • calculate operation 908 calculates an indent for the broken portion relative to the first portion, as explained in conjunction with Fig. 1OA, Fig. 1OB, and Fig. 1OC.
  • each line of the expression is then
  • Determine operation 914 determines if any portion of an expression crosses a
  • margin e.g., the right margin. If a portion of an expression crosses a margin, the flow branches YES to determine operation 916. If no portion of any expression crosses a margin, the flow branches NO to provide the aligned and formatted expressions.
  • Determine operation 916 determines a break point for an automatic break. If no break
  • Calculate operation 918 calculates an
  • an element of the broken portion is aligned with an element of the first portion of the expression.
  • first portion is calculated, as explained in conjunction with Fig. 4A, Fig. 4B, and Fig. 4C.
  • the broken portion is aligned and indented according to some
  • the broken portion is right aligned with the right margin, as is explained in conjunction with Fig. 1OD.
  • the flow then continues to apply operation 912 to apply the indentions.
  • Identify operation 602 identifies the anchor point for the plurality of expressions
  • the anchor point is an element in an expression.
  • the anchor point may also be a horizontal position in the document, hi embodiments, the user identifies the
  • Identify operation 604 identifies the alignment point for each of the expressions.
  • a user provides a designation of the alignment point, such as input 312
  • the alignment point is automatically identified or
  • an alignment point selection module such as alignment point
  • selection module 310 (Fig. 3), scans and compares each expression to find one or more
  • the module may, when more than one element is common to all
  • Change operation 606 changes the horizontal position of one or more expressions
  • change operation 606 determines a distance
  • change operation 606 moves or
  • align operation 702 aligns the first expression with a first margin such that the first expression abuts the first margin.
  • Retrieve operation 704 retrieves the next expression.
  • the method 700 assumes that each expression can cross any margin and has an unlimited length.
  • Move operation 706 moves the retrieved expression such that the anchor point of the first expression and the alignment point of the retrieved expression have the same horizontal
  • the move operation 706 determines a direction and distance for an indention for the retrieved expression. Upon determining the indention, the expression
  • Determine operation 708 determines if a portion of the retrieved expression
  • Calculate operation 710 calculates an amount of negative indention for the retrieved expression. The amount of negative indention is recorded, such
  • Determine operation 712 determines if the expression is the last expression in the
  • Determine operation 714 determines the largest negative indention recorded by calculate operation 710. Upon identifying the largest negative
  • indention operation 716 indents all expressions in the set of expressions by a positive indention equal to the largest negative indention. As such, all expressions are
  • identify operation 802 identifies an expression where a portion of the expression crosses a second margin, e.g., the right margin, as is shown in and described in conjunction with Fig. 5A. Determine operation
  • the automatic break indention is the distance between the first element in the expression and the first element after the
  • determine operation 806 also determines the amount of
  • the alignment indention is the distance from the first margin, e.g.,
  • the alignment indention includes
  • Calculate operation 808 calculates the total indention for any portion that crosses
  • the second margin by combining the break indention and the alignment indention.
  • Move operation 810 moves the portion of the expression that crosses the second margin to the next line of the document, hi embodiments, move operation 810 moves any expression or other element already occupying the next line before moving the portion of
  • Move operation 812 then moves the portion of the expression on the next line by the total indention. In this way, the broken portion of the expression is correctly
  • determine operation 814 evaluates very long
  • a system for aligning mathematical expressions in a document comprises a mathematical expression assembly module that accepts mathematical expression inputs and forms a plurality of mathematical expressions from the inputs; an alignment point selection module that identifies an alignment point for
  • a movement determination module that calculates an amount of indention for
  • the movement determination module may repeat the above steps for one or more other
  • alignment point selection module receives an alignment point designation from a user.
  • the movement determination module can determine a position for the alignment
  • the movement determination module in other embodiments, is

Abstract

Embodiments relate to systems and methods for formatting a set of expressions in a document. In embodiments, the systems and methods provide the ability to format a set of expressions by aligning expressions or parts of expressions to each other or to the margins of the document, while also supporting breaking of one or more expressions into multiple parts to be placed on different lines. Breaking can include breaking in places requested by a user or breaking in places that are automatically determined to fit the expressions between the margins of a document.

Description

ALIGNMENT AND BREAKING OF MATHEMATICAL EXPRESSIONS IN
DOCUMENTS
Background
[0001] When an author generates a document that includes a series of mathematical
expressions, the author often wants the expressions to be formatted in a certain way to
enhance the readability and to make the workflow from one expression to the next obvious. For example, an author often will want a series of expressions to be aligned at the equal sign to clearly delimit what has changed on either the right or left hand side of
the expressions. Generally, expression editing tools associated with word processing and presentation software programs align the expressions as a whole, e.g., left align, right
align, or center the expressions. For example, the expression editing tools generally align the first character of the expression with the left margin of the page, regardless of any character or element within the expression. To format the set of expression in other ways, the users of these expression editing tools generally must endure a tedious, manual, editing process to separately format each expression. Further, the editing process is often
frustrated or complicated when the viewing space, such as on a web browser, changes
width. Such a change in width invariably results in undesired formatting. It is with
respect to these and other considerations that the present invention has been made.
Summary
[0002] The above and other problems are solved by systems and methods for formatting
mathematical expressions that allow an author to accomplish some manual formatting and
maintain that formatting through some automatic formatting. In embodiments, a set of
mathematical expressions is generated. One or more of the expressions is formatted, such as by inserting a manual break in the expression. A manual break is a user-inserted format, such as a carriage return, that separates one portion of an expression from another
portion of the expression. In embodiments, the set of two or more expressions are also
formatted. In one embodiment, the set of expressions are aligned according to two or more alignment points. An alignment point is an element within the expression used to
align the expression with a related element in another expression. The set of expressions,
in embodiments, are also formatted with respect to the document. In one embodiment, the
set of expressions are formatted to fit within the width of the document. As such, one or
more "automatic breaks" are inserted in the expressions to ensure the whole expression is presented with the document.
[0003] The exemplary embodiments may be implemented as a computer process, a computing system or as an article of manufacture such as a computer program product. The computer program product may be a computer storage medium readable by a computer system and encoding a computer program of instructions for executing a computer process. The computer program product may also be a propagated signal on a carrier readable by a computing system and encoding a computer program of instructions
for executing a computer process.
[0004] A more complete appreciation of the present exemplary embodiments and their
improvements can be obtained by reference to the accompanying drawings, which are
briefly summarized below, and to the following detailed description of exemplary
embodiments, and to the appended claims.
Brief Description of the Drawings
[0005] Fig. 1 is an embodiment of a document application with an expression editing
tool illustrating formatting of a plurality of expressions according to the present disclosure. [0006] Fig. 2 is a functional diagram illustrating a computing environment and a basic
computing device that can operate the expression editing tool according to the present
disclosure.
[0007] Fig. 3 is an embodiment of an expression editing tool and a related user interface
for creating and formatting expressions in a document according to the present disclosure.
[0008] Fig. 4A, Fig. 4B, and Fig, 4C are embodiments of a user interface illustrating how
an expression editing tool formats expressions within a document according to the present
disclosure.
[0009] Fig. 5 A and Fig. 5B are embodiments of a user interface illustrating how an
expression editing tool creates formats in an expression according to the present disclosure.
[0010] Fig. 6 shows an embodiment of a method for formatting a plurality of expressions
according to the present disclosure.
[0011] Fig. 7 shows an embodiment of a method for moving expressions to create an
alignment according to the present disclosure.
[0012] Fig. 8 shows an embodiment of a method for creating a break in an aligned
expression according to the present disclosure.
[0013] Fig. 9 shows an embodiment of a method for formatting expressions such that
manual formatting is preserved while aligning expressions according to the present
disclosure.
[0014] Fig. 1OA, Fig. 1OB, Fig. 1OC, and Fig. 5D are embodiments of a user interface
illustrating how an expression editing tool allows manual formatting and how the manual
formatting is treated during alignment of an expression according to the present disclosure. Detailed Description
[0015] The present exemplary embodiments will now be described more fully
hereinafter with reference to the accompanying drawings. The methods and systems may, however, assume many different forms and should not be construed as limited to the
exemplary embodiments set forth herein; rather, these embodiments are provided so that
this disclosure will be thorough and complete for those skilled in the art.
[0016] The present exemplary embodiments relate to new and improved methods and
systems for formatting mathematical expressions in a document. In embodiments, the formatting comprises alignment in conjunction with breaking. For instance, a plurality of expressions is first aligned. During alignment, each expression is allowed to have
limitless horizontal space such that the margins are ignored and the expression may cross the margins in the document. An anchor point is determined for all expressions, and an alignment point is determined for each expression. Each expression is aligned such that the alignment point in the expression has the same horizontal position as the anchor point. Then, the expressions are no longer considered to have limitless horizontal space, and it is
determined if one or more expressions crosses a margin. If an expression crosses a
margin, a break is inserted into the expression to locate a portion of the expression on a
new line in the document. In this manner, a plurality of mathematical expressions can be
automatically formatted in a document to be both aligned within the document and
adjusted to the width of the document.
[0017] A document is any representation of information. In exemplary embodiments,
the document is a text document, a graphic diagram, such as a flow chart, an
organizational chart, a pie chart, etc., a spreadsheet, a web page, or other type of document.
A computer system 100 that may be used to execute an expression editing tool in
accordance with the present disclosure is shown in Fig. 1. As used herein, a "computer system" shall be construed broadly and is defined as one or more devices or machines that
execute programs for displaying and manipulating text, graphics, symbols, audio, video, and/or numbers.
[0018] The computer system 100 displays information, such as display screen 102. The
display screen 102 is enlarged to show details of the display. The display 102 relates to an
over-simplified display of an example document application with the capability of
generating, formatting, aligning, breaking, and displaying mathematical expressions. In embodiments, "mathematical expressions" or "expressions" are any idea or concept that
can be expressed mathematically, such as equations, mathematical formula, chemical formula, DNA sequences, etc. Importantly, although display 102 displays a set of mathematical equations, many other types of expressions comprising various elements may be generated, formatted, aligned, broke, and displayed in accordance with the present
disclosure, and thus, the examples illustrating equations shown in the Figures and explained herein are not meant as limitations, but merely as illustrations.
[0019] In the particular example shown in Fig. 1, the display 102 has a title bar 104 and a
document window 105. There may be other windows for managing other information. Document window 105 displays a document 106 with a set of expressions, such as
expressions 108, 114, and 136. Document window 105 provides user controls and other
input mechanisms, such as control buttons 107 and menu 109, among potentially many
others. Such user interface controls are generally known in the art and are useful in
managing certain types of information.
[0020] A document 106, in embodiments, has margins, such as first margin 116, e.g., the
left margin, and second margin 126, e.g., the right margin, hi embodiments, margins are
generally the boundaries of the document that define the width of the document, and the material presented in the document is presented between the margins. Documents are arranged as a series of lines from the top of the document to the bottom of the document.
The lines contain the presented material. The material in each line of the document has a
certain horizontal position between the left margin 116 and the right margin 126. A
horizontal position is the position between a first margin 116 and a second margin 126 that can be calculated in points, inches, or other measure. The amount of material that can be
presented in any line is determined by the width of the document, which is the amount of area between the first margin 116 and the second margin 126.
[0021] An expression, such as expression 108, is formed from a set of elements, such as elements 112 and 110. An element is any number, variable, operator, abbreviation,
format, such as a space, or other part of an expression. In embodiments, each element is enclosed within a "bounding box," as shown in Fig. 1. This bounding box or "bbox" is the imaginary, bounding, two-dimensional box within which the displayable element will fit. The bboxes may have different dimensions from one another, but, in the exemplary
embodiment in Fig. 1, the bboxes are displayed as having similar sizes. However, the bboxes shown in Fig. 1 are not meant to limit the possible embodiments but are provided merely as an illustration. As one skilled in the art will recognize, the bboxes may be used
to both identify and determine horizontal positions for alignment points or used to
determine other measurements, described hereinafter.
[0022] In embodiments, one or more expressions, such as expression 114, may have a
break inserted into the expression. In one embodiment, a user provides input identifying
where the expression should be broken. This user provided input is referred to as a
"manual break." Thus, the expression is broken into two or more separate portions that are
displayed on separate lines of the document, such as portion 130 and portion 156.
Breaking an expression is the process of separating a first portion of the expression from a second portion of the expression. Upon providing the manual break, the user can identify how to "align" the second portion 156 of the expression with the first portion 130 of the
expression on the first line. For example, the user may determine that element 158 of the second portion 156 should be aligned with element 160 of the first portion 130. The two
portions 130 and 156 can maintain this spatial relationship. As such, embodiments
provide systems and methods to determine an indention, such as indention 154, to align
the broken part of the expression in the appropriate position. In embodiments, the
indention for the broken portion is constructed from one or more portions.
[0023] In further embodiments, the set of expressions can be aligned. In embodiments, an anchor point is identified. An anchor point is a location to which an expression will be aligned. Then, an element within each expression is identified as an alignment point. An
alignment point is a portion of each expression selected by the user that will have the same horizontal position in the document as the anchor point when the expressions are aligned. In the exemplary embodiment shown in Fig. 1, the anchor point is element 118 and the
alignment points are elements 134 and 138. Therefore, every expression 108, 114, and 136 in the exemplary set of expressions will be aligned such that the equals sign in the expressions has the same horizontal position, as is represented by dashed line 120.
[0024] In one embodiment, one expression, such as expression 114 is identified. The identified expression 114 is aligned in the document such that the first element 130 of the
expression 114 is positioned to abut the first margin 116. A distance 132 is then
determined from the first margin 116 to an anchor point 134. Then, a position correction,
such as indention 122, is calculated for each expression, such as expression 136, to ensure
that the alignment point, such as alignment point 138, in each expression has the same
horizontal position 120 as the anchor point 134 in the identified expression 114. The
expression-specific indentions are applied to each expression, and the aligned expressions, as shown in document 106, are presented. During the alignment process, each expression is allowed to have limitless horizontal space. In other words, the expressions can cross
over the second margin 126 without affecting the formatting of the expression.
[0025] After alignment, another type of break occurs when there is limited space
between the margins and a portion of an expression, such as portion 142, crosses a margin,
such as margin 126. This type of break is referred to as an "automatic break." To
determine where to insert an automatic break in the expression, a portion of the
expression, such as portion 148, is identified that can be separated from the rest of the expression. The broken portion is set on the new line. In embodiments, the broken
portion is then formatted according to some default positioning, such as left alignment, right alignment, as shown in Fig. 1, or center alignment. In further embodiments, the user may specify an alignment, such as adding an indent. This user-specified indent can be
incorporated with the calculated indents.
[0026] An example of a suitable operating environment in which the embodiments may be implemented is illustrated in Fig. 2. The operating environment is only one example of
a suitable operating environment and is not intended to suggest any limitation as to the scope of use or functionality. Other well known computing systems, environments, and/or
configurations that may be suitable for use with the embodiments, but are not limited to,
personal computers, server computers, hand-held or laptop devices, multiprocessor
systems, microprocessor-based systems, programmable consumer electronics, network
PCs, minicomputers, mainframe computers, distributed computing environments that
include any of the above systems or devices, and the like.
[0027] With reference to Fig. 2, an exemplary system for implementing the embodiments
includes a computing device, such as computing device 200. ha its most basic
configuration, computing device 200 typically includes at least one processing unit 202 and memory 204. Depending on the exact configuration and type of computing device, memory 204 may be volatile (such as RAM), non- volatile (such as ROM, flash memory,
etc.), or some combination of the two. The most basic configuration of the computing
device 200 is illustrated in Fig. 2 by dashed line 206.
[0028] Additionally, device 200 may also have additional features or functionality. For
example, device 200 may also comprise additional storage (removable and/or non¬
removable) including, but not limited to, magnetic disks, optical disks, or tape. Such
additional storage is illustrated in Fig. 2 by removable storage 208 and non-removable storage 210. Computer storage media includes volatile and nonvolatile, removable and
non-removable media implemented in any method or technology for storage of information, such as computer readable instructions, data structures, program modules, or other data. Memory 204, removable storage 208, and non-removable storage 210 are all examples of computer storage media. Computer storage media includes, but is not limited
to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disks (DVD) or other optical storage, magnetic cassettes, magnetic tape, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to store the desired information and which can be accessed by device 200. Any such
computer storage media may be part of device 200.
[0029] Device 200 may also contain communications connection(s) 212 that allow the device to communicate with other devices. Communications connection(s) 212 is an
example of communication media. Communication media typically embodies computer
readable instructions, data structures, program modules, or other data in a modulated data
signal such as a carrier wave or other transport mechanism and includes any information
delivery media. The term "modulated data signal" means a signal that has one or more of
its characteristics set or changed in such a manner as to encode information in the signal.
By way of example, and not limitation, communication media includes wired media, such as a wired network or direct- wired connection, and wireless media, such as acoustic, RF,
infrared, and other wireless media.
[0030] Device 200 may also have input device(s) 214 such as keyboard, mouse, pen,
voice input device, touch input device, etc. Output device(s) 216 such as a display,
speakers, printer, etc. may also be included. The devices 214 may help form the user interface 102 discussed above while devices 216 may display results 106 discussed above.
All these devices are well know in the art and need not be discussed at length here.
[0031] Computing device 200 typically includes at least some form of computer readable media. Computer readable media can be any available media that can be accessed by
processing unit 202. By way of example, and not limitation, computer readable media may comprise computer storage media and communication media. Combinations of the any of the above should also be included within the scope of computer readable media. In embodiments, the software for executing the expression editing tool and aligning and breaking expressions is stored on the computer readable media or in memory 204 and/or
executed by the processing unit 202.
[0032] The computer device 200 may operate in a networked environment using logical
connections to one or more remote computers (not shown). The remote computer may be
a personal computer, a server computer system, a router, a network PC, a peer device, or
other common network node, and typically includes many or all of the elements described
above relative to the computer device 200. The logical connections between the computer
device 200 and the remote computer may include a local area network (LAN) or a wide
area network (WAN), but may also include other networks. Such networking
environments are commonplace in offices, enterprise-wide computer networks, intranets,
and the Internet. [0033] When used in a LAN networking environment, the computer device 200 is
connected to the LAN through a network interface or adapter. When used in a WAN
networking environment, the computer device 200 typically includes a modem or other
means for establishing communications over the WAN, such as the Internet. The modem, which may be internal or external, may be connected to the computer processor 202 via the
communication connections 212, or other appropriate mechanism. In a networked environment, program modules or portions thereof may be stored in the remote memory
storage device. By way of example, and not limitation, a remote application programs may reside on memory device connected to the remote computer system. It will be appreciated
that the network connections explained are exemplary and other means of establishing a communications link between the computers may be used.
[0034] An exemplary document application 300 having an expression editing tool 302 and a user interface 304 is shown in Fig. 3. The document application 300, in embodiments, comprises one or more software modules. In one embodiment, the
expression editing tool 302 comprises an expression assembly module 306, a manual formatting module 322, an alignment point selection module 310, a movement
determination module 314, and an expression movement module 316. The user interface
304 is operable to display information to a user and receive inputs from the user. In
embodiments, the user interface 304 receives inputs for the expressions 308, a manual
break, and/or alignment point 320, the selection of an alignment point 312, and displays
the aligned expressions 318.
[0035] In embodiments, the expression assembly module 306 receives expression input
308 from the user interface 304. The expression input 308 comprises a series of elements
for a set of expressions. As the elements are input, by, for example, a mouse or keyboard, the expression assembly module 306 assembles the expressions, element by element, into finished expressions. In one embodiment, the expressions each comprise a completed
mathematical formula or mathematical statement that occupies at least one separate line in the document. In other words, a shorter expression is displayed on one line of the
document and no other expression is displayed with the expression on that single line of
the document. If the expression is longer, the expression may occupy two or more lines,
but regardless, no other expression is displayed with the longer expression on any line for
which that longer expression occupies. The expression assembly module 306 assembles
each expression in the plurality or the set of expressions in similar fashion until the user stops providing expression input 308. The set of expressions is provided to the manual formatting module 322.
[0036] The manual formatting module 322 receives manual break insertions for one or more expressions. A manual break is a user input that identifies how to separate the expression between two elements. For example, the user places a carriage return between two elements in the expression. Each expression may have one or more manual breaks.
The user identifies one or more elements within an expression to insert the one or more manual breaks. The user continues through each expression until possibly every expression in the set of expressions has a manual break. After inserting the manual break,
the user, in embodiments, also provides an alignment point for the broken part of the
expression. In other words, a second portion of the expression, which is positioned on a
second line of the document, has an element that is aligned with an element in a first
portion of the expression. If the expression has more than one manual break, the user may
align an element in a third portion with an element in a first portion, a second portion, or
both a first portion and second portion of the expression. Thus, each broken expression
can be aligned in a certain manner. In one embodiment, the user provides no manual breaks as is represented by the dotted line forming the manual formatting module 322 and the manual break input 320. The manual formatted expressions are provided to the
alignment point selection module 310.
[0037] The alignment point selection module 310 identifies anchor points for the
plurality of expressions. In one embodiment, the user selects the anchor point 312 with the user interface 304, and provides the anchor point selection to the alignment point selection
module 310. For example, the user highlights an equals sign and then selects a user interface control, such as menu item 140 (Fig. 1), to input the equals sign as the anchor
point. In another embodiment, the alignment point selection module 310 automatically selects the anchor point. For example, the alignment point selection module 310 scans and
compares each expression in the set of expressions to find one or more elements that are common to all expressions. If one element is common to all expressions, the alignment point selection module 310 identifies that element as the anchor point. However, if two or more elements are common to all expressions, the alignment point selection module 310 may identify the first common element presented in the first expression of the set of
expressions. Further, the alignment point selection module 310 also identifies the alignment point for each expression. Li embodiments, the common element is identified
as the alignment point. One skilled in the art will recognize other methods and systems for identifying the anchor point and the alignment that are included within the scope of the
present embodiments. The alignment point selection module 310 provides the
expressions, the identified anchor points, and the alignment points to the movement
determination module 314.
[0038] The movement determination module 314 determines the direction and distance
of any horizontal movement for one or more expressions to effectuate the alignment of all
expressions, hi other words, the movement determination module 314 determines a required indention for each expression to provide that the alignment point of each expression as the same horizontal position as the anchor point. In embodiments, the movement determination module 314 allows each expression to have limitless horizontal
space and cross either margin. Then, the movement determination module 314 aligns the
first expression at the top of the set of expressions with a first margin, e.g., the left margin.
The position of the anchor point in the first expression is then determined. The movement
determination module 314 then calculates, for each subsequent expression, the direction and distance of indention or movement to align the alignment point of that expression with
the position of the anchor point of the first expression. In another embodiment, the
direction and distance of movement for each expression is determined based on the alignment point of the expression immediately above it. Thus, the calculation of the amount of movement for each expression is necessarily related to the first expression by a
cascading series of alignment steps. In other embodiments, if the alignment of the expressions and the associated manual formatting will generate an unreadable or illogical expression, any manual formatting is cancelled. The direction and distance determination
for each expression and the expressions are then provided to the expression movement module 316.
[0039] In further embodiments, after alignment, the movement determination module
314 no longer allows each expression to have limitless horizontal space and determines if
one or more expressions or portions of an expression is too long to be displayed in the
width of the document. The movement determination module 314, in embodiments,
automatically identifies and applies one or more breaks. For example, the movement
determination module 314 searches the expression, near the second margin, for a certain
type of element, such as a space, an operator, or other type of element. Upon finding the
certain type of element, the movement determination module 314 inserts the break in front of the element. In embodiments, the movement determination module 314 then determines on which side of the anchor point, in the first expression, the broken portion of
the expression belongs. An indent is calculated such that the broken part of the expression
remains on the appropriate side of the anchor point. In another embodiment, the broken
portion of the expression is aligned according to some default formatting, e.g., left align or right align. The breaks and indentions for the broken portions are sent to the expression
movement module 316.
[0040] The expression movement module 316 moves each expression according to the
direction and distance calculated for each expression. Upon moving one or more expressions, the aligned expressions 318 are provided and presented to the user in the user
interface 304.
[0041] To further illustrate how the expressions are formatted, some exemplary user interfaces showing different types of alignment are shown in Fig. 4A, Fig. 4B, and Fig. 4C. A first exemplary embodiment of an alignment 400 is shown in Fig. 4A. Here, two
expressions 402 and 404 are being aligned. The first expression 402 is first moved to abut with a first margin 406. The anchor point 407 is the equals sign. The position 410 of the equals sign is determined for the first expression 402. Then, a determination of the
direction and distance for a movement or indention is determined that will align the
alignment point 409 in the second expression 404 with the position 410. The indention
required is determined to be for a distance 412. Since the direction of the movement is to
the right of the first margin 406, the direction of movement is "positive." As such, the
required movement for the second expression 404 is a "positive indention" equal to the
distance 412. Upon moving the second expression 404 the positive indention, both
expressions 402 and 404 are aligned.
[0042] A second exemplary embodiment of an alignment 414 is shown in Fig. 4B. In the embodiment in Fig. 4B, the alignment is not completed to further enhance the description provided hereinafter. A first expression 416 and a second expression 418 are being aligned. Again, the first expression 416 is first moved to abut with a first margin 420. The
anchor point 421 and the alignment point 423 is the equals sign. The position 425 of the
equals sign is determined for the first expression 416. Then, a determination of the direction and distance for a movement or indention is determined that will align the
alignment point 423 of the second expression 418 with the position 425. The movement is determined to be for a distance 424. Since the required direction of the movement is from
the left of the first margin 420 as represented by the dashed bboxes, the direction of movement is considered "negative." As such, the required movement for the second
expression 418 is a "negative indention" equal to the distance 424. However, if only the second expression 418 is moved the negative indention, the alignment points 421 and 423 will not align. As such, both expressions 416 and 418 are moved an additional positive indention equal in length to the negative indention to maintain the alignment and ensure that the second expression 418 does not cross the first margin 420.
[0043] A third exemplary embodiment of an alignment 426 is shown in Fig. 4C. In the embodiment in Fig. 4C, the expressions 428 and 430 are being aligned in the center of the
document between the first margin 432 and the second margin 434. As such, the position
436 of the anchor point is known because the position 436 is halfway between the first
margin 432 and the second margin 434. The distance and direction of a movement 438 for
the first expression 428 is determined such that the alignment point 437 is centered over
the position 436. The same determination of the distance and direction of a movement 440
for the second expression 430 is made such that the alignment point 439 is centered over
the position 436. Then, both expressions 428 and 430 are moved to align the expressions
at the center of the document. One skilled in the art will recognize other types of alignments, such as right aligning the expressions according to the second margin, e.g. the right margin, left aligning the expressions according to the first margin, e.g., the left
margin, using the same techniques.
[0044] In a further embodiment, a user interface illustrating the identification and
application of an automatic break in an aligned expression is shown before the break and
after the break in Fig. 5A and Fig. 5B3 respectively. In embodiments, an automatic break
is applied during a formatting process where, after the alignment, a portion of an
expression crosses a margin, e.g., the right margin, and must be placed on the next line of
the document. The expression 502 is shown in the user interface view 500 after an alignment. In this exemplary embodiment, expression 502 was assembled between a first
margin 504 and a second margin 506. During alignment, the expression 502 was moved according to positive indention 508. The indention 508 caused a portion 510 of the expression 502 to cross the second margin 506. As such the portion 510 is in an area of the document that must be moved to ensure the portion 510 is both displayed and/or printed correctly in the width of the document. Thus, a break is necessary.
[0045] In the user interface view 512 of Fig. 5B, the expression 502 is again shown but
after the break is completed. Here, the expression 502 maintains the alignment indention
508 and the expression's position between the first margin 504 and the second margin 506.
However, the portion 510 of the expression that crossed the second margin 506 in the first
view 500 is moved to a next line 513 of the document. In embodiments, a break point is
identified. Certain portions in an expression are easier to move than other elements. For
example, a portion of an expression that follows an operator, such as portion 510, may be
easier to move than a portion of a parenthetical expression, such as portion 511 in Fig. IA.
As such, an element that can be used as a breaking point is identified. In the embodiment
illustrated in Fig. IA and Fig. IB, the expression 502 has an operator 526 that can be used as the breaking point. In embodiments, a formatting instruction, such as a carriage return, is placed in front of the break point, and the portion after the formatting instruction is
moved to a next line of the document.
[0046] In embodiments, to ensure the expression 502 maintains "meaning," i.e., the formatting of the expression does not alter or appear to alter the expression, an indention
518 is calculated for the portion 510. The indention 518, in embodiments, has two
components. First, a break indention 516 is determined. The break indention 516 is a direction and distance calculation required to align the first element 517 of the portion 510
with the first element 519 presented after the alignment point 520, of the portion of the expression 502 on the first line 522. In other words, the break indention is the distance
from the first edge of the first element 529 in the expression to the second edge of the alignment point 520. A second portion of the indention 518 is an alignment indention 514 that is equivalent to the alignment indention 508. The indentions 518 and 516 ensure the portion 510 maintains the proper position in the expression 502 to maintain the meaning of the expression. For instance, the portion 510 is not placed on the "wrong side" of the
equals sign. In other embodiments, the portion 510 is aligned according to default formatting. For example, the portion 510 is aligned with the second margin 506.
[0047] In a further embodiment, a user interface 1000 illustrating the application and
maintenance of a manual break in an aligned expression is shown before the manual break
in Fig. 1OA, after the manual break Fig. 1OB, after an alignment in Fig. 1OC, and after an
automatic break in Fig. 10D. The expression 1002 is shown in the user interface view
1000 before any manual formatting. In this exemplary embodiment, expression 1002 was
assembled between a first margin 1004 and a second margin 1006.
[0048] In the user interface view of Fig. 1OB, the expression 1002 is again shown but
after the manual break is completed. Here, the expression 1002 has a first portion 1008 on a first line and a second portion 1010 on a second line. In addition to the manual break, the user also provided an alignment for the broken portion 1010. Here, element 1012 in
the second or broken portion 1010 is aligned to element 1014 of the first portion 1008.
Thus, the second portion 1010 is aligned to dashed line 1018. In embodiments, to effectuate the alignment, an indention, such as indention 1020, is calculated from the first
element 1022 of the first portion 1008. It should be noted that each line of the expression
is considered to have limitless length during the alignment.
[0049] The user interface view in Fig. 1OC shows the same expression 1002 after an alignment with one or more other expressions (not shown). In the exemplary embodiment,
an indention 1024 is applied to both the first portion 1008 and the second portion 1010 of
the expression 1002. Even after the alignment, the second portion 1010 maintains its alignment 1018 with the first portion 1008 by adding indention 1020 to indention 1008. The indentions 1024 maintain the alignment of the expression 1002 with the other expressions (not shown) in the set of expressions and the position of the first portion 1008 and the second portion 1010 between the first margin 1004 and the second margin 1006. However, a portion 1026 of the expression 1002 crossed the second margin 1006 and must
be moved to a next line of the document.
[0050] In embodiments, the lines are not considered to have limitless length after the alignment, and an automatic break point is identified. Certain portions in an expression
are easier to move than other elements. For example, a portion of an expression that
follows an operator, such as portion 1028, may be easier to move than a portion of a
parenthetical expression, such as portion 1030 in Fig. 1OA. As such, an element that can
be used as an automatic breaking point is identified. In the embodiment illustrated in Fig.
1OC, the expression 1002 has an operator 1032 that can be used as the automatic breaking
point. In embodiments, a formatting instruction, such as a carriage return, is placed in front of the break point 1032, and the portion 1028 after the formatting instruction is moved to a next line of the document.
[0051] The expression 1002 is shown in another user interface view after applying the
automatic break in Fig. 10D. In embodiments, to ensure the expression 1002 maintains
"meaning," i.e., the formatting of the expression does not alter or appear to alter the
expression 1002, an indention is calculated for the portion 1028. The indention, in
embodiments, has two components. First, a break indention is determined. The break
indention is a direction and distance calculation required to align the first element 1032 of the portion 1010 with the another element, such as element 1014 the portion of the expression 1008 on the first line. In other words, the break indention is the distance from
the first edge of the first element 1022 in the expression 1002 to the first edge of the first element 1032. A second portion of the indention is an alignment indention that is equivalent to the alignment indention 1024. The indentions ensure the portion 1028 maintains the proper position in the expression 1002 to maintain the meaning of the
expression. For instance, the portion 1010 is not placed on the "wrong side" of the equals sign. In other embodiments, the portion 1028 is aligned according to default formatting, as is shown in Fig. 10D. For example, the portion 1028 is aligned with the second margin 1006.
[0052] An exemplary method 900 for formatting expressions in a document is shown in
Fig. 9. Receive operation 901 receives inputs to form a plurality of expressions. In one
embodiment, a user provides expression inputs, such as input 308 (Fig. 3), from a user
interface, such as user interface 304 (Fig. 3). The expression input may comprise two or
more elements for each expression. The element inputs form a set of expressions wherein each expression exclusively occupies one or more lines of the document. Format operation 902 formats the expressions such that each expression has limitless length and
occupies only one line in the document, regardless of the width of the document.
[0053] Optionally, execute operation 904 receives and executes at least one manual
break. In embodiments, a user provides a manual break, such as manual break input 320
(Fig. 3), into a user interface. In one embodiment, the user enters a carriage return in front
of an element of the expression. By entering the manual break, the portion of the expression after the manual break is positioned on the next line of the document.
Optionally, in embodiments, align operation 906 receives an alignment point from the
user, such as alignment point 320, and aligns an element of the broken portion of the expression with an element in the first portion of the expression, as is explained in conjunction with Fig. 1OA and Fig. 1OB. Optionally, if an element of the broken portion is aligned with an element of the first portion, calculate operation 908 calculates an indent for the broken portion relative to the first portion, as explained in conjunction with Fig. 1OA, Fig. 1OB, and Fig. 1OC. In embodiments, each line of the expression is then
considered to have limitless length.
[0054] Determine operation 910 receives an anchor point for the two or more
expressions, an alignment point for each expression, and determines indentions relative to
both the anchor point and the alignment points. In embodiments, a distance and direction
of movement is determined to align the alignment point with the anchor point for each
expression, as explained in conjunction with Fig. 4A, Fig. 4B, and Fig. 4C. The distance
and direction of movement forms an indention. Apply operation 912 applies the
determined indentions to the two or more expressions and provides aligned expressions.
[0055] Determine operation 914 determines if any portion of an expression crosses a
margin, e.g., the right margin. If a portion of an expression crosses a margin, the flow branches YES to determine operation 916. If no portion of any expression crosses a margin, the flow branches NO to provide the aligned and formatted expressions.
Determine operation 916 determines a break point for an automatic break. If no break
point can be determined, i.e., the automatic break in conjunction with any manual
formatting will make the expression unreadable, indiscernible, or confusing, the manual
formatting may be cancelled. Once the break point is found, the broken portion of the
expression is moved to a next line in the document. Calculate operation 918 calculates an
indent for the broken portion. In one embodiment, an element of the broken portion is aligned with an element of the first portion of the expression. An indent relative to the
first portion is calculated, as explained in conjunction with Fig. 4A, Fig. 4B, and Fig. 4C. In another embodiment, the broken portion is aligned and indented according to some
default formatting. For example, the broken portion is right aligned with the right margin, as is explained in conjunction with Fig. 1OD. The flow then continues to apply operation 912 to apply the indentions.
[0056] An exemplary method 600 for aligning expressions in a document is shown in Fig. 6. Identify operation 602 identifies the anchor point for the plurality of expressions,
hi embodiments, the anchor point is an element in an expression. The anchor point may also be a horizontal position in the document, hi embodiments, the user identifies the
anchor point.
[0057] Identify operation 604 identifies the alignment point for each of the expressions.
In one embodiment, a user provides a designation of the alignment point, such as input 312
(fig. 3). In another embodiment, the alignment point is automatically identified or
determined. For example, an alignment point selection module, such as alignment point
selection module 310 (Fig. 3), scans and compares each expression to find one or more
elements that each expression has in common and selects the common element as the alignment point. The module may, when more than one element is common to all
expressions, select one of the common elements as an alignment point.
[0058] Change operation 606 changes the horizontal position of one or more expressions
such that the alignment point of each expression has the same horizontal position as the
anchor point. An exemplary embodiment of change operation 606 is described below with
reference to Fig. 7. In one embodiment, change operation 606 determines a distance and
direction for an indention for each expression. Then, change operation 606 moves or
indents each expression by the determined indention.
[0059] An exemplary embodiment of a method 700 for changing the alignment of a plurality of expressions is shown in Fig. 7. First, align operation 702 aligns the first expression with a first margin such that the first expression abuts the first margin.
Retrieve operation 704 retrieves the next expression. In embodiments, the method 700 assumes that each expression can cross any margin and has an unlimited length. Move operation 706 moves the retrieved expression such that the anchor point of the first expression and the alignment point of the retrieved expression have the same horizontal
position. In embodiments, the move operation 706 determines a direction and distance for an indention for the retrieved expression. Upon determining the indention, the expression
is moved the direction and distance of the indention. In embodiments, after the expression
is moved, the method 700 no longer assumes that the expression can cross the margins or
has an unlimited length.
[0060] Determine operation 708 determines if a portion of the retrieved expression
crosses a first margin, e.g., the left margin. If a portion of the retrieved expression has not
crossed the first margin, the flow branches NO to determine operation 712. However, if a
portion of the retrieved expression has crossed a first margin, the flow branches YES to calculate operation 710. Calculate operation 710 calculates an amount of negative indention for the retrieved expression. The amount of negative indention is recorded, such
as in a memory array.
[0061] Determine operation 712 determines if the expression is the last expression in the
present set of expressions. If the retrieved expression is not the last expression in the set
of expressions, the flow branches NO back to retrieve operation 704. If the retrieved
expression was the last expression in the set of expressions, the flow branches YES to
determine operation 714. Determine operation 714 determines the largest negative indention recorded by calculate operation 710. Upon identifying the largest negative
indention, indention operation 716 indents all expressions in the set of expressions by a positive indention equal to the largest negative indention. As such, all expressions are
aligned and no expression crosses the first margin.
[0062] An exemplary embodiment of a method 800 for forcing an automatic break in an aligned expression is shown in Fig. 8. In embodiments, identify operation 802 identifies an expression where a portion of the expression crosses a second margin, e.g., the right margin, as is shown in and described in conjunction with Fig. 5A. Determine operation
804 determines the amount of automatic break indention. The automatic break indention is the distance between the first element in the expression and the first element after the
alignment point. In embodiments, determine operation 806 also determines the amount of
alignment indention. The alignment indention is the distance from the first margin, e.g.,
the left margin, and the first element in the expression. The alignment indention includes
any positive and negative indention applied to the expression during the alignment
process. Calculate operation 808 calculates the total indention for any portion that crosses
the second margin by combining the break indention and the alignment indention.
[0063] Move operation 810 moves the portion of the expression that crosses the second margin to the next line of the document, hi embodiments, move operation 810 moves any expression or other element already occupying the next line before moving the portion of
the expression. Thus, only the moved portion of the expression occupies the next line after
the move. Move operation 812 then moves the portion of the expression on the next line by the total indention. In this way, the broken portion of the expression is correctly
positioned in the expression to maintain the meaning of the expression.
[0064] Determine operation 814 determines if any other portion of the expression still
crosses the second margin. In other words, determine operation 814 evaluates very long
expressions to determine, if after an automatic break, the expression is still long enough to cross the second margin. If the expression is long enough to cross the second margin again, the flow branches YES to move operation 810. If the expression does not still cross
the second margin, the flow branches NO to termination.
[0065] In further aspects of the invention, a system for aligning mathematical expressions in a document comprises a mathematical expression assembly module that accepts mathematical expression inputs and forms a plurality of mathematical expressions from the inputs; an alignment point selection module that identifies an alignment point for
the plurality of mathematical expressions and an anchor point for at least one mathematical expressions; a movement determination module that calculates an amount of indention for
one or more mathematical expressions; and a mathematical expression movement module
that changes the horizontal position of one or more mathematical expressions by the
amount of indention such that the alignment point of each mathematical expression has the
same horizontal position, determines if one or more expressions crosses a second margin,
and inserts a break in any mathematical expression that crosses a second margin. Further,
the movement determination module may repeat the above steps for one or more other
mathematical expressions, determine the largest amount of negative indention from the recorded negative indentions, and move all mathematical expressions by an additional positive indention, equal to the largest negative indention. In further embodiments, the
alignment point selection module receives an alignment point designation from a user. In addition, the movement determination module can determine a position for the alignment
point of a first mathematical expression and determine an amount of indention for another
mathematical expression. The movement determination module, in other embodiments,
determines if a portion of a mathematical expression crosses a first margin, calculates an
amount of negative indention to prevent the portion from crossing the first margin, and records the negative indention.
[0066] Although the present invention has been described in language specific to structural features, methodological acts, and computer readable media containing such
acts, it is to be understood that the present invention defined in the appended claims is not necessarily limited to the specific structure, acts, or media described. One skilled in the art will recognize other embodiments or improvements that are within the scope and spirit of the present disclosure. Therefore, the specific structure, acts, or media are disclosed as exemplary embodiments. The invention is defined by the appended claims.

Claims

ClaimsWhat is claimed is:
1. A computer program product encoding a computer program of instructions for
executing a computer implemented method for formatting a plurality of mathematical
expressions that occupy one or more lines in a document, the method comprising:
inserting a break into one or more mathematical expressions such that each
mathematical expression fits between a first margin and a second margin of the document;
identifying an anchor point for all lines; identifying an alignment point for each line of each mathematical expression; and changing the horizontal position of at least one line such that the alignment point of
the line and the anchor point for the line have the same horizontal position.
2. A method as defined in claim 1, wherein one or more breaks are manual breaks.
3. A method as defined in claim 1, wherein one or more breaks are automatic breaks.
4. A method as defined in claim 1, wherein the anchor point is located relative to an element in a mathematical expression.
5. A method as defined in claim 1 , wherein the anchor point is located relative to at least one margin.
6. A method as defined in claim 5, wherein the anchor point is left aligned relative to the
first margin, right aligned relative to the second margin, or center aligned between the first
margin and the second margin.
7. A method as defined in claim 6, wherein the anchor point is also aligned according to a user-specified indent.
8. A method as defined in claim 1, wherein a user interface displays a first portion of a
mathematical expression on a first line and a second portion of a mathematical expression on a second line, and wherein the second portion is aligned to the first portion or another
portion of another mathematical expression.
9. In a computer system, an method for formatting a plurality mathematical expressions
that occupy one or more lines in a document, comprising:
aligning the plurality of mathematical expressions, comprising:
identifying an anchor point for all mathematical expressions;
identifying an alignment point for each line; determining a horizontal indent for at least one line such that the alignment
point of the line and the anchor point have the same horizontal position; inserting the horizontal indent into the line;
wherein, during alignment, each line has limitless horizontal space; breaking one or more lines of one or more mathematical expressions, comprising: determining if one or more lines crosses a margin; and if a line crosses a margin, inserting an automatic break into the line to break the line into one or more lines such that each line fits within the margins of the document.
10. A method as defined in claim 9, wherein determining the horizontal indent comprises: determining a largest negative indent; and
applying an additional positive indent, equal in length to the largest negative
indent, to all lines.
11. A method as defined in claim 9, wherein, during aligning, a manual break is inserted
into one or more mathematical expressions such that the one or more mathematical
expressions occupies one or more lines.
12. A method as defined in claim 9, wherein breaking further comprises:
after a line is broken into one or more new lines, determining an alignment point and an anchor point for each of the new lines; determining a horizontal indent for each new line such that the alignment point of the new line and the anchor point for the line have the same horizontal position; and
inserting the horizontal indent into each new line.
13. A method as defined in claim 9, wherein the anchor point is located relative to at
least one margin.
14. A method as defined in claim 13, wherein anchor point is left aligned relative to the
first margin, right aligned relative to the second margin, or center aligned between the first
margin and the second margin.
15. A method as defined in claim 9, wherein a user interface displays a first portion of a mathematical expression on a first line and a second portion of a mathematical expression on a second line, and wherein the second portion is aligned to the first portion or another
portion of another mathematical expression.
16. A method as defined in claim 9, wherein the anchor point is located relative to an element in a mathematical expression.
17. In a computer system having a graphical user interface including a display and a
user interface selection device, a method of maintaining a manual break in an aligned
document, comprising: receiving the manual break in a first mathematical expression to create a first
portion and a broken portion:
placing the broken portion on a next line of the document relative to the first
portion of the document;
aligning the first mathematical expression with another mathematical expression
such that the first portion of the first mathematical expression changes position; and moving the broken portion to maintain the position of the broken portion relative to the first portion.
18. A method as defined in claim 17, wherein moving the broken portion comprises:
determining an amount of a break indention from an alignment point to a first
element in the broken portion; determining an amount of an alignment indention applied during an alignment of
the first mathematical expression; combining the break indention and the alignment indention to generate a total
indention; and
applying the total indention to the broken portion.
19. A method as defined in claim 17, further comprising: determining if the first portion or the broken portion crosses a second margin; and if the first portion or the broken portion crosses the second margin, inserting an
automatic break into the first portion or the broken portion to move a third portion to a new line.
20. A method as defined in claim 19, wherein moving the third portion comprises:
determining an amount of a break indention from an alignment point to a first element in the third portion;
determining an amount of an alignment indention applied during an alignment of the first mathematical expression;
combining the break indention and the alignment indention to generate a total
indention; and
applying the total indention to the third portion.
PCT/US2006/025684 2005-07-15 2006-06-30 Alignment and breaking of mathematical expressions in documents WO2007011518A2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US11/182,628 US8020091B2 (en) 2005-07-15 2005-07-15 Alignment and breaking of mathematical expressions in documents
US11/182,628 2005-07-15

Publications (2)

Publication Number Publication Date
WO2007011518A2 true WO2007011518A2 (en) 2007-01-25
WO2007011518A3 WO2007011518A3 (en) 2009-04-16

Family

ID=37663008

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2006/025684 WO2007011518A2 (en) 2005-07-15 2006-06-30 Alignment and breaking of mathematical expressions in documents

Country Status (2)

Country Link
US (1) US8020091B2 (en)
WO (1) WO2007011518A2 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020091B2 (en) 2005-07-15 2011-09-13 Microsoft Corporation Alignment and breaking of mathematical expressions in documents

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8170289B1 (en) * 2005-09-21 2012-05-01 Google Inc. Hierarchical alignment of character sequences representing text of same source
US9032329B2 (en) * 2007-03-23 2015-05-12 Siemens Product Lifecycle Management Software Inc. System and method for dialog position management
US7849399B2 (en) * 2007-06-29 2010-12-07 Walter Hoffmann Method and system for tracking authorship of content in data
US20130305133A1 (en) * 2012-05-11 2013-11-14 Elia Freedman Interactive Notepad For Computing Equations in Context
US20140115447A1 (en) * 2012-10-22 2014-04-24 Apple Inc. Centering Mathematical Objects in Documents
CN104991945B (en) * 2015-07-10 2019-04-30 无锡天脉聚源传媒科技有限公司 A kind of method and apparatus of the abstract picture of display resource

Family Cites Families (56)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3946365A (en) * 1973-12-13 1976-03-23 Bantner John A Graphic symbol generator
US3976990A (en) * 1974-12-20 1976-08-24 Teletype Corporation Apparatus and method for offsetting selected characters of a character display
JP2756292B2 (en) * 1989-02-07 1998-05-25 キヤノン株式会社 Document output device
US5189633A (en) * 1990-01-12 1993-02-23 Bonadio Allan R Apparatus and method for interactively manipulating mathematical equations
US5067102A (en) * 1990-01-31 1991-11-19 Hewlett-Packard Company Method and apparatus for displaying and editing mathematical expressions in textbook format
US5251292A (en) * 1990-07-25 1993-10-05 Wordperfect Corporation Method and apparatus for an equation editor
US5321773A (en) * 1991-12-10 1994-06-14 Xerox Corporation Image recognition method using finite state networks
US5544262A (en) * 1992-04-07 1996-08-06 Apple Computer, Inc. Method and apparatus for processing graphically input equations
JP3111120B2 (en) * 1992-12-28 2000-11-20 シャープ株式会社 Formula display method
US5825999A (en) * 1993-12-28 1998-10-20 Victor Company Of Japan, Ltd. Minimum character region determining apparatus and method, character string generating apparatus for generating a character string according to the minimum character region determining method
JP2828592B2 (en) * 1994-02-28 1998-11-25 大日本スクリーン製造株式会社 Kerning treatment method
US5469538A (en) * 1994-03-02 1995-11-21 Mathsoft, Inc. Mathematical document editor and method performing live symbolic calculations for use with an electronic book
JP3354754B2 (en) * 1995-07-10 2002-12-09 大日本スクリーン製造株式会社 Kerning treatment method
JP3837759B2 (en) * 1995-07-31 2006-10-25 カシオ計算機株式会社 Electronic calculator
US5682158A (en) * 1995-09-13 1997-10-28 Apple Computer, Inc. Code converter with truncation processing
US5784071A (en) * 1995-09-13 1998-07-21 Apple Computer, Inc. Context-based code convertor
US5793381A (en) * 1995-09-13 1998-08-11 Apple Computer, Inc. Unicode converter
US5844555A (en) * 1996-06-20 1998-12-01 Mathsoft, Inc. Locking mechanism for live mathematical documents
US5803629A (en) * 1997-03-14 1998-09-08 Paul H. Neville Method and apparatus for automatic, shape-based character spacing
US6687404B1 (en) * 1997-06-20 2004-02-03 Xerox Corporation Automatic training of layout parameters in a 2D image model
JPH11259456A (en) 1998-03-12 1999-09-24 Toshiba Corp Document preparing device, formula converting method and storage medium
US6204782B1 (en) * 1998-09-25 2001-03-20 Apple Computer, Inc. Unicode conversion into multiple encodings
JP3975588B2 (en) * 1998-11-19 2007-09-12 カシオ計算機株式会社 Electronic device and storage medium
US6795838B1 (en) * 1999-02-05 2004-09-21 Nec Corporation Apparatus and method for transforming mathematical expression, and storage medium
JP3705065B2 (en) 1999-02-05 2005-10-12 日本電気株式会社 Formula processing system, formula processing method, and recording medium recording formula processing program
US6426751B1 (en) * 1999-04-01 2002-07-30 Adobe Systems Incorporated Font feature file processing
US6610106B1 (en) * 1999-08-27 2003-08-26 International Business Machines Corporation Expression editor
EP1109105A1 (en) * 1999-12-14 2001-06-20 Sun Microsystems, Inc. Inserting a data object into a text document
EP1126379A1 (en) * 2000-02-16 2001-08-22 Sun Microsystems, Inc. Conversion of directly assigned document format attributes
JP3917343B2 (en) * 2000-02-25 2007-05-23 株式会社東芝 Computer-readable recording medium having character code conversion method and character code conversion program recorded in multi-platform environment
US7055095B1 (en) * 2000-04-14 2006-05-30 Picsel Research Limited Systems and methods for digital document processing
US7356760B2 (en) * 2001-02-15 2008-04-08 Nbor Corporation System and method for editing an electronic document of text and graphic objects
JP4181310B2 (en) * 2001-03-07 2008-11-12 昌和 鈴木 Formula recognition apparatus and formula recognition method
US6829620B2 (en) * 2001-09-20 2004-12-07 International Business Machines Corporation Table-level unicode handling in a database engine
AU2003216329A1 (en) * 2002-02-15 2003-09-09 Mathsoft Engineering And Education, Inc. Linguistic support for a regognizer of mathematical expressions
US7036073B2 (en) * 2002-06-27 2006-04-25 Microsoft Corporation System and method for supporting non-native XML in native XML of a word-processor document
US7523394B2 (en) * 2002-06-28 2009-04-21 Microsoft Corporation Word-processing document stored in a single XML file that may be manipulated by applications that understand XML
JP2004070651A (en) * 2002-08-06 2004-03-04 Fujitsu Ten Ltd Electrical component control system and graphical user interface processing software structure
US20030056181A1 (en) * 2002-09-17 2003-03-20 Marathe Sharad M. System and method for displaying spreadsheet cell formulas in two dimensional mathematical notation
US20040117731A1 (en) * 2002-09-27 2004-06-17 Sergey Blyashov Automated report building system
US20040114258A1 (en) * 2002-12-17 2004-06-17 Harris Richard Alexander Device and method for combining dynamic mathematical expressions and other multimedia objects within a document
US7466958B2 (en) * 2003-02-10 2008-12-16 Educational Testing Service Equation editor
CA2426496A1 (en) * 2003-04-24 2004-10-24 Ibm Canada Limited - Ibm Canada Limitee Processing fixed-format data in a unicode environment
US20050041017A1 (en) * 2003-08-08 2005-02-24 De Brebisson Cyrille Function drawing in polar plan using a calculator
US7324931B1 (en) * 2003-11-17 2008-01-29 The Mathworks, Inc. Conversion of model components into references
US20060005115A1 (en) * 2004-06-30 2006-01-05 Steven Ritter Method for facilitating the entry of mathematical expressions
US20060001667A1 (en) * 2004-07-02 2006-01-05 Brown University Mathematical sketching
US7698638B2 (en) * 2004-09-15 2010-04-13 Microsoft Corporation Systems and methods for automated equation buildup
US20060190821A1 (en) * 2005-02-22 2006-08-24 Microsoft Corporation Programmable object model for mathematical expressions
US20060190474A1 (en) * 2005-02-22 2006-08-24 Microsoft Corporation Extensible markup language schema for mathematical expressions
US20060274070A1 (en) * 2005-04-19 2006-12-07 Herman Daniel L Techniques and workflows for computer graphics animation system
US7492366B2 (en) * 2005-05-13 2009-02-17 Microsoft Corporation Method and system of character placement in opentype fonts
US7636913B2 (en) * 2005-06-22 2009-12-22 Microsoft Corporation System and method for evaluating an expression in a debugger
US8020091B2 (en) 2005-07-15 2011-09-13 Microsoft Corporation Alignment and breaking of mathematical expressions in documents
US20070033524A1 (en) * 2005-08-02 2007-02-08 Microsoft Corporation Mapping codes for characters in mathematical expressions
US20080077854A1 (en) * 2006-09-25 2008-03-27 Kehinde Alabi Generation, documentation and presentation of mathematical equations and symbolic scientific expressions using pure html, css, and javascript

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
'A Guide to LaTeX', 19 June 1994 pages 1 - 21 *
'AMS Latex Version 1.2 User's Guide', January 1995, AMERICAN MATHEMATICAL SOCIETY pages II - 43 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8020091B2 (en) 2005-07-15 2011-09-13 Microsoft Corporation Alignment and breaking of mathematical expressions in documents

Also Published As

Publication number Publication date
WO2007011518A3 (en) 2009-04-16
US20070016859A1 (en) 2007-01-18
US8020091B2 (en) 2011-09-13

Similar Documents

Publication Publication Date Title
US7522176B2 (en) Dynamically generating mini-graphs to represent style and template icons
US7590944B2 (en) Scrollable and re-sizeable formula bar
US8020091B2 (en) Alignment and breaking of mathematical expressions in documents
US7870503B1 (en) Technique for analyzing and graphically displaying document order
KR101159334B1 (en) An improved user interface for displaying a gallery of formatting options applicable to a selected object
US20080222514A1 (en) Systems and Methods for Editing XML Documents
EP2458511A2 (en) System and method for integrating spreadsheets and word processing tables
KR20050036702A (en) User interface for creation and editing of variable data documents
KR20080094785A (en) Document overview scrollbar
EP1920356A2 (en) Designating, setting and discovering parameters for spreadsheet documents
EP2745194A2 (en) Progressive presentation of document markup
EP1126379A1 (en) Conversion of directly assigned document format attributes
JP4745726B2 (en) File management apparatus, control method therefor, computer program, and computer-readable storage medium
US10572578B2 (en) System and method for processing document
US20130019164A1 (en) System and method for processing document
US20020101450A1 (en) System and method for browsing properties of an electronic document
US10592593B2 (en) System and method for processing document
AU2016343938B2 (en) Method of computerized presentation of a legend of object symbols on a document
US7236979B2 (en) Menu-less system and method for interactively manipulating and reformatting data entered in a tabular format in a data processing application
KR100953586B1 (en) Word processor based method for electronically proofreading a document and a computer-readable recording medium containing programs for the same method
MXPA05008350A (en) An improved user interface for displaying a gallery of formatting options applicable to a selected object
EP2732367A1 (en) System and method for processing document
JP2008287504A (en) Document processor and method

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application
NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 06774383

Country of ref document: EP

Kind code of ref document: A2