Patent Publication Number: US-2023133730-A1

Title: Document data structure for linking a text editor with integrated editing tools

Description:
TECHNICAL FIELD 
     The present disclosure relates generally to data structures, and more particularly, to a document data structure for linking a text editor with integrated editing tools. 
     BACKGROUND 
     The process of generating an electronic document typically involves preparing a first draft of the document followed by multiple iterations of editing to generate a final version. Such editing may include rewriting sentences, moving sections of text to new positions within the document, reordering paragraphs, adding new sections of text to the document, and/or deleting sections of text from the document, among other actions. During the editing process, a user may store multiple copies/versions of the document, to help ensure that content is not lost through unintentional changes and/or that edits the user later wishes to reverse may be undone. The document editing process may consume not only a significant amount of user time, but also significant computational resources. For example, significant processing resources may be expended in locating and repositioning sections of text within a many-page document, and significant storage resources may be expended by saving multiple copies/versions of the document. 
     SUMMARY 
     This disclosure contemplates a document tool that is designed to facilitate computationally efficient electronic document preparation and revision. The tool is designed to generate a graphical user interface (GUI) that displays both a text editor and an editing tool that is linked to the text editor. Edits to a document may either be made directly in the text editor or through the linked editing tool, which may take the form of an outline tool, a sentence rewrite tool, or a sentence reorder tool. The outline tool may be used to efficiently organize the structure of the document according to a set of outline topics, and to reorder content within the document using those outline topics. The sentence rewrite tool may be used to generate multiple versions of the sentences within the document, and to select from amongst the multiple versions for inclusion within the document. The sentence reorder tool may be used to efficiently reorder the sentences within the document. Certain embodiments of the document tool are described below. 
     According to one embodiment, an apparatus includes a memory and a hardware processor communicatively coupled to the memory. The memory stores a data structure associated with a document. The document includes a plurality of strings of text. The data structure includes an array of data blocks. Each data block of the array of data blocks stores one or more strings of text of the plurality of strings of text. The hardware processor displays, in a first region of a graphical user interface, a sequence of elements. Each element of the sequence of elements is associated with one or more consecutive data blocks of the array of data blocks. The hardware processor also displays, in a second region of the graphical user interface, a sequence of parts. Each part of the sequence of parts corresponds to a data block of the sequence of data blocks and displays the one or more strings of text stored by the corresponding data block. A position of the part within the sequence of parts matches a position of the corresponding data block within the array of data blocks. The hardware processor additionally receives information identifying a modification associated with a first element of the sequence of elements displayed in the first region of the graphical user interface. The first element is associated with at least a first data block of the array of data blocks. A first part of the sequence of parts corresponds to the first data block, and the modification associated with the first element is associated with an equivalent modification associated with the first part of the sequence of parts. In response to receiving the information identifying the modification associated with the first element of the sequence of elements, the hardware processor updates the sequence of elements displayed in the first region of the graphical user interface according to the modification associated with the first element. The hardware processor also updates the sequence of parts displayed in the second region of the graphical user interface according to the equivalent modification associated with the first part. The hardware processor additionally converts the updated sequence of elements into an updated array of data blocks. The hardware processor further stores the updated array of data blocks in the memory as an updated version of the data structure. 
     According to another embodiment, an apparatus includes a memory and a hardware processor communicatively coupled to the memory. The memory stores a document that includes a sequence of parts. Each part of the sequence of parts includes one or more strings of text. The hardware processor displays a user interface on a display screen. The user interface includes a first region displaying a sequence of elements, and a second region displaying the sequence of parts. Each element of the sequence of elements corresponds to a part of the sequence of parts and is located at a position within the sequence of elements matching a position of the corresponding part within the sequence of parts. The hardware processor also receives information associated with a repositioning of a first element of the sequence of elements from a first position within the sequence of elements to a second position within the sequence of elements. The first element corresponds to a first part of the sequence of parts. In response to receiving the information associated with the repositioning of the first element, the hardware processor updates the sequence of elements displayed in the first region of the user interface by moving the first element from the first position within the sequence of elements to the second position within the sequence of elements. The hardware processor also updates the sequence of parts displayed in the second region of the user interface by moving the first part from a first position within the sequence of parts to a second position within the sequence of parts. The first position within the sequence of parts matches the first position within the sequence of elements. The second position within the sequence of parts matches the second position within the sequence of elements. 
     According to a further embodiment, an apparatus includes a memory and a hardware processor communicatively coupled to the memory. The memory stores a set of sentence blocks associated with a document. Each sentence block includes one or more sentence variants, and information identifying a selected sentence variant of the one or more sentence variants of the sentence block, wherein the document includes the selected sentence variant. The hardware processor displays a user interface on a display screen. The user interface includes a first region displaying a sequence of elements. Each element of the sequence of elements is associated with a sentence block of the set of sentence blocks and displays at least the selected sentence variant of the associated sentence block. The user interface also includes a second region displaying a plurality of sentences. Each sentence of the plurality of sentences displayed by the second region is assigned to a sentence block of the set of sentence blocks and corresponds to the selected sentence variant of the assigned sentence block. The hardware processor also receives information associated with a selection of at least one of a first element of the sequence of elements displayed in the first region, and a first sentence of the plurality of sentences displayed in the second region. The first element is associated with a first sentence block of the set of sentence blocks. The first sentence is assigned to the first sentence block. In response to receiving the information associated with the selection, the hardware processor updates the first region of the user interface. The updated first region displays the one or more sentence variants of the first sentence block, and an identification of the selected sentence variant of the first sentence block. The first sentence of the sequence of sentences corresponds to the selected sentence variant of the first sentence block. The hardware processor additionally receives information identifying a new selected sentence variant of the one or more sentence variants of the first sentence block that is different from the selected sentence variant. In response to receiving the information identifying the new sentence variant, the hardware processor updates the first sentence displayed in the second region. The updated first sentence corresponds to the new selected sentence variant. 
     The system described in the present disclosure may be integrated into a practical application of an improved text editor for use in generating documents in a computationally efficient manner. In particular, by providing a user with two views of a document, either of which may be used to edit the content within the document, certain embodiments reduce the computational resources expended in the document creation and editing process, as compared with existing text editors. As a specific example, an embodiment conserves processing resources by enabling a user to reorder content within a multi-page document simply by reordering a set of outline topics according to which the document content is organized. In certain embodiments, these outline topics are not part of the actual content of the document, but rather are used for organizational purposes within the system, to increase the efficiency of the document editing process. As another specific example, an embodiment conserves storage resources by enabling a user to store multiple versions of one or more sentences within the document, rather than storing multiple versions of the entire document. As a further example, an embodiment conserves storage and processing resources by enabling a user to store multiple versions of one or more sentences within the document and to easily switch between displaying the various sentence versions within the content of the document, rather than entering and storing those multiple versions in a separate document and then navigating between the documents, copying sentence versions from one document and pasting them into the other. In certain embodiments, documents created using the system may be exported in a variety of different formats, providing compatibility with existing software applications. 
     The system described in the present disclosure may also be integrated into a practical application of a collaborative text editor that may be used by a team of individuals editing a document. This may enable multiple members of the team to simultaneously edit the document, by proposing sentence variants for the sentences of the document. These proposed sentence variants may then be viewed in real time by the other members of the team. By enabling multiple team members to simultaneously edit the same document, certain embodiments conserve storage resources as compared with existing text editing applications, which lock a document while a first user is editing it, such that a second user seeking to edit the document may need to generate and store a copy of it, and to make edits to the copy. Such embodiments further conserve the processing resources associated with merging any changes the second user makes to the copy of the document with those changes made by the first user to the original document. 
     The system described in the present disclosure may further be integrated into a practical application of an improved graphical user interface for use in creating and editing documents. In particular, certain embodiments of the GUI enable the user to create, view, and/or edit the structure of the document on a first portion of the GUI displayed next to a second portion of the GUI on which the full document text may be displayed. In this manner, certain embodiments enable the user to easily view the structure of a document, and to make intuitive edits to the document, based on its structure. As an example, in certain embodiments, the GUI may be used to structure the document according to a set of outline topics, which are not part of the actual content of the document, but rather are used for organizational purposes within the GUI. A user may interact with an outline topic, as displayed within the first portion of the GUI, to view and/or edit the portion of the document associated with that outline topic. In this manner, certain embodiments enable a user to easily identify parts of a document and/or to apply structural edits to the document, without having to scroll through (potentially) multiple pages of document content, as displayed in the second portion of the GUI. As another example, in certain embodiments, the system is configured to identify individual sentences within a document and to display each sentence as a separate element within the first portion of the GUI. The user may then use the first portion of the GUI to easily reorder the sentences within the document, and/or to easily identify and direct his/her focus to an individual sentence within the document for editing purposes. 
     Certain embodiments provide one or more technical advantages. As an example, an embodiment conserves processing resources by enabling a user to reorder content within a multi-page document simply by reordering a set of outline topics according to which the document content is organized. As another example, an embodiment conserves storage resources by enabling a user to store multiple versions of one or more sentences within the document, rather than storing multiple versions of the entire document. As another example, an embodiment applies one or more machine learning algorithms to sentences within a document, to generate proposals of simplified and/or otherwise improved versions of the original sentences. The user may then choose to replace one or more of the sentences within the document with the proposals. As another example, an embodiment enables a user to import a document generated using an existing text editor application into the system. For instance, certain embodiments are configured to identify traditional headings within an existing document and to generate outline topics for use within the system, based on the identified headings. Some embodiments apply one or more machine learning algorithms to an existing document, to import the document into the system. In particular, certain such embodiments use the machine learning algorithm(s) to automatically generate a set of outline topics for an existing document and to organize the content of the document according to that set of outline topics. As another example, an embodiment enables a user to export a document into a variety of different file formats, thereby providing compatibility with existing software applications. As a further example, an embodiment enables multiple users to simultaneously propose edits to a document at the same time, and to view the edits proposed by one another in real time. In particular, the sentence rewrite tool of the embodiment enables multiple users to generate sentence variants for the sentences of the document, which the other users may view using the tool. 
     Certain embodiments may include none, some, or all of the above technical advantages. One or more other technical advantages may be readily apparent to one skilled in the art from the figures, descriptions, and claims included herein. 
    
    
     
       BRIEF DESCRIPTION OF THE DRAWINGS 
       For a more complete understanding of the present disclosure, reference is now made to the following description, taken in conjunction with the accompanying drawings, in which: 
         FIG.  1    illustrates an example document editing system; 
         FIG.  2    illustrates an example graphical user interface generated by the document tool of the system of  FIG.  1    and displaying a text editor and an integrated editing tool; 
         FIG.  3 A  illustrates the graphical user interface generated by the document tool of the system of  FIG.  1    displaying the text editor and the integrated editing tool in the form of an outline tool; 
         FIGS.  3 B through  3 E  present an example illustrating the use of the integrated outline tool displayed in  FIG.  3 A  to organize the contents of a document according to a set of outline topics; 
         FIGS.  4 A and  4 B  present an example illustrating the use of the outline tool of  FIG.  3 A  to reorganize the contents of a document, by reordering the outline topics within the document; 
         FIGS.  5 A through  5 C  present another example illustrating the use of the integrated outline tool of  FIG.  3 A  to reorganize the contents of a document, by moving portions of the document from one outline topic to another; 
         FIG.  6    presents a flowchart illustrating an example method by which the outline tool displayed in  FIG.  3 A  may be used to organize the contents of a document; 
         FIG.  7 A  illustrates the graphical user interface generated by the document tool of the system of  FIG.  1    displaying the text editor and the integrated editing tool in the form of a sentence rewrite tool; 
         FIG.  7 B through  7 D  present an example illustrating the use of the integrated sentence rewrite tool displayed in  FIG.  7 A  to generate and select from amongst sentence variants for sentences of a document; 
         FIG.  8    presents a flowchart illustrating an example method by which the sentence rewrite tool displayed in  FIG.  7 A  may be used to generate and select from amongst sentence variants for sentences of a document; 
         FIG.  9 A  illustrates the graphical user interface generated by the document tool of the system of  FIG.  1    displaying the text editor and the integrated editing tool in the form of a sentence reorder tool; 
         FIGS.  9 B through  9 D  present an example illustrating the use of the integrated sentence reorder tool displayed in  FIG.  9 A  to create a new paragraph within a document and to move a sentence into the new paragraph; 
         FIGS.  10 A and  10 B  present an example illustrating the use of the integrated sentence reorder tool displayed in  FIG.  9 A  to move a sentence from one paragraph of the document into another paragraph; 
         FIG.  11    presents a flowchart illustrating an example method by which the sentence reorder tool displayed in  FIG.  9 A  may be used to reorder sentences within a document; 
         FIGS.  12 A and  12 B  illustrate a publishing view of a document as displayed by the graphical user interface generated by the document tool of the system of  FIG.  1   ; 
         FIG.  13    illustrates the graphical user interface generated by the document tool of the system of  FIG.  1    displaying the text editor in a document creation mode; 
         FIG.  14    illustrates an example of various customizable settings offered by the graphical user interface generated by the document tool of the system of  FIG.  1   ; 
         FIG.  15    illustrates a version control feature offered by the document tool of the system of  FIG.  1   ; 
         FIG.  16    illustrates an example document data structure generated by the document tool of the system of  FIG.  1   ; 
         FIG.  17    presents a flowchart illustrating an example method by which the document tool of the system of  FIG.  1    uses the document data structure of  FIG.  16    to link the text editor and outline tool of  FIG.  3 A ; 
         FIG.  18    presents a flowchart illustrating an example method by which the document tool of the system of  FIG.  1    uses the document data structure of  FIG.  16    to link the text editor and sentence rewrite tool of  FIG.  7 A ; and 
         FIG.  19    presents a flowchart illustrating an example method by which the document tool of the system of  FIG.  1    uses the document data structure of  FIG.  16    to link the text editor and sentence reorder tool of  FIG.  9 A . 
     
    
    
     DETAILED DESCRIPTION 
     Embodiments of the present disclosure and its advantages may be understood by referring to  FIGS.  1  through  19    of the drawings, like numerals being used for like and corresponding parts of the various drawings. 
     I. System Overview 
       FIG.  1    illustrates an example system  100  that includes user(s)  104 , device(s)  106 , network  116 , first database  118 , second database  124 , and document tool  102 . Generally, user  104  uses document tool  102  to create and/or edit documents  120 . In certain embodiments, user  104  may use document tool  102  to create and/or edit multiple versions  122  of documents  120 . In particular, in response to receiving a request  134  from a user  104  seeking to create and/or edit a document  120 , document tool  102  generates graphical user interface (GUI)  110  and displays GUI  110  on display  108  of device  106 . GUI  110  is configured to display both a text editor  112  and an editing tool  114  that is linked to text editor  112 , such that changes made by user  104  to document  120  through editing tool  114  are also reflected in the document content displayed by text editor  112 . Similarly, changes made by user  104  to document  120  through text editor  112  may be reflected in the document content displayed by editing tool  114 . As an example, in certain embodiments, editing tool  114  may be used to organize the document according to a set of outline topics and to reorder the document content using these outline topics. As another example, in certain embodiments, editing tool  114  may be used to generate multiple versions for one or more document sentences, and to select from amongst the various sentence versions for inclusion within the document. As a further example, in certain embodiments, editing tool  114  may be used to display each document sentence as a separate element and to reorder these sentence elements within the document. The linking between text editor  112  and editing tool  114  may be accomplished through the use of a document data structure that stores the contents of a given document  120 . Further details of the manner by which the document data structure may be used to represent a given document  120 , and the manner by which document tool  102  uses the data structure to link text editor  112  and editing tool  114  are presented below, in the discussion of  FIGS.  16  through  19   . 
     Document tool  102  may be configured to generate any number of editing tools  114  that may be used by a user  104 , in conjunction with text editor  112 , to create and/or edit a document  120 . As an example, in certain embodiments, editing tool  114  may take the form of an outline tool, which user  104  may use to plan and organize the structure of document  120 . Further details of the use of the outline tool are presented below, and in the discussion of  FIGS.  3 A through  6   . As another example, in certain embodiments, editing tool  114  may take the form of a sentence rewrite tool, which user  104  may use to revise and/or rewrite the sentences of a given document  120 . Further details of the use of the sentence rewrite tool are presented below, and in the discussion of  FIGS.  7 A through  8   . As a further example, in certain embodiments, editing tool  114  may take the form of a sentence reorder tool, which user  104  may use to reorder the sentences of a given document  120 . Further details of the use of the sentence reorder tool are presented below, and in the discussion of  FIGS.  9 A through  11   . 
     Devices  106  are used by users  104  to display GUI  110  and to create and/or edit documents  120  using text editor  112  and editing tool  114  of GUI  110 . In certain embodiments, and as illustrated in  FIG.  1   , devices  106  are used by users  104 , located on network  116 , to create and/or edit documents  120  by communicating (through requests  134  transmitted using GUI  110  and responses  136 ) with document tool  102  over network  116 . In some embodiments in which processor  128  and memory  130  of document tool  102  correspond to a processor and memory of device  106 , device  106  may be used by user  104  to create and/or edit documents  120  regardless of whether device  106  is connected to a network  116 . 
     Devices  106  include any appropriate device for displaying GUI  110 , through which user  104  may interact to create and/or edit a document  120 . In certain embodiments, devices  106  may display GUI  110  in a web browser. For example, user  104  may use device  106  to open a web browser and to navigate to a website hosted by document tool  102  and designed to present GUI  110  to user  104  as a web application. In some embodiments, devices  106  may display GUI  110  in a window generated by document tool  102 . For example, in embodiments in which document tool  102  corresponds to an application installed on device  106  (such that processor  128  and memory  130  of document tool  102  correspond to a processor and memory of device  106 ) user  104  may use device  106  to launch the application corresponding to document tool  102 , resulting in the tool generating a window displaying GUI  110  on display  108  of device. 
     Device  106  may correspond to any suitable display device with which user  104  may interact to generate a document  120  including, for example, a mobile phone, a computer, a laptop, a wireless or cellular telephone, a tablet, a server, an IoT device, and/or an automated assistant, or any other suitable device that includes and/or is coupled with a display  108  on which document tool  102  may display GUI  110 . In certain embodiments, device  106  may also include a keyboard, keypad, or other appropriate terminal equipment usable by user  104  to interact with GUI  110  to create and/or edit a document  120 . In some embodiments, devices  106  may be configured for sending and receiving information (e.g., requests  134  and responses  136 ) over network  116 . In certain embodiments, an application executed by a processor of device  106  may perform the functions described herein. 
     Network  116  facilitates communication between and amongst the various components of system  100 . This disclosure contemplates network  116  being any suitable network operable to facilitate communication between such components. Network  116  may include any interconnecting system capable of transmitting audio, video, signals, data, messages, or any combination of the preceding. Network  116  may include all or a portion of a cellular network, a public switched telephone network (PSTN), a public or private data network, a local area network (LAN), a metropolitan area network (MAN), a wide area network (WAN), a local, regional, or global communication or computer network, such as the Internet, a wireline or wireless network, an enterprise intranet, or any other suitable communication link, including combinations thereof, operable to facilitate communication between the components of system  100 . While  FIG.  1    illustrates system  100  as including network  116 , this disclosure contemplates that certain embodiments of system  100  (e.g., embodiments in which document tool  102  is installed on device  106 ) may not include network  116 . 
     First database  118  includes any suitable storage location accessible by document tool  102  and configured for storing and retrieving documents  120  generated and/or edited using document tool  102 . For the purposes of the present disclosure, a document  120  includes any collection of information including, for example, an essay, an article, a journal entry, a blog post, a book, a patent, and/or any other collection of information, at least a portion of which corresponds to one or more strings of text. For example, a document  120  may include strings of text in the form of title(s), sub-title(s), heading(s), one or more levels of sub-heading(s), sentence(s), reference(s), and/or any other suitable textual information that may be included within the document. 
     Database  118  may store documents  120  generated and/or edited by any number of users  104 . In particular, while  FIG.  1    illustrates, for simplicity, system  100  as including a single user  104 , this disclosure contemplates that system  100  may include any number of one or more users  104 , and that database  118  may store documents  120  created and/or edited by any number of the users  104  of system  100 . Each document  120  stored in database  118  may be accessible by the user  104  who created the document. Additionally, in certain embodiments, certain documents (e.g., document  120   a ) may be accessible by more than one user  104 . For example, a first user  104  may generate document  120   a , and then invite one or more additional users to edit/revise the document. Each of these additional users may access document  120   a  and use document tool  102  to edit/revise the document. 
     Database  118  may store documents  120  in any suitable manner. For example, in certain embodiments and as described in further detail below in the discussion of  FIGS.  16  through  16   , database  118  may store each document  120  as a document data structure that is formed from a set of data blocks, each of which stores a portion of the content of document  120 . In certain embodiments, database  118  may store each document  120  as a set of key-value pairs. In some embodiments, database  118  is configured to store multiple versions  122   a  through  122   n  of each document  120 . For example, in certain embodiments, document tool  102  is configured to store an original version  122   a  of a document  120   a , along with one or more subsequent versions  122   b  through  122   n  of the document. The one or more subsequent versions  122   b  through  122   n  of document  120   a  may be stored in database  118  in any suitable manner. For example, in certain embodiments, document tool  102  may be configured to automatically store new versions  122  of document  120   a  in database  118  at regular intervals while user  104  is using document tool  102 , each time user  104  ends a session editing document  120   a  using document tool  102 , and/or at any other suitable times while user  104  is engaged with document tool  102 . In some embodiments, document tool  102  may be configured to store new versions  122  of document  120   a  in database  118  in response to receiving a request  134  to store a new version  122  of document  120   a . In certain embodiments, each version  122   a  through  122   n  includes the entire contents of document  120   a , at the time the version is stored in database  118 . In some embodiments, a given version (e.g., version  122   c ) stores information identifying the changes that have been made to document  120   a  as compared to a previous version (e.g., version  122   b ) was stored in database  118 , rather than the entire contents of that version of document  120   a.    
     Second database  124  includes any suitable storage location for storing a set of document templates  126 . Each document template  126   a  through  126   n  includes any document content that may be used by a user  104  as a starting point in creating a new document  120 . As an example, templates  126  may include an essay template  126   a  that includes an introduction section, an essay body section, and a conclusion section. As another example, templates  126  may include a journal article template  126   b  that includes an abstract section, an introduction section, a background section, a journal article body section, a conclusion section, and a references section. In certain embodiments, one or more of templates  126  may include element(s) designed for use with one or more of the editing tools  114  generated by document tool  102  for use by user  104 . For example, in certain embodiments in which editing tool  114  takes the form of an outline tool that may be used to organize and reorder the contents of a document according to a set of outline topics (as described in further detail below, in the discussion of  FIGS.  3 A through  6   ), one of more of templates  126  may include suggested outline topic(s), for use by user  104 . For example, essay template  126   a  may include an introduction outline topic, one or more essay body outline topics, and a conclusion outline topic. In certain such embodiments, templates  126  may include only the suggested outline topics. In some embodiments, templates  126  may include content in addition to the suggested outline topics. For example, templates  126  may include titles, headings, sentences, and/or any other suitable content in addition to suggested outline topics. 
     Templates  126  may be stored in database  124  in any suitable manner. As an example, in certain embodiments, an administrator of document tool  102  may generate and store a set of templates  126  in database  124 . As another example, in certain embodiments, one or more users  104  may generate and store templates  126  in database  124 . For example, user  104  may store a given document  120   a  in database  124  for use as a template  126   a.    
     Database  124  may correspond to a storage location accessible to multiple users  104 , or a storage location accessible to only a single user  104 . As an example, in certain embodiments, database  124  may correspond to local storage on device  106 , where user  104  stores his/her templates  126 . As another example, in certain embodiments, database  124  may correspond to a remote storage location that is accessible to devices  106  over network  116 . In certain embodiments, a user  104  may access database  124  over network  116  to obtain a template  126   a  and/or to store a template  126   b  for use by other users  104 . 
     In the context of the present invention, “database” is intended to be construed broadly enough to describe any suitable storage location and/or device capable of storing, accessing, and/or retrieving data. In particular, first database  118  and/or second database  124  may correspond to any storage location(s) capable of storing documents  120  and/or templates  126 . For example, first database  118  and/or second database  124  may correspond to one or more data storage servers, such as a cloud server, a network-attached storage server, a direct-attached storage server, a file server, and/or any other suitable storage server, an external hard drive, a flash drive, any other suitable storage system, and/or any combination of the preceding, in any standard, distributed, and/or clustered environment. First database  118  and/or second database  124  may correspond to storage locations external to both document tool  102  and device  106 , or storage location(s) integrated within one or both of document tool  102  and device  106 . In certain embodiments, first database  118  and second database  124  correspond to the same storage location. For example, first database  118  and second database  124  may correspond to one or more external storage servers accessible by device  106  and/or document tool  102  over network  116 , and/or one or more hard drives and/or other storage devices of device  106 . 
     As seen in  FIG.  1   , document tool  102  includes a processor  128  and a memory  130 . This disclosure contemplates processor  128  and memory  130  being configured to perform any of the functions of document tool  102  described herein. Generally, document tool  102  receives a request  134  from a user  104  seeking to create and/or edit a document  120  using device  106 . In response, document tool  102  displays GUI  110  on device  106 . GUI  110  is configured to display both a text editor  112  and an editing tool  114  for use by user  104  in creating and/or editing document  120 . Editing tool  114  is integrated with text editor  112  such that, in certain embodiments, edits made to document  120  using editing tool  114  are simultaneously reflected in the document content displayed in text editor  112 . Similarly, edits made to document  120  using text editor  112  may be simultaneously reflected in the document content displayed in editing tool  114 . In this manner, certain embodiments offer improved document visualization and increase the efficiency of the document creation and editing processes, thereby reducing the computational resources expended during these processes, as compared with existing text editors. 
     Editing tool  114  may be any tool usable by user  104 , in conjunction with text editor  112 , to generate and/or edit a document  120 . For example, in certain embodiments, editing tool  114  may take the form of: (1) an outline tool, with which user  104  may interact to structure and/or organize the content of document  120 , as described in further detail below, in the discussion of  FIGS.  3 A through  6   ; (2) a sentence rewrite tool, with which user  104  may interact to rewrite one or more sentence(s) of document  120 , store multiple variants of the rewritten sentence(s), and select from amongst the various sentence variants, as described in further detail below, in the discussion of  FIGS.  7 A through  8   ; and/or (3) a sentence reorder tool, with which user  104  may interact to reorder the sentences within document  120 , as described in further detail below, in the discussion of  FIGS.  9 A through  11   . 
     Processor  128  is any suitable type of electronic processing circuitry, including, but not limited to one or more central processing units (CPUs), graphics processing units (GPUs), application specific integrated circuits (ASIC), field-programmable gate arrays (FPGSs), application specific instruction set processor (ASIP), digital signal processors (DSPs), state machines, programmable logic devices, microcontrollers, microprocessors, and/or any suitable combination of the preceding, that communicatively couples to memory  130  and controls the operation of document tool  102 . Processor  128  may be 8-bit, 16-bit, 32-bit, 64-bit or of any other suitable architecture. Processor  128  may include an arithmetic logic unit (ALU) for performing arithmetic and logic operations, a floating-point unit (FPU) for performing operations on floating-point numbers, processor registers that supply operands to the ALU and/or FPU and store the results of ALU and/or FPU operations, and a control unit that fetches instructions from memory and executes them by directing the coordinated operations of the ALU, the FPU, the registers, and other components. Processor  128  may include other hardware and software that operates to control and process information. Processor  128  executes software stored as instructions  132  on memory  130  to perform any of the functions described herein. Processor  128  controls the operation and administration of document tool  102  by processing information received from network  116 , device(s)  106 , first database  116 , second database  124 , memory  130 , and/or any other suitable components of system  100 . Although illustrated in  FIG.  1    as a single processor, processor  128  is not limited to a single processing device and may encompass multiple processing devices operating cooperatively and/or in parallel, such as in a multi-processor system. 
     Memory  130  may store, either permanently or temporarily, data, operational software, or other information  132  for processor  128 . Memory  130  may include any one or a combination of volatile or non-volatile local or remote devices suitable for storing information. For example, memory  130  may include random access memory (RAM), read only memory (ROM), magnetic storage devices, optical storage devices, databases, or any other suitable information storage device or a combination of these devices. Memory  130  may store software that includes any suitable set of instructions, logic, or code embodied in a computer-readable storage medium. For example, the software may be embodied in memory, a disk, a CD, or a flash drive. In particular embodiments, the software may include an application executable by processor  128  to perform one or more of the functions described herein. Memory  130  may also store locally cached information, such as one or more documents  120 , and/or templates  126  that may be locally created and/or received/retrieved from a remote device, such as device  106 , database  118  and/or database  124 . This locally cached information may be used by document tool  102  during the course of performing its functions. 
     Modifications, additions, or omissions may be made to the systems described herein without departing from the scope of the invention. For example, system  100  may include any number of users  104 , devices  106 , GUIs  110 , networks  116 , first databases  118 , second databases  124 , documents  120 , document versions  122 , templates  126 , processors  128 , and/or memories  130 . The components may be integrated or separated. Moreover, the operations may be performed by more, fewer, or other components. Additionally, the operations may be performed using any suitable logic comprising software, hardware, and/or other logic. 
     II. Graphical User Interface for Use in Creating and Editing Documents 
     A. Overview 
       FIG.  2    presents an example GUI  110  (described in conjunction with elements of  FIG.  1   ) generated by document tool  102  and presented to user  104  on display  108  of device  106 . As illustrated in  FIG.  2   , GUI  110  includes a first region  202  that is configured to display editing tool  114 , and a second region  204  that is configured to display text editor  112 . While  FIG.  2    illustrates first region  202  as displaying editing tool  114  in the form of an outline tool, this disclosure contemplates that first region  202  may display any form of editing tool  114  including, for example, a sentence rewrite tool, and/or a sentence reorder tool. Furthermore, while illustrated in  FIG.  2    as first region  202  positioned to the left of second region  204 , this disclosure contemplates that first region  202  and second region  204  may be positioned anywhere within GUI  110 . 
     In addition to displaying editing tool  114  and text editor  112 , GUI  110  may be configured to display multiple other elements, designed to enable user  104  to easily view, navigate, share, and/or save versions of document  120 , and/or to make edits to document  120  in an intuitive way. In particular, such elements may provide information to user  104  and/or may be selectable by user  104  for various purposes related to the document creation and editing process. As an example, in certain embodiments, GUI  110  is configured to display buttons  206  through  212 , with which user  104  may interact to select one or more forms for editing tool  114 , to switch between the various forms available for editing tool  114 , and/or to stop GUI  110  from displaying editing tool  114 . For example, button  206  is associated with the outline tool offered by document tool  102 , and is selectable by user  104  to cause first region  202  of GUI  110  to display the outline tool form of editing tool  114 . Examples of the use of GUI  110  in response to the selection of outline tool button  206  are presented below, in the discussion of  FIGS.  3 A through  6   . Similarly, button  210  is associated with the sentence rewrite tool offered by document tool  102 , and is selectable by user  104  to cause first region  202  of GUI  110  to display the sentence rewrite tool form of editing tool  114 . Examples of the use of GUI  110  in response to the selection of sentence rewrite button  210  are presented below, in the discussion of  FIGS.  7 A through  8   . Button  212  is associated with the sentence reorder tool offered by document tool  102 , and is selectable by user  104  to cause first region  202  of GUI  110  to display the sentence reorder tool form of editing tool  114 . Examples of the use of GUI  110  in response to the selection of sentence reorder button  212  are presented below, in the discussion of  FIGS.  9 A through  11   . On the other hand, button  208  is selectable by user  104  to cause GUI  110  to display text editor  112  on its own, without editing tool  114 . This may be desirable during the document composition process, to help user  104  avoid distractions. For example, displaying text editor  112  on its own, without editing tool  114 , may help user  104  to focus on generating a first draft of the content for document  120 , rather than on editing the content, before a first draft has been completed. User  104  may select one or more of buttons  206  through  212  in any suitable manner. For example, in certain embodiments, user  104  may select one of buttons  206  through  212  by (1) using a mouse and/or trackpad to click on the button, (2) using a mouse and/or trackpad to double-click on the button, (3) using a mouse and/or trackpad to hover a cursor over the button, (4) touching display  108  of device  106  at a location where the button is displayed, and/or (5) in any other suitable manner. 
     Other examples of elements that may be displayed by GUI  110  are illustrated as buttons/elements/fields  214  through  234  of  FIG.  2   , described below. User  104  may select and/or otherwise interact with one or more of buttons/elements/fields  214  through  234  in any suitable manner. For example, in certain embodiments, user  104  may interact with one of buttons/elements/fields  214  through  234  by (1) using a mouse/trackpad to click on the button/element/field, (2) using a mouse/trackpad to double-click on the button/element/field, (3) using a mouse/trackpad to hover a cursor over the button/element/field, (4) touching display  108  of device  106  at a location where the button/element/field is displayed, and/or (5) interacting with button/element/field in any other suitable manner. Certain embodiments of GUI  110  may include all, some, or none of buttons/elements/fields  214  through  234 . 
     i. Naming a Document 
     As illustrated in  FIG.  2   , field  214  displays a name assigned to document  120 . The name may be used to identify document  120  within GUI  110 , to identify document  120  within database  118 , and/or for any other suitable purposes. In certain embodiments, field  214  is an interactive field through which user  104  may provide and/or edit a string of text corresponding to a name assigned to document  120 . For example, in certain embodiments, in response to user  120  generating anew document  120 , display tool  102  is configured to generate GUI  110 , which displays a phrase such as “Untitled Essay,” “Untitled Document,” “New Document,” or any other suitable name in field  214 , to indicate that a default name has been assigned to the document. In some embodiments, user  104  may interact with field  214  (e.g., clicking field  214  with a mouse, touching display  108  at the location of field  214 , and/or interacting with field  214  in any other suitable manner) to instruct document tool  102  that user  104  wishes to change the name displayed in field  214 . In response, document tool  102  is configured to receive input from user  104  (e.g., through user  104  typing a new name on a keyboard included in and/or connected to device  106 , through user  104  speaking a new name into a microphone included in and/or connected to device  106 , and/or in any other suitable manner), and to update the name displayed in field  214 , based on the received input. 
     ii. Saving a Document 
     Element  216  is configured to provide user  104  with information indicating the status of document  120  within database  118 . For example, as illustrated in  FIG.  2   , element  216  displays “Saved,” indicating that a version of the document has been saved in database  118 . In certain embodiments, in addition to “Saved,” element  216  may be configured to display: “Unsaved”—indicating that document  120  has not yet been saved within database  118 , and/or “Saving”—indicating that document tool  102  is in the process of saving document  120  to database  118 . In certain embodiments, in response to user  104  interacting with element  216  (e.g., hovering a cursor over element  216 ), document tool  102  is configured to display information indicating when document  120  was last saved. For example, in response to user  104  interacting with element  216 , document tool  102  may be configured to generate and display a tooltip that displays the time at which document  120  was last saved. 
     In certain embodiments, document tool  102  may be configured to automatically save document  120  within database  118 . For example, document tool  102  may be configured to automatically save document  120  at regular intervals, after a certain amount of new content has been added to document  120 , after a certain amount of changes have been made to document  120 , and/or at any other suitable times. In certain embodiments, saving document  120  may include overwriting the previous version of the document stored in database  118 . In some embodiments, saving document  120  may include saving a new version  122  of document  120  to database  118 . For example, saving document  120  may correspond to saving new version  122   b  of document  120  within database  118 , where version  122   a  corresponds to the previously saved version of the document. 
     In certain embodiments in which database  118  corresponds to a storage location that is remote from device  106  and accessible over network  116 , user  104  may use document tool  102  to edit document  120  while disconnected from network  116  (e.g., in an “offline” mode). In such embodiments, document tool  102  may be configured to automatically save a new version  122  of document  120  within database  118 , once device  106  reconnects to network  116 . In particular, document tool  102  may be configured to monitor for a network connection and to save a new version  122  of document  120  automatically, in response to detecting a network connections. In some embodiments, user  104  may instruct document tool  102  to save the current version of document  120 . For example, in certain embodiments, user  104  may interact with element  216  to instruct document tool  102  to save the current version of document  120  in database  118  (e.g., by overwriting the previous version of the document stored in database  118 , and/or by saving a new version  122  of document  120  to database  118 ). As another example, in some embodiments, user  104  may interact with button  230  to instruct document tool  102  to save the current version of document  120  in database  118 . In particular, button  230  corresponds to a button through which user  104  may view existing versions  122  of document  120 , revert document  120  (as displayed by text editor  112  and editing tool  114 ) to a previous version  122  of document  120 , and/or save the current version of document as a new version  122  of document  120  in database  118 . Further details of the manner by which user  104  may create and/or access different versions  122  of document  120 , in response to interacting with button  230 , are presented below, in the discussion of  FIG.  15   . 
     iii. Generating Copies of a Document 
     Button  220  corresponds to a button through which user  104  may interact to generate a copy of document  120 . In certain embodiments, in response to user  104  interacting with button  220 , document tool  102  is configured to generate a copy of the current version of document  120 , as displayed within text editor  112 , and to present the copy to user  104  in a second instance of GUI  110 . For example, in certain embodiments in which GUI  110  is displayed within a web browser displayed by display  108  of device  106 , document tool  102  may be configured generate a second instance of GUI  110  by creating a new tab within the web browser, and displaying the second instance of GUI  110  in the new tab. As another example, in certain embodiments in which document tool  102  is installed on device  106  (e.g., processor  128  and memory  130  correspond to a processor and memory of device  106 ), document tool  102  may be configured to generate a second instance of GUI  110  by generating a second window in which to display the new instance. In some embodiments, in addition to displaying the copy of document  120  in a new instance of GUI  110 , document tool  102  may be configured to save the copy of the document as a new document within database  118 . For example, document tool  102  may be configured to save a copy of a given document  120   a  as a new document  120   b  within database  118 . 
     iv. Viewing a Document in “Publishing View” 
     Button  222  enables user  104  to enter a “publishing view” mode within GUI  110 . In particular, in response to user  104  selecting button  222 , document editing tool  102  is configured to display document  102  in GUI  110 , as the document would appear if exported to an external program/application (e.g., an existing text editor that is separate from document tool  102 ), and/or printed as a physical document using a printer connected to device  106 . For example, in certain embodiments, document tool  102  enables user  104  to organize the structure of document  120  according to a set of outline topics (the use of which is described below, in the discussion of  FIGS.  3 A through  6   ). In some embodiments, while displayed within text editor  112  and editing tool  114 , these outline topics are not actually part of the content of the document that user  104  intends to be published (e.g., the document content that corresponds to the ideas expressed by user  104  through document  120 , and which user  104  intends to print, export, share, etc.). Accordingly, user  104  may access the “publishing view” mode of GUI  110  to view the appearance of document  120  when the outline topics are hidden from view. Further details of the “publishing view” mode of GUI  110  are presented below, in the discussion of  FIGS.  12 A and  12 B . 
     v. Sharing a Document with Other Users 
     Button  224  corresponds to a button through which user  104  may share document  120  with another user. In response to user interacting with button  224 , document tool  102  may be configured to share document  120  with another user in any suitable manner. For example, document editing tool  102  may display a field through which user  104  may enter an email address or other identifying information associated with a second user. Document tool  102  may then use this identifying information to share document  120  with the second user in any suitable manner. As an example, in certain embodiments, document editing tool  102  may use the identifying information associated with the second user to transmit a message to the device of the second user, instructing the second user that he/she has been granted access to the document. In certain embodiments, the message may include a link through which the second user may access the document. As another example, in some embodiments, in response to receiving identifying information associated with a second user with which user  104  desires to share document  120 , document editing tool  102  may make document  120  available to the second user in a list of available documents displayed by GUI  110  on a device of the second user. In some embodiments, sharing document  120  may involve changing one or more permissions associated with document  120  and stored along with the document in database  118 . As an example, in response to user  104  submitting a request to share document  120  with a particular individual, document tool  102  may adjust one or more permissions associated with the document to indicate that the particular individual may access the document. As another example, in response to user  104  submitting a request to share document  120  with any other users  104 , document tool  102  may set one or more permissions associated with document  120  to public, thereby enabling any users  104  of document editing tool  102  to access the document. 
     In certain embodiments, a student user  104  may use button  224  to share document  120  with a teacher user  104 . For example, in certain embodiments, document tool  102  may be configured to operate in multiple modes, including a teacher mode (for use by a teacher  104 ), and a student mode (for use by a student  104 ). The profile of the user, as described below, in the discussion of button  226 , may be used to specify the mode according to which document tool  102  is to operate for a given user. For instance, the profile of a student user  104  may indicate both that user  104  is a student and that the student belongs to one or more classes. The profile of a teacher user  104  may specify both that user  104  is a teacher and that the teacher is teaching one or more classes. A student user  104  may use document tool  102  to complete assignments (in the form of documents  120 ) for one or more classes, and a teacher user  104  may use document tool  102  to receive completed assignments (in the form of documents  120 ) from student users in his/her classes. In particular, in response to interacting with button  224 , student user  104  may share document  120  (corresponding to a completed assignment) with a teacher user. In certain embodiments, in addition to sharing the current version of document  120  with the teacher user, document tool  102  may be configured to share information associated with the editing process performed by the student user  104  in generating document  120 . For example, document tool  102  may be configured to share information obtained from the previous versions  122   a  through  122   n  of document  120 , including, for example, the total number of sentences the user rewrote, how the word count of the document changed over time, and/or any other suitable information that may aid the teacher in assessing the user&#39;s editing process. 
     vi. Accessing/Adjusting Settings and Profile Information 
     Button  226  corresponds to a button through which user  104  may access and/or edit information associated with a profile and/or account belonging to the user. As an example, in certain embodiments, in response to interacting with button  226 , user  104  may view and/or edit a username and/or password assigned to the user. User  104  may use this username and/or password to access the features provided by document tool  102 . For example, in certain embodiments in which user  104  accesses GUI  110  by navigating to a webpage hosted by document editing tool  102 , the webpage may prompt user  104  to enter his/her username and/or password before displaying GUI  110  to the user. As another example, in certain embodiments in which document tool  102  is configured to operate in student and teacher modes, user  104  may interact with button  226  in order to add classes to his/her profile. For example, a student user  104  may add classes in which he/she is enrolled to his/her profile, and a teacher user  104  may add classes that he/she is teaching to his/her profile. As a further example, in certain embodiments, a profile picture associated with user  104  may be displayed as part of and/or adjacent to button  226 . The profile picture may correspond to a photo uploaded by user  104  to document editing tool  102  (e.g., a photo of user  104 ), and/or an image selected by user  104 . In some embodiments, user  104  may use button  226  to choose this profile picture. For example, in certain embodiments, in response to interacting with button  226 , user  104  may (1) access a photo upload utility, (2) access images from which to select, and/or (3) chose a profile photo to be displayed as part of and/or adjacent to button  226 . 
     User  104  may also interact with button  226  in order to access, edit, and/or set default values for one or more customizable settings associated with document tool  102 . For example, user  104  may set a default font type, a default text size, and/or any other suitable default options that may affect how the text of document  120  as displayed by text editor  112 , and/or editing tool  114 . 
     In certain embodiments, button  232  also corresponds to a button through which user  104  may interact to access and/or edit settings associated with document  120 . For example, in certain embodiments, in response to interacting with button  232 , user  104  may adjust the font type, the font size, the line spacing, and/or any other settings that may be associated with document  120 . In some embodiments, changes made by user  104  to one or more settings associated with document  120 , through button  232 , may be document-specific changes, rather than changes to the default settings. For example, in response to user  104  interacting with button  232  and changing the font size from 12 pt. to 14 pt., document tool  102  may cause the font size associated with a document  120   a , currently displayed by text editor  112  and/or editing tool  114 , to increase from 12 pt. to 14 pt. However, document tool  102  may continue to apply the default font size of 12 pt. to any future documents  120   b  created and/or editing by user  104  using document tool  102 . In some embodiments, changes made by user  104  to one or more settings associated with document  120 , through button  232 , may correspond to changes to the default settings offered by document tool  102 . Further details associated with the settings accessible to user  104  through button  232  are presented below, in the discussion of  FIG.  14   . 
     vii. Accessing Instructional and/or Other Information 
     Button  228  corresponds to a button through which user  104  may access information that may be useful to the user. As an example, in certain embodiments, button  228  may be used by user  104  to access information associated with the development of document tool  102  (e.g., the current version of the tool, the creators of the tool, etc.). As another example, in certain embodiments, button  228  may be used by user  104  to access tips, suggestions, and/or instructions that user  104  may use in preparing document  120 . For example, in certain embodiments, in response to user  104  interacting with button  228 , document tool  102  is configured to present a tutorial to user  104 . The tutorial may correspond to a guide to help the user understand how to effectively use editing tool  114 . In particular, the tutorial may include a number of steps that user  104  may follow to efficiently generate and/or edit document  120 . In certain embodiments, in response to user  104  interacting with button  228 , document tool  102  may launch an interactive tour in which document tool  102  provides user  104  with examples of the use of various features offered by document tool  102 . 
     As another example, in certain embodiments, button  228  may be used by user  104  to access one or more writing assignments. For example, in certain embodiments in which document tool  102  is configured to operate in multiple modes including a teacher mode (for use by a teacher  104 ) and a student mode (for use by a student  104 ). Within the teacher mode, user  104  may interact with button  228  in order to upload instructions corresponding to one or more writing assignments that he/she has assigned to his/her students. Within the student mode, user  104  may interact with button  228  in order to view the writing assignment(s) that have been assigned to him/her. In certain embodiments, one or more of the writing assignments may be associated with template(s)  126  for use by user  104  in completing the assignment. 
     viii. Word Count 
     Element  234  is configured to display information associated with the word count of document  120 . For example, in certain embodiments, element  234  displays the total number of words included in document  120 , a word count goal that user  104  has set for document  120 , a progress towards reaching the word count goal (e.g., a percentage of the total words of document  120  to the word count goal), and/or any other suitable information associated with the number of words within document  120 . In certain embodiments, element  234  is configured to update automatically as user  104  adds words to document  120  through text editor  112  and/or editing tool  114 . 
     It should be understood that buttons/elements  214  through  234  are presented only as examples of types of buttons/elements/fields that may be displayed by GUI  110  and through which user  104  may interact with and/or otherwise obtain information from document tool  102 . This disclosure contemplates that GUI  110  may include all, some, or none of buttons/elements/fields  214  through  234 , and that a person of ordinary skill would recognize that GUI  110  may display any number of other interactive buttons, elements, and/or fields through which user  104  may access information, settings, and/or features offered by document editing tool  102 . 
     B. Editing Tools 
       FIGS.  3 A through  11    illustrate the use of the various forms of editing tool  114 , in conjunction with text editor  112 , to create and/or edit documents  120 . In particular,  FIGS.  3 A through  6    illustrate the use of editing tool  114  in the form of an outline tool  114   a ,  FIGS.  7 A through  8    illustrate the use of editing tool  114  in the form of a sentence rewrite tool  114   b , and  FIGS.  9 A through  11    illustrate the use of editing tool  114  in the form of a sentence reorder tool  114   c . While the below discussion specifically describes the use of outline tool  114   a , sentence re-write tool  114   b , and sentence reorder tool  114   c , this disclosure contemplates that one of ordinary skill in the art would recognize that editing tool  114  may take a variety of different forms in addition to those presented herein, each of which may be integrated with text editor  112  and used to create and/or edit documents  120 . 
     i. Outline Tool 
     User  104  may use outline tool  114   a  to plan and/or organize the structure of a document  120 . In certain embodiments, outline tool  114   a  is the default form for editing tool  114 , such that editing tool  114  takes the form of outline tool  114   a  when document tool  102  initially displays GUI  110 . In some embodiments, user  104  may switch editing tool  114  from any of the other forms it may take (e.g., sentence rewrite tool  114   b , sentence reorder tool  114   c ) to outline tool  114   a  by selected button  206  on GUI  110 . As illustrated in  FIGS.  3 A through  5 C , in certain embodiments, button  206  may be highlighted on GUI  110  when editing tool  114  takes the form of outline tool  114   a.    
       FIGS.  3 A through  5 C  illustrate the use of outline tool  114   a  to organize the content of document  120  according to a set of outline topics, and to use those outline topics to adjust the position of the associated document content within document  120 . In particular,  FIGS.  3 A through  3 E  illustrate the use of outline tool  114   a  to add outline topics to document  120 , in order to plan the structure of document  120 . In particular, the outline topics added to document  120  may be used to organize the content of document  120  into a sequence of parts, each of which is associated with a given outline topic.  FIGS.  4 A through  5 C  then illustrate the use of outline tool  114   a  to reorder the content of document  120 , with the aid of the outline topics. Specifically,  FIGS.  4 A and  4 B  illustrate the use of outline tool  114   a  to reorder outline topics and their associated parts within document  120 , while  FIGS.  5 A through  5 C  illustrate the use of outline tool  114   a  to reorder individual paragraphs within document  120 . 
     a. Organizing a Document into a Set of Outline Topics 
     As explained above,  FIGS.  3 A through  3 E  illustrate the use of outline tool  114   a  to structure the content of document  120  according to a set of outline topics  304   a  through  304   e . In certain embodiments, user  104  may use outline tool  114   a  to plan the structure of document  120 , prior to adding any sentences/paragraphs to the document. For example,  FIG.  3 A  presents an example in which a set of four outline topics  304   a  through  304   d  have been used to structure document  120 . In certain embodiments, user  104  may add outline topics  304   a  through  304   d  to document  120  using outline tool  102 , as described in detail below, in the discussion of  FIGS.  3 C and  3 D . In some embodiments, user  104  may instruct document tool  102  to load a template  126  from database  124 , which already includes outline topics  304   a  through  304   d . While this disclosure refers to outline topics  304   a  through  304   d  as forming a part of the content of document  120 , in certain embodiments, outline topics  304   a  through  304   d  are not part of the “publishable” content of document  120 . For example, in some embodiments, outline topics  304   a  through  304   d  are used for organizational purposes only and are not included in the content of document  120  that is printed to generate a physical document, and/or exported for display in an external application. 
     When user  104  adds “publishable” content to document  120  (e.g., sentences, paragraphs, lists, figures, tables, etc.), document tool  102  assigns that content to the outline topic according to which the content is organized. For example,  FIG.  3 B  illustrates an example in which sentences and paragraphs have been added to document  120  and organized according to the set of outline topics  304   a  through  304   d . As illustrated in  FIG.  3 B , outline topics  304   a  through  304   d  are used to group the content of document  120  into a sequence of four parts  305   a  through  305   d , each of which is associated with an outline topic of the set of outline topics  304   a  through  304   d  and includes a portion of the content of document  120  that is located between the associated outline topic and the next outline topic (if any) that appears in the document. For example, first part  305   a  is associated with first outline topic  304   a  (named “Introduction”) and includes the portion of document  120  that is located between first outline topic  304   a  and second outline topic  304   b  (e.g., “This is the introduction of the document.”). Similarly, second part  305   b  is associated with second outline topic  304   b  (named “Topic 1”) and includes the portion of document  120  that is located between second outline topic  304   b  and third outline topic  304   c ; third part  305   c  is associated with third outline topic  304   c  (named 
     “Topic 2”) and includes the portion of document  120  that is located between third outline topic  304   c  and fourth outline topic  304   d ; and fourth part  305   d  is associated with fourth outline topic  304   d  (which is named “Topic 3”) and includes the portion of document  120  that is located between fourth outline topic  304   d  and the end of document  120 . While, in the example illustrated in  FIG.  3 B , the content of document  120  that is included in each part  305   a  through  305   d  includes sentence(s) and/or paragraph(s), this disclosure contemplates that any type of document content may be included in a given part of the set of parts  305   a  through  305   d  of document  120 . For example, the document content included in a given part of parts  305   a  through  305   d  may include one or more headings, sub-headings, lists, images, and/or any other suitable document content. 
     Each outline topic  304   a  through  304   d  and its associated document content, which together makes up a part of the sequence of parts  305   a  through  305   d  displayed by text editor  112 , is linked to a corresponding outline topic element  302   a  through  302   d  of a sequence of outline topic elements that is displayed by outline tool  114   a . As illustrated in  FIGS.  3 A and  3 B , in certain embodiments, each outline topic element  302   a  through  302   d  is configured to display the name of the outline topic  304  to which it is linked. For example, as illustrated in  FIG.  3 B , outline topic element  302   a  is linked to first part  305   a  and displays the name of outline topic  304   a  (e.g., “Introduction”); outline topic element  302   b  is linked to second part  305   b  and displays the name of outline topic  304   b  (e.g., “Topic 1”); outline topic element  302   c  is linked to third part  305   c  and displays the name of outline topic  304   c  (e.g., “Topic 2”); and outline topic element  302   d  is linked to fourth part  305   d  and displays the name of outline topic  304   d  (e.g., “Topic 3”). In certain embodiments, each outline topic element  302   a  through  302   d  may be configured to display additional content of document  120  (e.g., content to which the outline topic element is linked). For example, each outline topic element  302   a  through  302   d may be configured to display all or a portion of the content displayed by the part of the sequence of parts  305   a  through  305   d , to which the outline topic element is linked. In certain embodiments, the document content displayed by each outline topic element  302   a  through  302   d  is adjustable by user  104 . For example, each outline topic element  302   a  through  302   d  may include an interactive button  308  through which user  104  may interact to adjust the document content displayed by the outline topic element. For instance, user  104  may interact with button  308  of outline topic element  302   a  to cause outline topic element  302   a  to switch between displaying (1) a portion of the document content associated with linked part  305   a  (e.g., the name of the linked outline topic  304   a ), and (2) the entire document content associated with linked part  305   a  (e.g., the name of the linked outline topic  304   a  and any sentences/paragraphs associated with outline topic  304   a ). 
     While  FIG.  3 B  illustrates an example in which each part  305   a  through  305   d  of document  120  is associated with an outline topic of the set of outline topics  304   a  through  304   d , in certain embodiments, a part of document  120  may not be associated with any of outline topics  304   a  through  304   d . For example,  FIG.  3 E  illustrates an embodiment in which document  120  includes a first paragraph  312  that is located before first outline topic  304   a , and is therefore not associated with any of outline topics  304   a  through  304   d  (and, equivalently, does not belong to any of parts  305   a  through  305   d , each of which is associated with an outline topic of outline topics  304   a  through  304   d ). In certain embodiments in which a part of document  120  (e.g., paragraph  312 ) is not associated with any of outline topics  304   a  through  304   d , document tool  102  is configured to generate a special outline topic element  314  and to link the part of document  120  (e.g., paragraph  312 ) that is not associated with any outline topics to the special outline topic element  314 . As illustrated in  FIG.  3 E , because special outline topic element  314  is not associated with any of outline topics  304   a  through  304   d , it does not display the name of any of outline topics  304   a  through  304   d . In certain embodiments, special outline topic element  314  displays a descriptive label indicating that the document content associated with the element (e.g., paragraph  312 ) is not associated with any outline topics included within document  120 . For example, as illustrated in  FIG.  3 E , special outline topic element  314  may display the label “Paragraphs without a topic,” to indicate that the document content that is linked to the element is not associated with any of outline topics  304   a  through  304   d . As illustrated in  FIG.  3 E , in certain embodiments, the label displayed by special outline topic element  314  is not part of the content (“publishable” or otherwise) of document  120  (e.g., is not displayed by text editor  112 ). 
     As mentioned above, outline topics  304   a  through  304   d  (each corresponding to a linked outline topic element of the sequence of outline topic elements  302   a  through  302   d ) may be added to document  120  in any suitable manner. As an example, user  104  may add anew outline topic  304  to document  120  by interacting with button  310  displayed by outline tool  114   a  in first region  202  of GUI  110 . User  104  may interact with button  310  in any suitable manner. For example, in embodiments in which display  108  is a touch-screen display, user  104  may interact with button  310  by touching display  108  at the location of button  310 . In some embodiments, user  104  may interact with button  310  using a mouse/trackpad. For example, user  104  may use a mouse/trackpad to interact with button  310  by clicking on button  310 , double-clicking on button  310 , hovering over button  310 , or interacting with button  310  in any other suitable manner. 
       FIGS.  3 C and  3 D  present an example of the behavior of outline tool  114   a  in response to user  104  interacting with button  310  to generate a new outline topic. As illustrated in  FIG.  3 C , in response to user  104  interacting with button  310 , document tool  102  is configured to create a new outline topic element  302   e  and to display the new outline topic element in outline tool  114   a . Document tool  102  is also configured to create a new part  305   e  within document  120  that is linked to the new outline topic element, and to display the new part in text editor  112 . The new part  305   e  includes the new outline topic  304   e . In certain embodiments, and as illustrated in  FIG.  3 C , in response to user  104  interacting with button  310 , document tool  102  is configured to automatically assign a name to the new outline topic  304   e  generated by the tool. For instance, document tool  102  may assign a generic name such as “Untitled Outline Topic,” “New Outline Topic,” and/or any other suitable name to the newly generated outline topic. User  104  may then edit this generic name. This disclosure contemplates that user  104  may edit the automatically assigned, generic outline topic name in any suitable manner. As an example, in certain embodiments, user  104  may edit the name assigned to outline topic  304   e  using button  306 . For instance, in response to user  104  interacting with button  306 , the name of outline topic  304   e , as displayed by outline topic element  302   e , may become an editable field with which the user may interact. The user may then enter a new name for the outline topic into the editable field. As another example, user  104  may edit the automatically generated name for outline topic  304   e  directly within text editor  112 .  FIG.  3 D  illustrates an example in which user  104  has updated the name of outline topic  304   e  from “Untitled Outline Topic” to “Conclusion.” User  104  may also edit any of the names previously assigned to outline topics  304   a  through  304   d  in a similar manner (e.g., by interacting with buttons  306  and/or by editing the names within text editor  112 ). 
     As another example of the manner by which a new outline topic  304   e  (corresponding to linked outline topic element  302   e ) may be added to document  120 , in certain embodiments user  104  may add a new outline topic  304   e  to document  120  by entering text associated with the new outline topic  304   e  into text editor  112 . For instance, user  104  may indicate to text editor  112  that the text he/she is about to enter corresponds to the name of a new outline topic  304   e  by, for example, right clicking within text editor  112  and selecting an outline topic text type. User  104  may then enter text corresponding to the name of the new outline topic  304   e  (e.g., “Conclusion”) into text editor  112 . In response to user  104  creating a new outline topic  304   e  by entering text corresponding to the new outline topic into text editor  112 , document tool  102  is configured to generate a corresponding outline topic element  302   e  that is linked to the new outline topic  304   e , and to display the new outline topic element  302   e  within outline tool  114   a.    
     As illustrated in  FIGS.  3 C and  3 D , the newly added outline topic  304   e  is associated with a new part  305   e  of document  120 , to which user  104  may add content. User  104  may add content to new part  305   e  in any suitable manner. For example, user  104  may use text editor  112  to enter new content into document  120  at a location in text editor following outline topic  304   e  (e.g., user  104  may enter the sentence “This is the conclusion of the document.” at a location following outline topic  304   e , in text editor  112 ). Document tool  102  then links the new document content to the corresponding outline topic element  302   e , displayed by outline tool  114   a.    
     While  FIGS.  3 C through  3 D  present an example in which user  104  uses outline tool  114   a  and/or text editor  112  to add new outline topics (e.g., outline topic  304   e ) to document  120 , this disclosure contemplates that document tool  102  may arrange the content of document  120  according to a set of outline topics  304   a  through  304   e  in any suitable manner. As an example, in certain embodiments, document tool  102  may be configured to automatically assign each paragraph of document  120  to its own outline topic. As another example, in certain embodiments, document tool  102  may be configured to identify one or more headings within document  120  and generate an outline topic for each identified heading. For example, in certain embodiments, document tool  102  may be configured to import an existing document  120 , generated using an external text editor, into the tool. As part of the importation process, document tool  102  may automatically convert the headings included in the imported document into a set of outline topics. 
     In certain embodiments, document tool  102  may use a machine learning algorithm stored as part of instructions  132  in memory  130  to arrange the content of document  120  into a set of outline topics. For instance, in response to user  104  generating a document  120  that does not include any outline topics (e.g., by typing words into text editor  112 ), document tool  102  may be configured to apply a machine learning algorithm to the content of the document, to split the content into a set of parts and to assign each part to an outline topic. For example, the machine learning algorithm may be configured to split the paragraphs of document  120  into groups of one or more sequential paragraphs (based on, for example, (1) shared features exhibited by the paragraphs within each group, (2) at least a threshold similarity score calculated between pairs of paragraphs within each group, and/or (3) any other suitable measure of relatedness), and to assign each group of one or more sequential paragraphs to an outline topic. As a specific example, user  104  may use text editor  112  to generate a document  120  that corresponds to a biography of a famous person. The first three paragraphs of the biography may provide details of the famous person&#39;s childhood, the next five paragraphs may describe the famous person&#39;s early career, and the last four paragraphs may describe an idea/action for which the famous person is known. The machine learning algorithm may be configured to process the paragraphs of the document (e.g., using natural language processing techniques) and to assign the first three paragraphs to a first group of similar paragraphs, the next five paragraphs to a second group of similar paragraphs, and the last four paragraphs to a third group of similar paragraphs. Document tool  102  may then assign each group of paragraphs to an outline topic. 
     Document tool  102  may use any suitable machine learning algorithm to arrange the content of document  120  into a set of outline topics. For example, in certain embodiments, the machine learning algorithm may be an unsupervised classification algorithm. In certain embodiments, the machine learning algorithm may include a neural network model, a K-means clustering algorithm, and/or any other suitable machine learning algorithm. In certain embodiments, user  104  may specify a particular number of outline topics into which the machine learning algorithm is to organize the content of document  120 . In some embodiments, the machine learning algorithm may be designed to choose the number of outline topics into which to organize the content of document  120 . 
     b. Reordering Document Content 
     After outline topics  304   a  through  304   e  have been used to organize the content of document  120  into a set of parts  305   a  through  305   e , outline tool  114   a  may be used to efficiently reorganize the content of document  120  (e.g., reorder the sequence of parts  305   a  through  305   e  within document  120  and/or move document content between two or more of parts  305   a  through  305   e  of document  120 ). In particular, user  104  may use outline tool  114   a  to modify the order in which content is presented within document  120 , as displayed by text editor  112 , by performing a corresponding modification to outline topic elements  302   a  through  302   e , each of which is linked to a corresponding part of the sequence of parts  305   a  through  305   e  of document  120 . By enabling a user to reorganize content within a multi-page document using outline topic elements  302   a  through  302   e  displayed within outline tool  114   a  rather than scrolling through the document content displayed within text editor  112  and copying/pasting content from one location within the document to another, certain embodiments conserve significant processing resources as compared with existing text editors.  FIGS.  4 A through  5 C  present two examples of the use of outline tool  114   a  to reorganize the content of document  120 . 
     As a first example of the manner by which user  104  may use outline tool  114   a  to reorder the content of document  120 ,  FIGS.  4 A and  4 B  illustrate the use of outline topic elements  302   a  through  302   e  to reorder the sequence of parts  305   a  through  305   e  within document  120 . In particular,  FIGS.  4 A and  4 B  illustrate an example in which user  104  repositions second part  305   b  (including “Topic 1” outline topic  304   b  and its associated document content) from a first position within document  120  (located between first part  305   a  and third part  305   c ), to a second position within document  120  (located between fourth part  305   d  and fifth part  305   e ), by repositioning outline topic element  302   b  (which is linked to second part  305   b ) within the sequence of outline topic elements  302   a  through  302   e  displayed by outline tool  114   a . Specifically,  FIG.  4 A  illustrates the movement of outline topic element  302   b  (which is linked to second part  305   b ) from a first position within the sequence of outline topic elements displayed by outline tool  114   a  on region  202  of GUI  110  (located between first outline topic element  302   a  and third outline topic element  302   c ), to a second position within the sequence of outline topic elements displayed by outline tool  114   a  on region  202  (located between fourth outline topic element  302   d  and first outline topic element  302   e ). User  104  may move outline topic element  302   b  within first region  202  of GUI  110  in any suitable manner. As an example, in certain embodiments in which display  108  corresponds to a touch screen display, user  104  may move outline topic element  302   b  from the first position on first region  202  to the second position on first region  202  by touching the display at the location of outline topic element  302   b  and dragging his/her finger from the first position on region  202  to the second position on region  202 . As another example, in some embodiments, user  104  may move outline topic element  302   b  from the first position on region  202  of GUI  110  to the second position on region  202  by using a mouse/trackpad to select outline topic element  302   b  (e.g., by clicking on outline topic element  302   b ) and to drag the outline topic element from the first position on region  202  to the second position on region  202 . 
     In response to a user  104  repositioning outline topic element  302   b  from the first position on region  202  (located between first outline topic element  302   a  and third outline topic element  302   c ) to the second position on region  202  (located between fourth outline topic element  302   d  and fifth outline topic element  302   e ), document tool  102  is configured to update the content displayed by both outline tool  114   a  and text editor  112 .  FIG.  4 B  illustrates the result of such update. In particular, as illustrated in  FIG.  4 B , document tool  102  updated the sequence of outline topic elements  302   a  through  302   e  displayed by outline tool  114   a , such that outline topic element  302   b  is positioned between outline topic element  302   d  and outline topic element  302   e . Similarly, document tool  102  performed a corresponding update on the sequence of parts  305   a  through  305   e  displayed by text editor  112 , such that second part  305   b  is positioned between fourth part  305   d  and fifth part  305   e.    
     As a second example of the manner by which user  104  may use outline tool  114   a  to reorder the content of document  120 ,  FIGS.  5 A through  5 C  illustrate the use of outline tool  114   a  to reposition a given paragraph  502  within document  120 . As illustrated in  FIG.  5 A , paragraph  502  is associated with “Topic 1” outline topic  304   b  in document  120 . If user  104  desires to reposition paragraph  512 , but not “Topic 1” outline topic  304   b , within document  120 , user  104  may interact with button  308  of outline topic element  302   b , which is linked to outline topic  304   b  and its associated document content, to cause outline topic element  302   b  to display paragraph  502 . User  104  may then move paragraph  502 , as displayed in outline tool  114   a , from a first position on region  202  of GUI  110  (within outline topic element  302   b ), to a second position on region  202  (within a new outline topic element). For example,  FIG.  5 B  illustrates user  104  moving paragraph  502  from outline topic element  302   b  to outline topic element  302   c . User  104  may move paragraph  502 , as displayed in outline tool  114   a , in any suitable manner. For example, in certain embodiments in which display  108  corresponds to a touch screen display, user  104  may move paragraph  502  from the first position on first region  202  (e.g., within outline topic element  302   b ) to the second position on first region  202  (e.g., within outline topic element  302   c ) by touching the display at the location of paragraph  502  and dragging his/her finger from the first position on region  202  to the second position on region  202 . As another example, in some embodiments, user  104  may move paragraph  502  from the first position on first region  202  (e.g., within outline topic element  302   b ) to the second position on first region  202  (e.g., within outline topic element  302   c ) by using a mouse/trackpad to select paragraph  502  (e.g., by clicking on paragraph  502 ) and to drag the paragraph from the first position on region  202  to the second position on region  202 . 
     As illustrated in  FIG.  5 B , in certain embodiments, in response to user  104  selecting a paragraph (e.g., paragraph  502 ) displayed by a given outline topic element (e.g., outline topic element  302   b ) and moving the paragraph out of the given outline topic element, document tool  102  is configured to cause one or more of the other outline topic elements (e.g., outline topic element  302   c ) to display the document content to which those element(s) are linked. For example, as illustrated in  FIG.  5 B , in response to user  104  selecting paragraph  502  and moving paragraph  502  from outline topic element  302   b , document tool  102  is configured to cause outline topic element  302   c  to display paragraphs  504   a  and  504   b  of document  120 , to which outline topic element  302   c  is linked. User  104  may then choose to position paragraph  502  within outline topic element  302   c , relative to paragraphs  504   a  and  504   b . For example, as illustrated in  FIG.  5 B , user  104  may position paragraph  502  between paragraph  504   a  and paragraph  504   b.    
     In response to a user  104  repositioning paragraph  502  from the first position on region  202  (located within outline topic element  302   b ) to the second position on region  202  (located between paragraph  504   a  and paragraph  504   b , within outline topic element  302   c ), document tool  102  is configured to update the content displayed by both outline tool  114   a  and text editor  112 .  FIG.  5 C  illustrates the result of such update. In particular, as illustrated in  FIG.  5 C , document tool  102  updated the document content linked with outline topic elements  302   b  and  302   c  such that paragraph  502  is no longer linked with outline topic element  302   b  (e.g., outline topic element  302   b  is no longer configured to display paragraph  502 ). Instead, paragraph  502  is linked with outline topic element  302   c  (e.g., outline topic element  302   c  is configured to display paragraph  502  between paragraph  504   a  and paragraph  504   b ). Similarly, document tool  102  performed a corresponding update on the content of document  120 , as displayed by text editor  112 , such that paragraph  502  is positioned between paragraph  504   a  and paragraph  504   b  (and associated with “Topic 2” outline topic  304   c ). In certain embodiments, using outline tool  114   a  to reposition/reorder content within document  120  may conserve significant computational resources, as compared with repositioning/reordering the content directly within text editor  112 . For example, consider a situation in which document  120  is a multi-page document, with “Topic 1” outline topic  304   b  and its associated document content (e.g., part  305   b  of document  120 ) covering multiple pages, “Topic 2” outline topic  304   c  and its associated document content (e.g., part  305   c  of document  120 ) covering multiple pages, and “Topic 3” outline topic  304   d  and its associated document content (e.g., part  305   d  of document  120 ) covering multiple pages. If user  104  chooses to move “Topic 1” outline topic  304   b  and its associated document content (e.g., part  305   b  of document  120 ) to a position within document  120  after “Topic 3” outline topic  304   d  and its associated document content (e.g., part  305   d  of document  120 ), performing such reordering directly within text editor  112  would likely require user  104  to select the multiple pages of document content associated with “Topic 1” outline topic  304   b , and to scroll through the multiple pages of document content associated with “Topic 2” outline topic  304   c  and “Topic  3 ” outline topic  304   d  in order to reposition the document content associated with “Topic 1” outline topic  304   b  after the document content associated with “Topic 3” outline topic  304   d . On the other hand, user  104  could perform the same reordering using outline tool  114   a  simply by selecting a single element (outline topic element  302   b ) and moving that element two elements down in the sequence of outline topic elements  302   a  through  302   e  displayed by outline tool  114   a    
     c. Method of Operation 
       FIG.  6    presents a flowchart illustrating an example method  600  (described in conjunction with elements of  FIGS.  1  through  5 C ) through which outline tool  114   a  may be used to organize/reorganize the contents of a document  120  according to a set of outline topics. 
     At operation  602  document tool  102  receives a request  134  to create and/or edit a document  120 . At operation  604  document tool  102  determines whether document  120  is an existing document stored in database  118  or a new document to be created by the tool. If, at operation  604  document tool  102  determines that document  120  is an existing document stored in database  118 , at operation  606  document tool  102  displays the content of the document in text editor  112 . In particular, document tool  102  displays the content of document  102  as a sequence of parts  305   a  through  305   e  within text editor  112 . Each part of the sequence of parts  305   a  through  305   e  includes an outline topic of a set of outline topics  304   a  through  304   e , and a portion of the content of document  120  that is associated with the outline topic. Document tool  102  also displays a sequence of outline topic elements  302   a  through  302   e  in outline tool  114   a . Each outline topic element of the sequence of outline topic elements  302   a  through  302   e  is linked to a corresponding part of the sequence of parts  305   a  through  305   e . If, at operation  604  document editing tool  102  determines that document  120  does not already exist, at operation  608  document editing tool  102  displays an empty text editor  112  and an empty outline tool  114   a  on GUI  110 . 
     At operation  610  document editing tool  102  determines whether it has received a request  134  from user  104 . Request  134  may take any suitable form. For example, request  134  may correspond to a request to add an outline topic  304  to document  120 , a request to add content to document  120 , a request to remove content from document  120 , a request to edit content of document  120 , and/or any other suitable request associated with document  120 . User  104  may cause request  134  to be transmitted to document editing tool  102  in any suitable manner. For example, in certain embodiments, user  104  may cause request  134  to be transmitted to document tool  102  by typing on a keyboard, using a mouse/trackpad to interact with GUI, speaking into a microphone, and/or interacting with GUI  110 , device  106 , and/or any user interface connected to device  106  in any suitable manner. 
     If, at operation  610  document editing tool  102  determines that it has received a request  134  from user  104 , at operation  612  the tool next determines whether request  134  is a request to add an outline topic to document  120 . For example, document tool  102  may determine whether user  104  generated request  134  by interacting with the “Add new outline topic” button  310  displayed by outline tool  114   a . If, at operation  612  document editing tool  102  determines that request  134  is a request to add a new outline topic to document  120 , at operation  622  document editing tool  102  adds the new outline topic to document  120 . In particular, document editing tool  102  displays the new outline topic (e.g., outline topic  304   e ) within document  120  (e.g., within part  305   e  of document  120 ), as displayed by text editor  112 . Document tool  102  additionally generates a new outline topic element (e.g., element  302   e ) corresponding to the new outline topic and displays the new outline topic element in outline tool  114   a . The new outline topic element (e.g., element  302   e ) displayed in outline tool  114   a  is linked to the new outline topic displayed in text editor  112  (along with any document content associated with the new outline topic), such that any changes made by user  104  to the new outline topic element (e.g., element  302   e ) in outline tool  114   a  are reflected within text editor  112 , and any changes made by user  104  to the new outline topic (e.g., outline topic  304   e ) and/or any document content associated with the new outline topic (e.g., the document content associated with part  305   e ) are correspondingly made to the linked outline topic element (e.g., outline topic element  302   e ) displayed in outline tool  114   a . Method  600  then returns to operation  610 . 
     If, at operation  612  document tool  102  determines that request  134  is not a request to add a new outline topic to document  120 , at operation  614  document tool  102  determines whether request  134  is a request to add content to document  120 , remove content from document  120 , and/or edit content within document  120 . For example, document tool  102  may determine whether user  104  has interacted with a keyboard of device  106  in order to add text to document  120  through text editor  112 , remove text from document  120  using text editor  112 , and/or edit text within document  120  using text editor  112 . If, at operation  614  document tool  102  determines that request  134  is a request to add content to document  120 , remove content from document  120 , and/or edit content within document  120 , at operation  624  document tool  102  modifies the content of document  120  accordingly. As an example, in response to determining that request  134  is a request to add content to document  120 , document tool  102  displays the new content in text editor  112  as part of document  120 . Document tool  102  additionally identifies an outline topic (if any) associated with the new content. For instance, document tool  102  may determine that the new content was added to document  120  at a position within document  120  after a first outline topic and before a second outline topic (e.g., after outline topic  304   a  and before outline topic  304   b ), indicating that the new content is associated with the first outline topic (e.g., outline topic  304   a ). Document tool  102  next identifies the corresponding outline topic element that is linked to the first outline topic (e.g., outline topic element  302   a , which is linked to outline topic  304   a ), and links that outline topic element to the new content. As another example, in response to determining that request  134  is a request to remove content from document  120 , document tool  102  removes the content from text editor  112  and removes any link between the content and any of the outline topic elements displayed by outline tool  114   a . As another example, in response to determining that request  134  is a request to edit content within document  120 , document  102  updates the content displayed by text editor  112  to reflect the edit, leaving the link between the updated content and its associated outline topic element displayed within outline tool  114   a  unchanged. Method  600  then returns to operation  610 . 
     If, at operation  614  document tool  102  determines that request  134  is not a request to add content to document  120 , at operation  616  document tool  102  determines whether request  134  corresponds to an interaction performed by user  104  with an outline topic element of the sequence of outline topic elements  302   a  through  302   e  displayed by outline tool  114   a . An interaction performed by user  104  with a given outline topic element may correspond to user  104  selecting the outline topic element (e.g., by clicking on the outline topic element, touching screen  108  of device  106  at a location associated with the outline topic element, and/or performing any other interaction with GUI  110  that indicates that user  104  is selecting the outline topic element), interacting with a button (e.g., button  306  or button  308 ) displayed as part of the outline topic element by outline tool  114   a , moving the outline topic element to a new position within outline tool  114   a , moving a portion of the content displayed by the outline topic element to a different outline topic element, and/or performing any other suitable interaction with the outline topic element. If, at operation  616  document tool  102  determines that request  134  corresponds to an interaction performed by user  104  with a given outline topic element (e.g., outline topic element  302   b ), in certain embodiments, document tool  102  highlights the document content that is linked to the given outline topic element within document  120 , as displayed by text editor  112  (e.g., highlights part  305   b  that is linked to outline topic element  302   b ). Document tool  102  may highlight the linked document content (e.g., part  305   b ) within text editor  112  in any suitable manner. For example, in certain embodiments, document tool  102  may adjust a background color of the content, adjust a font color of any text included in the content, add a box around the content, adjust a font size of any text included in the content, adjust a font type of any text included in the content, and/or otherwise distinguish the content from the rest of the content of document  120 . In some embodiments, in response to determining that request  134  corresponds to an interaction performed by user  104  with a given outline topic element, document tool  102  adjusts the content displayed by the outline topic element. For example, in response to user  104  interacting with outline topic element  302   b  by interacting with button  308  displayed on outline topic element  302   b , document tool  102  may update the content displayed by outline topic element  302   b  such that outline topic element  302   b  displays all, some, or none of the content of document  120  that is linked to the outline topic element (e.g., the document content included in part  305   b  of document  120 ). 
     At operation  628  document tool  102  determines whether the interaction performed by user  104  with the outline topic element (e.g., outline topic element  302   b ) corresponds to a repositioning of the outline topic element from a first position within outline tool  114   a  (e.g., a position between outline topic element  302   a  and outline topic element  302   c ) to a second position within outline tool  114   a  (e.g., a position between outline topic element  302   d  and outline topic element  302   e ). If, at operation  628  document tool  102  determines that the interaction corresponds to a repositioning of the outline topic element from a first position within outline tool  114   a  to a second position within outline tool  114   a , at operation  630  document tool  102  updates outline tool  114   a  and document  120  (as displayed by text editor  112 ) according to the repositioning. In particular, document tool  102  updates outline tool  114   a  by moving the outline topic element (e.g., outline topic element  302   b ) from the first position (e.g., the position between outline topic element  302   a  and outline topic element  302   c ) to the second position (e.g., the position between outline topic element  302   d  and outline topic element  302   e ). Document tool  102  also updates document  120  according to the repositioning, by moving the document content linked to the outline topic element (e.g., part  305   b , linked to outline topic element  302   b ) in a corresponding manner, from a first position within document  120  (e.g., a position between part  305   a  and part  305   c ) to a second position within document  120  (e.g., between part  305   d  and part  305   e ), as dictated by the new position of the outline topic element within the sequence of outline topic elements  302   a  through  302   e . Method  600  then returns to operation  610 . 
     If, at operation  628  document tool  102  determines that the interaction performed by user  104  with the outline topic element does not correspond to a repositioning of the outline topic element within outline tool  114   a , at operation  632  document tool  102  determines whether the interaction performed by user  104  corresponds to a reassignment of all or a portion of the content of document  120  that is linked to the outline topic element from the outline topic element to a new outline topic element. If, at operation  632  document tool  102  determines that the interaction performed by user  104  corresponds to a reassignment of all or a portion of the content of document  120  that is linked to the outline topic element from the outline topic element to a new outline topic element (e.g., a reassignment of paragraph  502  from outline topic element  302   b  to outline topic element  302   c , as illustrated in  FIGS.  5 A through  5 C ), at operation  634  document tool  102  updates outline tool  114   a  and document  120  (as displayed by text editor  112 ) according to the reassignment. In particular, document tool  102  updates outline tool  114   a  by moving the content that is linked to the outline topic element (e.g., paragraph  502  that is linked to outline topic element  302   b ) from the outline topic element (e.g., outline topic element  302   b ) to the new outline topic element (e.g., outline topic element  302   c ). Document tool  102  also updates document  120  according to the reassignment, by moving the linked document content (e.g., paragraph  502 ) in a corresponding manner, from a first position within document  120  (e.g., a position associated with outline topic  304   b  and linked to outline topic element  302   b ) to a second position within document  120  (e.g., a position associated with outline topic  304   c  and linked to outline topic element  302   c ), as dictated by the new position of the document content within the new outline topic element. Method  600  then returns to operation  610 . 
     If, at operation  632  document tool  102  determines that the interaction performed by user  104  with the outline topic element does not correspond to a reassignment of all or a portion of the content of document  120  that is linked to the outline topic element to another outline topic element, at operation  636  document tool  102  determines whether the interaction corresponds to a movement of a portion of the content of document  120  that is linked to the outline topic element to a new position within the outline topic element. If, at operation  636  document tool  102  determines that the interaction performed by user  104  corresponds to a movement of a portion of the content of document  120  that is linked to the outline topic element to a new position within the outline topic element (e.g., a movement of paragraph  504   b  to before paragraph  504   a  rather than after  504   a ), at operation  638  document tool  102  updates outline tool  114   a  and document  120  (as displayed by text editor  112 ) according to the movement. In particular, document tool  102  updates outline tool  114   a  by moving the portion of the content (e.g., paragraph  504   b ) to the new location with the same outline topic element (e.g., from after paragraph  504   a  to before paragraph  504   a , within outline topic element  302   c ). Document tool  102  also updates document  120  according to the movement, by moving the linked document content (e.g., paragraph  504   b ) in a corresponding manner, from a first position within document  120  (e.g., a position after paragraph  504   a ) to a second position within document  120  (e.g., a position before paragraph  504   a ), as dictated by the new position of the document content within the outline topic element. Method  600  then returns to operation  610 . 
     If, at operation  636  document tool  102  determines that the interaction performed by user  104  with the outline topic element does not correspond to a movement of a portion of text within the outline topic element, at operation  640  document tool  102  determines whether the interaction corresponds to an attempt by user  104  to rename the outline topic that is linked to the outline topic element. For example, document tool  102  may determine whether the interaction corresponds to user  104  selecting button  306  displayed on the outline topic element. (As described above, in the discussion of  FIG.  3 C , selecting button  306  on a given outline topic element instructs document tool  102  to transform the outline topic name displayed by the outline topic element into an editable field.) If, at operation  640  document tool  102  determines that the interaction corresponds to an attempt by user  104  to rename the outline topic that is linked to the given outline topic element (e.g., an attempt to rename outline topic  304   e , which is linked to outline topic element  302   e ), at operation  642  document tool  102  updates the name of the outline topic within document  120  (e.g., updates the name of outline topic  304   e ), and within outline tool  114   a  (e.g., updates the outline topic name displayed by outline topic element  302   e ). For example, outline tool  102  may transform the outline topic name displayed by the outline topic element (e.g., the outline topic name displayed by outline topic element  302   e ) into an editable field, and may update the name according to text entered by user  104  into the editable field. Document tool  102  may then automatically update the name of the linked outline topic (e.g., outline topic  304   e , which is linked to outline topic element  302   e ) to match the name entered by user  104 . Method  600  then returns to operation  610 . 
     If, at operation  616  document tool  102  determines that request  134  does not correspond to an interaction performed by user  104  with an outline topic element of the sequence of outline topic elements  302   a  through  302   e  displayed by outline tool  114   a , at operation  618  document tool  102  determines whether request  134  corresponds to a request to save the current version of document  120  in database  118 . For example, document tool  102  may determine whether user  104  has interacted with button  230  displayed on GUI  110 , through which user  104  may request that document tool  102  save a copy of document  120  in database  118 , as explained above, in the discussion of  FIG.  2   . If, at operation  618  document tool  102  determines that request  134  corresponds to a request from user  104  to save the current version of document  120  in database  118 , at operation  620  document tool  102  saves the document. As an example, in certain embodiments in which document  120  has not previously been saved by user  104 , document tool  102  may save a new document  120  in database  118 . As another example, in certain embodiments in which user  104  previously saved a version of document  120  in database  118 , document tool  102  may save the current version of document  120  by overwriting the previous version of document  120  within database  118 . As a further example, in certain embodiments in which user  104  previously saved a version  122   a  of document  120  in database  118 , document tool  102  may save the current version of document  120  as a new version  122   b  of document  120  in database  118 . Method  600  then returns to operation  610 . 
     Modifications, additions, or omissions may be made to method  600  depicted in  FIG.  6   . Method  600  may include more, fewer, or other operations. For example, operations may be performed in parallel or in any suitable order. As an example, while method  600  illustrates the decisions associated with operations  612 ,  614 ,  616 , and  618  performed sequentially and in a specific order, these decisions may be performed in parallel, or in any suitable order. Similarly, while method  600  illustrates the decisions associated with operations  628 ,  632 ,  636 , and  640  performed sequentially and in a specific order, these decisions may be performed in parallel, or in any suitable order. While discussed as document tool  102  (or components thereof, including, for example, outline tool  114   a ) performing certain operations, any suitable components of system  100 , including, for example, device  106 , may perform one or more operations of the method. 
     ii. Sentence Rewrite Tool 
     User  104  may use editing tool  114  in the form of sentence rewrite tool  114   b  to edit one or more of the sentences included in document  120 . In particular, user  104  may use sentence rewrite tool  114   b  to generate multiple versions of a given sentence that is included in the document (referred to herein as sentence variants), and to experiment with the use of those different sentence variants within the document, in order to identify and select a preferred sentence variant. Accordingly, rather than losing prior versions of a sentence each time user  104  edits the sentence, certain embodiments of document tool  102  enable user  104  to maintain multiple different versions of the sentences within document  120 , that the user may select from amongst. In this manner, certain embodiments conserve computational resources otherwise expended by the user rewriting a given sentence of document  120  only to decide at a later time that he/she preferred the original version of the sentence, and then having to search through previous versions of the document in an attempt to locate the original version of the sentence, and/or attempting to reproduce the original version of the sentence from scratch, if no previous versions of document  120  were saved. 
       FIGS.  7 A through  7 D  illustrate the use of sentence rewrite tool  114   b . In certain embodiments, user  104  may cause editing tool  114  to take the form of sentence rewrite tool  114   b  by selecting sentence rewrite button  210  on GUI  110 . In some embodiments, and as illustrated in  FIGS.  7 A through  7 D , document tool  102  may highlight button  210  on GUI  110  when sentence rewrite tool  114   b  is in use (e.g., when sentence rewrite tool  114   b  is displayed in region  202  of GUI  110 ). 
     a. Generating Sentence Variants 
     As illustrated in  FIG.  7 A , sentence rewrite tool  114   b  is configured to display one or more sentences  702  through  708  of document  120 . In particular, in certain embodiments, in response to user  104  selecting sentence rewrite button  210  on GUI  110 , document tool  102  is configured to identify one or more sentences  702  through  708  within document  120 , and to display each sentence  702  through  708  as a separate element on sentence rewrite tool  114   b . While  FIG.  7 A  illustrates sentence rewrite tool  114   b  displaying less than all of the sentences of document  120 , this disclosure contemplates that in certain embodiments, any of the sentences of document  120  may be viewed within sentence rewrite tool  114   b . For example, in certain embodiments, sentence rewrite tool  114   b  may display a scroll bar with which user  104  may interact to view any of the sentences of document  120  within sentence rewrite tool  114   b . In some embodiments and as described in further detail below in the discussion of  FIG.  7 D , only a subset of the sentences of document  120  (e.g., those sentences for which multiple versions exist) may be viewed within sentence rewrite tool  114   b.    
     Document tool  102  may identify individual sentences  702  through  708  from the strings of text entered by user  104  into text editor  112  in any suitable manner. As an example, in certain embodiments, document tool  102  may identify each sentence  702  through  708  by identifying one or more sentence delimiters within document  120  (e.g., periods, exclamation points, question marks, etc.). As another example, in some embodiments, instructions  132  stored in memory  130  of document tool  102  may include a set of rules for identifying the sentences of document  120 . In particular, because the period character may take the role of both a sentence delimiter and an abbreviation marker within a sentence, in certain embodiments, instructions  132  may include rules for distinguishing between period characters that are sentence delimiters and period characters that are used to denote abbreviations, decimal points, ellipses, email addresses, etc. As a further example, in certain embodiments, document tool  102  may include one or more machine learning algorithms stored within instructions  132  of memory  130 , which have been trained to identify sentences within documents. Such machine learning algorithm(s) may include any suitable machine learning algorithm for identifying sentence boundaries. For example, the machine learning algorithms may include a decision tree algorithm, a neural network algorithm, a support vector machine, and/or any other suitable machine learning algorithm for identifying sentence boundaries. 
     As described above, user  104  may use sentence rewrite tool  114   b  to generate new versions (sentence variants) for one or more of the sentences of document  120 .  FIG.  7 B  presents an example in which user  104  seeks to generate a new version of sentence  708  of document  120 . 
     User  104  may indicate to document tool  102  that the user seeks to generate a new version of a given sentence of document  120  (e.g., sentence  708 ) in any suitable manner. As an example, in certain embodiments, user  104  may select sentence  708 , as displayed within sentence rewrite tool  114   b , to indicate to document tool  102  that the user seeks to generate a new sentence variant for sentence  708 . As another example, in some embodiments, user  104  may select sentence  708 , as displayed within text editor  112 , to indicate that the user seeks to generate a new sentence variant for the sentence. User  104  may select sentence  708  in any suitable manner. For example, in certain embodiments, user  104  may select sentence  708  (as displayed in text editor  112  and/or sentence rewrite tool  114   b ) by (1) touching display  108  of device  106  at a location associated with the sentence, (2) using a mouse coupled to device  106  to click on the sentence, (3) using a trackpad of device  106  to click on the sentence, (4) using a mouse and/or trackpad of device  106  to hover a cursor over the sentence, and/or (5) interacting with device  106 , display  108 , and/or a user interface coupled to device  106  in any suitable manner to select the sentence. 
     In response to user  104  selecting sentence  708 , document tool  102  is configured to display a sentence variant input and selection box  710  associated with sentence  708  within sentence rewrite tool  114   b . Sentence variant input and selection box  710  is configured to display one or more sentence variants (e.g., sentence variant  708   a ) associated with sentence  708 . For each sentence variant of sentence  708 , sentence variant input and selection box  710  is also configured to display an indication  712  (e.g., indication  712   a  associated with sentence variant  708   a ) indicating whether or not the associated sentence variant is the selected sentence variant that is included in document  120 . For example, as illustrated in  FIG.  7 B , indication  712   a , which is associated with sentence variant  708   a , indicates that sentence variant  708   a  is the selected variant that is included in document  120 . In particular, sentence variant  708   a  corresponds to sentence  708 , which is displayed by text editor  112  as part of document  120 . While  FIG.  7 B  presents an example in which only a single sentence variant  708   a  exists for sentence  708 , this disclosure contemplates that any number of sentence variants may exist for a given sentence, each of which may be displayed within sentence variant input and selection box  710 . 
     User  104  may create new sentence variant(s) for a given sentence  708  in any suitable manner. For example, as illustrated in  FIG.  7 B , in certain embodiments, sentence variant input and selection box  710  is configured to display a field  714  into which user  104  may enter a new sentence variant for sentence  708 . In certain embodiments and as illustrated in  FIG.  7 B , when initially displayed by sentence rewrite tool  114   b , field  714  is a blank field into which user  104  may enter text associated with a new sentence variant for sentence  708 . In some embodiments, document tool  102  may automatically populate field  714  with text, which user  104  may then edit in order to generate anew sentence variant for sentence  708 . As an example, in certain embodiments, document tool  102  is configured to automatically populate field  714  with the previous version of the sentence (e.g., variant  708   a  of sentence  708 ), which user  104  may then edit to generate a new sentence variant. This may be desirable in certain embodiments in which user  104  seeks to make minor edits to the sentences within document  120 . In particular, this may conserve the processing resources that otherwise would have been associated with the user re-typing a large portion of the content from the original version of the document that remains unchanged between versions. As another example of a manner by which document tool  102  may automatically populate field  714  with text, in certain embodiments, document tool  102  may be configured to automatically populate field  714  with a suggested sentence variant for sentence  708 . For example, document tool  102  may use one or more machine learning algorithms stored as part of instructions  132  in memory  130  to generate a suggested sentence variant for sentence  708 . The machine learning algorithms may be trained to generate suggested sentence variants in any suitable manner. As an example, in certain embodiments, the machine learning algorithm(s) may correspond to one or more sentence simplification algorithms that have been trained to modify the content and structure of a sentence in order to make it easier to read and/or understand, while preserving the idea expressed by the original sentence. Such machine learning algorithms may be any suitable machine learning algorithms trained to generate suggested sentence variants for a given sentence. In particular, the machine learning algorithms may include one or more neural network models, including, for example, recurrent neural network models. In some embodiments, the machine learning algorithms may include one or more reinforcement learning models. 
     In certain embodiments, in addition to or instead of providing sentence-level suggestions, document tool  102  may be configured to generate document-level suggestions for document  120 . As an example, where the majority of the sentences within document  120  begin with the word “The,” document tool  102  may generate a document-level suggestion to edit one or more of these sentences such that they begin with a word other than “The.” As another example, where the majority of the sentences within document  120  are twenty words or longer, document tool  102  may generate a document-level suggestion to edit document  120  by reducing the word counts of the sentences within the document. Document tool  102  may present such document-level suggestions to user  104  in any suitable manner. For example, in certain embodiments, document tool  102  may be configured to present such suggestions to user  104  in a pop-up displayed on GUI  110 . As another example, in certain embodiments, GUI  110  may include a region that is used to display such suggestions. 
     Document tool  102  may be configured to generate such document-level suggestions in any suitable manner. For example, in certain embodiments, document tool  102  may use one or more machine learning algorithms stored as part of instructions  132  in memory  130  to generate such suggestions. Such machine learning algorithms may be any suitable machine learning algorithms trained to generate document-level suggestions for a given document  120 . In particular, the machine learning algorithms may include one or more neural network models, including, for example, recurrent neural network models. In some embodiments, the machine learning algorithms may include one or more reinforcement learning models. 
     In some embodiments, document tool  102  may be configured to provide document-level suggestions to users  104  in the form of one or more relevant video clips. As an example, document tool  102  may store a set of video clips in memory  130 , each of which includes information that may be helpful during the writing process. For instance, the set of video clips may include video clips related to certain grammatical issues, along with suggestions for ways to address those grammatical issues. The set of video clips may also include video clips related to improving writing style. 
     Document tool  102  may present such video clips to user  104  in any suitable manner. As an example, in response to determining that document  120  includes one or more instances of a particular grammatical issue, document tool  102  may present a video clip related to that grammatical issue to user  104  (e.g., in a pop-up window displayed on GUI  110 , in a specific region of GUI  110 , etc.). As another example, document tool  102  may display video clips to user  104  at various stages during the user&#39;s writing process, with the content included in the video clips related to the writing stage. For instance, while user  104  is generating outline topics for document  120 , document tool  102  may display a video clip that provides tips for organizing/structuring a document. Similarly, while user  104  is rewriting various sentences within document  120 , document tool  102  may display one or more video clips that provide suggestions for improving writing style. 
     b. Selecting from Amongst Available Sentence Variants 
       FIG.  7 C  illustrates an example in which a pair of new sentence variants—sentence variant  708   b  and sentence variant  708   c —have been created for sentence  708 , in addition to original sentence variant  708   a . Each sentence variant  708   a  through  708   c  is associated with an indication  712   a  through  712   c , which indicates whether or not the associated sentence variant has been selected for inclusion within document  120 .  FIG.  7 C  illustrates an example in which second sentence variant  708   b  has been selected for inclusion within document  120 . Accordingly, indication  712   b , which is associated with sentence variant  708   b , distinguishes sentence variant  708   b  from the other two sentence variants  708   a  and  708   c . In particular, in certain embodiments and as illustrated in  FIG.  7 C , indication  712   b  includes a check mark, to indicate that its associated sentence variant  708   b  is the selected sentence variant, while indications  712   a  and  712   c , associated with sentence variants  708   a  and  708   c , respectively, do not include such a check mark. 
     User  104  may select a given sentence variant (e.g., sentence variant  708   b ) of a set of existing sentence variants  708   a  through  708   c  as the selected sentence variant for inclusion within document  120  in any suitable manner. For example, in certain embodiments, user  104  may interact with indications  712   a  through  712   c  to switch between selected sentence variants. For instance, in an embodiment in which sentence variant  708   a  is originally the selected sentence variant, user  104  may set sentence variant  708   b  to be the selected sentence variant by interacting with indication  712   b . Such interaction may cause indication  712   a , associated with sentence variant  708   a , to switch from indicating that sentence variant  708   a  is the selected sentence variant, to indicating that sentence  708   a  is not the selected sentence variant. Similarly, the interaction may cause indication  712   b , associated with sentence variant  708   b , to switch from indicating that sentence variant  708   b  is not the selected sentence variant, to indicating that sentence  708   b  is the selected sentence variant. User  104  may interact with indication  712   b in any suitable manner. For example, in certain embodiments, user  104  may interact with indication  712   b  by (1) touching screen  108  of device  106  at a location associated with indication  712   b , (2) using a mouse and/or trackpad associated with device  106  to click on indication  712   b , (3) using a mouse and/or trackpad associated with device  106  to hover a cursor over indication  712   b , and/or (4) using device  106 , display  108 , and/or a user interface coupled to device  106  to interact with indication  712   b  in any other suitable manner. 
     In response to user  104  selecting a new sentence variant (e.g., sentence variant  708   b ) for inclusion within document  120 , document tool  102  is configured to update document  120 , as displayed in text editor  112 , to reflect this change. In particular, document tool  102  is configured to replace the previously selected sentence variant (e.g., sentence variant  708   a ) with the newly selected sentence variant (e.g., sentence variant  708   b ) within document  120 , as displayed in text editor  112 . For example, a comparison between  FIG.  7 B  (for which sentence variant  708   a  was the selected sentence variant) and  FIG.  7 C  (for which sentence variant  708   b  is the selected sentence variant) illustrates the update made to sentence  708  of document  120 , as displayed in text editor  112 , in response to user  104  setting sentence variant  708   b  to be the selected sentence variant instead of sentence variant  708   a . In particular, in  FIG.  7 B , sentence  708  displayed in text editor  112  corresponds to sentence variant  708   a  and reads: “This is a third sentence of the first paragraph that is associated with topic one.”. On the other hand, in  FIG.  7 C , sentence  708  displayed in text editor  112  corresponds to sentence variant  708   b  and reads: “This is a second attempt at a third sentence of the first paragraph that is associated with topic one.”. 
     c. Collaboratively Editing a Document 
     While the above discussion describes a single user  104  generating sentence variants  708   a  through  708   c , this disclosure contemplates that any number of users  104  may collaborate on a document  120  by proposing sentence variants for the sentences within document  120 . In particular, as described above in the discussion of  FIG.  2   , certain embodiments of document tool  102  enable user  104  to share a document  120  that he/she created with one or more other users. In certain such embodiments, each of those other users may be able to generate new sentence variants for any of the sentences of document  120 . For example, sentence variant  708   b , displayed in  FIG.  7 C , may correspond to a sentence variant created by a first other user with whom user  104  has shared document  120 , and sentence variant  708   c may correspond to a sentence variant created by a second other user with whom user  104  has shared document  120 . 
     By enabling other users with whom user  104  has shared document  120  to generate sentence variants for the sentences of document  120 , certain embodiments of document tool  102  may enable multiple users to edit the same document at the same time. For example, in certain embodiments, document tool  102  may be configured to determine that multiple users are simultaneously accessing a given document  120 . In such embodiments, document tool  102  may allow all such users to simultaneously edit the document  120  by proposing new sentence variants for the sentences of document  120 . Because any number of sentence variants may be generated for a given sentence displayed in text editor  112 , multiple users can simultaneously generate new sentence variants for a given sentence displayed in text editor  112 , without interfering with one another&#39;s work. In certain embodiments, the new sentence variants created by multiple users who are simultaneously editing document  120  may be viewed by each of the users within sentence rewrite tool  114   b  in real time, as they are created. 
     In some embodiments, document tool  102  may lock certain features of GUI  110  for one or more users when multiple users are simultaneously editing a document  120 . As an example, in certain embodiments, in response to determining that a second user has accessed a document  120  that user  104  is currently editing, document tool  102  may allow the second user to generate sentence variants for any of the sentences displayed in text editor  112 , but may prevent that user from selecting new sentence variants for inclusion within document  120  (e.g., by interacting with indications  712   a  through  712   c ). 
     When multiple users collaborate on a document  120 , sentence rewrite tool  114   b  may include features to distinguish between the sentence variants generated by the various users. As an example, in certain embodiments, for each sentence variant associated with a given sentence (e.g., each of sentence variants  708   a  through  708   c  associated with sentence  708 ), sentence variant input and selection box  710  may be configured to display information identifying the user who generated the sentence variant. Such identifying information may take any suitable form. As an example, in certain embodiments, document tool  102  may assign a different text color to each user who has collaborated on a given document  120 , and sentence variant input and selection box  710  may use the text color assigned to a given user to display the sentence variant(s) generated by that user. As another example, in certain embodiments, document tool  102  may assign metadata to each sentence variant  708   a  through  708   c  that identifies the user who generated the variant. In some such embodiments, in response to user  104  interacting with a given sentence variant displayed by sentence variant input and selection tool  710  (e.g., by hovering a cursor over the sentence variant), sentence rewrite tool  114   b  may be configured to display the metadata that identifies the user who generated the variant within a tooltip displayed on GUI  110 . 
     By enabling multiple users to simultaneously edit the same document, certain embodiments conserve storage resources as compared with existing text editing applications, which lock a document while a first user is editing it, such that a second user seeking to edit the document may need to generate and store a copy of it, and to make edits to the copy. Such embodiments may further conserve the processing resources otherwise associated with merging any changes the second user makes to the copy of the document with those changes made by the first user to the original document. 
     d. Reviewing and Removing Sentence Variants 
     Once user  104  (and/or other users collaboratively editing document  120 ) has generated sentence variant(s) for one or more of the sentences included in document  120 , the user may wish to review those existing sentence variants. To facilitate such review, sentence rewrite tool  114   b  includes element  716   a/b . As illustrated in  FIGS.  7 A and  7 D , user  104  may interact with element  716   a/b  to toggle between sentence rewrite tool  114   b  displaying all of the sentences of document  120  or only those sentences for which multiple sentence variants exist. In particular,  FIG.  7 A  illustrates an example in which sentence rewrite tool  114   b  is currently configured to display all of the sentences of document  120 . Accordingly, in response to user  104  interacting with element  716   a , sentence rewrite tool  114   b  is configured to switch to displaying only those sentences of document  120  for which multiple sentence variants exist. This may be desirable when user  104  wishes to review the existing sentence variants that have been generated for document  120 . On the other hand,  FIG.  7 D  illustrates an example in which sentence rewrite tool  114   b  is currently configured to display only those sentences of document  120  for which multiple sentence variants exist. Accordingly, in response to user  104  interacting with element  716   b , sentence rewrite tool  114   b  is configured to switch to displaying all sentences of document  120 . This may be desirable when user  104  wishes to return to the editing process and generate sentence variants for sentences for which multiple variants may not yet exist. 
     Once user  104  is confident in his/her selection of sentence variants for inclusion within document  120 , the user may choose to delete any of the unselected sentence variants. Deleting unwanted sentence variants may be desirable to conserve storage resources within system  100 . In certain embodiments, sentence rewrite tool  114   b  includes “Remove unselected rewrites” button  718  to efficiently accomplish this task. In particular, in response to user  104  interacting with button  718 , document tool  102  is configured to delete any sentence variants which have not been selected for inclusion in document  120 . Because button  718  may be used to delete all of the unselected sentence variants associated with document  120  through a single user action, this may conserve significant processing resources that would otherwise be expended by user  104  selecting and deleting each individual unselected sentence variant. As an example (described with respect to  FIG.  7 D ), in response to user  104  interacting with button  718 , document tool  102  is configured to delete unselected sentence variants  708   a  and  708   c.    
     User  104  may delete the unselected sentence variants associated with document  120  any number of times. For example, in response to user  104  deleting the unselected sentence variants associated with sentence  708  (e.g., sentence variants  708   a  and  708   c ), user  104  may generate new sentence variants for sentence  708  and then select a preferred sentence variant from amongst those new sentence variants for inclusion within document  120 , in a similar manner as described above in the discussion of  FIGS.  7 B and  7 C . User  104  may then interact with button  718  to delete any unselected sentence variants. 
     User  104  may interact with element  716   a/b  and/or button  718  in any suitable manner. For example, in certain embodiments, user  104  may interact with element  716   a/b  and/or button  718  by (1) touching screen  108  of device  106  at a location associated with the element or button, (2) using a mouse and/or trackpad associated with device  106  to click on the element or button, (3) using a mouse and/or trackpad associated with device  106  to hover a cursor over the element or button, and/or (4) using device  106 , display  108 , and/or a user interface coupled to device  106  to interact with element  716   a/b  and/or button  718  in any other suitable manner. 
     e. Method of Operation 
       FIG.  8    presents a flowchart illustrating an example method  800  (described in conjunction with elements of  FIGS.  1 , and  7 A through  7 D ) by which sentence rewrite tool  114   b  may be used to generate sentence variants (e.g., variants  708   b/c ) for one or more sentences (e.g., sentence  708 ) of document  120  and to select from amongst available sentence variants (e.g., variants  708   a  through  708   c ) for inclusion in document  120 . 
     At operation  802  document tool  102  receives a request  134  from a user  104  seeking to rewrite one or more sentences of document  120 . Document tool  102  may receive request  134  in any suitable manner. For example, in certain embodiments, user  104  may transmit request  134  to document tool  102  by selecting sentence rewrite button  210 , displayed on GUI  110 . At operation  804  document tool  102  displays sentence rewrite tool  114   b  in first region  202  of GUI  110 . 
     At operation  806  document tool  102  determines whether user  104  has interacted with a given sentence of document  120  (e.g., “activated” the given sentence, as illustrated in  FIG.  8   ). User  104  may interact with a given sentence of document  120  (as displayed within sentence rewrite tool  114   b  and/or as displayed within text editor  112 ) in any suitable manner. For example, in certain embodiments, user  104  may interact with a sentence by (1) touching display  108  of device  106  at a location associated with the sentence, (2) using a mouse coupled to device  106  and/or a trackpad associated with the device to click on the sentence, (3) using a mouse and/or trackpad of device  106  to hover a cursor over the sentence, and/or (4) interacting with device  106 , display  108 , and/or a user interface coupled to device  106  in any suitable manner to select the sentence. 
     If, at operation  806  document tool  102  determines that user  104  interacted with a given sentence of document  120 , at operation  808  document tool  102  determines whether multiple variants exist for the sentence with which the user interacted. If, at operation  808  document tool  102  determines that multiple variants exist for the sentence, at operation  810  document tool  102  displays the set of existing variants within sentence rewrite tool  114   b . Document tool  102  also displays an indication of which of the multiple sentence variants is the currently selected sentence variant (e.g., the sentence variant currently displayed as part of document  120  by text editor  112 ) within sentence rewrite tool  114   b . In certain embodiments in which only a single sentence variant exists for the selected sentence (as illustrated, for example, in  FIG.  7 A  for sentence  708 ), document tool  102  may display an indication associated with the sentence variant indicating that the single sentence variant is included in document  120 , as displayed in text editor  112 . In certain embodiments, document tool  102  additionally displays a field within sentence rewrite tool  114   b , into which user  104  may enter a new sentence variant for the selected sentence. 
     At operation  812  document tool  102  determines whether user  104  has created a new sentence variant for the selected sentence. For example, document tool  102  may determine whether user  104  has entered text associated with a new sentence variant into a field displayed in sentence rewrite tool  114   b  for the entry of such anew variant. As another example, in certain embodiments, determining that user  104  has created a new sentence variant for the selected sentence may correspond to determining that the user has requested that document tool  102  automatically generate a new sentence variant for the selected sentence. In certain such embodiments, document tool  102  may then apply a machine learning algorithm to the selected sentence to generate a new version of the sentence. Document tool  102  may apply any suitably trained machine learning algorithm to the selected sentence to generate a new version of the sentence. For example, document tool  102  may apply a deep reinforcement learning algorithm that has been trained to reduce the complexity of sentences, to the selected sentence, to generate a new version of the sentence. 
     If, at operation  812  document tool  102  determines that user  104  has created a new sentence variant for the selected sentence, at operation  814  document tool  102  displays the new sentence variant along with any existing sentence variants currently displayed within sentence rewrite tool  114   b . If, at operation  812  document tool  102  determines that user  104  has not created a new sentence variant for the selected sentence, at operation  816  document tool  102  determines whether user  104  has updated/modified an existing sentence variant displayed within sentence rewrite tool  114   b . If, at operation  816  document tool  102  determines that user  104  has updated/modified an existing sentence variant displayed within sentence rewrite tool  114   b , at operation  818  document tool  102  displays the updated/modified version of the sentence variant along with any other sentence variants currently displayed within sentence rewrite tool  114   b.    
     At operation  820  document tool  102  determines whether user  104  has selected a new sentence variant from amongst the set of available sentence variants for inclusion within document  120 . If, at operation  820  document tool  102  determines that user  104  has selected a new sentence variant for inclusion within document  120 , at operation  822  document tool  102  updates both sentence rewrite tool  114   b  and text editor  112  to reflect this selection. In particular, document tool  102  updates sentence rewrite tool  114   b  to display an indication associated with the newly selected sentence variant, to indicate that the sentence variant is currently included within document  120 . Document tool  102  also updates text editor  112  by replacing the previously selected sentence variant displayed in text editor  112  with the newly selected sentence variant. 
     Modifications, additions, or omissions may be made to method  800  depicted in  FIG.  8   . Method  800  may include more, fewer, or other operations. For example, operations may be performed in parallel or in any suitable order. While discussed as document tool  102  (or components thereof, including, for example, sentence rewrite tool  114   b ) performing certain operations, any suitable components of system  100 , including, for example, device  106 , may perform one or more operations of the method. 
     iii. Sentence Reorder Tool 
     User  104  may use editing tool  114  in the form of sentence reorder tool  114   c  to edit document  120  by reordering the sentences within document  120 . In particular, user  104  may use sentence reorder tool  114   c  to reposition one or more sentences within a paragraph, to move a sentence from one paragraph to another, and/or to move a sentence to a new paragraph.  FIGS.  9 A through  10 B  illustrate the use of sentence reorder tool  114   c . In certain embodiments, user  104  may cause editing tool  114  to take the form of sentence reorder tool  114   c  by selecting sentence reorder button  212  on GUI  110 . In some embodiments, and as illustrated in  FIGS.  9 A through  10 B , document tool  102  may highlight button  212  on GUI  110  when sentence reorder tool  114   c  is in use (e.g., when sentence reorder tool  114   c  is displayed in region  202  of GUI  110 ). 
     As illustrated in  FIGS.  9 A and  9 B , sentence reorder tool  114   c  is configured to display one or more lists  906   a  through  906   d  of sentences of document  120 . Each list  906   a  through  906   d  is associated with a paragraph of document  120  and displays the sentences included within the associated paragraph as separate elements within the list. For example, as illustrated in  FIGS.  9 A and  9 B , sentence reorder tool  114   c  displays list  906   a , which is associated with first paragraph  902   a  of document  120  and includes sentence  904   a , list  906   b , which is associated with second paragraph  902   b  of document  120  and includes sentences  904   b  through  904   d , list  906   c , which is associated with third paragraph  902   c  of document  120  and includes sentences  904   e  through  904   g , and list  906   d , which is associated with fourth paragraph  902   d  of document  120  and includes sentences  904   h  and  904   i . While not illustrated in  FIGS.  9 A and  9 B , this disclosure contemplates that sentence reorder tool  114   c  may similarly display lists of the sentences of paragraphs  902   e  through  902   f  of document  120 . In particular, because display  108  of device  106  may not be large enough to display the entire contents of GUI  110 , in certain embodiments, the sentences of all of paragraphs  902   a  through  902   f  of document  120  may be viewable within sentence reorder tool  114   c  through a scroll bar displayed by sentence reorder tool  114   c . By displaying the sentences of document  120  as individual elements within sentence reorder tool  114   c , certain embodiments enable user  104  to easily identify and direct his/her focus to one or more individual sentences within the document. 
     Document tool  102  may identify individual sentences  904   a  through  904   i  within the strings of text forming document  120  in any suitable manner. As an example, in certain embodiments, document tool  102  may identify each sentence  904   a  through  904   i  by identifying one or more sentence delimiters within document  120  (e.g., periods, exclamation points, question marks, etc.). As another example, in some embodiments, instructions  132  stored in memory  130  of document tool  102  may include a set of rules for identifying the sentences of document  120 . In particular, because the period character may take the role of both a sentence delimiter and an abbreviation marker within a sentence, in certain embodiments, instructions  132  may include rules for distinguishing between period characters that are sentence delimiters and period characters that are used to denote abbreviations, decimal points, ellipses, email addresses, etc. As a further example, in certain embodiments, document tool  102  may include one or more machine learning algorithms stored within instructions  132  of memory  130 , which have been trained to identify sentences within documents. Such machine learning algorithm(s) may include any suitable machine learning algorithm for identifying sentence boundaries. For example, the machine learning algorithms may include a decision tree algorithm, a neural network algorithm, a support vector machine, and/or any other suitable machine learning algorithm for identifying sentence boundaries. 
     As described above, user  104  may use sentence reorder tool  114   c  to reorder the sentences  904  within document  120 .  FIGS.  9 B through  9 D  illustrate an example in which user  104  uses sentence reorder tool  114   c  to move a given sentence of an existing paragraph of document  120  into a newly created paragraph, and  FIGS.  10 A and  10 B  illustrate an example in which user  104  uses sentence reorder tool  114   c  to move a given sentence of an existing paragraph of document  120  into another existing paragraph of the document. 
     In the example illustrated in  FIGS.  9 B through  9 D , user  104  moves sentence  904   g  to a new location within document  120 . As illustrated in  FIG.  9 B , sentence  904   g  belongs to paragraph  902   c  of document  120 . Accordingly, sentence reorder tool  114   c  initially displays sentence  904   g  as an element within list  906   c , which is the list that corresponds to paragraph  902   c .  FIG.  9 C  illustrates the behavior of sentence reorder tool  114   c  in response to user  104  moving sentence  904   g  out of list  906   c . In particular, in response to user  104  moving sentence  904   g  from list  906   c  to a position on sentence reorder tool  114   c  that is not within any of the lists associated with paragraphs  902   a  through  902   f , document tool  102  is configured to create a new list  906   g  at that position. For example, in response to user  104  moving sentence  904   g  from list  906   c  to a position on sentence reorder tool  114   c  between list  906   c  (associated with paragraph  902   c  of document  120 ) and list  906   d  (associated with paragraph  902   d  of document  120 ), document tool  102  generates list  906   g  between list  906   c  and list  906   d , and displays sentence  904   g  as an element of the new list  906   g.    
     In response to user  104  moving a sentence displayed within sentence reorder tool  114   c  to a new position within the tool, document tool  102  is configured to apply a corresponding movement of the sentence within document  120 , as displayed by text editor  112 .  FIG.  9 D  illustrates the behavior of text editor  112  in response to user  104  moving sentence  904   g  from list  906   c  into a new list  906   g  within sentence reorder tool  114   c . As illustrated in  FIG.  9 D , in response to this movement within sentence reorder tool  114   c , document tool  102  is configured to correspondingly move sentence  904   g  within text editor  112 , from paragraph  902   c  into a new paragraph—paragraph  902   g , positioned within document  120  at a location between paragraph  902   c  (corresponding to list  906   c  displayed by sentence reorder tool  114   c ) and paragraph  902   d  (corresponding to list  906   d  displayed by sentence reorder tool  114   c ). 
       FIGS.  10 A and  10 B  present another example in which user  104  moves a sentence—here, sentence  904   f —within document  120 . As illustrated in  FIG.  10 A , sentence  904   f  belongs to paragraph  902   c  of document  120 . Accordingly, sentence reorder tool  114   c  initially displays sentence  904   f  within list  906   c , which is the list that corresponds to paragraph  902   c .  FIG.  10 B  illustrates the behavior of both sentence reorder tool  114   c  and text editor  112  in response to user  104  moving sentence  904   f  from list  906   c  into list  906   b . With respect to sentence reorder tool  114   c , in response to user  104  moving sentence  904   f  from list  906   c  into list  906   b , sentence reorder tool  114   c  is configured to display sentence  904   f  within list  906   b , at a position dictated by user  104 ′s movement of the sentence. In particular, in response to user  104  moving sentence  904   f  from list  906   c  to a position within list  906   b  located between sentence  904   c  and sentence  904   d , document tool  102  is configured to update sentence reorder tool  114   c  such that sentence  904   f  is displayed between sentence  904   c  and sentence  904   d  within list  906   b , as illustrated in  FIG.  10 B . With respect to text editor  112 , in response to user  104  moving sentence  904   f  from list  906   c  into list  906   b , at a position between sentences  904   c  and  904   d , document tool  102  is configured to apply a corresponding movement of sentence  904   f  within document  120 , as displayed by text editor  112 . Accordingly, in response to user  104  moving sentence  904   f  from list  906   c  into list  906   b , document tool  102  is configured to move sentence  904   f  from paragraph  902   c  into paragraph  902   b , at a position in paragraph  902   b  after sentence  904   c  and before sentence  904   d.    
     User  104  may move any number of sentences to new locations within sentence reorder tool  114   c . This disclosure contemplates that user  104  may interact with device  106 , display  108 , and/or any other suitable interface connect to device  106  in any suitable manner to move a given sentence (e.g., sentence  904   g ) from a first position within sentence reorder tool  114   c  to a second position within sentence reorder tool  114   c . For example, in certain embodiments, user  104  may move the sentence by (1) touching screen  108  of device  106  at a location corresponding to the first position of the sentence, as displayed within sentence reorder tool  114   c , and then moving his/her finger to drag the sentence to a second location on screen  108  corresponding to the second position of the sentence within sentence reorder tool  114   c , (2) using a mouse and/or trackpad associated with device  106  to click on the sentence, as displayed within sentence reorder tool  114   c , and then dragging the sentence from the first position within sentence reorder tool  114   c  to the second position within sentence reorder tool  114   c , and/or (3) using device  106 , display  108 , and/or a user interface coupled to device  106  to move the sentence from the first position within sentence reorder tool  114   c  to the second position within sentence reorder tool  114   c  in any other suitable manner. By enabling user  104  to reorder the sentences within document  120  simply by dragging sentence elements within sentence reorder tool  114   c , certain embodiments conserve processing resources, as compared with existing text editors. In particular, certain embodiments conserve the processing resources otherwise associated with selecting a sentence by manually selecting each portion of text forming the sentence. 
     While  FIGS.  10 A and  10 B  illustrate the movement of a sentence from a first paragraph  902   c  into a given position within a second paragraph  902   b , this disclosure contemplates that sentence reorder tool  114   c  may also be used to move a sentence from a first position within a paragraph to a second position within the same paragraph, in a similar manner, by moving the corresponding sentence element displayed by sentence reorder tool  114   c  from a first position within the list of sentences associated with the paragraph to a second position within the list. For example, sentence reorder tool  114   c  may be used to move sentence  904   d  of second paragraph  902   b  from the end of the paragraph to the middle of the paragraph, by dragging sentence  904   d  from the end of list  906   b  to the middle of list  906   b , within sentence reorder tool  114   c.    
       FIG.  11    presents a flowchart illustrating an example method  1100  (described in conjunction with elements of  FIGS.  1 , and  9 A through  10 B ) by which sentence reorder tool  114   c  may be used to reorder the sentences within document  120 . 
     At operation  1102  document tool  102  receives a request  134  from a user  104  seeking to reorder the sentences of document  120 . Document tool  102  may receive request  134  in any suitable manner. For example, in certain embodiments, user  104  may generate request  134  by selecting sentence reorder button  212 , displayed on GUI  110 . At operation  1104  document tool  102  displays sentence reorder tool  114   c  in first region  202  of GUI  110 . 
     At operation  1106  document tool  102  determines whether user  104  has selected a sentence displayed within sentence reorder tool  114   c , to move to a new location within document  120 . User  104  may select a given sentence of document  120  (as displayed within sentence reorder tool  114   c ) in any suitable manner. For example, in certain embodiments, user  104  may select a sentence displayed by sentence reorder tool  114   c  by (1) touching display  108  of device  106  at a location associated with the sentence, (2) using a mouse coupled to device  106  and/or a trackpad associated with the device to click on the sentence, and/or (3) interacting with device  106 , display  108 , and/or a user interface coupled to device  106  in any suitable manner to select the sentence, as it is displayed in sentence reorder tool  114   c.    
     If, at operation  1106  document tool  102  determines that user  104  has selected a given sentence displayed by sentence reorder tool  114   c , in certain embodiments, document tool  102  highlights the corresponding sentence displayed within text editor  112 . For example, in some embodiments, document tool  102  may highlight the corresponding sentence displayed within text editor  112  by (1) changing the color of the background behind the sentence, (2) changing the color of the text of the sentence, (3) changing the font type of the text of the sentence, (4) changing the font size of the text of the sentence, (5) adding an outline to the sentence, and/or (6) performing any other suitable action to distinguish the sentence from the other sentences displayed by text editor  112 . 
     At operation  1110  document tool  102  determines whether user  104  has moved the selected sentence. For example, in certain embodiments, document tool  102  determines whether user  104  has dragged the sentence from a first position within sentence reorder tool  114   c  to a second position within sentence reorder tool  114   c . The second position within sentence reorder tool  114   c  may be: (1) a position within the same list of sentences in which the sentence was originally displayed (corresponding to the same paragraph within document  120 ), (2) a position within a different list of sentences (corresponding to a different paragraph within document  120 ), or (3) a position within sentence reorder tool  114   c  that is not within any of the existing lists displayed by the tool (corresponding to a new paragraph within document  120 ). If, at operation  1110  document tool  102  determines that user  104  has moved the selected sentence to a new position within sentence reorder tool  114   c , at operation  1112  document tool  102  updates the position of the sentence as displayed in both sentence reorder tool  114   c  and text editor  112 , according to the movement. 
     Modifications, additions, or omissions may be made to method  1100  depicted in  FIG.  11   . Method  1100  may include more, fewer, or other operations. For example, operations may be performed in parallel or in any suitable order. While discussed as document tool  102  (or components thereof, including, for example, sentence reorder tool  114   c ) performing certain operations, any suitable components of system  100 , including, for example, device  106 , may perform one or more operations of the method. 
     C. Additional Features 
       FIGS.  12 A through  15    illustrate examples of additional features offered by document tool  102  to user  104 , through GUI  110 . In particular,  FIGS.  12 A and  12 B  illustrate a document publishing view offered by document tool  102 , which enables user  104  to view document  120  as it will appear when printed as a physical document and/or exported into a format for use with an external application;  FIG.  13    illustrates a document production mode offered by document tool  102 , which may enable user  104  to efficiently create an initial version of document  120 ;  FIG.  14    presents examples of various settings that may be adjusted by user  104 ; and  FIG.  15    presents an example of a version control system that may be used to generate multiple versions  122  of a given document  120 . 
     i. Document Publishing View 
     As mentioned above,  FIGS.  12 A and  12 B  illustrate a document publishing view offered by document tool  102 . In certain embodiments, user  104  may access the document publishing view at any point while creating and/or editing a document  120 , to view how the document will appear if printed as a physical document and/or exported into an external application. 
     User  104  may enter the document publishing view by interacting with a button displayed on GUI  110 . For example, as described above in the discussion of  FIG.  2   , user  104  may enter the document publishing view by interacting with button  222  displayed on GUI  110 . In response to user  104  requesting that GUI  110  enter the document publishing view, document tool  102  is configured to update GUI  110  as illustrated in  FIG.  12 A . In particular, document tool  102  is configured to remove editing tool  114  and text editor  112  from GUI  110  and to display document  120 , as it would appear if printed as a physical document and/or exported into an external application. In certain embodiments, user  104  may print and/or export document  120  from within the publishing view. As an example, in certain embodiments, user  104  may select button  1206  to instruct document tool  102  to cause a printer coupled to device  106  to print a physical copy of document  120 . As another example, in certain embodiments, user  104  may select button  1206  to instruct document tool  102  to export document  120  in a specified format, for use with an external application. For instance, user  104  may select button  1206  to instruct document tool  102  to export document  120  as a PDF document, a DOC/DOCX document, a TXT document, an HTML document, and/or any other suitable format of document. As a further example, in certain embodiments, user  104  may select button  1206  to instruct document tool  102  to copy the text of document  120  to a clipboard stored by device  106 . In such embodiments, user  104  may then paste the text of the document from the clipboard into an external application. 
     As described above, in the discussion of  FIG.  2   , in certain embodiments, outline topics  304   a  through  304   e  are intended to help user  104  to structure and organize the content of document  120 , but are not meant to be included within the “publishable” content of document  120 . In such embodiments, document publishing view may enable user  104  to view the appearance of document  120  without outline topics  304   a  through  304   e . In particular, user  104  may interact with element  1204  to hide the outline topics within document  120 . For example, in certain embodiments, in response to user  104  interacting with element  1204  (e.g., touching screen  108  at a location associated with element  1204 , using a mouse/trackpad to click on element  1204 , and/or interacting with element  1204  in any other suitable manner) document tool  102  may be configured to update the appearance of document  120  within the document publishing view, by removing outline topics  304   a  through  304   e , as illustrated in  FIG.  12 B . In certain embodiments, user  104  may interact with element  1204  a second time to cause outline topics  304   a  through  304   e  to reappear on document  120 , as displayed within the document publishing view. This disclosure contemplates that in certain embodiments, outline topics  304   a through  304   e  are not included in the publishable content of document  120 , such regardless of whether the outline topics are displayed within the document in the publishing view, when printed and/or exported, the outline topics are not included within the document content. On the other hand, in some embodiments, user  104  may choose whether or not to include outline topics  304   a  through  304   e  within the publishable content of document  120 . For example, user  104  may choose to use outline topics  304   a  through  304   e  as headings within document  120 . In such embodiments, user  104  may interact with element  1204  to remove the outline topics from the publishable content of document  120 . 
     In certain embodiments, element  1204  is a “Show outline topics” button instead of the “Hide outline topics” button illustrated in  FIGS.  12 A and  12 B . In such embodiments, in response to user  104  entering the document publishing view, GUI  110  is configured to display document  120  without any outline topics  304   a  through  304   e  (e.g., as illustrated in  FIG.  12 B ). User  104  may then interact with the “Show outline topics” button to cause GUI  110  to display outline topics  304   a  through  304   e  on document  120  (e.g., for use as headings within document  120 ). 
     In certain embodiments, user  104  may be able to alter the appearance of document  120  in one or more additional ways, while within the document publishing view. For example, in certain embodiments, user  104  may add a title page, a table of contents, a reference section, page numbers, headers, footers, and/or any other suitable sections and/or content to document  120 , while within the document publishing view. 
     User  104  may leave the document publishing view in any suitable manner. For example, in certain embodiments, user  104  may leave document publishing view by interacting with element  1202  (e.g., by touching display  108  at a location associated with element  1202 , using a mouse and/or trackpad to click on element  1202 , and/or in any other suitable manner). In response to user  104  interacting with element  1202 , document editing tool  102  is configured to cause GUI  110  to display the current version of document  120  within text editor  112  and editing tool  114 . 
     ii. Document Production Mode 
       FIG.  13    illustrates a document production mode offered by document tool  102 . As illustrated in  FIG.  13   , while operating in document production mode, GUI  110  is configured to display text editor  112 , but not editing tool  114 . This may be desirable while user  104  is initially creating document  120 , to help user  104  focus on generating a first draft of the content for document  120 , rather than revising the content, before a first draft has been completed. In certain embodiments, user  104  may enter document production mode by interacting with document production button  208 , displayed on GUI  110 . In some embodiments, and as illustrated in  FIG.  13   , document tool  102  may highlight button  208  on GUI  110  when user  104  has entered the document production mode. In certain embodiments, user  104  may exit document production mode by selecting any of buttons  206 ,  210 , and  212 , thereby instructing document tool  102  to display editing tool  114  (in the form of outline tool  114   a , sentence rewrite tool  114   b , and sentence reorder tool  114   c , respectively) on GUI  110 . 
     iii. GUI Settings 
       FIG.  14    illustrates various settings that user  104  may adjust and/or set for text editor  112  and/or editing tool  114 . As explained in the discussion of  FIG.  2    above, in certain embodiments, user  104  may access these settings by interacting with settings button  232 . In particular, in response to user  104  interacting with settings button  232 , document tool  102  is configured to display the settings available to user  104  on a region  1402  of GUI  110 . In certain embodiments, and as illustrated in  FIG.  14   , region  1402  is configured to overlap a portion of text editor  112  on GUI  110 . 
     As illustrated in  FIG.  14   , in certain embodiments, the settings available to user  104  and displayed in region  1402  may include settings associated with the word count of document  120 , settings associated with how user  104  may generate sentence variants for the sentences of document  120 , and/or settings associated with the appearance of the content of document  120  displayed withing text editor  112  and/or editing tool  114 . 
     a. Word Count Settings 
     As mentioned above, region  1402  may display one or more settings associated with the word count of document  120 . For example, in certain embodiments, region  1402  displays a field  1404  into which user  104  may enter a word count goal for document  120 . Region  1402  may also display a menu  1406  through which user  104  may specify information associated with the document word count, to be displayed within text editor  112 . Such information may include the current word count for document  120 , the word count goal for document  120 , the progress the user has made toward reaching the word count goal, and/or any other suitable information associated with the word count of document  120  and/or the user&#39;s word count goal for document  120 . As a specific example, in certain embodiments, user may select from amongst the following options within menu  1406 : (1) “Word count only,” the selection of which may cause document tool  102  to display the current word count for document  120  within element  234  of GUI  110  (as illustrated, for example, in  FIG.  2   ); (2) “Hidden,” the selection of which may cause document tool  102  not to display element  234  on GUI  110 ; (3) “Progress only,” the selection of which may cause document tool  102  to display the user&#39;s progress towards reaching his/her word count goal within element  234  (where the user&#39;s progress may correspond, for example, to the percentage of the user&#39;s word count goal met by the current word count for document  120 ; and/or (3) “Progress &amp; word count,” the selection of which may cause document tool  102  to display both the current word count for document  120  and the user&#39;s progress towards reaching his/her word count goal within element  234 . 
     b. Sentence Variant Settings 
     Region  1402  may also display one or more settings associated with sentence rewrite tool  114   b . In particular, region  1402  may display one or more settings associated with the manner in which user  104  may use sentence rewrite tool  114   c  to generate sentence variants for the sentences of document  120 . As an example, in certain embodiments, settings region  1402  displays a setting  1408  through which user  104  may instruct document tool  102  to automatically populate the field through which user  104  may create a new sentence variant for a given sentence of document  120  (e.g., field  714 , as illustrated in  FIG.  7 B ), with an existing sentence variant for that sentence (e.g., the currently selected sentence variant, the original sentence variant, and/or any other suitable sentence variant). Automatically populating the field through which user  104  may create a new sentence variant for a given sentence with an existing sentence variant for that sentence may be desirable where user  104  does not intend to significantly modify the sentences of document  120 . In such situations, editing a copy of an existing sentence variant (e.g., the currently selected sentence variant) may be associated with less time (and, accordingly, less processing resources) than generating a new sentence variant from scratch. 
     While not illustrated in  FIG.  14   , in certain embodiments, settings region  1402  may include an additional setting through which user  104  may specify whether or not he/she would like document tool  102  to automatically generate new sentence variants for one or more of the sentences of document  120 . For example, in certain embodiments in which document tool  102  includes a machine learning algorithm configured to automatically generate sentence variants for existing sentences, user  104  may use this additional setting to specify whether or not document tool  102  should apply the machine learning algorithm to the sentences of document  120 . 
     c. Content Appearance 
     Region  1402  may further display one or more settings associated with the appearance of document  120  as displayed by text editor  112  and/or editing tool  114 . For example, in certain embodiments, region  1402  may display (1) a field and/or menu  1410  through which user  104  may specify the font size of the text to be displayed within text editor  112  and/or editing tool  114 , (2) a field and/or menu  1412  through which user  104  may specify the line spacing to be used within document  120 , (3) a menu  1414  through which user  104  may specify the font type to be used within text editor  112  and/or editing tool  114 , and/or (4) any other suitable field and/or menu through which user  104  may adjust the appearance of the content of document  120  as displayed within text editor  112  and/or editing tool  114 . 
     In response to user  104  modifying one or more of the settings displayed in settings region  1402 , document tool  102  may apply the modified settings to the document  120  that user  102  is currently creating/editing (e.g., document  120   a ). In certain embodiments, in order apply the modified settings to all of the documents that user  104  may edit in the future (e.g., future document  120   b ), user  104  may interact with button  1416  to save the newly modified settings as the default settings to be used by document tool  102  going forward. 
     In addition to the above described settings, this disclosure contemplates that settings region  1402  may display any number of settings associated with document  120 , text editor  112 , outline tool  114   a , sentence rewrite tool  114   b , and/or sentence reorder tool  114   c . For example, settings region  1406  may include settings associated with paragraph indents, to be displayed within text editor  112 , settings associated with lists, tables, and/or graphs that may be included within document  120 , settings associated with automatically saving document  120 , and/or any other suitable settings. Furthermore, document tool  102  may display the settings available to user  104  in any suitable order on GUI  110 , and/or in any suitable manner. 
     iv. Version Control 
       FIG.  15    presents an example of the use of version control by document tool  102  to track multiple versions  122  of a given document  120  (e.g., versions  122   a  through  122   n  of document  120   a , as illustrated in  FIG.  1   ). As illustrated in  FIG.  15   , in certain embodiments, document tool  102  is configured to display a region  1502  on GUI  110  through which user  104  may access previous versions  1506  through  1510  of document  120  and/or save new versions of document  120 . In certain embodiments, user  104  may cause document tool  102  to display version control region  1502  by selecting version control button  230  on GUI  110 . In certain embodiments, and as illustrated in  FIG.  15   , region  1502  is configured to overlap a portion of text editor  112  on GUI  110 . 
       FIG.  15    presents an example in which three previous versions—version  1506 , version  1508 , and version  1510 —exist for document  120 . Each version  1506  through  1510  corresponds to a version of document  120  in existence at a specific point in time. For example, as illustrated in  FIG.  15   , version  1506  corresponds to a version of document  120  in existence on Mar. 1, 2020, at 1:30 PM, version  1508  corresponds to a version of document  120  in existence on Feb. 3, 2020, at 9:03 AM, and version  1510  corresponds to a version of document  120  in existence on Aug. 3, 2019, at 10:55 AM. 
     Versions  1506  through  1510  of document  120  may be generated by document tool  102  in any suitable manner. As an example, in certain embodiments, document tool  102  may automatically save the current version of document  120  at regular time intervals. As another example, in certain embodiments, document tool  102  may automatically save the current version of document  120  in response to receiving an indication that user  104  has stopped interacting with the tool. For example, in certain embodiments in which GUI  110  is a web application generated by document tool  102  and presented to user  104  in a web browser displayed on display  108  of device  106 , document tool  102  may be configured to automatically save a new version of document  120  in response to determining that user  104  has closed the web browser, or has navigated away from the webpage used to display GUI  110 . As another example, in certain embodiments, document tool  102  may automatically save the current version of document  120  in response to determining that the content of the document has changed by at least a given percentage as compared to the last saved version. As a further example, in certain embodiments, document tool  102  may be configured to save the current version of document  120  in response to receiving a request from user  104  to save a new version of the document. For example, user  104  may instruct document tool  102  to save a new version of document  120  by interacting with button  1504  (e.g., touching screen  108  at a location associated with button  1504 , using a mouse/trackpad associated with device  106  to click on button  1504 , and/or interacting with button  1504  in any other suitable manner). In certain embodiments, in response to user  104  interacting with button  1504 , document tool  102  may display a field into which user  104  may enter a name for the new version of the document. In this manner, in certain embodiments, user  104  may be able to distinguish versions of document  120  that the user saved him/herself from versions of the document that document tool  102  automatically saved. In order to further enable user  104  to easily distinguish between those versions of document  120  that the user saved him/herself and those versions of document  120  that document tool  102  automatically saved, in some embodiments, document tool  102  is configured to display element  1512  within region  1502 . User  104  may interact with element  1512  to switch between region  1502  displaying all versions  1506  through  1510  of document  120  and region  1502  displaying only those versions of document  120  that the user  104  caused to be saved and/or named. 
     As previously explained, each version  1506  through  1510  of document  120  corresponds to a version of document  120  as it existed at an earlier point in time. Saving these earlier versions of document  120  may be desirable to enable user  104  to revert to an earlier version of document  120  when desired. User  104  may instruct document tool  102  to revert document  120  back to an earlier version of the document in any suitable manner. As an example, in certain embodiments, user  104  may instruct document tool  102  to revert to an earlier version of document  120 , by selecting one of the earlier versions (e.g., versions  1506  through  1510 ) displayed in version control region  1502 . In particular, in some embodiments, selecting one of the earlier versions of document  120  that is listed in region  1502  may cause document tool  102  to replace the current version of document  120  with the selected version. Document tool  102  may then update the content displayed by text editor  112  and editing tool  114  to reflect the changed content of document  120  (from the current version back to the earlier version). As another example, in some embodiments, in response to user selecting one of the earlier versions of document  120  (e.g., one of versions  1506  through  1510 ) listed in version control region  1502 , document tool  102  may update GUI  110  to display a preview of the earlier document version. In this manner, user  104  may view the content of the earlier version prior to reverting document  120  back to that earlier version. In certain such embodiments, user  104  may choose to replace the current version of document  120  with the earlier version of the document while viewing the preview of the earlier version. For example, document tool  102  may display a button through which user  104  may revert document  120  back to the earlier version, alongside the preview of the earlier version. 
     III. Document Data Structure 
     As described above, in the discussion of  FIGS.  3 A through  11   , document tool  102  is configured to integrate editing tool  114  with text editor  112 , such that user  104  may edit document  120  using both editing tool  114  and text editor  112 . In particular, the content displayed by editing tool  114  is linked with the content displayed by text editor  112 , such that changes made to document  120  using editing tool  114  are reflected in the content displayed by text editor  112 , and vice versa. As an example, user  104  may use editing tool  114  to reorder the content of document  120 , as displayed by both editing tool  114  and text editor  112 , as described above, in the discussion of  FIGS.  4 A through  5 C, and  9 A through  10 B . Similarly, user  104  may use editing tool  114  to select from amongst a set of sentence variants available for a given sentence of document  120 , with the user&#39;s selection immediately reflected in text editor  112 , as described above, in the discussion of  FIGS.  7 A through  7 D . In certain embodiments, the linking between the content displayed by editing tool  114  and the content displayed by text editor  112  is accomplished by representing document  120  using a document data structure. As example of the form the document data structure may take is presented in  FIG.  16   . 
     A. Example Form 
       FIG.  16    illustrates an example document data structure  1600  generated by document tool  102  and used by the tool to represent a document  120 . As illustrated in  FIG.  16   , data structure  1600  is formed from a set of data blocks  1602   a  through  1602   e . In certain embodiments, data structure  1600  is an array in which each data block  1602   a  through  1602   e  corresponds to an element of the array. While  FIG.  16    illustrates document data structure  1600  as an array composed of a set of five data blocks  1602   a  through  1602   e , this disclosure contemplates that data structure  1600  may include any number of data blocks  1602   a  through  1602   e , each of which is referred to generically in the discussion that follows as a data block  1602 . 
     Each data block  1602  of data structure  1600  stores a portion of the content of document  120 . This content may be stored by data block  1602  in any suitable manner. For example, in certain embodiments, and as illustrated in  FIG.  16   , each data block  1602   a  through  1602   e includes a set of key-value pairs that are used to store document content and/or information associated with the stored document content. In particular, in certain embodiments, each data block  1602  may include a key-value pair that stores a “type”  1604  assigned to the data block, as well as a key-value pair that stores a set of “data”  1606  associated with document  120 , where the form of the data  1606  stored by the block depends on the type assigned to the block. As an example, as illustrated in  FIG.  16   , first data block  1602   a  is assigned to a “title” data block type  1604   a , and stores data  1606   a  that includes a string of text  1608   a  that corresponds to the title of document  120 . As another example, second data block  1602   b  is assigned to an “h1” data block type  1604   b  and stores data  1606   b  that includes a string of text  1608   b  that corresponds to a heading within document  120 . As another example, third data block  1602   c  is assigned to an “h2” data block type  1604   c  and stores data  1606   c  that includes a string of text  1608   c  that corresponds to a sub-heading within document  120 . As another example, fourth data block  1602   d  is assigned to an “outlineTopic” data block type  1604   d  and stores data  1606   d  that includes a string of text  1608   d  that corresponds to the name of an outline topic used within document  120 . As a further example, fifth data block  1602   e  is assigned to a “paragraph” data block type  1604   e  and stores data  1606   e  that includes one or more sentences  1614   e  that form a given paragraph of document  120 . In certain embodiments, the one or more sentences  1614   e  are stored as an array of strings of text, with each string of text of the array corresponding to a sentence of the paragraph of document  120  that is stored by data block  1602   d . In some embodiments, and as illustrated in  FIG.  16   , paragraph data block  1602   e  may store multiple sentence variants for any of the sentences  1614   e  that are stored by the data block. For a given sentence of document  120 , such sentence variants may be stored as set of sentence rewrites  1616   e . As a specific example, as illustrated in  FIG.  16   , set of sentence rewrites  1616   e stored by paragraph data block  1602   e  includes the following three sentence variants for a first sentence of the paragraph stored by the data block: “First attempt at a first sentence.”; “Second attempt at a first sentence.”; and “Third attempt at a first sentence.” For each set of sentence rewrites (variants)  1616   e , paragraph data block  1602   e  also stores an identification  1618   e  of a selected sentence variant that is to be included in document  120 . Paragraph data block  1602   e  may store such identification  1618   e  in any suitable manner. For example, as illustrated in  FIG.  16   , set of rewrites (variants)  1616   e  stores each of its sentence variants as an element of an array, and the identification  1618   e  of the selected sentence variant that is to be included in document  120  corresponds to an identification of the position within the array (e.g., position 2) at which the selected sentence variant (e.g., “Second attempt at a first sentence.”) is stored. While not illustrated in  FIG.  16   , this disclosure also contemplates that in certain embodiments, paragraph data block  1602   e  may also store one or more references/citations for any of the sentences  1614   e  that are stored by the data block. For example, where document  120  is a scientific article, paragraph data block  1602   e  may store a citation to another scientific article that provides support for the idea expressed by a given sentence stored by the data block. While  FIG.  16    illustrates only a “title” data block type  1604   a , an “h1” heading data block type  1604   b , an “h2” sub-heading data block type  1604   c , an “outlineTopic” data block type  1604   d , and a “paragraph” data block type  1604   e , this disclosure contemplates that data structure  1600  may include data blocks  1602  of any number of additional data block types  1604  including, for example, data block types  1604  corresponding to additional levels of sub-headings “h3” through “hN.” 
     In certain embodiments, each data block  1602   a  through  1602   e  also stores metadata  1610   a  through  1610 e. Metadata  1610  may include any information that is not part of the content of document  120  but is used by document tool  120  to create, display, edit, and/or save document  120 . For example, in certain embodiments, and as illustrated in  FIG.  16   , metadata  1610  may include an identification number  1612  that is used by document tool  102  to identify a given data block  1602 . Document tool  102  may assign any suitable identification number  1612  to a given data block  1602 . For example, in certain embodiments, each identification number  1612  may take the form of a fourth-generation universally unique identifier (UUIDv4). In certain embodiments, identification numbers  1612  may be stored outside of metadata  1610 . For example, in some embodiments, identification number  1612  may be stored at the base level of data block  1602 . 
     Identification numbers  1612  enable document tool  102  to identify a given data block  1062  within data structure  1600  even after the content stored by the data block has changed and/or the position of the data block within data structure  1600  has changed. In certain embodiments, document tool  102  may use identification numbers  1612  when saving new versions of document  120 . For example, in certain embodiments, document tool  102  is configured to save a new version  122   b  of document  120  by saving the changes made to the document as compared with a previous version  122   a  of the document (e.g., the original version of document  120 , the most recently saved version of document  120 , and/or any other suitable previous version of document  120 ). In such embodiments, identification numbers  1612   a  through  1612   e  may be used to identify those data blocks within the new version of data structure  1600  that have changed (both in terms of location within data structure  1600  and content stored), as compared with a previous version of the data structure. By saving a new version  122   b  of document  120  by saving the changes made to the document as compared with a previous version  122   a  of the document, rather than saving the entire content of the new document, certain embodiments conserve significant storage resources as compared with existing systems. 
     Data blocks  1602   a  through  1602   e  are interchangeable in their position within data structure  1600 . For example, the positions of a pair of data blocks (e.g., data block  1602   a  and data block  1602   b ) may be exchanged within data structure  1600 , a given data block  1602  may be moved to an earlier position within the data structure, and/or a given data block  1602  may be move to a later position within the data structure. New data blocks may be added to data structure  1600  at any position within the data structure, and existing data blocks  1602  may be deleted from the data structure. 
     Changes may be made to data structure  1600  using text editor  112  and/or editing tool  114 . In certain embodiments, document tool  102  may edit document data structure  1600  directly, in response to user  104  using text editor  112  and/or editing tool  114  to edit document  120 . As an example, in certain embodiments in which editing tool  114  takes the form of sentence rewrite tool  114   b , in response to user  104  using sentence rewrite tool  114   b  to create one or more new sentence variants for a given sentence of document  120  (e.g., one of sentences  1614   e  stored in paragraph data block  1602   e ), document tool  102  may access the paragraph data block that stores the sentence (e.g., data block  1602   e ), and add the sentence variants to the set of rewrites (variants) associated with the given sentence (e.g., set of rewrites  1616   e ). As another example, in some embodiments in which editing tool  114  takes the form of sentence rewrite tool  114   b , in response to user  104  using sentence rewrite tool  114   b  to select a new sentence variant of a set of sentence variants (e.g., set of rewrites (variants)  1616   e ) for inclusion in document  120 , document tool  102  may access the paragraph data block that stores the set of sentence variants (e.g., data block  1602   e ), and update the identification of the selected sentence variant that is to be included in document  120  (e.g., identification  1618   e ). 
     In some embodiments, document tool  102  may be configured to convert document data structure  1600  into an intermediate form and to apply edits made by user  104  through text editor  112  and/or editing tool  114  to that intermediate form. Once user  104  has finished editing document  120  (either permanently or temporarily), document tool  102  may convert the intermediate form back to document data structure  1600 . As an example, in certain embodiments in which editing tool  114  takes the form of outline tool  114   a , document tool  102  may convert document data structure  1600  into an intermediate form referred to as an “outline tool representation,” before applying any edits made by user  104  to document  120  using outline tool  114   a  in conjunction with text editor  112 . The outline tool representation of a given document data structure  1600  includes a set of outline topic elements, each of which corresponds to a data block of the “outlineTopic” type (e.g., “outlineTopic” data block  1602   d ) of data structure  1600 . In generating the outline tool representation of document data structure  1600 , document tool  102  is configured to identify each “outlineTopic” data block  1602   d  within data structure  1600 , and to generate an element within the outline tool representation that corresponds to that “outlineTopic” data block. Document tool  102  is then configured to assign each data block of a type other than the “outlineTopic” type to an outline topic element, as a sub-element of that outline topic element. In particular, document tool  102  is configured to assign each data block of a type other than the “outlineTopic” type to the outline topic element corresponding to the nearest preceding “outlineTopic” data block within data structure  1600 . In certain embodiments in which the first data block of document data structure  1600  is not of the “outlineTopic” data block type, document tool  102  is configured to assign any of the data blocks  1602  appearing before the first data block of the “outlineTopic” type as sub-elements of a special element located at the beginning of the outline tool representation of data structure  1600 . 
     When the above-described outline tool representation is used to represent document  120 , each element of the representation corresponds to an element displayed by outline tool  114   a  (e.g., one of outline topic elements  302   a  through  302   e ), as described above in the discussion of  FIGS.  3 A through  5 C . In particular, adding a new outline topic (e.g., outline topic  304   e ) to document  120 , by using outline tool  114   a  to generate a new outline topic element (e.g., outline topic element  302   e ), as described in the discussion of  FIGS.  3 B through  3 D , corresponds to adding a new element to the outline topic representation of document  120 . Similarly, repositioning an outline topic and its associated document content within document  120 , by using outline tool  114   a  to reorder the sequence of outline topic elements (e.g., sequence  302   a  through  302   e ), as described in the discussion of  FIGS.  4 A and  4 B , corresponds to reordering the elements within the outline topic representation of document  120 . Moving a given paragraph, heading, sub-heading, and/or title within document  120  (e.g., paragraph  502 ), by using outline tool  114   a  to move the associated content from a first outline topic element (e.g., element  302   b ) to a second outline topic element (e.g., element  302   c ), as described in the discussion of  FIGS.  5 A through  5 C , corresponds to moving a corresponding sub-element within the outline topic representation of document  120 . 
     As another example of an intermediate form into which document data structure  1600  may be converted, in certain embodiments in which editing tool  114  takes the form of sentence reorder tool  114   c , document tool  102  is configured to convert document data structure  1600  into a “reorder tool representation.” The reorder tool representation of document  120  represents the content stored by the data blocks  1602  of data structure  1600  as a sequence of elements, where the properties of each element are determined based on the data block type  1604  assigned to the corresponding data block. In particular, the content of each data block assigned to the “title,” “h1,” “h2,” or “outlineTopic” type is assigned to an immutable and immovable element within the reorder tool representation. Document tool  102  correspondingly displays each such element as an immutable and immovable element with reorder tool  114   c . For example, as illustrated in  FIG.  9 A , user  104  is unable to interact with the names of the outline topics (e.g., “Introduction,” and “Topic 1”) displayed within reorder tool  114   c . On the other hand, each sentence of each data block assigned to the “paragraph” type is assigned to a moveable element within the reorder tool representation. In particular, each data block assigned to the “paragraph” type is associated with a list of elements, and each sentence stored by the paragraph data block corresponds to an element within the list. Each element is moveable to any of: (1) a new position within the list in which the element is stored (e.g., the same paragraph), (2) a new position within a different list from the list in which the element is stored (e.g., a list associated with a different paragraph), and/or (3) a new position within a new list (e.g., a newly created list corresponding to a newly created paragraph). Document tool  102  displays each sentence element as a moveable element within reorder tool  114   c . For example, as illustrated in  FIGS.  9 A and  9 B , each sentence  904   a  through  904   i  is displayed within reorder tool  114   c  as a separate, moveable element. As described above, in the discussion of  FIGS.  9 A through  10 B , user  104  may then reorder the sentences within document  120  by reordering sentence elements  904   a  through  904   i  within reorder tool  114   c.    
     B. Use of Document Data Structure with Outline Tool 
       FIG.  17    presents a flowchart illustrating an example method  1700  (described in conjunction with elements of  FIGS.  1 ,  3 A through  5 C, and  16   ) by which document tool  102  uses data structure  1600  to link text editor  112  with outline tool  114   c , such that edits made to document  120  using outline tool  114   c  are reflected in document  120 , as displayed by text editor  112 . 
     At operation  1702  document tool  102  receives a request  134  to edit document  120  using outline tool  114   c . Document tool  102  may receive request  134  in any suitable manner. For example, in certain embodiments, user  104  may transmit request  134  to document tool  102  by selecting outline tool button  206 , displayed on GUI  110  (as illustrated, for example, in  FIG.  3 A ). At operation  1704  document tool  102  generates an outline tool representation for document  120  from the document data structure  1600  corresponding to document  120 . In particular, document tool  102  identifies each data block  1602  within document data structure  1600  that is of the “outlineTopic” data block type  1604   d . For each identified data block  1602  of the “outlineTopic” data block type, document tool  102  generates an outline topic element (e.g., an outline topic element of the set of outline topic elements  302   a  through  302   e  illustrated in  FIGS.  3 A through  3 D ). In certain embodiments in which the first data block stored in data structure  1600  is not assigned to the “outlineTopic” data block type, document tool  102  generates a special outline topic element that does not correspond to any actual outline topic within document  120 . At operation  1706  document tool  102  assigns each of the remaining data blocks  1602  (e.g., data blocks that are assigned to data block types other than the “outlineTopic” data block type) to the outline topic elements with which they are associated, as sub-elements of those outline topic elements. In particular, document tool  102  assigns each non-“outlineTopic” data block to the outline topic element corresponding to the nearest preceding “outlineTopic” data block within document data structure  1600 . In certain embodiments in which one or more data blocks  1602  of types other than the “outlineTopic” data block type appear in data structure  1600  before any data blocks of the “outlineTopic” type, document tool  102  assigns those data blocks to the special outline topic element. Document tool  102  then displays the outline topic elements of the outline tool representation in outline tool  114   c  on GUI  110 . 
     At operation  1708  document tool  102  determines whether any new outline topics have been added to document  120 . For example, document tool  102  may determine whether user  104  has added a new outline topic element (e.g., outline topic element  302   e ) to document  120  using outline tool  114   a , as illustrated in  FIGS.  3 C and  3 D . If, at operation  1708  document tool  102  determines that a new outline topic has been added to document  120 , at operation  1710  document tool  102  adds the new outline topic to the outline tool representation of document  120 . In particular, document tool  102  adds a new element, which is associated with the new outline topic, to the outline tool representation of document  120 . Document tool  102  also updates GUI  110  to reflect the introduction of the new outline topic. Method  1700  then returns to operation  1708 . 
     If, at operation  1708  document tool  102  determines that a new outline topic has not been added to document  120 , at operation  1712  document tool  102  determines whether any of the document content displayed by outline tool  114   a  has been moved within the outline tool. For example, document tool  102  may determine whether any of the outline topic elements (e.g., outline topic elements  302   a  through  302   e , as illustrated in  FIG.  4 A ) displayed by outline tool  114   a  have been reordered within outline tool  114   a . As another example, document tool  102  may determine whether any of the document content associated with a given outline topic element (e.g., paragraph  502  associated with outline topic element  302   b , as illustrated in  FIG.  5 A ) has been moved to a new outline topic element (e.g., from outline topic element  302   b  to outline topic element  302   c , as illustrated in  FIG.  5 B ). If, at operation  1712  document tool  102  determines that document content displayed by outline tool  114   a  has been moved with the tool, at operation  1714  document tool  102  updates the outline tool representation of document  120  accordingly. Document tool  102  additionally updates GUI  110  to reflect the changes made to document  120 . Method  1700  then returns to operation  1708 . 
     If, at operation  1712  document tool  102  determines that document content displayed by outline tool  114   a  has not been moved within the tool, at operation  1716  document tool  102  determines whether user  104  has submitted a request to save the current version of document  120 . If, at operation  1716  document tool  102  determines that user  104  has submitted a request to save the current version of document  120 , at operation  1718  document tool  102  converts the outline tool representation of document  120  back into data structure  1600 . In particular, document tool  102  flattens the nested structure of the outline tool representation of document  120 , such that each element and each sub-element of the outline tool representation is converted back into a data block  1602  of data structure  1600 . At operation  1720  document tool  102  saves data structure  1600  in database  118  as a new version  122  of document  120 . Method  1700  then returns to operation  1708 . 
     Modifications, additions, or omissions may be made to method  1700  depicted in  FIG.  17   . Method  1700  may include more, fewer, or other operations. For example, operations may be performed in parallel or in any suitable order. As an example, while method  1700  illustrates the decisions associated with operations  1708 ,  1712 , and  1716  performed sequentially and in a specific order, these decisions may be performed in parallel, or in any suitable order. As another example, in certain embodiments, document tool  102  automatically saves document  120  after any changes have been made to the document. In such emboWhile discussed as document tool  102  (or components thereof, including, for example, outline tool  114   c ) performing certain operations, any suitable components of system  100 , including, for example, device  106 , may perform one or more operations of the method. 
     C. Use of Document Data Structure with Sentence Rewrite Tool 
       FIG.  18    presents a flowchart illustrating an example method  1800  (described in conjunction with elements of  FIGS.  1 ,  7 A through  7 D, and  16   ) by which document tool  102  uses data structure  1600  to link text editor  112  with sentence rewrite tool  114   b , such that edits made to document  120  using sentence rewrite tool  114   b  may be reflected in the document, as displayed by text editor  112 . 
     At operation  1802  document tool  102  receives a request  134  to edit document  120  using sentence rewrite tool  114   b . Document tool  102  may receive request  134  in any suitable manner. For example, in certain embodiments, user  104  may transmit request  134  to document tool  102  by selecting sentence rewrite button  210 , displayed on GUI  110  (as illustrated, for example, in  FIG.  7 A ). At operation  1804  document tool  102  identifies a first paragraph data block (e.g., data block  1602   e , illustrated in  FIG.  16   ) within document data structure  1600 . At operation  1806  document tool  102  identifies a first sentence of an array of sentences stored by the paragraph data block. At operation  1808  document tool  102  determines whether the identified sentence is stored within document data structure  1600  as a single sentence or as a set of sentence variants. If, at operation  1808  document tool  102  determines that the sentence is stored within document data structure  1600  as a set of sentence variants, at operation  1810  document tool  102  identifies the selected sentence variant of the set of sentence variants based on identification information stored along with the set of sentence variants (e.g., identification  1618   e , stored along with set of sentence variants  1616   e  within paragraph data block  1602   e ). Document tool  102  then displays the selected sentence variant in both sentence rewrite tool  114   b  and in text editor  112 , as part of document  120 . If, at operation  1808  document tool  102  determines that the sentence is stored within document data structure  1600  as a single sentence, at operation  1812  document tool  102  displays that single sentence in both sentence rewrite tool  114   b  and in text editor  112 , as part of document  120 . 
     At operation  1814  document tool  102  determines whether any additional sentences are stored within the paragraph data block of data structure  1600  under consideration. If, at operation  1814  document tool  102  determines that the paragraph data block under consideration includes one or more additional sentences, at operation  1816  document tool  102  considers the next sentence stored within the paragraph data block. Method  1800  then returns to operation  1808 . If, at operation  1814  document tool  102  determines that the paragraph data block under consideration does not include any additional sentences, at operation  1818  document tool  102  determines whether document data structure  1600  includes any additional paragraph data blocks. If, at operation  1818  document tool  102  determines that document data structure  1600  includes one or more additional paragraph data blocks, at operation  1820  document tool  102  considers the next paragraph data block included within document data structure  1600 . Method  1800  then returns to operation  1808 . 
     At operation  1822  document tool  102  determines whether an edit has been made to a sentence stored within a paragraph data block of document data structure  1600  using sentence rewrite tool  114   b . In particular, document tool  102  determines whether a new sentence variant has been created for the sentence, and/or whether a new selection has been made of a sentence variant of a set of sentence variants associated with the sentence, for inclusion within document  120 . If, at operation  1822  document tool  102  determines that an edit has been made to a sentence stored within a paragraph data block of data structure  1600  using sentence rewrite tool  114   b , at operation  1824  document tool  102  updates both the paragraph data block of data structure  1600  that stores the sentence, as well as the content of the document  120  as displayed by GUI  110 , to reflect the edit. As an example, if, at operation  1822  document tool  102  determines that sentence rewrite tool  114   b  was used to add anew sentence variant to a sentence stored within a paragraph data block of document data structure  1600  (e.g., a new sentence variant was added to one of sentences  1614   e  stored by paragraph block  1602   e  of data structure  1600  as illustrated in  FIG.  16   ), at operation  1824  document tool  102  adds the new sentence variant to the corresponding set of sentence variants associated with the sentence (e.g., set of sentence variants  1616   e ), and displays the new sentence variant in sentence rewrite tool  114   b . As another example, if, at operation  1822  document tool  102  determines that sentence rewrite tool  114   b  was used to select a new sentence variant of a set of sentence variants associated with a particular sentence of document  120 , at operation  1824  document tool  102  (1) updates the identification of the selected sentence variant stored within data block, (2) updates sentence rewrite tool  114   b  to reflect the updated identification, and (3) updates text editor  112  by replacing the previous sentence variant that was displayed within document  120  with the newly selected sentence variant. Method  1800  then returns to operation  1822 . 
     Modifications, additions, or omissions may be made to method  1800  depicted in  FIG.  18   . Method  1800  may include more, fewer, or other operations. For example, operations may be performed in parallel or in any suitable order. While discussed as document tool  102  (or components thereof, including, for example, sentence rewrite tool  114   b ) performing certain operations, any suitable components of system  100 , including, for example, device  106 , may perform one or more operations of the method. 
     D. Use of Document Data Structure with Sentence Reorder Tool 
       FIG.  19    presents a flowchart illustrating an example method  1900  (described in conjunction with elements of  FIGS.  1 ,  9 A through  10 B, and  16   ) by which document tool  102  uses data structure  1600  to link text editor  112  with sentence reorder tool  114   c , such that edits made to document  120  using sentence reorder tool  114   c  are reflected in the document, as displayed by text editor  112 . 
     At operation  1902  document tool  102  receives a request  134  to edit document  120  using sentence reorder tool  114   c . Document tool  102  may receive request  134  in any suitable manner. For example, in certain embodiments, user  104  may transmit request  134  to document tool  102  by selecting sentence reorder button  212 , displayed on GUI  110  (as illustrated, for example, in  FIG.  9 A ). At operation  1904  document tool  102  considers a first data block  1602  of document data structure  1600 . At operation  1906  document tool  102  determines whether the type  1604  assigned to the data block is the “paragraph” type. If, at operation  1906  document tool  102  determines that the type  1604  assigned to the data block  1602  is not the “paragraph” type (e.g., the type  1604  is one of the “title,” “h1,” “h2,” or “outlineTopic” types), at operation  1908  document tool  102  displays the content  1608  stored by the data block  1602  as an immutable and immovable element within sentence reorder tool  114   c . On the other hand, if, at operation  1906  document tool  102  determines that the type  1604  assigned to the data block  1602  is the “paragraph” type, at operation  1910  document tool  102  displays the sentences  1614   e  stored by the data block as a list of moveable elements within sentence reorder tool  114   c . In certain embodiments in which a set of sentence variants (rewrites)  1616   e  is stored for one or more of the sentences  1614   e  stored by the data block, for each set of sentence variants  1616   e , document tool  102  displays the selected sentence variant of the set, as identified through identification  1618   e , within the list of moveable elements displayed within sentence reorder tool  114   c . At operation  1912  document tool  102  determines whether document data structure  1600  includes any additional data blocks  1602 . If, at operation  1910  document tool  102  determines that document data structure  1600  includes one or more additional data blocks  1602 , at operation  1914  document tool  102  considers a next data block  1602  within document data structure  1600 . Method  1900  then returns to operation  1906 . 
     At operation  1916  document tool  102  determines whether an edit has been made to a sentence of document  120 . In this context, making an edit to a sentence of document  120  may correspond to changing the content (e.g., the text) of the sentence, deleting the sentence, and/or changing the position of the sentence within document  120 . If, at operation  1916  document tool  102  determines that an edit has been made to a sentence of document  120 , at operation  1918  document tool  102  determines whether the edit made to the sentence corresponds to a movement of the sentence to a new position within document  120 . If, at operation  1918  document tool  102  determines that the edit made to the sentence does not correspond to a movement of the sentence to a new position within document  120 , the edit corresponds to a revision of the content of the sentence, or a deletion of the sentence. Accordingly, at operation  1920  document tool  102  either updates the content of the sentence according to the edit, or deletes the sentence from document  120 . As an example, in response to determining that the edit to the sentence corresponds to a deletion of the sentence, document tool  102  removes the sentence from its associated list of sentences and updates the list, as displayed within sentence reorder tool  114   c , to reflect this deletion. Document tool  102  also updates document  120 , as displayed within text editor  112 , to reflect the sentence deletion. As another example, in response to determining that the edit to the sentence corresponds to a revision of the content of the sentence, document tool  102  updates the content of the sentence within the list, as displayed by sentence reorder tool  114 , to reflect this revision. Document tool  102  also updates the content of the sentence, as displayed within text editor  112 , to reflect the revision. Method  1900  then returns to operation  1916 . 
     If, at operation  1918  document tool  102  determines that the edit to the sentence corresponds to a movement of the sentence to a new position within document  120 , at operation  1922  document tool  102  determines whether the sentence was moved to a new position within the same list (corresponding to a movement within the same paragraph of document  120 ). For example, document tool  102  may determine whether a sentence (e.g., sentence  904   d ) displayed by sentence reorder tool  114   c  within a particular list of sentences (e.g., list  906   b ) was moved from a first position within the list to a second position within the list. If, at operation  1922  document tool  102  determines that the sentence was moved to a new position within the same list (corresponding to a movement within the same paragraph of document  120 ), at operation  1924  document tool  102  updates the position of the sentence within the list to reflect the movement (e.g., moves sentence  904   d  from the first position within list  906   b  to the second position within list  906   b ). Document tool  102  also updates document  120 , as displayed within text editor  112  to correspondingly reflect the movement (e.g., moves sentence  904   d  from a corresponding first position within paragraph  902   b  to a corresponding second position within paragraph  902   b ). Method  1900  then returns to operation  1916 . 
     If, at operation  1922  document tool  102  determines that the sentence was not moved to a new position within the same list, at operation  1926  document tool  102  determines whether the sentence was moved to a new position within a different list (corresponding to a movement to a different paragraph of document  120 ). For example, document tool  102  may determine whether a sentence (e.g., sentence  9040  displayed by sentence reorder tool  114   c  within a particular list of sentences (e.g., list  906   c ) was moved from the list to different list (e.g., from list  906   c  to list  906   b ). If, at operation  1926  document tool  102  determines that the sentence was moved to a new position within a different list (corresponding to a movement to a different paragraph of document  120 ), at operation  1928  document tool  102  updates the location of the sentence to reflect its movement into the different list (e.g., updates the location of sentence  904   f  to be within list  906   b ). Document tool  102  also updates document  120 , as displayed within text editor  112  to correspondingly reflect the movement (e.g., moves sentence  904   f  from paragraph  902   c  to a position within paragraph  902   b ). Method  1900  then returns to operation  1916 . 
     If, at operation  1926  document tool  102  determines that the sentence was not moved to a new position within a different list, at operation  1930  document tool  102  determines whether the sentence was moved to a new position not within any existing lists (corresponding to a movement to a newly created paragraph of document  120 ). For example, document tool  102  may determine whether a sentence (e.g., sentence  904   g ) displayed by sentence reorder tool  114   c  within a particular list of sentences (e.g., list  906   c ) was moved from the list to a position within sentence reorder tool  114   c  that does not correspond with any of the lists included within the tool. If, at operation  1930  document tool  102  determines that the sentence was moved to a position within sentence reorder tool  114   c  that does not correspond with any of the lists included within the sentence reorder tool, at operation  1932  document tool  102  generates a new list at that position (e.g., new list  906   g ) and moves the sentence into the new list (e.g., moves sentence  904   g  into new list  906   g ). Document tool  102  also updates document  120 , as displayed within text editor  112  to correspondingly reflect the movement, by creating a new paragraph within document  120  (e.g., new paragraph  902   g ), and moving the sentence into the new paragraph. Method  1900  then returns to operation  1916 . 
     If, at operation  1916  document tool  102  determines that no edits have been made to the sentences of document  120 , at operation  1934  document tool  102  determines whether it has received a request to save the current version of document  120  in database  118 . If, at operation  1934  document tool  102  determines that it has received a request to save the current version of document  120  in database  118 , at operation  1936  document tool  102  converts the set of elements displayed within sentence reorder tool  114   c  back into document data structure  1600 . In particular, document tool  102  converts each immutable, immoveable element displayed within sentence reorder tool  114   c  back into a data block  1602  of its corresponding type (e.g., one of types “title,” “h1,” “h2,” “outlineTopic,” etc.). Document tool  102  also converts each list of sentence elements (e.g., each list  906   a  through  906   g  displayed within sentence reorder tool  114   c ) into a data block  1602  of the “paragraph” type. At operation  1938  document tool  102  saves document data structure  1600  in database  118 . For example, document tool  102  may save document data structure  1600  in database  118  as a new version  122  of document  120 . Method  1900  then returns to operation  1916 . 
     Modifications, additions, or omissions may be made to method  1900  depicted in  FIG.  19   . Method  1900  may include more, fewer, or other operations. For example, operations may be performed in parallel or in any suitable order. As an example, while method  1900  illustrates the decisions associated with operations  1918 ,  1922 ,  1926 , and  1930  performed sequentially and in a specific order, these decisions may be performed in parallel, or in any suitable order. As another example, while method  1900  illustrates the decisions associated with operations  1916  and  1934  performed sequentially and in a specific order, these decisions may be performed in parallel, or in any suitable order. While discussed as document tool  102  (or components thereof, including, for example, sentence reorder tool  114   c ) performing certain operations, any suitable components of system  100 , including, for example, device  106 , may perform one or more operations of the method. 
     Although the present disclosure includes several embodiments, a myriad of changes, variations, alterations, transformations, and modifications may be suggested to one skilled in the art, and it is intended that the present disclosure encompass such changes, variations, alterations, transformations, and modifications as falling within the scope of the appended claims.