DE3784088T2 - Texteditor fuer texte in mehreren richtungen oder dimensionen. - Google Patents
Texteditor fuer texte in mehreren richtungen oder dimensionen.Info
- Publication number
- DE3784088T2 DE3784088T2 DE8787104744T DE3784088T DE3784088T2 DE 3784088 T2 DE3784088 T2 DE 3784088T2 DE 8787104744 T DE8787104744 T DE 8787104744T DE 3784088 T DE3784088 T DE 3784088T DE 3784088 T2 DE3784088 T2 DE 3784088T2
- Authority
- DE
- Germany
- Prior art keywords
- unit
- character
- line
- text
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
- 238000012545 processing Methods 0.000 claims description 37
- 230000014509 gene expression Effects 0.000 claims description 36
- 230000000977 initiatory effect Effects 0.000 claims 1
- 239000003550 marker Substances 0.000 claims 1
- 238000003780 insertion Methods 0.000 description 58
- 230000037431 insertion Effects 0.000 description 58
- 230000008859 change Effects 0.000 description 41
- 238000010276 construction Methods 0.000 description 35
- VLCQZHSMCYCDJL-UHFFFAOYSA-N tribenuron methyl Chemical compound COC(=O)C1=CC=CC=C1S(=O)(=O)NC(=O)N(C)C1=NC(C)=NC(OC)=N1 VLCQZHSMCYCDJL-UHFFFAOYSA-N 0.000 description 31
- 238000000034 method Methods 0.000 description 30
- 230000006870 function Effects 0.000 description 26
- 239000011295 pitch Substances 0.000 description 23
- 230000007246 mechanism Effects 0.000 description 20
- 230000000694 effects Effects 0.000 description 19
- 230000008569 process Effects 0.000 description 18
- 238000007792 addition Methods 0.000 description 14
- 238000013515 script Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 239000013598 vector Substances 0.000 description 8
- 230000007613 environmental effect Effects 0.000 description 7
- 230000000007 visual effect Effects 0.000 description 7
- 230000004044 response Effects 0.000 description 5
- 230000002829 reductive effect Effects 0.000 description 4
- 230000002441 reversible effect Effects 0.000 description 4
- 238000000354 decomposition reaction Methods 0.000 description 3
- 230000010365 information processing Effects 0.000 description 3
- 238000003825 pressing Methods 0.000 description 3
- 230000000717 retained effect Effects 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 241000134253 Lanka Species 0.000 description 2
- 230000009471 action Effects 0.000 description 2
- 230000014759 maintenance of location Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000000926 separation method Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 208000003251 Pruritus Diseases 0.000 description 1
- 230000004913 activation Effects 0.000 description 1
- 230000006978 adaptation Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 210000001072 colon Anatomy 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000000295 complement effect Effects 0.000 description 1
- 239000000470 constituent Substances 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000006073 displacement reaction Methods 0.000 description 1
- 230000008571 general function Effects 0.000 description 1
- 238000010348 incorporation Methods 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000010327 methods by industry Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000000284 resting effect Effects 0.000 description 1
- 239000000126 substance Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/103—Formatting, i.e. changing of presentation of documents
- G06F40/111—Mathematical or scientific formatting; Subscripts; Superscripts
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/123—Storage facilities
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/12—Use of codes for handling textual entities
- G06F40/126—Character encoding
- G06F40/129—Handling non-Latin characters, e.g. kana-to-kanji conversion
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/10—Text processing
- G06F40/166—Editing, e.g. inserting or deleting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/20—Natural language analysis
- G06F40/205—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F40/00—Handling natural language data
- G06F40/40—Processing or translation of natural language
- G06F40/53—Processing of non-Latin text
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- General Health & Medical Sciences (AREA)
- Health & Medical Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Audiology, Speech & Language Pathology (AREA)
- Artificial Intelligence (AREA)
- Algebra (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Mathematical Physics (AREA)
- Pure & Applied Mathematics (AREA)
- Document Processing Apparatus (AREA)
Description
- Die Erfindung betrifft Texteditoren und insbesondere einen Texteditor, der eine Textverarbeitung wie die Verarbeitung von multidimensionalem oder multidirektionalem Text, so wie von Text erlaubt der aus wissenschaftlichen und technischen Zeichen und Symbolen besteht, inklusive solcher, die im Bereich der Mathematik, der Physik und bei Texten von nichteuropäischen Sprachen verwendet werden.
- Die am meisten verbreitete Weise zur Darstellung, Übertragung und Speicherung von Information geschieht durch bildliche Wiedergabe der Information, z. B. gedruckte Texte und Darstellungen und seit kurzem durch entsprechende elektronische Anzeigen, wie Bildschirme, die mit Computersystemen verbunden sind. In den vergangenen Jahren hat sich die Möglichkeit, Texte und graphische Darstellungen zu erzeugen und zu editieren und zu drucken, zu übertragen und abzuspeichern durch verschiedene Textverarbeitungs- und Graphikeditorprogramme, die auf Computersystemen arbeiten, sehr stark vereinfacht. Sowohl Text- als auch Graphikverarbeitungssysteme wurden sehr bekannt und sind ohne weiteres und weit verbreitet erhältlich in dem Maß, indem praktisch jegliche vernünftigen Benutzeranforderungen an System, Eigenschaften, Betriebsweise und Kosten ohne weiteres erfüllt werden können.
- Ein auftretendes Problem bei derartigen Systemen besteht jedoch darin, daß jede Art von Systemen, d. h. Textverarbeitungen oder Bildverarbeitungen, nur innerhalb eines schmalen Bereichs von Informationsarten und Darstellungen arbeiten können. Beispielsweise können Textverarbeitungssysteme nur mit Standardtexten der Formen arbeiten, die im allgemeinen in den europäischen Sprachen, z. B. englisch, verwendet werden, d. h. standardalphanumerische Buchstaben von gleichförmigen Standardgrößen und Formen, die auf einer Seite in Standardzeilen und Spalten angeordnet sind, um Zeilen und Absätze zu bilden. Innerhalb dieser Einschränkung sind die Textverarbeitungsprogramme jedoch im allgemeinen ganz effizient und leicht zu verwenden. Im Gegensatz dazu arbeiten Graphikprogramme mit Symbolen und Zeichen unterschiedlicher Gestalten und Größen sowie bildliche Erscheinung und Stellung auf einer Seite. Derartige Programme stellen eine Möglichkeit bereit, durch die ein Benutzer Formen und ihre Größen und Stellungen auf der Seite definieren kann und derartige Gestalten plazieren, bewegen und verändern kann, aber sie sind relativ schwieriger für einen Benutzer zu erlernen und zu verwenden.
- Diese Trennung zwischen Textverarbeitungs- und graphischen Verarbeitungssystemen kommt daher, daß die Textverarbeitungsdatenstrukturen und Datenstruktureditoren, die am besten zur Erzeugung und Editierung von Standardtexten geeignet sind, unkompatibel mit den graphischen Datenstrukturen und Datenstruktureditoren sind, die am besten geeignet sind zur Erzeugung, Editierung und Darstellung von graphischen Symbolen und Figuren. Wie vorstehend erläutert, sind Textverarbeitungssysteme dazu eingerichtet, mit einfachen Ketten von standardgleichförmigen Elementen zu operieren, die in einem festen Feld möglicher Stellen auf einer Seite angeordnet sind, während Graphikprozessoren mit veränderlichen Zeilen und Gestalten arbeiten, die an beliebiger Stelle auf einer Seite angeordnet sein können.
- Es gibt jedoch einen Bereich von Informationsverarbeitungen zur Darstellung, der weder Textverarbeitung noch Graphikverarbeitung im engen Sinne ist, und der von keinem der beiden vorstehend beschriebenen Systemtypen in angemessener Weise befriedigt wird. Dieser Bereich der Informationsverarbeitung und Darstellung kann allgemein definiert werden als bestehend aus solchen Textformen, die entweder mehrdimensional und mehrdirektional, oder beides sind. Ein erstes und allgemein gesehenes Beispiel eines derartigen Textes ist wissenschaftlicher Text und Symbole in den herkömmlich akzeptierten Formen, z. B. Gleichungen, Ausdrücken oder Diagrammen, die im Bereich der Mathematik, der Chemie oder der Physik verwendet werden und die Verwendung der Symbole und Begriffe, die in diesen Bereichen verwendet werden. Ein anderes Beispiel, wie vorstehend beschrieben, umfaßt die Sprachen, bei denen der Text, d. h. die Anordnung der Zeichen und Symbole auf der Seite und ihre logische und physikalische Beziehung zueinander nicht den eindimensionalen, monodirektionalen Regeln von beispielweise englisch, deutsch, französisch oder italienisch folgen. Beispiele für derartige fremdsprachliche Texte können die Bereiche der indischen Sprachgruppen umfassen, wie sie z. B. in Indien verwendet werden, und die Texte von solchen Ländern, wie Sri Lanka, Burma, Thailand und solche Sprachen wie chinesisch, japanisch und die unterschiedlichen Verzweigungen der arabischen Sprachen.
- Es ist von einem Studium einer Textseite dieser Art, z. B. einer Seite von wissenschaftlichem Text, ersichtlich, daß der Text aus logischen Gruppierungen von einem oder mehreren Zeichen oder Symbolelementen besteht, die in einer bedeutungsvollen Weise zueinander angeordnet sind. Es ist weiterhin ersichtlich, daß die Zeichen und Symbole jedoch von veränderbarer Gestalt und Größe sind, und daß ihre Anordnungen relativ zueinander ebenfalls veränderbar sind. Es ist weiterhin ersichtlich, daß die geometrische Fläche, die durch eine Gruppe von Zeichen oder Symbolen belegt wird, und der Ort dieser Fläche auf einer Seite durch die Struktur der Gruppe von Zeichen oder Symbolen und von den anderen Gruppen von Zeichen oder Symbolen auf der Seite bestimmt ist, insbesondere von den vorhergehenden Gruppen auf der Seite und vielleicht von den nachfolgenden Gruppen in derselben Zeile.
- Im Stand der Technik fielen die Editoren für derartige Texte im allgemeinen in eine der beiden vorstehend beschriebenen Arten, d. h. entweder in die Textverarbeitungsart oder in die Graphikverarbeitungsart. Bei den Textverarbeitungsarten von Texteditoren des Standes der Technik waren die Editoren in der Regel Anpassungen von einfachen Textverarbeitungen, mit einigen Zusätzen von Zeichen und Symbolen zu den Standardzeichensätzen und Formatbefehlen. Diese Art von Textverarbeitungs-Texteditoren waren unzufriedenstellend wegen der begrenzten Ausdrucksfähigkeiten, die darin verfügbar waren. Das heißt, die Zeichen und Symbole wurden in die Standardzeichengrößen und Proportionen gepreßt, und können nur die Stellen einnehmen, die allgemein in der Textverarbeitung vorgesehen sind, z. B. einfache Hochstellungen oder Tiefstellungen. Einige Textverarbeitungsarten-Texteditoren haben versucht, einen größeren Bereich von Zeichen, Symbolen und Ausdrücken bereitzustellen, aber waren bemerkenswert schwieriger zu verwenden und konnten im allgemeinen keine Darstellung von dem Erscheinungsbild der endgültigen Seite für den Benutzer während der Erzeugung und den Editiervorgängen bereitstellen. Dies bedeutet, daß der größere Bereich von Ausdrücken durch Einbetten von Steuerzeichen in den Text während der Texterzeugung und Editierung erzielt wird, aber der Benutzer muß tatsächlich die Seite ausdrucken, um eine Darstellung der tatsächlichen Erscheinung der Seite zu haben.
- Während Graphikverarbeitungssysteme sehr viel flexibler als Textverarbeitungssysteme hinsichtlich des Bereichs von Zeichen, Symbolen und Ausdrücken sind, die erzeugt und dargestellt werden können, sind sie im allgemeinen schwieriger zu verwenden, hauptsächlich wegen ihrer größeren Flexibilität. Dies bedeutet, daß der Benutzer jedem einzelne Zeichen, Symbol oder Zeile individuell zeichnen muß, oder zumindest eine Vorlage von jeder zu erscheinenden Art in einem Ausdruck erzeugen muß und dann jedes Zeichen, Symbol oder Zeile individuell auf der Seite anordnen muß. Hinsichtlich der Texteditierung ist dieser Ansatz geringfügig besser als eine Vorlage von Zeichen und Symbolen, ein Stück Papier und einen Stift zu haben.
- Ein Textverarbeitungssystem, das zur Verarbeitung von technischen Formeln verwendet wird, ist in "IBM Technical Disclosure Bulletin, Vol. 26, Nr. 12, Mai 1984, Seiten 6387-6390, "Method of Inputting Formulas in a Word Processing System" und IBM Technical Disclosure Bulletin, Vol. 26, Nr. 12, Mai 1984, Seiten 6391-6394, "Formatter for Formula Output" beschrieben. Bei diesem System werden technische Formeln in einer Formelbetriebsart eingegeben, indem eine "natürliche Sprache"-Ausdrucksweise verwendet wird. Die Formel wird in einer normalen von links nach rechts, Zeile für Zeile-Art eingegeben und dann zur Ausgabe auf einer Anzeige oder einem Drucker formatiert. Die Formatierung der Formel wird in einer Reihe von Schritten erreicht. Die Formatierschritte sind;
- 1. Zerlegen der Ausdrücke in Grundbestandteile;
- 2. für jeden Bestandteil seine horizontale Erstreckung, Anzahl von Zeilen und Grundlinie errechnen;
- 3. Unterteilen des Ausdrucks in mehrere Ausgabezeilen, falls er zu lang ist;
- 4. Verarbeiten zur Ausgabe auf einem bestimmten Gerät.
- Eine Speichermatrix wird verwendet, um die Zeichenpositionsinformation für jedes Zeichen in einer Zeile auf dem Bildschirm anzuzeigen. Die Verarbeitung der Editiervorgänge ist langsam und der Speicherplatz wird nicht sehr effizient verwendet.
- Wie nachstehend beschrieben werden wird, überwindet die vorliegende Erfindung diese und andere Probleme des Standes der Technik durch Bereitstellen eines Texteditors, der eine textverarbeitungsartige Dokumenterzeugung und Editionsfunktionen zusammen mit einer graphikartigen bildlichen Darstellung aufweist, der geeignet ist, um Text und Darstellungen zu erzeugen und zu editieren, die multidimensional oder multidirektional, oder beides in ihren herkömmlichen akzeptierten Erscheinungsformen sind, z. B. Gleichungen, Ausdrücke oder Diagramme, wie sie im Bereich der Mathematik, der Chemie oder der Physik verwendet werden, und die Zeichen, Symbole und Begriffe, wie sie allgemein akzeptiert und in diesen Bereichen verwendet sind, einsetzt.
- Es ist daher ein Ziel der vorliegenden Erfindung, einen verbesserten Texteditor für mehrdimensionale oder multidirektionale Texte bereitzustellen, der eine textverarbeitungsartige Dokumenterzeugung und Editierfunktionalität sowie eine bildliche Wiedergabe aufweist, die geeignet ist zur Erzeugung und Editierung solcher Texte und Ausdrücke in ihrer herkömmlich akzeptierten Form, und sowohl eine schnelle Verarbeitung der Editieroperationen als auch eine effiziente Verwendung des Speicherplatzes ermöglicht.
- Die vorliegende Erfindung, wie sie beansprucht ist, stellt einen Texteditor zum Editieren und zum Erzeugen multidirektionaler oder multidimensionaler Texte in einem Informationsverarbeitungssystem bereit, der einen Editor umfaßt, der auf Textzeichen erzeugende Tastenanschläge reagiert und Befehle zum Erzeugen einer einen Text definierenden Codekette aufbereitet, und einen Parser aufweist, der auf die Funktion des Editors zum Lesen der Codes der Kette reagiert, und die Codes in codierte Einheiten unterteilt. Jede codierte Einheit umfaßt eine Codegruppe, die eine Gruppe von einem oder mehreren Zeichen definiert, die in einem Ausdruck als eine Einheit eingesetzt sind, und aus einem Codesatz gebildet sind, die die Gruppe definieren und für jede codierte Einheit eine Einheitenstruktur erzeugen, die Informationen enthält, die eine bildliche Darstellung der zugehörigen codierten Einheit definieren.
- Um das angesprochene Problem zu lösen, weist jede Einheitenstruktur die Felder auf, die im kennzeichnenden Teil von Anspruch 1 angegeben sind. Vorzugsweise reagiert der Parser auf Betätigung des Editors zum Lesen der Einheitenstrukturen und zugehöriger Codes der Ketten und zum Erzeugen einer bildlich darstellbaren Wiedergabe des Textes.
- Die Codes in dem einen Text wiedergebenden Code umfassen vorteilhafterweise Zeichencodes, die die Zeichen oder Symbole des Textes wiedergeben und Operatorcodes, die die Eigenschaften des Textes definieren. In einer bevorzugten Ausführungsform der Erfindung umfassen die Operatorcodes Präfixoperatoren, die Operationen an einem nachfolgenden Zeichen, einer nachfolgenden Zeichengruppe oder Einheit oder Einheitengruppe durchführen, Postfixoperatoren, die Operationen an einem vorhergehenden Zeichen, einer vorhergehenden Zeichengruppe oder Einheit oder Einheitengruppe durchführen, und Infixoperatoren, die Operationen gleichzeitig an zwei Zeichen, Zeichengruppen oder Einheiten oder Einheitengruppen durchführen. In einer weiteren Ausführungsform der Erfindung umfassen die Operatorcodes Strukturoperatoren, die organisatorische Beziehungen zwischen den Einheiten des Textes und Umgebungsoperatoren definieren, die Attribute der Zeichen des Textes definieren.
- In dieser Hinsicht umfassen die Strukturoperatoren Einheitenoperatoren, die räumliche Beziehungen zwischen Einheiten des Textes definieren, wobei die Struktureinheitenoperatoren Einleitoperatoren umfassen, die entsprechende durch die Operatoren definierte Einheiten einleiten und entsprechende Abschlußoperatoren, die die durch die Einleitoperatoren eingeleiteten Einheiten beenden.
- In weiteren Gesichtspunkten der Strukturoperatoren umfassen die Strukturoperatoren Assoziativoperatoren, die eine Assoziation zwischen Zeichen und Symbolen definieren, wobei ein Assoziativoperator so wirkt, daß ein Zeichen und ein anderes Zeichen als Teil der Definition des anderen Zeichens werden.
- Die Umgebungsoperatoren umfassen sowohl Attributschaltoperatoren, die so wirken, daß sie entsprechende Attribute aus- oder einschalten, und in einem anderen Aspekt Attributveränderungsoperatoren, die so wirken, daß sie dauernd existierende Attribute verändern.
- In weiteren Gesichtspunkten der Operatorcodes umfassen diese Schriftoperatorcodes, wobei jeder Schriftoperatorcode eine Schreibeinheit der codierten Einheiten definiert, die in einer Schreibposition in bezug auf eine Basiseinheit der codierten Einheiten angeordnet ist. Vorzugsweise ist jede Schreibeinheit als eine Einheit definiert, die eine nach der Grundlinie der Basiseinheit ausgerichtete Grundlinie hat und gegenüber der Grundlinie der Basiseinheit um einen gewählten Abstand versetzt ist, und bei der die Lage der Grundlinie der Schreibeinheit in bezug auf die Grundeinheit durch den Schrift-Operatorcode bestimmt ist. Schließlich können bestimmte der Operatorcodes zugehörige Parametercodes umfassen, die den auszuführenden Operator näher definieren.
- Weitere Eigenschaften und Vorteile der vorliegenden Erfindung werden durch Fachleute des Gebietes nach der Lektüre der nachstehenden Beschreibungen einer vorliegenden Implementierung der vorliegenden Erfindung und nach dem Studium der Zeichnungen verstanden, in denen:
- Fig. 1 ein Blockdiagramm eines Computersystems zeigt, das die vorliegende Erfindung beinhaltet;
- Fig. 2 eine diagrammatische Darstellung eines Dokumentprofils des vorliegenden Texteditors veranschaulicht;
- Fig. 3 eine diagrammatische Darstellung eines codierten Pufferkopfes des vorliegenden Texteditors darstellt;
- Fig. 4A bis 4E diagrammatische Darstellungen von codierten Einheiten für beispielhafte wissenschaftliche Ausdrücke veranschaulicht;
- Fig. 5 eine diagrammatische Darstellung einer Einheitenstruktur des vorliegenden Texteditors veranschaulicht;
- Fig. 6A bis 6O diagrammatische Darstellungen des Parser der vorliegenden Erfindung darstellt;
- Fig. 7 eine Zusammenfassung der in den Einheitsstrukturen gespeicherten Daten für einen beispielhaft zerlegten Ausdruck darstellt;
- Fig. 8A und 8B sind eine Systemstatusdatenstruktur, die Informationen in bezug auf die vorliegenden Operationen des Systems enthält;
- Fig. 9 ist eine Zeilendatenstruktur, die Informationen in bezug auf eine Zeile enthält, in der momentan Operationen ausgeführt werden;
- Fig. 10 ist eine Bildschirmdatenstruktur, die Informationen in bezug auf einen Bildschirm enthält;
- Fig. 11 ist eine Einfügen/Verstecken-Datenstruktur, die Informationen in bezug auf die vorliegenden Einfügen- und Versteckenoperationen enthält;
- Fig. 12 veranschaulicht den Weg eines Cursors durch die Einheitstrukturen eines beispielhaften Ausdrucks;
- Fig. 13A bis 13E veranschaulichen eine Ein-Zeicheneinheit mit angefügten diakritischen Zeichen und des Aufbaus einer derartigen Einheit;
- Fig. 14 ist eine Darstellung des Aufbaus eines Teils einer Zeile mit mehrfachen Einheiten;
- Fig. 15 ist eine Veranschaulichung des Aufbaus von Zeilen; und
- Fig. 16A, 16B und 16C veranschaulichen die Einfügen-, Verstecken-, Kopieren- und Verschiebeoperationen des vorliegenden Editors.
- Die vorliegende Beschreibung gibt die Struktur und die Betriebsweise eines Computersystems wieder, das eine bevorzugte Ausführungsform der vorliegenden Erfindung aufweist. In der nachstehenden Beschreibung werden bestimmte Begriffe und Konzepte beschrieben, die notwendig sind, um die vorliegende Erfindung zunächst zu beschreiben. Dann wird die Gesamtstruktur und Betriebsweise des Systems auf einem Blockdiagrammlevel dargestellt, gefolgt von weiter detaillierten Beschreibungen bestimmter grundsätzlicher Eigenschaften und Funktionsgrundsätzen der Erfindung.
- Bestimmte Bezugszeichen- und Zeichnungsübereinkommen werden durchgängig in den nachstehenden Beschreibungen verwendet, um die Klarheit der Darstellung zu verbessern.
- Zum einen können Verbindungen zwischen zusammengehörigen Abschnitten des Systems entweder durch gemeinsame Namen oder Bezugszeichen oder durch gezeichnete Zusammengehörigkeitsdarstellungen wiedergegeben sein. Zum zweiten sind Bezugszeichen, die sich auf Systemelemente beziehen, die in den Zeichnungen erscheinen, ihren jeweiligen Elementen zugeordnet, wenn die Elemente zum ersten Mal in der Beschreibung auftauchen. Das einem bestimmten Element zugeordnete Bezugszeichen wird dann im Rest der Beschreibung oder den Zeichnungen durchgehend verwendet, wenn immer dieses Element angesprochen oder in der Zeichnung gezeigt ist. Schließlich sind alle Bezugszeichen aus entweder drei oder vier Zahlen gebildet. Die beiden geringwertigen (rechtesten) Ziffern bezeichnen ein bestimmtes Element, das in einer bestimmten Zeichnung auftaucht, und die höchstwertige(n) (linke) Ziffer(n) beziehen sich auf die Zeichnung, in der das Element zum ersten Mal auftaucht. Beispielsweise kann ein bestimmtes Systemelement zum ersten Mal als das zwölfte Element in Fig. 1 auftauchen; dieses Element würde dann durch das Bezugszeichen 112 angesprochen und so in dem Rest der Beschreibung und den Zeichnungen durchgehend so bezeichnet sein; in ähnlicher Weise wäre das erste Element in Fig. 12 durch das Bezugszeichen 1202 in der ganzen Beschreibung durchgehend angesprochen.
- Nachstehend wird zuerst der vorliegende Texteditor auf einem allgemeinem Niveau beschrieben, inklusive einer Definition bestimmter Begriffe und Konzepte, die darin auftauchen und eine Überblicksbeschreibung der Systembetriebsweise. Bestimmte Elemente und Operationen des Systems und des Editors werden dann in größerem Detail beschrieben, wie es notwendig ist, um den vorliegenden Editor einem Fachmann auf dem Gebiet zu beschreiben.
- Wie vorstehend beschrieben, besteht der Zweck des vorliegenden Texteditorsystems darin, Dokumentseiten zu erzeugen, die Text enthalten, der sowohl multidimensional als auch multidirektional wie auch beides sein kann. Ein erstes und allgemein sichtbares Beispiel eines solchen Textes ist ein wissenschaftlicher Text und Symbole in den traditionell akzeptierten Formen, z. B. Gleichungen, Ausdrücke oder Diagramme, wie sie im Bereich der Mathematik, der Chemie oder der Physik verwendet werden und die Symbole und Begriffe verwendet, wie sie in diesen Bereichen verwendet werden. Ein anderes Beispiel, wie vorstehend beschrieben, umfaßt solche Sprachen, bei denen der Text, d. h. die Position der Zeichen und Symbole auf der Seite und ihre logische und physikalische Beziehung zueinander, nicht der eindimensionalen, monodirektionalen Konvention von z. B. englisch, deutsch, französisch oder italienisch folgen. Beispiele derartiger fremdsprachlicher Texte umfassen die Zweige der indischen Sprachgruppen, wie sie z. B. in Indien, Sri Lanka, Burma, Thailand und solchen Sprachen, wie chinesisch, japanisch und den unterschiedlichen Zweigen der arabischen Sprachen verwendet werden. Aufgrund der Vertrautheit für den gewöhnlichen Leser, werden die folgenden Beschreibungen und Diskussionen des vorliegenden Texteditors wissenschaftlichen Text für erläuterte Zwecke verwenden; es ist jedoch klar, daß der vorliegende Editor jeden beliebigen Einsatz oder Schriftsatz oder Symbole, inklusive solche der vorstehend beschriebenen Sprachen, und jeden beliebigen anderen Zeichensatz und Symbole verwenden kann. Innerhalb dieser Texte kann ein Dokument als eine oder mehrere Seiten umfassend betrachtet werden, wobei jede Seite aus einer oder mehr Zeilen von Text aufgebaut sein kann, wobei eine Zeile ein im wesentlichen linear orientiertes Feld oder zusammenhöriger Symbole oder Zeichen sein kann. Die vorstehende Implementierung des Texteditors, wie er hier beschrieben ist, definiert ein Dokument als eine Seite umfassend; andere Ausführungsformen können jedoch Dokumente aus mehr als einer Seite haben, in der Art, wie sie im Stand der Technik der Textverarbeitung bekannt ist.
- Der vorliegende Texteditor ist gedacht, im allgemeinen Gebrauch ähnlich wie die vorhandene Computer-basierte Textverarbeitungssysteme zu sein. Das heißt, der Text befindet sich in einem Computerspeicher, wenn er eingegeben und editiert wird, und wird bildlich für den Benutzer durch eine Anzeigeeinrichtung, z. B. einen Bildschirm, während diesem Vorgang dargestellt. Zu diesem Zweck kann eine Seite als aus mehreren "Bildschirmen" zusammengesetzt betrachtet werden, wobei ein Bildschirm ein Teil einer Seite ist, die derzeit bearbeitet und dem Benutzer dargestellt wird.
- Für die Zwecke der nachfolgenden Beschreibungen gibt es drei Arten von "Zeichen", die in einem Text auftauchen können. Zum einen ist ein "Zeichen" als jedes beliebige Symbol oder Buchstaben definiert, der in dem endgültigen gedruckten Dokument, d. h. auf einer gedruckten Seite, auftauchen soll. Es sei bemerkt, daß dieses Konzept von "Zeichen" auch "Null"-Zeichen umfaßt, d. h. einen Leerraum, der durch ein Zeichen besetzt wäre, aber der kein tatsächlich gedrucktes oder dargestelltes Symbol oder Zeichen enthält.
- Ein "Steuerzeichen" ist ein Zeichen, das beispielsweise zur Formatierung der Seite verwendet wird und für den Benutzer während der Erzeugung und der Editierung des Dokuments auftauchen kann, das aber im allgemeinen nicht auf einer endgültigen gedruckten Seite erscheint. Beispiele derartiger Steuerzeichen umfassen Tabulatoren und Pseudo-Wagenrückläufe.
- Schließlich sind "diakritische Zeichen" oder Marken, Zeichen oder Symbole, die an andere Zeichen angefügt oder mit ihnen verbunden werden, und die dazu dienen, die Bedeutung der Zeichen, mit denen sie zusammen erscheinen, zu verändern oder zu definieren. Diakritische Zeichen oder Marken können sowohl oberhalb oder unterhalb eines bestimmten Zeichens oder bestimmter Zeichen erscheinen. Beispielsweise werden in Sprachen diakritische Marken verwendet, um die Aussprache eines Buchstabens anzuzeigen oder zu verändern, z. B. a' oder ein Umlaut. In den Naturwissenschaften verändern kritische Zeichen die Natur eines Zeichens oder definieren einen Gesichtspunkt eines Buchstabens, mit dem sie verbunden sind. Beispielsweise in der Mengenlehre definiert ein Zeichen mit einem Strich darüber das Komplement der durch das Zeichen repräsentierten Menge, während in der Vektoralgebra ein Zeichen mit einem Strich darüber einen Vektor darstellt. Als weiteres Beispiel gibt in der Physik oder Mathematik ein Zeichen mit einem Punkt darüber die erste Ableitung der Funktion wieder, die durch das Zeichen repräsentiert wird, und ein Zeichen mit zwei Punkten darüber, ähnlich einem Umlaut, gibt die zweite Ableitung der Funktion wieder.
- "Durchgestrichene" Zeichen, d. h. Zeichen, die ein anderes Zeichen oder Symbol überlagern oder durch sie hindurchgehend haben, sind ebenfalls zulässig und wie nachstehend beschrieben, sind sie ähnlich wie diakritische Zeichen in ihrer Definition und Verwendung. Beispiele von durchgestrichenen Zeichen umfassen Buchstaben mit einer geneigten Linie, z. B. einem Schrägstrich hindurch, oder Buchstaben mit einem "x" daraufgedruckt.
- Eine "Grundlinie" ist die übliche waagrechte Linie, entlang der die Hauptabschnitte von einem oder mehreren Zeichen angeordnet sind, z. B. die Zeichen dieser Textzeile sind entlang einer horizontalen Linie angeordnet, die durch die Grundlinien
- der Zeichen definiert ist, d. h. den untersten Teilen des Hauptkörpers der Zeichen. In dieser Hinsicht sei bemerkt, daß bestimmte Zeichen, z. B. "y" oder "g" "Unterlängen" umfassen, die unter die Grundlinie reichen. Während eine Grundlinie im wesentlichen eine Linie bezeichnen kann, die über eine gesamte Seite läuft, und an der eine Reihe Seiten überspannender Wörter oder Text orientiert sein können, kann es auch örtliche Grundlinien geben. Beispielsweise kann ein Zeichen mit einer Kette von einem oder mehreren Zeichen in Hochstellung auf einer allgemeinen Grundlinie angeordnet sein, während die hochgestellten Zeichen auf einer Grundlinie angeordnet sind, die innerhalb des hochgestellten Zeichens lokal ist. Es sei bemerkt, daß die Grundlinien wie gewünscht für einen vorbestimmten Text orientiert sein können, d. h. zum Beispiel können Grundlinien als vertikal anstelle von horizontal definiert sein, und Zeilen können von rechts nach links oder von oben nach unten oder von unten nach oben laufen, anstelle von links nach rechts entlang horizontaler Linien, wie dies üblicherweise in wissenschaftlichen Texten zu sehen ist.
- Zeichenketten können in Verbindung mit einem anderen Zeichen oder mit Zeichen erscheinen, aber entlang einer Grundlinie oberhalb oder unterhalb angeordnet sein, vor oder hinter dem Zeichen, mit dem sie angeordnet sind. Diese Zeichen, die in Verbindung mit, aber nicht auf der gleichen Grundlinie wie das Stammzeichen erscheinen, werden als "Schriften" bezeichnet, und die Stellung in der sie relativ zu dem Stammzeichen oder den Stammzeichen erscheinen, werden als die "Schriftstellungen" bezeichnet. Es gibt sechs definierte Schriftstellungen, darübergestellt, daruntergestellt, vorhochgestellt, nachtiefgestellt, hochgestellt und tiefgestellt. Mit Bezug auf ein Stammzeichen sind diese Stellungen jeweils direkt überhalb, direkt unterhalb, vor und über, vor und unter, hinter und über, und hinter und unter einem Stammzeichen.
- Vorstehend wurden die Zeichen eines Textes als relativ zueinander entlang von Grundlinien beschrieben, entweder im allgemeinen oder im lokalen Sinn, d. h. als in lokalen Grundlinien in Schriftstellungen angeordnet. Es gibt noch einen anderen Fall, wie Zeichen relativ zueinander in Zeilen angeordnet sein können, und das ist der Fall der "geteilten" Zeilen. In geteilten Zeilen wird eine Grundlinie in eine Gruppe von zwei oder mehr paralleler Linien aufgeteilt, wobei jede parallel zur ursprünglichen Grundlinie verläuft, wobei die Gruppe von Zeilen zu der ursprünglichen Grundlinie zentriert ist und ein oder mehrere Zeichen auf jeder der geteilten Linien erscheinen.
- Schließlich erscheint ein Spezialfall von Symbolen in wissenschaftlichen Texten und anderen, das ist der "Überstrich" und der "Unterstrich"; diese Symbole sind weder Zeichen noch diakritische Zeichen. Wie ihre Bezeichnungen implizieren, ist ein Überstrich eine Linie oder ein Strich, der über einer Kette von einem oder mehreren Zeichen erscheint, und ein Unterstrich ist eine Linie oder Strich, der unter einer Kette von einem oder mehreren Zeichen erscheint.
- Nachdem die Grundelemente beschrieben sind, aus denen eine Textseite zusammengesetzt ist, müssen als nächstes die logischen Elemente und Gruppierungen von Text betrachtet werden. Es ist aus dem Studium einer Textseite ersichtlich, daß der Text aus logischen Gruppierungen von einem oder mehreren der vorstehend beschriebenen Elemente besteht, die in bedeutungsvoller Weise relativ zueinander angeordnet sind, z. B. entlang von Grundlinien. Für die Zwecke der nachstehenden Beschreibungen ist eine "Einheit" als eine Kette oder Gruppe von Zeichen mit zugehörigen Eigenschaften definiert, die in dem Dokument als eine Einheit, d. h. als ein "Ding" angeordnet werden müssen. Eine Einheit kann daher z. B. ein Zeichen, eine Schrift, die bezüglich eines Zeichens anzuordnen ist, oder eine Gruppe von einem oder mehreren Zeichen sein, die durch einen Unterstrich oder einen Überstrich verbunden sind. Es sei bemerkt, daß bestimmte Operatoren nicht notwendigerweise Einheiten per se definieren, sondern "Segmente" definieren, wobei ein "Segment" eine geordnete Gruppe von zwei oder mehreren Einheiten ist, die relativ zu einer gemeinsamen Grundlinie dimensioniert und positioniert sind. In der vorliegenden Ausführungsform bilden Linienteilungen zum Beispiel Segmente, die aus zwei oder mehreren Einheiten gebildet sind; in diesem Fall kann jede Linie eine Einheit sein oder kann aus zwei oder mehreren Einheiten bestehen. In einem anderen Beispiel kann eine Schrift aus einer Einheit bestehen, oder falls die Schrift selbst aus zwei oder mehr Einheiten besteht, kann sie ein Segment umfassen. Eine "Gleichung" oder ein anderer Ausdruck ist daher beispielsweise aus einer Folge von einer oder mehreren Einheiten gebildet.
- Es ist ersichtlich, daß die durch eine Einheit auf einer Seite belegte geometrische Fläche und der Ort dieser Fläche auf einer Seite durch die Struktur der Einheit und der anderen Einheiten auf der Seite bestimmt ist, insbesondere von den vorhergehenden Einheiten auf der Seite und vielleicht von den nachfolgenden Einheiten auf derselben Zeile. Das heißt, daß eine Einheit, die aus einem Grundzeichen mit einer Tiefstellung von zehn Zeichen und einer Hochstellung besteht, die einen mathematischen Ausdruck wiedergibt, z. B. (1+xy)/(z-2y) eine andere Fläche erfordert als ein Zeichen, das eine einfache Einzeichen-Hochstellung hat. Für die Zwecke der vorliegenden Erfindung und die nachstehende Beschreibung wird ein "Beschränkungskasten" definiert, d. h. eine rechtwinklige Einheit mit einer Fläche mit x- und y-Abmessungen, die in positiven und negativen x- und y-Richtungen von dem Bezugsursprung für die Einheit sich erstrecken, die durch die Struktur der Einheit, die darin auftaucht, definiert sind, wobei die x- und y-Abmessungen so gewählt sind, daß sie die auftretende Einheit darin vollständig enthalten.
- Während der Begriff "Kette" allgemein verwendet wird, um eine verbundene Folge von z. B. Zeichen zu bezeichnen, hat die Bezeichnung "Kette" eine spezielle Bedeutung im Hinblick auf bestimmte Aspekte der vorliegenden Erfindung und in einigen Abschnitten der nachfolgenden Beschreibung. In diesen Fällen bezeichnet der Begriff "Kette" einen Textteil, der eine oder mehrere Einheiten überstreichen oder umfassen kann und die Eigenschaft hat, daß der Anfang und das Ende der Kette auf der gleichen Grundlinie sind. Eine Schrift zum Beispiel oder die Kette von einem oder mehreren Zeichen, die auf einer Linie oder einer geteilten Linie erscheinen, ist daher eine "Kette" und kann als solche abgegrenzt und bearbeitet werden.
- Schließlich beschreibt der Begriff "Operator" einen Vorgang oder eine Operation, die bezüglich oder auf ein Zeichen oder eine Kette ausgeübt wird. Operatoren beschreiben und definieren daher die Eigenschaften des Textes, d. h. die strukturelle, also räumliche und organisatorische, Beziehung des Zeichens und der Symbole und Einheiten zueinander und die Attribute der Zeichen und Symbole, z. B. ihre Größe, ob sie schräggestellt sind, und der Schriftart, aus der die Zeichen und Symbole ausgewählt sind. Beispiele von Operatoren umfassen die Schreibweise, d. h. die Anordnung einer Schrift relativ zu einem Stammzeichen, einer geteilten Linie, Anbringen von diakritischen Zeichen oberhalb oder unterhalb eines Zeichens, Überstriche oder Unterstriche, und Verändern der Größe der Zeichen in einer Kette. In seiner grundlegenden Form ist ein Operator ein Code, der eine auszuführende Operation anzeigt, aber kann auch mit Parametern assoziiert sein, die die Operation weiter definieren. Beispielsweise wird ein Linienteilungsoperator einen Parameter mitführen, der die Anzahl von Zeilen wiedergibt, die in der Teilung erscheinen. Während der Wert eines Parameters als ein Parameter zu dem zugehörigen Operator betrachtet werden kann, kann er für die vorliegenden Zwecke als Teil der Definition des Operators betrachtet werden.
- Es sei bemerkt, daß das Erscheinungsbild eines Operators üblicherweise den Anfang einer Einheit bezeichnet, d. h. zwischen einer Einheit und der vorangehenden oder nachfolgenden Einheit trennt. Beispielsweise bezeichnet ein Schriftoperator, daß die nachfolgenden Zeichen in sich selbst eine Einheit sind, die in einer Schriftstellung relativ zu der zugeordneten Basiseinheit angeordnet sind, und das Ende der Schrift zeigt in ähnlicher Weise das Ende der Schrifteinheit und den Beginn der nächsten Einheit an. Es sei noch bemerkt, daß bestimmte Operatoren nicht notwendigerweise das Ende einer Einheit oder den Beginn einer nächsten Einheit anzeigen. Beispielsweise definieren diakritische und Durchstreichungs- Operatoren Operationen, die in bezug auf Zeichen auszuführen sind, aber zeigen keine Unterbrechung in einer Einheit an.
- Während ein Operator durch einen Operator und möglicherweise einen zugeordneten Parametercode beginnt, kann der Operator auf mehrere Weisen beendet sein. In einigen Fällen, z. B. bei einem Über- oder Unterstrichoperator wird der Operator durch einen bestimmten Strichbeendigungsoperator beendet. In anderen Fällen wird der Operator durch einen anderen Operator der gleichen Art beendet; z. B. ein Größenveränderungsoperator, der die relative Größe der nachfolgenden Zeichen verändert, wird durch einen anderen Größenveränderungsoperator beendet, der die Zeichen auf eine andere relative Größe, z. B. die Originalgröße verändert. In wieder anderen Fällen, z. B. einer Schrift oder den individuellen Linieneinheiten, die die Einheiten einer Linienteilungseinheit umfassen, sind die Schrift oder die individuellen Unterlinien der Linienteilung durch Pseudowagenrückläufe beendet, d. h. durch Wagenrückläufe, die spezifisch als Operatoren verwendet werden, um einen Operator zu beenden. Der Begriff Pseudo-Wagenrücklauf wird verwendet, um die größere Allgemeinheit wiederzugeben, die dieses Steuerzeichen gegenüber dem allgemeinen Wagenrücklaufsteuerzeichen hat, das üblicherweise nur das Ende einer Zeile auf einer Seite darstellt. Es sei bemerkt, daß in der vorliegenden Ausführungsform der "Wagenrücklauf" in seinem herkömmlichen Sinn nicht verwendet wird. Der "Pseudo-Wagenrücklauf" wird durchgängig verwendet und ist so bezeichnet, um die allgemeinere Leistungsfähigkeit und Flexibilität des "Pseudo-Wagenrücklaufs" zu bezeichnen, wobei der herkömmliche "Wagenrücklauf" durch den "Pseudo-Wagenrücklauf" umfaßt ist. Im Fall einer Linienteilung wird jede Linie der Teilung durch einen "Pseudo-Wagenrücklauf" beendet und der Zeilenteilungsoperator selbst wird durch das Auftreten einer Anzahl von "Pseudowagenrückläufe" beendet, die gleich der Anzahl der Linien in der Teilung ist, wie sie durch den dem Linienteilungsoperator zugeordneten Parameter definiert ist. In diesem Fall kann der Terminator als impliziter Operator betrachtet werden, d. h. der Operator wird durch das Auftreten einer Bedingung anstelle eines expliziten Beendigungscodes beendet.
- In der vorliegenden Erfindung sind derzeit drei Klassen von Operatoren definiert, "Präfix"-Operatoren, "Postfix"-Operatoren und "Infix"-Operatoren. Präfix-Operatoren wirken auf ein einzelnes Zeichen, Kette oder Einheit, treten vor dem zu bearbeitenden Ding auf und wirken von dem Punkt des Auftretens bis zum Ende der Seite, falls sie nicht anderweitig beendet werden. Ein Beispiel eines Präfixoperators ist die Größenveränderung von nachfolgenden Zeichen. Ein Postfix-Operator wirkt wiederum auf ein einzelnes Zeichen, Kette oder Einheit, aber tritt nach dem zu bearbeitenden Ding auf, wirkt auf die vorstehend auftretende Einheit; ein Beispiel eines Postfix- Operators ist der Über- oder Unterstrichbeendigungsoperator. Infix-Operatoren wirken auf zwei Zeichen, Ketten oder Einheiten gleichzeitig, üblicherweise um eine Beziehung zwischen den zu bearbeitenden Dingen zu definieren und treten zwischen den Dingen auf, auf die sie wirken. Ein Beispiel eines Infix-Operators ist der Schriftoperator, wobei der Operator zwischen dem Stammzeichen oder -einheit und der Schrift auftritt. Der Schriftoperator definiert das vorstehende Zeichen oder die Einheit als den Stamm, das nachfolgende Zeichen, Einheit oder Kette als eine Schrift und die Schriftstellung der Schrift relativ zu dem Stamm.
- Die Begriffe Infix, Präfix und Postfix beschreiben Wirkungseigenschaften der Operatoren in bezug auf die Zeichen oder Symbole oder die Einheiten. Die Operatoren können auch durch ihre Wirkung auf die Zeichen, Symbole und Einheiten des Textes entweder als strukturelle oder als Umgebungsoperatoren beschrieben werden. Das heißt, ein struktureller Operator definiert eine räumliche oder organisatorische Beziehung zwischen Zeichen, Symbolen oder Einheiten, während ein Umgebungsoperator bestimmte Attribute der Zeichen oder Symbole, z. B. ihre Größe definiert, ob sie schräggestellt sind, und ihre Schriftart.
- Strukturelle Operatoren definieren naturgemäß den Anfang und das Ende von Einheiten und die Beziehungen zwischen Einheiten, z. B. wie nachstehend beschrieben, die Schrift, die Linienteilung und Strichoperatoren. Derartige Operatoren treten üblicherweise paarweise auf, d. h. ein erster Operator, der eine Einheit einleitet und ein zweiter Operator, der den Operator beendet. Beispielsweise wird ein Schriftoperator den Anfang einer Schrifteinheit einleiten und markieren, und es wird einen entsprechenden Pseudo-Wagenrücklauf-Operator geben, der die Schrifteinheit beendet. Als weiteres Beispiel wird ein Strich-Anfang-Operator den Beginn einer Stricheinheit einleiten und bezeichnen, und es wird einen zugehörigen Strich-End- Operator geben, der die Stricheinheit beendet.
- Es sei bemerkt, daß wie in der nachstehenden Beschreibung des Editors erläutert ist, bestimmte strukturelle Operatoren vorhanden sind, die assoziativ sind. Das heißt, diese assoziativen strukturellen Operatoren leiten keine Einheiten ein, sondern beziehen sich oder gehören zu bestimmten Zeichen oder Symbolen mit anderen Zeichen oder Symbolen, die in wirkungsvoller Weise die Zeichen oder Symbole als strukturelle Einzelzeichen von Symbolen kombinieren. Ein Beispiel eines derartigen Operators wird in bezug auf die Funktionsweise des vorliegenden Editors im Hinblick auf diakritische Zeichen, wie nachstehend beschrieben, gesehen.
- Schließlich definieren Umgebungsoperatoren bestimmte Attribute der Zeichen und Symbole des Textes anstatt Beziehungen zwischen Zeichen, Symbolen und Einheiten zu definieren. Beispiele derartiger Operatoren umfassen die Operatoren, die die Größe der Zeichen und Symbole bestimmen, ob sie schräggestellt sind, und ihre Schriftart. Bestimmte dieser Operatoren bewirken einen kleinen oder grundsätzlichen Wandel des Zustands in dem Text, d. h. das Attribut wird ein- oder ausgeschaltet und der Parameter des Operators kann als ein Ein- oder Aus-Signal betrachtet werden. Ein Beispiel eines derartigen diskreten Umgebungsoperators umfaßt die Schrägstellungsfunktion.
- Es gibt andere Umgebungsoperatoren, die eine Veränderung des fort laufenden Zustands der Zeichen und Symbole des Textes bewirken anstelle einer diskreten oder Ein/Aus-Veränderung. Diese Operatoren umfassen z. B. die Operatoren, die die Größe der Zeichen und Symbole definieren. Das bedeutet, daß stets ein Operator wirksam ist, der die Größe der Zeichen und Symbole definiert, und die durch diese Operatoren definierten Attribute werden verändert oder verstellt anstatt ein- oder ausgeschaltet zu werden. In diesem Fall ist der Operatorparameter ein Wert anstelle eines Ein/Aus-Signals oder Befehls.
- Es sei bemerkt, daß zusätzlich zu den definierten Operatoren, wie nachstehend beschrieben, bestimmte implizite Operatoren existieren, d. h. Operatoren, die durch den Kontext anstelle eines bestimmten Codes definiert sind. Beispielsweise ist am Anfang und am Ende einer Einheit ein impliziter Operator, der diese Einheit jeweils an die vorangehende und nachstehende Einheit ankoppelt, die als Vorher- und Nachher-Operatoren wirken. Diese Beziehungen zwischen Einheiten sind, wie beschrieben, nicht spezifiziert sondern impliziert. Das heißt, das Ende einer Einheit wird angezeigt, wenn alle Operatoren darinbeendet sind und dieses Auftreten impliziert den Beginn und die Verbindung zu einer folgenden Einheit. Wie nachstehend beschrieben, unterhält der vorliegende Editor zwei Hauptdatenstrukturen, die zum einen die Zeichen, Symbole und Operatoren und Terminatoren enthält, die die Einheiten in der Form einer einzigen Wortkette enthält, und zum anderen Informationen, die die physische Größe und Anordnung der Einheiten auf einer Seite definiert. Zum einen ist die Beziehung zwischen Einheiten durch ihre Anordnung in der Kette impliziert, beispielsweise durch den Endterminator der Einheit, der den Beginn der nächsten Einheit impliziert. Zum zweiten sind die Einheiten durch Zeiger in Folge aneinandergekettet, wobei die Zeiger als implizite Operatoren dienen, d. h. zum Beispiel eine Einheit ist beendet und die nächste Einheit beginnt.
- Die für die vorliegende Ausführungsform der vorliegenden Erfindung definierten Operatoren umfassen, aber sind nicht begrenzt auf:
- Formatlinie - ein Präfixoperator, der die allgemeine Formatierung einer Seite, z. B. der Stellen von Tabulatoren und Wagenrückläufern definiert;
- Definieren der Grundgröße - ein Präfixoperator, der die Grundliniengröße von Zeichen definiert;
- Größe auf der Grundlinie - ein Präfixoperator, der die Größe relativ zur Grundgröße von nachfolgenden auf einer Grundlinie angeordneten Zeichen anzeigt;
- Größe um die Mitte - ein Präfixoperator, der die Größe relativ zur Grundgröße der nachfolgenden um eine Mittel-Grundlinie angeordneten Zeichen anzeigt;
- Schriftart - ein Präfixoperator, der definiert, welche Schriftart und welche Symbole zu verwenden sind;
- Schrägschrift ein - ein Präfixoperator, der anzeigt, daß die nachstehenden Zeichen in Schrägschrift zu sein haben;
- Schrägschrift aus - ein Postfixoperator, der auf einen vorangegangenen Schrägschrift ein-Operator wirkt und anzeigt, daß die nachstehenden Zeichen nicht in Schrägschrift zu sein haben;
- Wurzel - ein Präfixoperator, der anzeigt, daß die nachfolgende Einheit in einem Wurzelsymbol einzuschließen ist;
- Überstrich/Unterstrich - Präfixoperatoren, die anzeigen, daß die nachfolgende Einheit einen Überstrich oder einen Unterstrich zu haben hat;
- Strichbeendigung - ein Postfixoperator, der als Beendigung für einen vorangehenden Überstrich/Unterstrich-Operator wirkt;
- Über-/Unterdiakrit - Infixoperatoren, die anzeigen, daß ein diakritisches Zeichen oder Marke oberhalb oder unterhalb des vorangehenden Zeichens oder Einheit zu plazieren ist;
- Überschreiben - ein den diakritischen Operatoren ähnlicher Operator, der jedoch anzeigt, daß das zugeordnete Zeichen oder die Zeichen mit anderen Zeichen oder Symbolen durch oder überlagert mit ihnen zu erscheinen haben; wobei der Überschreiboperator durch einen Parameter begleitet wird, der das Zeichen oder Symbol definiert, mit dem das Stammzeichen oder die Stammzeichen zu überschreiben sind;
- Über- Unter- Hoch- Tief- Vorhoch- und Vortiefschriften - Infixoperatoren, die anzeigen, daß das vorangehende Zeichen oder Einheit ein Stammzeichen oder eine Stammeinheit ist und daß das nachstehende Zeichen, die Einheit oder Kette eine Schrift ist, die eine Schriftstellung bezüglich des Stammzeichens oder der Stammeinheit einnehmen soll, wobei die Stellung durch den jeweiligen Schriftoperator bestimmt ist;
- Linienteilung - ein Infixoperator, der durch einen Parameterwert n begleitet ist, der anzeigt, daß die derzeitige Grundlinie in eine Gruppe von n parallelen Linien zu teilen ist, wobei jede parallel zu der ursprünglichen Grundlinie verläuft, und die Gruppe von Linien um die ursprüngliche Grundlinie zentriert ist und ein oder mehrere Zeichen auf jeder der geteilten Linien erscheint; in der vorliegenden Ausführungsform laufen die Werte von n von 2 bis 10 jeweils inklusive, wobei n=1 reserviert ist, um eine Linientrennung in zwei Linien anzuzeigen, wobei ein Bruchstrich dazwischen angeordnet ist;
- Null - ist ein Präfixoperator, der dazu verwendet wird, ein nicht existierendes Zeichen, d. h. ein Leerzeichen anzuzeigen oder wiederzugeben; ein Null kann verwendet werden, z. B. als Grundzeichen für einen nachfolgenden Schriftoperator, um ein virtuelles Stammzeichen für den Schriftoperator bereitzustellen; und
- Tab. Dectab und Mitte - sind sowohl Steuerzeichen, die eine Formatierung bewirken als auch Operatoren, indem sie eine Einheit unterbrechen.
- Anhängungspunkt - ein Infixoperator, der dazu verwendet wird, den Punkt anzugeben, an dem nachfolgende Zeichen, Ketten oder Einheiten an die existierenden Zeichen, Ketten oder Einheiten anzuhängen sind; der Anhängungspunkt tritt z. B. an dem momentanen Ende des zu editierenden Textes stets auf und ist von dem Editiercursor unterschiedlich, der anzeigt, wo eine momentane Editieroperation auszuführen ist, z. B. ein Überschreiben, ein Einfügen, ein Löschen, Kopieren oder Bewegen von vorhandenem Text.
- Nachdem bestimmte Begriffe und Konzepte, die in der nachstehenden Beschreibung der vorliegenden Erfindung verwendet werden, beschrieben sind, wird die Beschreibung nun mit einer Beschreibung der Gesamtstruktur und der Funktion eines Texteditiersystems fortgesetzt, das die vorliegende Erfindung beinhaltet.
- In Fig. 1 ist ein Blockdiagramm eines Informationsverarbeitungssystems, d. h. eines Computersystems, veranschaulicht, das die vorliegende Erfindung enthält. Das System umfaßt einen Speicher (MEM) 110, in dem die Programme zum Ausrichten von Operationen des Systems und Datenstrukturen enthalten sind, die auf bestimmte der Programme angewendet werden. Eine zentrale Verarbeitungseinheit (CPU) 112 wirkt in Abhängigkeit von den Programmen, um die Systemoperationen auszuführen, während eine Tastatur (KB) 114 für Benutzereingaben durch Tastenanschläge vorgesehen ist und eine Anzeige 116 vorgesehen ist, um bildliche Wiedergaben der Operationen des Benutzers darzustellen. Beispiele derartiger Systeme können den Wang Professional Computer von Wang Laboratories, Inc., Lowell, Massachusetts, den IBM Personalcomputer und viele andere ähnliche Computersysteme, wie sie von anderen Computerfirmen erhältlich sind, umfassen, inklusive solcher Computer, die mit Benutzerterminals verbunden sind.
- Aufgrund der Natur der Zeichen und der Symbole, die in den Texttypen auftreten, mit denen der vorliegende Editor zu wirken gedacht ist, ist das vorliegende System dazu gedacht, mit einer punktorientierten Anzeige zusammenzuwirken, in der eine Pixel um Pixel-Darstellung eines vorliegenden Bildschirms in dem Speicherplatz des Systems zur Anzeige gespeichert ist. Diese Funktion wird durch einen Bildschirmspeicher (SM) 118 bereitgestellt, der in dem adressierbaren Speicherbereich des Systems vorhanden ist, entweder direkt im MEM 110 oder in einem separaten Speicher, und speichert ein punktorientiertes Bildschirmbild (SI) 120 des Bildschirms oder der Bildschirme, die die vorliegende Seite eines Dokumentes erfassen. Wie in Fig. 1 veranschaulicht, wird ein SI 120 in SM 118 durch den Texteditor und zugehörige Programme eingeschrieben, wie nachfolgend beschrieben und wird von SM 118 zur Anzeige 116 gebracht, um eine bildliche Darstellung des vorliegenden Bildschirms dem Benutzer bereitzustellen. Es sei bemerkt, daß das System auch mit Vektorbildschirmen arbeiten kann, d. h. mit Bildschirmen, die nicht punktorientierte Anzeigen erzeugen, sondern statt dessen Liniensegmente auf den Bildschirm zeichnen.
- Nun sei auf die Programme und Datenstrukturen Bezug genommen, wie sie in Fig. 1 veranschaulicht sind, wobei bestimmte dieser Programme im Stand der Technik bekannt sind und keine detaillierte Diskussion in der Beschreibung des vorliegenden Texteditors erfordern. Beispielsweise richtet, überwacht und koordiniert das Betriebssystem (OS) 122 im wesentlichen die Operationen der anderen Programme, die in dem vorliegenden System wirken, wie dies im Stand der Technik bekannt ist. Der Tastaturtreiber (KBH) 124, der mit KB 114 zusammenwirkt, ist ebenfalls im Stand der Technik bekannt und nimmt Tastenanschläge von KB 114 an, leitet diese Tastenanschlagcode-Eingabe dem vorliegenden Texteditor weiter, wobei der Texteditor selbst in Abhängigkeit von den Tastaturanschlag- Codes die Editierfunktionen ausführt. Die verbleibenden Elemente des in Fig. 1 erläuterten Systems sind mit der vorliegenden Erfindung direkt verbunden und werden nachstehend in größerem Detail beschrieben.
- Die Struktur und Funktionsweise des vorliegenden Texteditors wird fast vollständig nach einer Gesamtbeschreibung und Diskussion der Datenstrukturen und Mechanismen verstanden werden, die durch den Texteditor erzeugt und verwendet werden, um ein Text enthaltendes Dokument und eine bildliche Anzeige zu erzeugen, d. h. Bildschirme, die das Dokument darstellen. Wie nachstehend beschrieben, bestehen die Editordatenstrukturen und ihre zugehörigen Mechanismen aus zwei Gruppen von Datenstrukturen mit zugehörigen Editormechanismen, die direkt mit einem Dokument verbunden sind, und die durch den Editor beim Wirken auf und mit einem Dokument verwendet sind. Diese Datenstrukturen werden nachstehend in dieser Reihenfolge beschrieben und werden nachstehend jeweils als Dokumentdatenstrukturen und Mechanismen und die Editorstrukturen und Mechanismen bezeichnet.
- Zunächst seien die direkt mit einem Dokument verbundenen Datenstrukturen betrachtet; wie vorstehend beschrieben, sind die Datenstrukturen, die am schnellsten und wirkungsvollsten erzeugt und durch einen textverarbeitungsartigen Editor editiert werden, inkompatibel mit den Datenstrukturen, die am besten dazu eingerichtet sind, graphikartige Symbole und Zeichen von z. B. wissenschaftlichem Text darzustellen. Der vorliegende Texteditor erlaubt sowohl eine textverarbeitungsartige Dokumenterzeugung und Editierfunktionalität als auch eine graphikartig bildliche Wiedergabe, die für wissenschaftliche und technische Textzeichen und Symbole und solche von anderen Sprachen geeignet ist, durch Erzeugen und Verarbeiten mit einer Vielzahl miteinander verbundener und durch den Editor interaktiver Datenstrukturen.
- Obwohl es andere Datenstrukturen gibt, die von der Wirkungsweise des vorliegenden Editors resultieren, z. B. das Bildschirmbild 120, gibt es drei grundlegende Datenstrukturen, die miteinander ein Textdokument definieren und durch den Editor verwendet werden, um das Dokument zu erzeugen, zu editieren und anzuzeigen, zusammen mit einer vierten, die die Zeichen und Symbole selbst definiert. Wie ebenfalls vorstehend erläutert und nachstehend in größerem Detail beschrieben, gibt es auch eine Gruppe von Datenstrukturen, die mit den Operationen des Editors und nicht direkt mit dem Dokument verbunden sind.
- Der Text selbst wird durch die Datenstrukturen definiert, die das Dokumentprofil (DP) 126, den Codierpuffer (EB) 128 und verbundene Einheitenstrukturen (LUS) 130 umfassen, die als nächstes nachstehend beschrieben sind. Wie nachstehend beschrieben, enthält DP 126 Informationen, die im allgemeinen bestimmte Aspekte eines Dokumentes als Ganzes definieren, bestimmte Informationen betreffend das Bildschirmbild 120 und andere Informationen, die durch den Editor beim Erzeugen und Editieren eines Dokumentes verwendet werden.
- Wie im Detail nachstehend erneut erläutert, speichert EB 128 die Codes, die eine Gleichung in einer "codierten" Form als Kette oder Zeichen-, Operator- und Terminatorcodes, ähnlich in gewisser Hinsicht wie die Zeichenketten, die eine Textverarbeitungsdokumentendatei umfassen. Wie in Fig. 1 gezeigt, enthält EB 128 einen codierenden Pufferkopf (EBH) 132, der bestimmte zusätzliche Informationen enthält, die eine Gleichung als Ganzes betreffen. Die Kette aus Zeichen-, Operator-, Parameter- und Terminatorcodes, die eine Gleichung oder einen Ausdruck enthalten, sind als in EB 128 abgelegt angezeigt, als Kette von codierten Einheiten (EUs) 134, wobei jede EU 134 eine Kette aus Zeichen-, Operator- und Terminatorcodes aufweist, die eine einzige Einheit definieren. Es sei bemerkt, daß diese Darstellung der EUs 134 in EB 128 als Erleichterung und als konzeptionelle Hilfe beim Verständnis der nachfolgenden Beschreibungen von Editordatenstrukturen und Operationen gedacht ist. Die EUs 134, die in EB 128 gezeigt sind, und auf die in den nachfolgenden Beschreibungen des Editors Bezug genommen wird, sind, wenn sie in EB 128 abgelegt sind, eher implizite als explizite Datenstrukturen. Das heißt und ist vorstehend beschrieben, die Zeichen-, Operator-, Parameter- und Terminatorcodes definieren eine Gleichung oder einen Ausdruck, der in EB 128 als eine einzige Kette von Codes abgelegt ist und nicht explizit in die angezeigten EUs 134 aufgeteilt ist. Wie in den nachfolgenden Diskussionen beschrieben wird, definieren die in EB 128 in dieser Kette abgelegten Codes tatsächlich Einheiten, d. h. EUs 134. Die Definition dieser Kette in EUs 134 ist jedoch bestimmt durch die bestimmten Codes, die in der Kette abgelegt sind, und ihrer Reihenfolge in der Kette.
- Wie in Fig. 1 gezeigt, enthält das letzte Element oder Code in der Kette von EUs 134 einen Anhängungspunkt-Operatorcode, um so anzuzeigen, wo zusätzliche Einheiten an die vorstehend existierenden Ketten von codierten Einheiten in EB 128 anzuhängen sind, falls die letzte Einheit in der Kette auf der letzten Linie ist.
- Wie bekannt, ist der Typ der Datenstruktur, der in EB 128 untergebracht ist, gut geeignet für textverarbeitungsartige Editieroperationen, aber ist nicht gut geeignet zur Erzeugung einer bildlichen Darstellung der graphikartigen Symbole und Textzeichen, mit denen der vorliegende Editor arbeiten soll, z. B. wissenschaftlichen Text. Zugeordnet zu und verbunden mit EB 128 ist LUS 130, die für jede in codierter Form in EB 128 gespeicherte Einheit eine Einheitenstruktur (US) 136 enthält, die Informationen enthält, die notwendig sind, um eine bildliche Darstellung der zugeordneten Einheit zu bilden, die in EB 128 gespeichert ist. Wie in Fig. 1 veranschaulicht, sind die USs 136 der LUS 130 nicht als Kette gespeichert sondern als individuelle Datenstrukturen, die durch Einheitenstrukturzeiger (USPs) 138 mit jeder US 136 verbunden sind, die durch eine oder mehrere USPs 138 mit ihren zugehörigen USs 136 verbunden sind. Beispielsweise kann eine bestimmte Einheit, wie vorstehend beschrieben, aus einem einzigen Zeichen bestehen, das mit einer anderen Einheit verbunden sein kann, die eine Hochschrifteinheit darstellt und mit vorangehenden und folgenden Einheiten, die wiederum einzelne Zeichen sein können. Die US 136 für diese bestimmte Einheit wird daher, wie nachstehend beschrieben, mit ihrer zugehörigen Hochschrift und mit vorgehenden und nachfolgenden Zeicheneinheiten durch USP 138 Zeiger verbunden, einer zu jeder zugehörigen Einheit. Jede US 136 in LUS 130 ist des weiteren mit der Unterkette von Codes verbunden, die in EB 128 abgelegt sind, die zusammen die zugehörige EU 134 durch einen Satz von Zeigern umfassen, wobei der Satz von Zeigern, der die USs 136 mit ihren zugehörigen EUs 134 verbindet, zusammen als codierte Pufferzeiger (EBPs) 140 in Fig. 1 dargestellt sind.
- Schließlich weist der Editor Tastaturzeichensätze (KF) 142 auf, die eine oder mehrere Zeichensatztabellen (FTs) 144 enthalten, die Definitionen von Zeichen und Symbolen umfassen. In der vorliegenden Ausführungsform des Editors können beispielsweise ein oder mehrere Zeichensätze für die Zeichensätze vorhanden sein, die mathematische, physikalische, griechische, ASCII und chemische Zeichen und Symbole enthalten. Jeder Zeichencode, der in EUs 134 auftaucht, ist seinerseits aus einem zwei Byte-Wort zusammengesetzt, wobei das erste Byte ein Index ist, der auf eine bestimmte FT 144 zeigt, in der das Zeichen oder Symbol abgelegt ist, und das zweite Byte ist ein Versatz in diese FT 144, der das bestimmte Zeichen oder Symbol innerhalb dieses Zeichensatzes anzeigt.
- Nachdem im allgemeinen die Datenstrukturen beschrieben sind, die durch den Editor verwendet und erzeugt werden, wird nachstehend die allgemeine Funktion des Editors als nächstes beschrieben.
- Wie in Fig. 1 veranschaulicht, werden Tastenanschläge, die die Zeichen und Symbole einer Gleichung und Editierkommandos, das sind Kommandos zur Steuerung der Erzeugung und Editierung einer Gleichung durch den Benutzer, über KB 114 und KBH 124 eingegeben und an den codierenden Editor (EE) 146 weitergeleitet. EE 146 schreibt Zeichen- und Symbolcodes und Operator- und Terminatorcodes, zusammen mit jeweiligen erforderlichen Parametern in die Kette von Zeichen-, Operator-, Parameter- und Terminatorcodes, die einen momentanen Ausdruck definieren und wenn notwendig, in EBH 132, und manipuliert und editiert diese Codes und ihre Anordnungen, wie es erforderlich ist, um Text zu erzeugen oder zu editieren. EE 146 wird auch verwendet, um die in DP 126 befindlichen Daten zu erzeugen, und falls notwendig zu verändern.
- Wie vorstehend beschrieben, werden die Zeichen-, Symbol-, Operator-, Terminator- und Parametercodes, die eine Gleichung in codierter Form definieren, in EB 128 in einer Kette von Codes abgespeichert, wobei die Codes und ihre Abfolge darin die codierten Einheiten (EUs) 134 definieren, wobei jede EU 134 ihrerseits aus einer Kette von Zeichen-, Operator- und Terminatorcodes bestehen kann, die eine einzelne Einheit definieren. Wie ebenfalls vorstehend beschrieben, kann der letzte Code in der Kette von Codes einen Anhängungspunkt-Operatorcode enthalten, falls er das Ende der Seite wiedergibt, um so anzuzeigen, wo zusätzliche Einheiten an die vorangehende existierende Codekette in EB 128 anzuhängen sind oder kann seinerseits einen Wagenrücklaufcode enthalten, falls das Ende einer Zeile darzustellen ist.
- Wie beschrieben, ist die in EB 128 abgelegte und eine Gleichung in "codierter" Form definierende Datenstruktur gut an die textverarbeitungsartigen Editieroperationen angepaßt, die im Stand der Technik bekannt sind, d. h. an Editierprogramme für Operationen an Ketten von Zeichencodes, wie es die Datenstrukturen sind, die in EBH 132 und DP 126 abgelegt sind. Wie bekannt, können diese Operationen zum Beispiel das Anfügen von Zeichen-, Operator-, Parameter- und Terminatorcodes an eine Kette sowie das Einfügen, Löschen, Kopieren und Verschieben von Codes oder Ketten von Codes innerhalb der Kette umfassen. Derartige Editierprogramme sind im Stand der Technik bekannt, Beispiele sind die Textverarbeitungsprogramme, die von Wang Laboratories Inc., Lowell, Massachusetts oder von den meisten anderen größeren Computerfirmen und vielen Softwarefirmen erhältlich sind. Die Struktur und Funktionsweise von EE 146 ist im allgemeinen ähnlich wie diese Programme und ist daher nicht in weiterem Detail in den nachfolgenden Beschreibungen erläutert.
- Die Datenstruktur, die in EB 128 abgelegt ist und eine Gleichung in codierter Form darstellt, ist jedoch nicht wie vorstehend beschrieben gut geeignet zur direkten Erzeugung einer bildlichen Darstellung der graphikartigen Symbole und Zeichen der wissenschaftlichen und anderen Texte, mit denen der vorliegende Editor zu arbeiten gedacht ist. Als solches, und wie ebenfalls vorstehend beschrieben, enthält die Datenstruktur, die in LUS 130 abgelegt ist, und die mit der EB 128 Datenstruktur verbunden und verknüpft ist, für jede in codierter Form in EB 128 gespeicherte Einheit eine Einheitenstruktur (US) 136, die Informationen enthält, die erforderlich ist, um eine bildliche Wiedergabe der zugeordneten Einheit zu bilden, die in einer EU 134 von EB 128 in codierter Form gespeichert ist. Diese USs 136 werden durch einen Parser 148 von der grundlegenden, codierten Gleichungsbeschreibung erzeugt, die in EB 128 als Kette von Zeichen-, Operator-, Parameter- und Terminatorcodes abgelegt ist, mit Hilfe der Dokumentinformation, die in DB 126 abgelegt ist, und der Zeichen/Symbolinformation, die in den FTs 144 von KF 142 abgelegt sind. In bestimmten Fällen ist der Parser 148, wie nachstehend beschrieben, in seiner Funktionsweise durch das virtuelle Geräteinterface (VDI) 150 unterstützt.
- Wie beschrieben, enthält DB 126 Informationen, die sich auf das vorliegende Dokument als Ganzes beziehen, EB 128, inklusive EBH 132 und die EUs 134 enthalten grundlegende codierte Informationen, die eine Gleichung und die Einheiten davon beschreiben, und FTs 144 enthalten Informationen, die die Zeichen und Symbole identifizieren, die in den Einheiten auftreten. Wie in Fig. 1 gezeigt und des weiteren in der nachfolgenden Beschreibung erläutert, reagiert der Parser 148 auf die Operationen von EE 146, um diese Information von DB 126, EB 128 und FTs 144 durch die jeweils angezeigten Datenpfade zu lesen, erzeugt die zugehörigen USs 136 und schreibt die USs 136 in die LUS 130 durch den angezeigten Datenpfad.
- Unter Beachtung des vorstehenden sei bemerkt, daß der Parser 148 die Zeichen-, Operator-, Parameter- und Terminatorcodes von den in EB 128 abgelegten Codeketten wortweise und in der Abfolge liest, in der sie in der Kette gespeichert sind. Wenn der Parser 148 die Codes liest, die den vorliegenden Ausdruck oder Gleichung von EB 128 definieren, wirkt er auf die Codes, wie sie durch ihren Inhalt und den Kontext bestimmt sind und zerlegt die Codes in codierte Einheiten, die implizit als EUs 134 in EB 128 dargestellt sind, so daß die codierten Einheiten, die als EUs 134 in EB 128 dargestellt sind, explizite Datenstrukturen während dieses Vorganges werden.
- Die Zeichen/Symbolinformation, die in FTs 144 abgelegt ist, wird von FTs 144 durch den Parser 148 während dieses Vorgangs in Abhängigkeit von den Zeichen/Symbolcodes gelesen, die in der Kette erscheinen, die von EB 128 gelesen wird. Das heißt, und wie vorstehend beschrieben, jeder Zeichencode, der in EUs 134 erscheint, besteht aus einem zwei Byte-Wort, wobei das erste Byte ein Index ist, der auf eine bestimmte FT 144 zeigt, in der das Zeichen oder Symbol abgelegt ist, und das zweite Byte ist ein Versatz in dieser FT 144, der ein bestimmtes Zeichen oder Symbol innerhalb dieser Schriftart bezeichnet. Der Parser 148 stellt diese Indices und Versätze den FTs 144 durch den in Fig. 1 angezeigten Pfad bereit und erhält im Gegenzug die zugehörige Zeichen/Symbolinformation durch den angezeigten Pfad.
- Wie nachstehend weiter erläutert, ist die Mehrzahl der Information, die erforderlich ist, um die physikalische Organisation der Zeichen und Symbole einer Gleichung auf einer Seite zu definieren, in DB 126 und EB 128, und insbesondere in EBH 132 enthalten. Zum Beispiel sind die Zeichen und Symbole im allgemeinen und ursprünglich als eine Standardgröße und Gestalt habend betrachtet, d. h. daß sie in ein Rechteck mit festen Abmessungen passen und der Zeilenabstand und die Teilung, d. h. der horizontale Abstand der Zeichen und Symbole werden durch die Information angegeben, die in DP 126 und EBH 132 abgelegt ist. Die Zeichen und Symbole können jedoch von diesen Standardabmessungen abweichend sein; z. B. können die Zeichen oder Symbole, die als Hochschrift erscheinen, kleiner gemacht werden als Stammzeichen oder Symbole, oder ein Zeichen oder Symbol oder Gruppen von Zeichen oder Symbolen können größer als Standard sein. In diesen Fällen müssen die Abmessungen der resultierenden Einheiten und die Zeichen und Symbole, die darin erscheinen, errechnet werden.
- In diesen Fällen werden die Operationen des Parser 148 durch bestimmte Routinen unterstützt, die in VDI 150 abgelegt sind. Wie im Stand der Technik bekannt, ist VDI 150 im wesentlichen ein Satz graphischer Routinen, die als Eingangsinformationen unterschiedliche Befehle und Codes akzeptieren, die ein graphikartiges Bild darstellen, und erzeugen unabhängig von den Eigenschaften des Gerätes, auf das sie laufen, eine zugehörige graphische Wiedergabe, die bildhaft dargestellt werden kann. Im vorliegenden Fall werden die Informationen von EB 128 und FTs 144, die die Nicht-Standardgrößenzeichen und Symbole betreffen, in VDI 150-Routinen durch den Parser 148 weitergeleitet, zusammen mit Informationen von EB 128, die die Veränderungen von den Standardabmessungen betreffen. Die Routinen von VDI 150 werden dann verwendet, um tatsächlich eine graphische Wiedergabe der Nicht-Standardgrößenzeichen und Symbole zu erzeugen und die Abmessungen der resultierenden Zeichen und Symbole zu "messen". Diese Dimensions-Information wird dann an den Parser 148 durch den angezeigten Datenpfad zurückgegeben und wird durch den Parser 148 verwendet, um die zugehörige US 136 zu erzeugen, die in LUS 130 einzuschreiben ist.
- Wie in Fig. 1 gezeigt, werden der Parser 148 und VDI 150 auch verwendet, um Ausgangsinformationen zu erzeugen, die ein Dokument in seiner endgültigen Form wiedergeben, z. B. als bildliche Darstellung, die im Bildschirmbild 120 im Bildschirmspeicher 118 gespeichert ist. Bei diesem Vorgang liest der Parser 148 die USs 136, die die physikalischen, bildlichen Darstellungen der Einheiten von LUS 130 in der durch die USP 138-Zeiger bestimmten Reihenfolge, die die USs 136 verbinden, beschreiben. Die zugehörigen codierten Ketten, die die Zeichen-, Operator-, Parameter- und Terminatorcodes der Einheiten enthalten, werden gleichzeitig von den USs 134 von EB 128 durch die Verwendung der EBP 140-Zeiger gelesen, die jede US 136 mit der zugehörigen Einheitenkette in einer EU 134 verbinden. Die allgemeine Dokument- und Gleichungsinformation wird durch den Parser 148 von DP 126 und EBH 132, und die Zeichen/Symbolinformation von den FTs 144 in der oben beschriebenen Weise gelesen. Diese durch den Parser 148 in den Parser 148 eingelesenen Informationen umfassen im wesentlichen all die Befehle, Codes und Informationen, die notwendig sind, um eine bildlich darstellbare Wiedergabe der vorliegenden Gleichung und Seite zu erzeugen und wird durch den Parser 148 an VDI 150 weitergegeben. Erneut, VDI 150 umfaßt ein Satz von graphischen Routinen, die als Eingangsbefehle die unterschiedlichen Befehle, Codes und Informationen akzeptieren, die die vorliegende Gleichung und Seite wiedergeben und erzeugt eine entsprechende graphische Darstellung, die bildlich dargestellt werden kann, d. h. auf einem Bildschirm angezeigt oder auf eine Seite gedruckt. Ebenfalls erneut sind die Eigenschaften und die Betriebsweise von VDI 150 im Stand der Technik bekannt, da diese weit verbreitet in Computersystemen verwendet wird, um graphische Bilder zu erzeugen und muß daher nicht in größerem Detail beschrieben werden.
- Wie in Fig. 1 gezeigt, wird der Ausgang von VDI 150 an SM 118 weitergegeben, um dort als Bildschirmbild 120 gespeichert zu werden, das als bildliche Darstellung der vorliegenden Gleichung und Seite durch die Anzeige 116 angezeigt werden kann. Wie im Stand der Technik bekannt, kann dieser Ausgang auch an einen Printer weitergegeben werden, um das Bild in gedruckter Form auf einer Seite darzustellen.
- Es sei bemerkt, daß die Seite und Gleichung oder der Ausdruck, der derzeit durch den Texteditor bearbeitet wird, d. h. durch EE 146 und Parser 148, sich verändern wird, wenn der Benutzer die vorliegende Gleichung eingibt und editiert. Aufgrund dessen reagiert der Parser 148, wie vorstehend beschrieben, auf die Operationen von EE 146 und auf die Eingaben von neuen Zeichen, Symbolen und Operatoren oder die Modifikation von existierenden Zeichen, Symbolen und Operatoren, indem neue USs 136 erzeugt oder existierende USs 136 in der vorstehend beschriebenen Weise modifiziert werden, und wie dies durch die Operationen des Benutzers erforderlich ist. Parser 148 liest auch den Inhalt von DP 126, EB 128, LUS 130 und FTs 144 in VDI 150 ein, wie es erforderlich ist, wenn die vorliegende Seite und Gleichung erzeugt und durch den Benutzer editiert werden, so daß das Bildschirmbild 120 durch VDI 150 während der Operationen des Benutzers aktualisiert wird, um diese Operationen wiederzugeben. In bestimmten Editiervorgängen erfordert jedoch eine Editieränderung an der existierenden Gleichung oder Ausdruck nicht die Neuerzeugung des zugehörigen US 136, d. h. diese Operationen haben keinen Einfluß auf die physikalische Anordnung und Abmessungen des Ausdrucks auf einer Seite. Ein Beispiel einer derartigen Veränderung ist die Ersetzung von einem Zeichen durch ein anderes Zeichen, z. B. das Ersetzen von "A" in einem Ausdruck mit einem "B", wobei das neue Zeichen die gleichen Abmessungen, Schrifttyp, Schriftart usw. wie das ursprüngliche Zeichen hat. In diesen Fällen wird die Veränderung durch den Parser 148 direkt von der EU 134 an VDI 150 weitergegeben, und VDI 150 führt die entsprechende Veränderung in der anzuzeigenden Darstellung des Ausdruckes aus.
- Es sei bemerkt, daß eine bestimmte Information, die in den USs 136 und LUS 130 abgelegt ist, durch EE 146 verwendet wird, wie angezeigt, wenn EE 146 Editieroperationen mit der Kette aus Zeichen-, Operator-, Parameter- und Terminatorcodes ausführt, die in EB 128 gespeichert ist. EE 146 kann zum Beispiel Zeichenpositionsinformationen von einem zugehörigen US 136 von LUS 130 verwenden, um einen bestimmten Zeichencode in der Kette von Codes in EB 128 zu lokalisieren, um diesen Code zu bearbeiten.
- Am Ende einer Editiersitzung wird das erzeugte oder editierte Dokument für spätere Benutzung oder Editierung abgespeichert werden, indem der Inhalt von DB 126 und EB 128 sowie eventuelle Informationen von einer oder mehreren FTs 144 gespeichert werden, sowie alle anderen Informationen, die das erzeugte Dokument, wie vorstehend beschrieben, aus diesen Datenstrukturen definieren. Es kann jedoch wünschenswert sein, das Dokument in eine andere Form zu überführen, beispielsweise zum Abspeichern in einem bestimmten Format, um mit einem anderen System zu kommunizieren, oder um in ein Textverarbeitungsdokument eingearbeitet zu werden. Aus diesem Grund kann das System die Einrichtungen aufweisen, um diese Transformierung auszuführen.
- Diese Einrichtungen sind in Fig. 1 dargestellt durch den Dokumentendateigenerator (DFG) 152 und die Einrichtung zum Abspeichern der Ergebnisse der Transformation, d. h. zum Beispiel einer Datenstruktur, die geeignet ist zum Einfügen in ein Textverarbeitungsdokument, als Dokumentdatei (DF) 154. Wie vorstehend beschrieben, akzeptiert VDI 150 vom Parser 148 alle Befehle, Codes und Informationen, die notwendig sind, um eine Textseite oder ein Dokument in einer endgültigen Form zu definieren und bearbeitet diese Eingangsinformationen, um eine Ausgangsinformation zu erzeugen, die diese endgültige Form der Seite oder des Dokuments wiedergibt. Zusätzlich zu der vorstehend beschriebenen bildlichen Anzeigeausgabe von VDI 150, ist VDI in Fig. 1 auch dargestellt als eine Ausgabe an DFG 152 bereitstellend, das in der im Stand der Technik bekannten Art die Dokumentbeschreibungs-Ausgangsinformation von VDI 150 akzeptiert und diese Datenstruktur in die gewünschte endgültige Datenstruktur transformiert, die in DF 154 zur endgültigen Verwendung abgespeichert wird. Die Operation solcher Routinen wie DFG 152 ist bekannt und im Stand der Technik verbreitet und erfordert daher keine weitere detaillierte Beschreibung.
- Wie beschrieben, können die Editordatenstrukturen und ihre zugehörigen Mechanismen als aus zwei Gruppen bestehend betrachtet werden, solche die direkt mit der Definition eines Dokumentes verbunden sind und solche, die mit den Operationen des Editors im allgemeinen und beim Einwirken auf ein Dokument verknüpft sind. Nachdem die Datenstrukturen und zugehörigen Mechanismen, die direkt mit der Erzeugung und Definition eines Dokumentes verknüpft sind, d. h. EB 128 und LUS 130 zusammen mit EE 146 und Parser 148, werden nachstehend die Editoroperations-Datenstrukturen und Mechanismen, d. h. solche, die mit dem Editor im allgemeinen und den Wirkungsweisen des Editors auf ein Dokument, beschrieben.
- Der vorliegende Editor umfaßt zusätzlich zu EE 146 und Parser 148 (Fig. 1) eine zugeordnete Gruppe von Editorroutinen (ER), die sowohl direkt die allgemeinen Operationen des Editors und im besonderen die Texterzeugung und Editierprozesse steuern. Wie gezeigt, empfängt ER Dateneingangsinformationen von DP 126, EB 128, LUS 138 und Parser 148 und stellt Steuer- und Datenausgangsinformationen für diese Elemente bereit.
- Zugeordnet zu ER sind Editordatenstrukturen (EDS), die Systemzustandsstrukturen (SSS) (Fig. 8A und 8B), Liniendatenstruktur (LDS) 162 (Fig. 4), Bildschirmdatenstruktur (SDS) 164 (Fig. 10) und Einfügen/Verbergen-Datenstruktur (IHDS) 166 (Fig. 11) umfassen. Wie nachstehend in größerem Detail beschrieben ist, enthält SSS Informationen, die den derzeitigen Zustand der Operationen des Editors betreffen und die durch den Editor bei der Ausführung der derzeitigen Operation oder den derzeitigen Operationen verwendet werden. LDS 162 enthält Informationen, die eine derzeitige Zeile betreffen, in der Operationen ausgeführt werden, deren SDS 164 Informationen enthält, die den derzeitigen Bildschirm betreffen. Schließlich enthält IHDS 166 Informationen, die die Einfügen und Verbergen Editierfunktionen betreffen, die in größerem Detail nachstehend beschrieben sind.
- Ebenfalls mit ER verbunden sind der Anfang des editierbaren Text-Zeigers (BOTP), der einen Zeiger auf den derzeitigen Anfang des Textes enthält, der bearbeitet werden kann und einen Cursor-Zeiger (CP), der einen Zeiger auf die derzeitige Stelle eines Cursors enthält. Wie nachstehend beschrieben, zeigt der Cursor die Stelle in dem Text an, an dem eine Operation begonnen oder ausgeführt werden kann. Der Cursor und die Cursorposition werden beispielsweise verwendet, um die Stelle im Text zu bezeichnen, bei der Text einzufügen ist oder um die Anfang- und Endpunkte von zu entfernendem, zu bewegendem oder zu kopierendem Text zu bezeichnen und bei den Verschiebungs- oder Kopierbefehlen auch die Punkte, an die der Text zu verschieben oder zu kopieren ist.
- Nachdem die Gesamtstruktur und Funktionsweise des Texteditors der vorliegenden Erfindung beschrieben ist, werden bestimmte Bereiche des Editors nachstehend in größerem Detail erläutert, inklusive bestimmter Datenstrukturen, beispielsweise EB 128 und USs 136 sowie Parser 148.
- Nachstehend werden nun bestimmte der Dokumentdatenstrukturen des vorliegenden Texteditors in weiterem Detail erläutert, z. B. DB 126, EB 128 inklusive EBH 132 und den EUs 134, und den USs 136 von LUS 130. Diese Datenstrukturen werden in dieser Reihenfolge beschrieben und werden mit Zeichnungen erläutert, wenn Zeichnungen ein Verständnis der nachstehenden Beschreibungen verbessern.
- Wie vorstehend beschrieben, enthält DB 126 bestimmte Informationen, die sich auf ein Dokument als Ganzes beziehen und dieses definieren. Unter Bezugnahme auf Fig. 2 werden die Datenfelder von DP 126 diagrammatisch darin dargestellt und können enthalten oder sind nicht beschränkt auf:
- Neigungswinkel 202 - ein Feld, das die Neigung in Grad von der Vertikalen von Zeichen und Symbolen definiert, die in einer Gleichung auftreten;
- Schriftgröße 204 - ein Feld, das die Standardgröße der Zeichen und Symbole in Prozent einer definierten Größe definiert;
- Schrifttiefe 206 - ein Feld, das die Anzahl von Schriftgraden definiert, die die Größe um den Faktor ändern werden, der durch Schriftgröße 204 definiert ist, bevor er auf eine festgelegte Größe sich stabilisiert;
- Startpunkt 207 - ein Feld, das den Ort einer Schrift relativ zu seinem Stammzeichen definiert; in der vorliegenden Ausführungsform kann eine Schrift über dem Stammzeichen oder bei 2/3 der Höhe des Stammzeichens über der Grundlinie des Stammzeichens liegen;
- Größenänderungsstufe 208 - ein Feld, das die Anzahl von Stufen definiert, um die ein Zeichen in seiner Größe verändert wird, wenn er in der Größe verändert wird;
- Proportionalabstandsflag 210 - ein Feld, das ein Flag enthält, das anzeigt, ob Zeichen und Symbole proportional beabstandet, z. B. in rechts ausgerichtetem Text, sind;
- Teilung 212 - ein Feld, das die Teilung der Zeichen und Symbole in dem Text definiert, die Anzahl der Zeichen oder Symbole pro Inch;
- Anzeigenvergrößerung 214 - ein Feld, das die Vergrößerung des angezeigten Bildschirmbildes 120 relativ zu einer korrespondierenden gedruckten Seite definiert;
- Voreingestellte Tastatur 216 - ein Feld, das den voreingestellten Zeichen/Symbolsatz definiert;
- Tastaturanzeige 218 - ein Feld, das anzeigt, ob Bildschirmbild 118 eine bildliche Wiedergabe der Tastatur (Zeichensatz) in Verwendung mit den Zeichen/Symbolen enthalten soll, die auf den Bildern der Tasten angezeigt sind; und
- Rahmenkasten 220 - ein Feld, das angibt, ob Begrenzungskästen von Einheiten angezeigt werden sollen.
- Wie vorstehend beschrieben, umfaßt EB 128 den Codierpufferkopf (EBH) 132, der Information betreffend eine Gleichung als Ganzes und eine Kette codierter Einheiten (EUs) 134 enthält, wobei jede EU 134 eine Kette von Zeichen-, Operator-, Parameter- und Terminatorcodes enthält, die eine einzelne Einheit definieren.
- Unter Bezugnahme auf Fig. 3 ist dort eine diagrammatische Darstellung von EBH 132 und der darin enthaltenen Datenfelder wiedergegeben. In der vorliegenden Ausführungsform kann EBH 132 enthalten, aber ist nicht begrenzt auf:
- Basisgröße 302 - ein Feld, das die Basisgröße der Zeichen und Symbole in Punkten definiert;
- Zeichensatz 304 - ein Feld, das den ersten Zeichensatz von Zeichen und Symbolen, die in der Gleichung zu verwenden sind, definiert; und
- Formatlinie 306 - ein Feld, das ein Format für die Seite enthält, auf der die Gleichung erscheinen soll, d. h. die Anordnung von Tabulatoren, Wagenrückläufen und ähnlichen Formatsteuerzeichen.
- Wie vorstehend beschrieben, enthält EB 128 eine Kette von Zeichen-, Operator-, Parameter- und Terminatorcodes, die codierte Einheiten (EUs) 134 implizit definieren, wobei jede EU 134 als aus einer Unter-Kette von Zeichen/Symbol-, Operator-, Parameter- und Terminatorcodes bestehend betrachtet werden kann, die zusammen eine einzelne Einheit definieren. Die Abfolge, in der die Codes in EB 128 angeordnet sind, zusammen mit der Sequenz, in der die Zeichen/Symbol-, Operator-, Parameter- und Terminatorcodes, die die codierten Einheiten definieren, in ihren Unter-Ketten angeordnet sind, definieren die grundlegende Form einer Gleichung.
- Der spezifische Inhalt von EB 128 in einem beliebigen Beispiel ist damit durch die bestimmte Gleichung, die zu erzeugen oder zu editieren ist, bestimmt. Als solche ist die Datenstruktur von EB 128, d. h. die darin implizit codierten Einheiten, am besten durch die Verwendung der Beispiele der Gleichungen veranschaulicht, wie sie in Fig. 4A bis 4E gezeigt und nachstehend erläutert sind. Jedes der Beispiele, das in Fig. 4A bis 4E dargestellt ist, umfaßt eine bildliche Darstellung einer beispielhaften Gleichung, wie sie auf einem Bildschirmbild 120 oder auf einer gedruckten Seite erscheinen kann, und unterhalb der bildlichen Darstellungen der Gleichung eine Darstellung der Gleichung, wie sie in codierter Form in EB 128 erscheinen kann.
- In den nachfolgenden Erläuterungen sind die Ketten von Zeichen/Symbol-, Operator-, Parameter- und Terminatorcodes, die zu jeder der erläuternden Gleichung von Fig. 4A bis 4E gehören, so dargestellt, wie sie in EB 128 erscheinen können, unter Verwendung der folgenden Übereinkünfte:
- Jeder Code, gleichgültig ob für ein Zeichen/Symbol, Operator, Parameter oder Terminator ist in eckigen Klammern dargestellt, d. h. [ ], um den Code abzugrenzen;
- Innerhalb der Klammern:
- Ein Zeichen oder Symbol ist durch das Zeichen oder Symbol selbst wiedergegeben;
- Jeder Operator ist durch op-XXX dargestellt, wobei op- einen Operator anzeigt und XXX den bestimmten Operator bezeichnet;
- Die Operatoren, die verwendet werden, um die EUs 134 in den Fig. 4A bis 4E darzustellen, wurden vorstehend definiert und beschrieben; die in diesen erläuternden Beispielen verwendeten Operatoren umfassen:
- Hochschrift - op-suscr;
- Linienteilung - op-lnsplt:
- Vorhochschrift - op-presupscr;
- Größenänderung der Basis - op-resizonbase;
- Tiefschrift - op-subscr; und
- Größenänderung in der Mitte - op-resizoncntr.
- Ein einem Operator zugeordneter Parameter ist in eigenen Klammern dem vorangehenden Operator zugeordnet angefügt und hat die Form p- X, wobei p- das Vorhandensein eines Parameters und X den Wert des Parameters angibt;
- Es gibt eine einzige Art von explizitem Terminator, der in dem vorliegenden Beispiel verwendet wird, der Pseudo-Wagenrücklauf; dieser Terminator ist durch PRET angezeigt.
- Nachstehend sei auf die erläuternden Gleichungen, die in Fig. 4A bis 4E gezeigt sind Bezug genommen. Fig. 4A erläutert eine Gleichung, die ein einziges Zeichen hat, d. h. ein "x" mit einer hochgestellten 2 an dem x. Die EB 128-Kette, die zu der codierten Form von Gleichung 4A korrespondieren würde, ist in Fig. 4A genau unter der bildlichen Darstellung von Gleichung 4A gezeigt.
- Beim Lesen dieser erläuternden Kette von links nach rechts ist das [x] das Zeichen, das auf der Grundlinie der Gleichung erscheint. [op-supscr] bezeichnet einen Hochschriftoperator. Die [2] ist das Zeichen, das auf einer örtlichen Grundlinie in Hochschrift erscheint und der [PRET] ist der Terminator, der den Hochschriftoperator beendet.
- Nun sei auf Fig. 4B Bezug genommen. Fig. 4B erläutert die Verwendung eines einfachen Linienteilungsoperators, um den Bruch x/y zu erzeugen. Die EB 128-Kette, die der codierten Form von Gleichung 4B entsprechen würde, ist in Fig. 4B genau unterhalb der bildlichen Darstellung von Gleichung 4B gezeigt.
- Erneut wird diese Kette von links nach rechts gelesen, der [op-lnsplt] bezeichnet einen Linienteilungsoperator, d. h. die derzeitige Grundlinie wird in zwei oder mehrere Linien geteilt, die zu der ursprünglichen Grundlinie zentriert und parallel verlaufen. Nachfolgend ist der [p-1]-Parameter, der mit dem Linienteilungsoperator verbunden ist und die vorstehend definierte spezielle Linienteilungsoperation bezeichnet, wobei die Teilung in zwei Linien erfolgt, mit einer Bruchstrichlinie dazwischen. [x] ist das Zeichen, das auf der obersten Linie der geteilten Linie angeordnet ist, und diese Linie der Linienteilung wird durch den nachstehenden [PRET] beendet. [y], das dem ersten [PRET] folgt, ist das auf der zweiten Linie der Linienteilung angeordnete Zeichen, und das nachfolgende [PRET] beendet diese Linie der Linienteilung. Das Auftreten des zweiten [PRET] beendet, wie ebenfalls vorstehend beschrieben, den Linienteilungsoperator.
- Nun sei auf Fig. 4C Bezug genommen. Fig. 4C erläutert eine Zeichenkette mit einem Zeichen, dem "a", das als Vorhochschrift "xyz" hat, wobei die Zeichen der Vorhochschrift gegenüber den Stammzeichen in der Größe verringert sind. Die EB 128-Kette, die mit der codierten Form von Gleichung 4C korrespondieren würde, ist in Fig. 4C genau unterhalb der bildlichen Darstellung von Gleichung 4C gezeigt.
- Wiederum wird diese Kette von links nach rechts gelesen. Die [1], [2] und [3] sind selbstverständlich die dem "a" vorausgehenden Zeichen, auf die die Vorhochschrift angewendet wird. Es sei bemerkt, daß die drei Zeichen (1, 2 und 3) zusammen eine Einheit bilden. Daß eine Vorhochschrift dem "a" angefügt ist, ist durch den Vorhochschrift-Operatorcode [op-presupscr], der dem [a] folgt, angezeigt. Die in Vorhochschrift erscheinenden Zeichen sind jedoch in ihrer Größe gegenüber dem 1, 2, 3, a, b und c, die auf der Grundlinie erscheinen, in der Größe verringert, so daß die Zeichencodes für die Vorhochschriftzeichen [x], [y] und [z] durch vorgestellte Operator- und Parametercodes für eine Größenänderung gegenüber der Base-Operation angeführt werden, d. h. durch [op-resizonbase] und [p--1], wobei der Parameterwert -1 eine Verringerung in der Größe des Zeichens gegenüber der Basisgröße anzeigt. Es gibt keine Rückkehr zu einer normalen oder Grundbuchstabengröße nach der Vorhochschrift, so daß der Größenveränderung an der Basis-Operator, der den Vorhochschrift-Zeichencodes vorangeht, und der die Größe der Vorhochschrift-Zeichen verringert, durch einen anderen Größenveränderung zur Basis-Operator beendet wird, der nachfolgende Zeichen relativ zu den Vorhochschrift-Zeichen vergrößert, d. h. nachfolgende Zeichen kehren zur Basisgröße zurück. Dieser Terminator ist der zweite Größenveränderung zur Basis-Operator [op-resizonbase], der einen Parameter [p-+1] mit einem Wert von +1 hat.
- Nun sei auf Fig. 4D Bezug genommen. Darin ist ein Beispiel einer Gleichung dargestellt, die ein Stammzeichen hat, an das eine Hochschrift und eine Unterschrift angefügt sind, wobei die Unterschrift selbst eine Unterschrift hat. Die EB 128-Kette, die mit der codierten Form von Gleichung 4D korrespondieren würde, ist in Fig. 4D genau unterhalb der bildlichen Darstellung von Gleichung 4D gezeigt.
- Diese Kette von links nach rechts lesend ist das [A] selbstverständlich das Stammzeichen und der nachfolgende Hochschriftoperator [op-supscr] zeigt an, daß eine Hochschrift an das Stammzeichen angefügt ist. Das erste [i], das dem ersten Hochschriftoperator folgt, ist das Zeichen, das in dem Stammzeichen "A" angefügte Hochschrift und der direkt darauffolgende Terminator [PRET] diese Hochschrift beendet.
- Der Tiefschrift-Operatorcode [op-subscr], der dem ersten [PRET] folgt, zeigt einen anderen Operator an. Der einzig mögliche Zeichencode, der ein Basiszeichen für diese Tiefschrift sein k zwischen dem [A] und dem ersten [op-subscr] erscheint, ist ein Teil des Hochschriftoperators, der durch den ersten [PRET] beendet wurde und ist daher nicht als Stammzeichen für diesen Tiefschriftoperator verfügbar. Diese erste Tiefschrift ist daher dem "A" angefügt. Der Zeichencode für diese erste Tiefschrift, [i], wird unmittelbar durch einen zweiten Tiefschrift-Operatorcode gefolgt, d. h. den zweiten [opsubscr]. Diese erste Tiefschrift wurde nicht vor dem Auftreten des zweiten Tiefschriftoperators beendet, so daß das [i] des dem [A] angefügte Tiefschrift als Basiszeichen für diese zweite Tiefschrift verfügbar ist, und dementsprechend ist die zweite Tiefschrift an das zweite [i] angefügt, d. h. die Tiefschrift "i". Der zweite Tiefschriftcode ist durch das Zeichen gefolgt, das als Tiefschrift des "i" folgt, d. h. [x], und dieses Zeichen wird durch zwei Terminatoren [PRET] und [PRET] gefolgt, die diese beiden Tiefschriftoperatoren beenden.
- Schließlich stellt Fig. 4E ein Beispiel einer etwas komplexeren Gleichung als die in den Fig. 4A bis 4D veranschaulichten dar. Die Elemente von Gleichung 4E und die resultierende codierte Form von Gleichung 4E, die in EB 128 erscheinen würde, sind ähnlich zu den vorstehend beschriebenen, so daß Gleichung 4E nicht in vollem Detail diskutiert wird. Die EB 128-Kette, die der codierten Form von Gleichung 4E entsprechen würde, ist in Fig. 4E genau unterhalb der bildlichen Darstellung von Gleichung 4E gezeigt.
- Von einigem Interesse in der Beispielsgleichung 4E sind die Größenveränderungsoperatoren, die an den Einheiten "2+y" und "1+x" ausgeführt werden und die runden Klammern, die den aus diesen Einheiten gebildeten Bruch einschließen. Die Größenveränderung von "2+y" und "1+x" ist ziemlich ähnlich wie die an der Einheit "xyz" in Gleichung 2C ausgeführte, aber sie wird um die Mitte anstelle einer Basis ausgeführt. Die "(" und ")", die um den aus diesen beiden Einheiten gebildeten Bruch angeordnet sind, werden so gestaltet, daß die "(" und ")" von einer Größe sind, die den Bruch einschließt.
- Wie vorstehend beschrieben, ist mit EB 128 verbunden und verknüpft LUS 130, das für jede Einheit, die in codierter Form in EB 128 gespeichert ist, eine Einheitenstruktur (US) 136, die Informationen enthält, die erforderlich sind, um eine bildliche Darstellung der zugehörigen Einheit zu bilden, die in codierter Form in EB 128 gespeichert ist. USs 136 von LUS 130 sind nicht als eine Kette sondern als individuelle Datenstrukturen gespeichert, die durch Einheitenstrukturzeiger (USPs) 138 verbunden sind, wobei jede US 136 mit zugehörigen USs 136 durch einen oder mehrere USPs 138 verbunden sind. Jede US 136 in LUS 130 ist des weiteren mit ihrer zugeordneten EU 134 verknüpft, d. h. der Unter-Kette von Codes, die zusammen die zugehörige codierte Einheit bilden, in EB 128 durch einen Satz von Zeigern, die zusammen als codierende Pufferzeiger (EBPs) 140 dargestellt sind.
- Unter Bezugnahme auf Fig. 5 sind die Datenfelder eines US 136 dargestellt. Die Informationsfelder, die in einer US 136 enthalten sind, sind in vier Gruppen strukturiert, die Informationen enthalten, die die US 136 zu ihrer codierten Einheit in EB 128 beziehen, Informationen, die bestimmte Eigenschaften der Einheit beschreiben inklusive einer Beschreibung ihrer physikalischen Abmessungen und Anordnung auf einer Seite, und Informationen, die die US 136 zu den USs 136 von zugeordneten Einheiten verbinden.
- Wie in Fig. 5 veranschaulicht, enthält die Strukturidentifikationsgruppe 502 Zeiger, die die US 136 mit der zugehörigen Einheits-Unterkette in EB 128 verbinden, und ein Feld, das die Anzahl von Elementen oder Begriffen, d. h. Codes in der entsprechenden Sub-Kette identifiziert. Die Zeiger, die in der Strukturidentifikationsgruppe 502 angeordnet sind, sind die vorstehend beschriebenen EBP 140-Zeiger für diese Einheit, die die US 136 dieser Einheit mit den EU 134 dieser Einheit verbinden, d. h. der Unter-Kette von Codes, die zusammen die zugehörige codierte Einheit bilden.
- Eigenschaftsidentifikationsgruppe 504 identifiziert bestimmte Eigenschaften der Einheit, die ihre graphische Darstellung betreffen. Diese Gruppe ist ihrerseits in drei Untergruppen unterteilt, allgemeine Informationsuntergruppe 506, die allgemeine Informationen über die Einheit enthält, Anfangszustandsuntergruppe 508, die Informationen enthält, die den Zustand der Einheit zu Beginn betrifft, und Beendigungszustanduntergruppe 510, die Informationen enthält, die den Zustand am Ende der Einheit betrifft.
- Strukturflags 512 identifizieren den Grund für die Trennung der Einheit von dem Stamm oder vorhergehenden Einheit, und Strukturzeigergruppen 514 enthalten die vorstehenden beschriebenen USP 138-Zeiger, die die US 136 mit allen zugehörigen USs 136 verbinden; falls z. B. die Einheit ein Stammzeichen ist, würden die USP 138-Zeiger, die in der Strukturzeigergruppe 514 angeordnet sind, beispielsweise auf alle zugehörigen Einheiten zeigen, Unter- und Überschrift enthalten, die mit diesem Stammzeichen oder zugehörigen mehrfachen Linienteilungs-Stammeinheiten und mit den nächsten, vorhergehenden und nachfolgenden Einheiten verbunden sind.
- Nachstehend seien die Datenfelder eines US 136 in weiterem Detail betrachtet, wobei diese Datenfelder folgendes enthalten können, aber nicht beschränkt sind auf:
- Startposition 516 - ein Feld, das einen Versatz in EB 128 enthält, das die Stelle in EB 128 eines Elementes, Zeichens oder Operators identifiziert, der die Einheit beginnt;
- Startzeichen 518 - ein Feld, das einen Versatz in EB 128 enthält, das eine Stelle eines Textelementes, d. h. eines Zeichens oder Symbols enthält, das die Einheit beginnt;
- Elementlänge 520 - ein Feld, das die Anzahl von Elementen in der Unter-Kette identifiziert, die die codierte Einheit in EB 128 enthält, d. h. die Anzahl von Zeichen/Symbolen-, Operator-, Paramater- und Terminatorcodeworten zwischen Startposition 516 und dem Ende der Unter-Kette.
- Anfangsstelle 522 - eine Gruppe von zwei Feldern, die einen absoluten x- und y-Wert auf der Seite für den Abschnitt der die Einheit enthaltenden Linie umfassen;
- Einheitsabmessungen 524 - eine Gruppe von vier Feldern, die die maximalen und minimalen x- und y-Werte enthalten, die in jeder Richtung um Anfangsstelle sich erstrecken, d. h. den Abmessungen der Einheit;
- Erstreckte Abmessung 526 - eine Gruppe von vier Feldern, die maximale und minimale x- und y-Erstreckungen, d. h. Abmessungen der Einheit plus alle Schriften, Linienteilungen und Stricheinheiten enthält, die mit der Einheit in jeder Richtung um Anfangsstelle verbunden sind;
- Linienteilungsanzahl 528 - ein Feld, das die Anzahl von Linien in einer Linienteilung in der Einheit enthält, falls die Einheit eine Linienteilung enthält;
- Linienteilungsort 530 - ein Feld, das die x- und y-Koordinaten des Linienteilungsstammzeichens enthält, falls in der Einheit eine Linienteilung ist;
- Schrifttiefe 532 - ein Feld, das die Anzahl von Ebenen nach unten in Schriften der Zeichen/Symbole der Einheit von der Stammgröße sind.
- Anfangsschriftart 534 - ein Feld, das die Anfangsschriftart für die Einheit identifiziert;
- Anfangsschriftart-Größenveränderungsfaktor - auf Grundlinie 536 - ein Feld, das den Basisgrößenveränderungsfaktor für diese Kette enthält;
- Anfangsschriftart-Größenveränderungsfaktor um Mittelpunkt 538
- - ein Feld, das den Basisgrößenveränderungsfaktor für diese Kette um den Mittelpunkt enthält;
- Anfangsschrägschriftflag 540 - ein Feld, das ein Flag enthält, das anzeigt, daß die nachfolgenden Zeichen/Symbole in Schrägschrift sind.
- Endschriftart 542 - ein Feld, das die verwendete Schriftart am Ende der Einheit identifiziert;
- Endschriftartgrößenveränderungsfaktor an der Grundlinie 544 - ein Feld, das den Basisgrößenveränderungsfaktor für die nachfolgende Kette enthält;
- Endschriftartgrößenveränderungsfaktor um Mittelpunkt 546 - ein Feld, das den Basisgrößenveränderungsfaktor um den Mittelpunkt für die nächste Kette enthält;
- Endschrägschriftflag 548 - ein Feld, das ein Flag enthält, das die Schrägschrift beendet;
- Strukturflags 512 - ein Feld, das Informationen enthält, das den Grund für die vorliegende Gruppe identifiziert, ist von der Stamm- oder vorangehenden Einheit getrennt.
- Schrifteinheiten -
- Hochschrifteinheit 550,
- Tiefschrifteinheit 552,
- Vorhochschrifteinheit 554,
- Vortiefschrifteinheit 556,
- Überschrifteinheit 558, und
- Tiefschrifteinheit 560 -
- eine Gruppe von sechs Feldern, die logische Zeiger auf die sechs Schriftorte enthält; Zeiger sind in die entsprechenden Felder eingefügt, falls die Einheit zugeordnete Schrifteinheiten hat;
- Linienteilungseinheit 562 - eine Gruppe von zehn Feldern, die logische Zeiger auf jede der Anfangseinheiten in jeder der zehn möglichen Unterlinien einer Linienteilung umfaßt; ein bestimmtes Feld wird einen Zeiger enthalten, falls es eine zugehörige Unterlinie gibt und wird einen Platzhalterwert enthalten, falls keine zugehörige Unterlinie in der Linienteilung vorhanden ist;
- Stricheinheit 564 - ein Feld, das einen logischen Zeiger auf eine Stricheinheit enthält, sie wird verwendet, falls die Einheit oder der Abschnitt eine zugeordnete Stricheinheit hat;
- Nächste Einheit 566 - ein Feld, das einen logischen Zeiger auf die nächste Einheit in der Folge in der Linie hat; und
- Vorangehende Einheit 568 - ein Feld, das einen logischen Zeiger auf die vorangehende Einheit in der Folge der Zeile hat.
- Nachdem die mit dem zu erzeugenden und zu editierenden Text direkt zusammenhängenden Datenstrukturen beschrieben sind, wird nachstehend der Parser 148 in weiterem Detail beschrieben.
- Wie vorstehend beschrieben, wirkt der Parser 148 auf die Operationen von EE 146, um Zeichen-, Operator-, Parameter- und Terminatorcodes zu lesen, die die codierten Einheiten des Ausdrucks oder der Gleichung von der Kette von Codes definieren, die in EB 128 abgelegt sind, zerteilt die Codes in codierte Einheiten und baut die entsprechende USs 136 auf. In dieser Hinsicht, und wie vorstehend beschrieben, hängt die Antwort des Parser 148 auf EE 146 von dem jeweiligen Code ab, der durch den Benutzer in EE 146 eingegeben ist. In bestimmten Fällen erhält der Parser 146 Informationen von dem Code, daß die von dem Benutzer angezeigte Information die momentane Einheit nicht grundlegend ändert, z. B. der Benutzer ändert lediglich ein Zeichen von einem Zeichen zu einem anderen oder fügt ein Zeichen zu einer Kette von Zeichen an dem Anhängungspunkt an; in diesem Fall würde EE 146 lediglich das Zeichen zu VDI 150 zur Anzeige weiterleiten und würde das erweiterte Dimensionen 526-Feld in der entsprechenden US 136 aktualisieren und den Parser 148 umgehen. Falls der Code eine grundsätzliche Einwirkung auf die Einheit anzeigt, wie es z. B. durch einen Wagenrücklauf- oder Pseudo-Wagenrücklaufcode angezeigt ist, wird der Parser entsprechend die zugehörige US 136 aktualisieren oder neu schreiben und die aktualisierte US 136 an VDI 150 weitergeben. Falls der Parser 148 einen Format- oder Befehlsoperatorcode, z. B. einen Schriftcode erhält, wird der Parser 148 die momentane Einheit und US 136 beenden, die vorliegende US 136 entsprechend aktualisieren und dann eine neue US 136 beginnen.
- Im nachstehenden wird die Struktur und die Funktionsweise von Parser 148 zunächst durch Flußdiagramme beschrieben, die die Struktur und die Funktionsweise von Parser 148 wiedergeben, und dann mittels erläuternder Beispiele, die die vorstehenden unter Bezugnahme auf Fig. 4A bis 4E beschriebenen Beispielgleichungen verwenden.
- Nachstehend wird auf Fig. 6A bis 6O Bezug genommen, in denen diagrammatische Darstellungen der Struktur und der Funktionsweise von Parser 148 dargestellt sind. Es sei bemerkt, daß die für die darin gezeigten Elemente verwendeten Titel so gewählt wurden, daß sie für Fachleute selbsterklärend sind, insbesondere in Kombination mit den anderen Teilen der vorliegenden Beschreibung, um die Klarheit der Darstellung zu erhöhen und den Umfang des nicht-bildlichen Textes zu verringern, der erforderlich ist, um den Parser 148 zu beschreiben.
- Zunächst sei auf Fig. 6A Bezug genommen, in der ein allgemeines Diagramm des Parser 148 dargestellt ist. Wie darin veranschaulicht, erhält der Parser 148 Informationen von EE 146, die eine Operation definieren, die auszuführen ist und führt eine Case-Operation aus, um die Art der Operation zu ermitteln. Danach folgt der Parser 148 einer von zehn möglichen Verzweigungen, in Abhängigkeit von der Operation, bis die Operation beendet ist, und der Parser 148 erwartet dann eine nächste Eingabe von EE 146.
- Wie in Fig. 6A veranschaulicht, umfassen die derzeit im Parser 148 implementierten zehn Verzweigungen folgendes:
- (1) ZEICHNE DIE DERZEITIGE EINHEIT 602;
- (2) ZEICHNE VON DIESER EINHEIT ZUM ENDE DER DERZEITIGEN LINIE 604;
- (3) BAUE AUF/ZEICHNE VON DIESER EINHEIT ZUM ENDE DER DERZEITI- GEN LINIE 606;
- (4) BAUE AUF/ZEICHNE DIESE LINIE 608;
- (5) BAUE AUF/ZEICHNE VON DIESER EINHEIT ZUM ENDE DES BILD- SCHIRMS 610;
- (6) BAUE AUF/ZEICHNE VON DIESER LINIE ZUM ENDE DES BILDSCHIRMS 612;
- (7) BAUE AUF/ZEICHNE DIESEN BILDSCHIRM 614;
- (8) BAUE AUF/ZEICHNE NÄCHSTEN BILDSCHIRM 616;
- (9) BAUE AUF/ZEICHNE IM DARSTELLUNGSMODUS 618 (Nebenbemerkung: dies ist ein Modus, in dem die bildliche Darstellung auf dem Bildschirm ohne Steuer- und Editiercodes ist, d. h. so wie der Ausdruck auf einer Seite gedruckt erscheinen würde), und
- (10) BAUE AUF/AUSGABE DER GESAMTEN SEITE IN EINE DATEI 620.
- Jede dieser Verzweigungen wird nachstehend im einzelnen unter Bezugnahme auf bestimmte der verbleibenden Fig. 6 beschrieben, und dann werden bestimmte Routinen weiter detailliert beschrieben, die innerhalb dieser Verzweigungen auftreten.
- Nun sei auf Fig. 6B Bezug genommen, in der die Fallverzweigung (1) dargestellt ist, für ZEICHNE DIE DERZEITIGE EINHEIT 602. Wie darin angedeutet, umfaßt diese Verzweigung LÖSCHEN EINES TEILS DES BILDSCHIRMS 622, was seinerseits AUSGEBEN DER EINHEIT 624 umfaßt und dann beendet.
- Nun sei auf Fig. 6C Bezug genommen, in der die Fallverzweigung (2) veranschaulicht ist, für ZEICHNE VON DIESER EINHEIT ZUM ENDE DER LINIE. Wie darin gezeigt, umfaßt diese Verzweigung LÖSCHE EINEN TEIL DES BILDSCHIRMS 622, gefolgt von AUSGEBEN EINER EINHEIT 624. Diese Verzweigung umfaßt auch ein Entscheidungsmodul ENDE DER LINIE ? 626, der AUSGEBEN EINER EINHEIT 624 folgt, um zu bestimmen, ob das Ende der vorliegenden Linie erreicht ist. Falls nicht, kehrt die Verzweigung zu AUSGEBEN EINER EINHEIT 624 durch FINDE DIE NÄCHSTE EINHEIT 627 zurück, bis das Ende der Linie erreicht ist, und wenn das Ende der Linie erreicht ist, wird beendet.
- Nun wird auf Fig. 6D Bezug genommen, in der die Fallverzweigung (3) dargestellt ist, für BAUE AUF/ZEICHNE VON DIESER EINHEIT ZUM ENDE DER LINIE 606. Wie darin angedeutet, umfaßt diese Verzweigung das Modul BAUE AUF/STELLE VON DIESER EINHEIT AB DAR 628.
- Nun wird auf Fig. 6E Bezug genommen, in der die Fallverzweigungen (4) und (6) für BAUE AUF/ZEICHNE DIESE LINIE 608 und BAUE AUF/ZEICHNE VON DIESER LINIE ZUM ENDE DES BILDSCHIRMS 612 jeweils dargestellt ist, wobei diese Verzweigungen identisch sind. Wie angedeutet, umfassen diese Verzweigungen das Modul BAUE EINEN TEIL DES BILDSCHIRMS AUF 630.
- Nun sei auf Fig. 6F Bezug genommen, in der die Fallverzweigung (5) veranschaulicht ist für BAUE AUF/ZEICHNE VON DIESER EINHEIT ZUM ENDE DES BILDSCHIRMS 610. Wie angedeutet, umfaßt diese Verzweigung BAUE AUF/ZEICHNE VON DIESER EINHEIT AN 628, gefolgt von dem Verzweigungsmodul EINE WEITERE LINIE ZU ZEICHNEN 632. Falls es keine weitere Linie mehr zu zeichnen gibt, wird EINE WEITERE LINIE ZU ZEICHNEN 632 beendet und falls es noch eine weitere Linie zu zeichnen gibt, ruft EINE WEITERE LINIE 632 BAUE EINEN TEIL DES BILDSCHIRMS 630 AUF, was dann BEENDET.
- Schließlich sei auf Fig. 6G Bezug genommen, in der die Fallverzweigungen (7), (8), (9) und (10) dargestellt sind für BAUE AUF/ZEICHNE VON DIESER LINIE ZUM ENDE DES BILDSCHIRMS 612, BAUE AUF/ZEICHNE DIESEN BILDSCHIRM 614, BAUE AUF/ZEICHNE NÄCHSTEN BILDSCHIRM 616, BAUE AUF/ZEICHNE IM DARSTELLUNGSMODUS 618 und BAUE AUF/GEBE EINE GANZE SEITE IN EINE DATEI AUS 620, wobei diese Verzweigungen identisch sind. Wie angedeutet, umfassen diese Verzweigungen das Entscheidungsmodul ERNEUTES ANZEIGEN DER VORHERGEHENDEN LINIE ? 634, das Entscheidungsverzweigungen auf ANZEIGEN DER VORHERGEHENDEN LINIE 636 und BILDSCHIRMAUFBAUEN 638 hat; wie dargestellt, ruft DARSTELLEN DER VORHERGEHENDEN LINIE 636 auch BILDSCHIRMAUFBAUEN 638 auf und BILDSCHIRMAUFBAUEN 638 BEENDET dann.
- Nachdem die Hauptverzweigungen des Parser 148 beschrieben sind, werden bestimmte Details der Module innerhalb dieser Verzweigungen nachstehend beschrieben.
- Nachstehend wird auf Fig. 6H Bezug genommen, in der ein Diagramm von BAUE AUF/ZEIGE VON DIESEM MODUL AN 628 veranschaulicht ist. Wie dargestellt, umfaßt dieses Modul SETUP 640, das seinerseits BAUE EINEN TEIL DES BILDSCHIRMS AUF 628 aufruft, das seinerseits ZEICHNE VON DIESER EINHEIT AN ZUM ENDE DER LINIE 606 aufruft, das seinerseits BEENDET.
- Fig. 6I stellt ein Diagramm von BILDSCHIRMAUFBAUEN 638 dar. Wie gezeigt, umfaßt dieses Modul das Entscheidungsmodul DIESER BILDSCHIRM?, das in AUFBAU FÜR NÄCHSTEN BILDSCHIRM, UMGEBUNG EINBINDEN 644 und nach INITIALISIEREN FÜR DIESEN BILDSCHIRM, UMGEBUNG EINBINDEN 646 verzweigt. Wie gezeigt, rufen sowohl EINSTELLEN FÜR NÄCHSTEN BILDSCHIRM, UMGEBUNG EINBINDEN 644, als auch INITIALISIEREN FÜR DIESEN BILDSCHIRM, UMGEBUNG EINBINDEN 646 ihrerseits BILDSCHIRM 648 auf, die ihrerseits das vorstehend beschriebene BAUE EINEN TEIL DES BILDSCHIRMS 630 AUF, aufruft. BAUE EINEN TEIL DES BILDSCHIRMS 630 AUF, BEENDET ihrerseits.
- Fig. 6J stellt ein Diagramm von BAUE EINEN TEIL DES BILD- SCHIRMS AUF 630 dar. Wie angezeigt, beginnt BAUE EINEN TEIL DES BILDSCHIRMS AUF 630 mit CURSORENTFERNEN 650, was durch UMGEBUNG INITIALISIEREN 652 und das vorstehend beschriebene LÖSCHE EINEN TEIL DES BILDSCHIRMS 622 gefolgt ist. LÖSCHE EINEN TEIL DES BILDSCHIRMS 622 ist durch BAUE LINIE 654 AUF gefolgt, was seinerseits durch LOKALISIERE LINIE 656 gefolgt ist. LOKALISIERE LINIE 656 ist durch ein Entscheidungsmodul gefolgt, das den vorstehend beschriebenen BAUE AUF/ZEICHNE IM DARSTELLUNGSMODUS 618 aufrufen kann. Eine bestätigende Entscheidung resultiert im Aufruf von LINIENAUSGABE 658, das seinerseits das Entscheidungsmodul MIT BILDSCHIRM FERTIG? 660 aufruft, während eine negative Entscheidung im direkten Aufruf von FERTIG MIT ANZEIGE? direkt von dem Entscheidungsmodul, das mit BAUE AUF/ZEICHNE IM DARSTELLUNGSMODUS 618 verbunden ist. Falls die Anzeige nicht fertig ist, ruft FERTIG MIT ANZEIGE? 660 das Modul BAUE LINIE AUF 654 und, falls die Anzeige fertig ist, BEENDET FERTIG MIT ANZEIGE? 660.
- In Fig. 6K ist BAUE LINIE AUF 654 dargestellt. Wie angegeben, beginnt BAUE LINIE 654 auf mit einem Entscheidungsmodul BAUE GESAMTE LINIE AUF? 662, das Entscheidungsverzweigungen nach KORRIGIERE UMGEBUNG 664 und nach INITIALISIERE LINIENSTRUKTUR 666 hat. Zunächst sei die Verzweigung KORRIGIERE UMGEBUNG 664 betrachtet. Diese Verzweigung umfaßt SEGMENTIERE TEIL DER LINIE 668 und ERSTRECKE EINHEITENKÄSTEN 670, das seinerseits ENTFERNE NULL-EINHEITEN 672 aufruft. Die Verzweigung INITIALI- SIEREN DER LINIENSTRUKTUR 666 umfaßt SEGMENTIERE LINIE 674, das seinerseits auch ENTFERNE NULL-EINHEITEN 672 aufruft, wobei eine NULL-EINHEIT eine temporäre, tatsächlich leere Einheit ist, die während des Aufbaus von Einheiten verwendet wird, um die im Aufbau befindlichen Einheiten miteinander zu verketten. ENTFERNE NULL-EINHEITEN 672 ruft schließlich VORBEREITUNG FÜR NÄCHSTE LINIE 676 auf, das schließlich BEENDET.
- Nun sei auf Fig. 6L Bezug genommen, in der SEGMENTIERE LINIE 674 veranschaulicht ist, die aus AUFBAUEN FÜR BEGINN DER LINIE 676 gefolgt von SEGMENTIERE TEIL DER LINIE 678 besteht, das seinerseits BEENDET.
- Nun sei auf Fig. 6M Bezug genommen, in der SEGMENTIERE TEIL DER LINIE 678 dargestellt ist. Wie gezeigt, beginnt SEGMENTIE- RE TEIL DER LINIE 678 mit HOLE DERZEITIGEN EINHEITSSTATUS 680, gefolgt von INITIALISIERE DERZEITIGE EINHEITSSTRUKTUR 682, das seinerseits BAUE EINHEIT AUF 684 aufruft. BAUE EINHEIT AUF 684 seinerseits ruft das Entscheidungsmodul WEITER ZUR LINIE? 686 auf, das eine negative Entscheidungsverzweigung nach BEENDEN und eine positive Entscheidungsverzweigung nach BESCHLIESSE ART DER NÄCHSTEN EINHEIT 688 hat. BESCHLIESSE ART DER NÄCHSTEN EINHEIT 688 seinerseits beginnt eine Verzweigung, die aus FÜGE NÄCHSTE EINHEIT AN 690 und GEHE ZUR NÄCHSTEN EINHEITSSTRUKTUR 692 besteht, das seinerseits INITIALISIERE DERZEITIGE EIN- HEITSSTRUKTUR 682 aufrufen kann.
- Nachstehend sei auf Fig. 6N Bezug genommen, in der BAUE EINHEIT AUF 684 wiedergegeben ist. Wie angegeben, beginnt BAUE EINHEIT AUF 684 mit EINSTELLEN 640, das seinerseits HOLE NÄCHSTES ZEICHEN MIT ATTRIBUTEN 694 aufruft. HOLE NÄCHSTES ZEICHEN MIT ATTRIBUTEN 694 folgt ein Entscheidungsmodul BEFINDET SICH DAS ZEICHEN IN DER EINHEIT?, das eine negative Entscheidungsverzweigung zu BEENDEN und eine positive Entscheidungsverzweigung nach FÜGE ZU EINHEIT HINZU 698 hat, das seinerseits HOLE NÄCHSTES ZEICHEN MIT ATTRIBUTEN 694 aufrufen kann.
- Schließlich sei auf Fig. 6O Bezug genommen, in der ENTSCHEIDE TYP DER NÄCHSTEN EINHEIT 688 dargestellt ist. Wie angegeben, beginnt ENTSCHEIDE TYP DER NÄCHSTEN EINHEIT 688 mit einem Entscheidungsmodul IST DIE DERZEITIGE EINHEIT VOR DEM OPERATOR BEENDET? 601, das eine positive Entscheidungsverzweigung nach NÄCHSTE EINHEIT WIRD WEG VON DIESER EINHEIT SEIN 603 hat, das seinerseits BEENDET. Die negative Entscheidungsverzweigung von DERZEITIGE EINHEIT VOR DEM OPERATOR BEENDET? 601 geht nach NÄCHSTE EINHEIT WIRD WEG VON DER BASIS ZU DIESER EINHEIT SEIN 605, das seinerseits BEENDET.
- Nachdem die Struktur und der Betrieb des Parser 148 durch Flußdiagramm erläutert ist, wird nachstehend die Funktionsweise des Parser 148 beim Zerlegen der Kette von Zeichen/Symbol-, Operator-, Parameter- und Terminatorcodes, die in EB 128 abgelegt sind und einen derzeitigen Ausdruck oder Gleichung definieren, in codierte Einheiten, unter Bezugnahme auf Beispiele beschrieben, wobei die vorstehend beschriebenen Beispiele von EB 128-codierten Ketten verwendet werden, die als Gleichungen 4A bis 4E dargestellt sind. Gleichungen 4A, 4B und 4C werden insbesondere verwendet, um diesen Vorgang zu erläutern. Es sei bemerkt, daß die folgenden Beispiele eine abgekürzte Form der Zerlegung durch Parser 148 sind und daß es zusätzliche Operationen gibt, die in einem nachfolgenden Beispiel beim Zerlegen einer Kette in Einheitenstrukturen beschrieben sind. Es ist zum Beispiel notwendig, die ausgedehnte Größe des Begrenzungskastens, d. h. seine Länge und Breite, zu bestimmen und die Stellung des Kastens auf einer Seite zu bestimmen.
- Zunächst sei auf Gleichung 4A Bezug genommen, die in Fig. 4A sowohl in ihrer bildlichen Wiedergabe als auch in ihrer codierten Form als eine Kette in EB 128 dargestellt ist, wobei die codierte Form von Gleichung 4A vier Codeworte enthält, d. h. [x], [op-subscr], [2] und [PRET], die in dieser Reihenfolge in EB 128 vorhanden sind.
- Für die Gleichung 4A führt Parser 148 die folgende Abfolge von Operationen aus, um diese Kette in Einheiten zu zerlegen: - Beginne und initialisiere eine neue Einheit, inklusive einer US 136; - Überprüfe das nächste Wort; dieses Wort ist der Zeichencode für "x" und keine Aktualisierung ist für den Zustand der Kette erforderlich; als das erste Zeichen der Kette wird es automatisch in die Einheit eingefügt; inkrementiere zu dem nächsten Wort der Kette; - Überprüfe das nächste Wort; dieses Wort ist ein Operatorcode, [op-supscr], und da ein Hochschriftoperator eine Unterbrechung in der Einheit bestimmt, d. h. signalisiert den Anfang einer neuen Einheit; füge ein Flag in die vorliegende Einheitenstruktur ein, um anzuzeigen, daß eine Hochschrift an die derzeitige Einheit angefügt ist; erhöhe zum nächsten Wort in der Kette; - Beginne und initialisiere eine neue Einheit, inklusive einer neuen US 136; - Überprüfe das nächste Wort; dies ist ein Zeichencode für "2" und keine Aktualisierung ist für den Zustand der Kette erforderlich; als das erste Zeichen der Einheitenkette wird es automatisch in die Einheit eingefügt; erhöhe zu dem nächsten Wort der Kette; - Überprüfe das nächste Wort; dies ist Terminator-Operatorcode [PRET], ein Code der ebenfalls eine Unterbrechung in der Einheit als eine Beendigung der Einheit zurück zur Ebene der vorangegangenen Ebene bestimmt; erhöhe zu dem nächsten Wort in der Kette und kehre zurück zur vorhergehenden Ebene; - Erkenne das Ende des Textes; die Textzerlegung ist beendet.
- Nun sei auf Gleichung 4B Bezug genommen, diese Gleichung enthält sechs Codeworte, d. h. [op-lnsplt], [p-1], [x], [PRET], [y] und [PRET], und zeigt die Verwendung des Linienteilungsoperators, um einen Bruch zu erzeugen.
- Für die Gleichung 4B führt der Parser 148 die folgende Abfolge von Schritten aus, um diese Kette in Einheiten zu zerlegen: - Beginn und Initialisierung einer neuen Einheit, inklusive einer neuen US 136; - Überprüfe das nächste Wort; dies ist ein Operatorcode [op-lnsplt] für eine Linienteilung; hole das nächste folgende Wort, um den Parameter des Operators [p-1] zu holen und lege das Parameterzeichen in der Einheit ab; erhöhe zum nächsten Wort, das ist der Operatorcode; - Überprüfe das nächste Wort, das ist der Operatorcode für die Linienteilung; der Parameter zeigt an, daß diese Linienteilung ein Bruchstrich sein soll, d. h. in zwei Linien mit einem Bruchstrich dazwischen; schreibe die Definition dieser Einheit in den US 136, um die beiden Einheiten als "Kinder" zu der derzeitigen "Stamm"-Einheit zu haben; erhöhe zum nächsten Wort; - Beginne und initialisiere eine neue Einheit, inklusive einer neuen US 136; dies ist die Einheit für die erste Linie der Bruchstrichlinienteilung, als der Zähler; - Überprüfe das nächste Wort; dies ist der Code für das Zeichen "x", keine Aktualisierung für den Zustand der Kette ist erforderlich; als das erste Zeichen der Einheit wird es automatisch in die Einheit gelegt; erhöhe zu dem nächsten Wort; - Überprüfe das nächste Wort; es ist ein Terminator-Operatorcode [PRET], der eine Unterbrechung in der Einheit als eine Beendigung der Einheit zurück zum nächst höheren Niveau bestimmt; ein Pseudo-Wagenrücklauf kann Linien unterbrechen; erhöhe zu dem nächsten Wort und kehre zurück zum vorhergehenden Niveau; - Beginne und initialisiere eine neue Einheit, inklusive einer neuen US 136; diese Einheit ist die zweite Linie in der Linienteilung, der Nenner; - Überprüfe das nächste Wort; es ist ein Zeichencode für "y"; es ist keine Aktualisierung des Zustands der Kette erforderlich und als das erste Zeichen einer neuen Einheit wird es in der Einheit automatisch plaziert; erhöhe zu dem nächsten Wort; - überprüfe das nächste Wort; dies ist ein Terminator-Operatorcode [PRET] und bestimmt eine Unterbrechung in der Einheit als eine Beendigung der Einheit zur nächst höheren Ebene; erhöhe zu dem nächsten Wort und kehre zurück zur vorhergehenden Ebene; - Erkenne das Ende des Textes; die Textzerlegung ist beendet;
- Schließlich sei auf Gleichung 4C in Fig. 4C Bezug genommen, wobei diese Gleichung fünfzehn Codeworte enthält, die wie obenstehend zerlegt werden und dementsprechend nicht in vollem Detail erläutert werden. Es sei jedoch bemerkt, daß diese Gleichung vier Einheiten enthält, d. h. die Zeichengruppen oder Ketten "123", "xyz", "a" und "bc", und ein Präfixoperator [op-presupscr] wirkt auf das "a". Wegen dieses Operators ist "a" weder ein Teil der ersten Kette "123" noch der letzten Kette "bc". Das heißt, daß der Präfixoperator die Einheit, die "a" enthält, von den Einheiten trennt, die "123" und "bc" enthalten.
- Bevor ein komplexeres und vollständigeres Beispiel der Zerlegung einer codierten Gleichung und des Aufbaus der zugehörigen USs 136 betrachtet wird, sollten einige vorstehend beschriebene Faktoren wiederholt werden. Zum einen gibt es bestimmte Faktoren, die zu bestimmen und für jede Einheit behalten werden müssen, um eine darstellbare Wiedergabe der Einheiten und der Gleichung zu erzeugen. Unter diesen sind die Eigenschaften der Einheit, wo die Einheit zu zeichnen ist und wie die Einheit zu anderen Einheiten in Beziehung steht.
- Die zu definierenden Einheiten für den derzeitigen Umgebungszustand jeder Einheit umfassen zum Beispiel den derzeitigen Zeichensatz und das derzeitige Größenveränderungsmaß. Die Anfangsposition der derzeitigen Einheit in EB 128, die Stellung des ersten Zeichens und die Länge der codierten Einheitskette in EB 128 muß ebenfalls bestimmt und erhalten werden. Diese Information ermöglicht einen Zugang zu der codierten Einheit in EB 128, so daß die Einheit editiert und aktualisiert werden kann. Als nächstens müssen die Informationen, die die Erstreckung und den Ort der Einheit definieren, errechnet und gespeichert werden. Die erforderlichen Erstreckungs- und Ortswerte umfassen die maximalen und minimalen x- und y-Werte und maximalen Längen der Einheit. Es sei bemerkt, daß diese Werte unter der Annahme errechnet werden, daß das erste Zeichen der Einheit an der geographischen Stelle 0,0 beginnt. Dies ermöglicht es, die Grundlinie für das Zeichen überall auf der Seite oder Linie anzuordnen, inklusive auf Linienbruchabschnitten.
- Es sei des weiteren bemerkt, daß bestimmte Informationen erforderlich sind, um eine Linie, d. h. eine Kette von Einheiten, relativ zu anderen Linien auf der Seite anzuordnen. Dies umfaßt die derzeitige Größenveränderung und den Schriftsatz sowie die Anfangsstelle und die Anzahl von Zeichen in EB 128, wodurch es möglich ist, auf EB 128 zuzugreifen, um die Liniendaten zu editieren und aktualisieren. Es sei bemerkt, daß Zeicheninformationen für eine Linie nicht erforderlich sind. Schließlich muß Information betreffend die Abmessungen und den Ort der Linie bestimmt und gespeichert werden; diese Information wird in der gleichen Struktur wie die Einheitsinformation, d. h. in USs 136 gespeichert. Schließlich werden, wie vorstehend beschrieben, die Linie oder Linien der Gleichung oder des Ausdrucks für den Benutzer in einem oder mehreren "Bildschirmen" dargestellt. Für diese Zwecke wird ein Bildschirm als eine höherrangige Linie betrachtet, d. h. als eine Form impliziter Linienteilung und ermöglicht es, die Anzeige oder den Ausdruck der Gleichung "bei abgeschaltetem Bildschirm" zu beginnen, falls eine derzeitige Linie in so viele Teile unterteilt ist, daß diese mehr als einen Bildschirm überspannt. Die Anfangsstelle und die derzeitige Stelle des Bildschirms muß deswegen bestimmt und gespeichert werden. Es sei bemerkt, daß die Bildschirmstartstelle außerhalb des tatsächlich gespeicherten Bildschirms sein kann und die momentane Stelle, die die tatsächliche Position auf dem Bildschirm angibt, wird dann anzeigen, wo die Anzeige oder der Ausdruck tatsächlich beginnen wird.
- Wie vorstehend beschrieben, erfolgt die Auflösung der codierten Einheit, um Einheitsstrukturen zu erzeugen, und der Aufbau der Einheitsstrukturen, d. h. von USs 136, die die vorstehend beschriebene Information enthalten, durch den Parser 148. Bei der Durchführung dieser Operationen führt der Parser 148 tatsächliche drei Durchläufe durch die codierten Einheiten und die zugehörigen USs 136 aus. In dieser Hinsicht können die USs 136 als eine "Baum"-Struktur enthaltend betrachtet werden, wobei die USs 136 miteinander durch die Zeiger verbunden sind, die in strukturellen Zeigergruppen 514 der USs 136 abgelegt sind, in einer Struktur, die die logischen und physikalischen Beziehungen der Einheiten zueinander im einzelnen und als Elemente in den Linien wiedergibt und dadurch die Beziehungen der Linien zueinander wiedergibt. Der Parser 148 führt einen ersten "Durchlauf" durch den Baum aus, folgt dabei jedem "Zweig" zu jeder der Einheiten, um die Einheiten zu zerlegen und ihre zugehörigen USs 136 aufzubauen, sowie die Abmessungen und Eigenschaften der einzelnen Einheiten zu bestimmen. Der Parser 148 führt dann einen zweiten "Durchlauf" in der umgekehrten Richtung entlang der Zweige aus, um deren maximale y (vertikale) Abmessungen zu bestimmen. Schließlich führt der Parser 148 einen dritten "Durchlauf" in der gleichen Richtung wie der erste aus, um die Orte der Einheiten auf der Seite und in den Linien davon zu bestimmen. In einem letzten, vierten Durchlauf liest der Parser 148 und speist die Einheitsinformation an VDI 150 zur Anzeige.
- Es sei mit Bezug auf die nachfolgende Beschreibung bemerkt, daß der Parser 148 einem von zwei gültigen Pfaden folgt, wenn er die Durchläufe durch den Einheitenbaum ausführt. Zuerst kann der Parser 148 jeden Durchlauf durch den Baum als Ganzes ausführen. Das heißt, in dem ersten Durchlauf würde der Parser 148 an dem Anfang beginnen und jeden Zweig bis zu seiner Spitze oder letzten Einheit folgen. Den zweiten Durchlauf würde der Parser 148 in der Spitze jedes Zweiges beginnen und den Zweigen zurück zum Start folgen, und in dem dritten Durchlauf würde er dem gleichen Weg wie in dem ersten Durchlauf folgen, d. h. von dem Anfang zum Ende jedes Zweiges. Zum zweiten oder alternativ dazu könnte der Parser 148 alle drei Durchläufe für jeden Zweig wechselweise ausführen, bevor er zum nächsten Zweig wechselt. Diese Verfahren zum Durchlaufen durch den Baum von Einheiten könnte jeweils als "Baum als Ganzes" oder als "ein Zweig nach dem anderen" bezeichnet werden. In dem nachfolgenden Beispiel wird das "Baum als Ganzes"-Verfahren erläutert, da es am einfachsten zu verstehen ist. In der derzeit bevorzugten Ausführungsform wird jedoch das "ein Zweig nach dem anderen"-Verfahren, wie es in einem nachfolgenden Anhang beschrieben ist, verwendet.
- Die Funktionsweise des Parser 148 wird nun mit Hilfe der Gleichung 4E erläutert, wie sie in Fig. 4E dargestellt ist. Wie vorstehend beschrieben, hat die Gleichung die codierte Form in EB 128 von:
- Dieses Beispiel enthält 28 Worte und enthält die Einheiten "e", "2x", "y+(", "2+y", "1+x" und ")". Wie beschrieben, werden die Einheiten im ersten Durchlauf gebildet und die Größe jeder Einheit bestimmt; im zweiten Durchlauf werden ihre maximalen y-Abmessungen bestimmt, und im dritten Durchlauf werden ihre tatsächlichen Stellen festgelegt und sie werden angezeigt. Es sei bemerkt, daß für die Zwecke der nachstehenden Beschreibung die Standardzeichenhöhe und Breite als 10 "Einheiten" angenommen wird.
- Der Parser 148 wird dann die nachfolgenden Schritte ausführen, die ähnlich den vorstehend beschriebenen sind und in abgekürzter Form ausgedrückt sind: - Hole und initialisiere die erste Einheit (Einheit 1) inklusive der US 136; - Hole [e]; füge es in Einheit 1; bestimme maximale (max) und minimale (min) x-und y-Erstreckungen (max x, min x; max y; min y) als (0,7; 0,10); - Hole [op-supscr]; beende derzeitige Einheit und beginne nächste Einheit (Einheit 2); - Hole [2]; füge es in Einheit 2 ein; max/min-Erstreckung = (0,3.5; 0,5) (beachte, daß Hochschriften die halbe Standardhöhe haben); - Hole [x]; es kommt kein Terminator-Operator, daher füge "x" in die derzeitige Einheit ein; max/min-Erstreckung = (0,7; 0,5); - Hole [PRET]; beende Einheit; - Beginne neue Einheit (Einheit 3); - Hole [y]; füge "y" in Einheit 3; max/min-Erstreckung = (0,7; 0,10); - Hole [+]; keine Terminator-Operator folgt als nächstes, füge daher "+" in Einheit 3 ein; max/min-Erstreckung = (0,13; 0,10); - Hole [op-resizoncntr]; bereite einen Wechsel der derzeitigen Umgebung vor, d. h. verändere die Größe der Zeichen; - Hole [p-+2]; verändere derzeitige Umgebung (Zustand) für Zeichen, um zwei Standardzeichengrößen hoch zu sein, d. h. 1+(2·1/2) Zeichen hoch; - Hole [(]; kein Terminator als nächstes, daher füge "(" zur Einheit 3 hinzu; max/min-Erstreckung = (0,23; -5,15); - Hole [op-resizoncntr]; bereite einen Wechsel des derzeitigen Umgebungszustandes vor; - Hole [p--2]; wechsle den derzeitigen Umgebungszustand für Zeichen auf eine Standardzeichenhöhe, d. h. reduziert um -2 von den vorangegangenen zwei Standardzeichenhöhen; - Hole [op-lnsplt]; keine neue Zeichen können mehr in Einheit 3 eingefügt werden; bereite eine Linienteilung vor; - Hole [p-1]; kreise durch die beiden Linienteilungssegmente und beachte, einen Bruchstrich zwischen den Linien auf der Linienteilung anzubringen; - Beginne Einheit 4; - Hole [2]; addiere "2" zur Einheit 4; max/min-Erstreckung = (0,7; 0,10); - Hole [+]; kein Terminator-Operator folgt, füge daher "+" zur Einheit 4 hinzu; max/min-Erstreckung = (0,13; 0,10); - Hole [y]; kein Terminator-Operator folgt, füge daher"Y" zur Einheit 4 hinzu; max/min-Erstreckung = (0,20; 0,10); - Hole [PRET]; beende Einheit 4; gehe zur zweiten Linie der Linienteilung; - Beginne Einheit 5; - Hole [1]; füge "1" zur Einheit 5 hinzu; max/min-Erstreckung = (0, 6;0, 10); - Hole [+]; kein Terminator-Operator folgt, füge daher "+" zur Einheit 5 hinzu; max/min-Erstreckung = (0,12; 0,10); - Hole [x]; kein Terminator-Operator folgt, füge daher "x" zur Einheit 5 hinzu; max/min-Erstreckung = (0,17; 0,10); - Hole [PRET]; beende Einheit 5; kehre zur Grundlinie zurück; - Beginne Einheit 6; - Hole [op-resizoncntr]; bereite einen Wechsel des derzeitigen Umgebungszustandes vor; - Hole [p-+2]; wechsle den Umgebungszustand für Zeichen auf 2 Standardzeichenhöhen; - Hole [)]; dies ist das erste Zeichen von Einheit 6, füge daher ")" zur Einheit 6 hinzu; max/min-Erstreckung = (0,10; -5,15); - Hole [op-resizoncntr]; bereite einen Wechsel des derzeitigen Umgebungszustandes vor; - Hole [p--2]; wechsle derzeitigen Umgebungszustand für Zeichen auf eine Standardzeichenhöhe; - Hole [PRET]; beende Einheit 6; Erster Durchlauf beendet; beginne zweiten (Y-Abmessungen)-Durchlauf;
- - Definiere Max Y-Abmessungen für Einheit 6; (-5,15); - Definiere Max Y-Abmessungen für Einheit 5; (0,10); - Definiere Max Y-Abmessungen für Einheit 4; (0,10); - Definiere Max Y-Abmessungen für Einheit 3; (-5,15); - Definiere Max Y-Abmessungen für Einheit 2; (0,5); - Definiere Max Y-Abmessungen für Einheit 1; (-5,15); Zweiter Durchlauf beendet; beginne dritten (Anordnungs-Durchlauf; - Beginne an der Spitze von Seite 1 (0,0); alle Erstreckungen müssen auf die Oberkante der Seite ausgerichtet sein, um vollständig auf der Seite zu sein, ohne aus der logischen Seite herauszuragen; diese Operation wird vor dem Anpassen auf den Bildschirm ausgeführt; - Plaziere/Zeige Einheit 1 bei (0,15) an; dies bringt die max Y-Abmessung innerhalb der Seite; - Ordne/Zeige Einheit 2 bei (7,8) an; dies positioniert die Schrift gemäß ihrer Stellung bezüglich des Stammzeichens "e"; - Ordne/Zeige Einheit 3 bei (14, -15) an; dies positioniert Einheit 3 nach Einheit 2, der Schrifteinheit; - Ordne/Zeige Einheit 4 bei (37, -10) an; Einheit 4 ist die Linienteilungs-Zählereinheit und ist über der Nennereinheit angeordnet; - Ordne/Zeige Einheit 5 bei (38.8, -20) an; die ungerade Ortskoordinate kommt von der Zentrierung der Ausdrücke in dem Bruch; dies ordnet die Nennereinheit 5 an; - Ordne/Zeige Einheit 6 bei (57, -15) an; das abschließend "(" muß nicht angeordnet werden, da ihre Stellung automatisch folgt; die Operationsschritte des Parser 148 sind beendet.
- Schließlich wird eine abgekürzte Zusammenfassung der in den Einheitsstrukturen, d. h. den USs 136 gespeicherten Daten, die den Einheiten 1 bis 6 des vorliegenden Beispiels entsprechen, in Fig. 7 für jede Einheit des Beispiels aufgelistet.
- Nachdem die Datenstrukturen und Mechanismen, die direkt mit dem zu erzeugenden und zu editierenden Text verbunden sind, beschrieben wurden, werden nachstehend bestimmte Datenstrukturen beschrieben, die durch das Texteditiersystem bei der Texterzeugung und bei Editierprozessen verwendet werden, gefolgt von Beschreibung bestimmter Texterzeugungs- und Editieroperationen.
- Wie vorstehend beschrieben, umfaßt das vorliegende System zusätzlich zu den vorstehend beschriebenen Datenstrukturen, die direkt mit dem Text verbunden sind, bestimmte Datenstrukturen, die mit der Gesamtbetriebsweise des Systems, inklusive der Texterzeugungs- und Editiervorgänge, verbunden sind. Wie nachstehend beschrieben, umfassen diese Systemdatenstrukturen, aber sind nicht beschränkt auf, eine Systemzustandsstruktur (SSS), eine oder mehrere Liniendatenstrukturen (LDSs) 162, eine oder mehrere Bildschirmdatenstrukturen (SDSs) 164 und eine oder mehrere Einfügen/Verbergen-Datenfelder (IHDAs) 166.
- Wie beschrieben, enthält SSS Informationen, die sich auf den momentanen Zustand von Operationen des Editors beziehen und durch den Editor verwendet werden, wenn die momentane Operation oder Operationen ausgeführt werden. LDS 162 enthält Informationen, die sich auf eine derzeitige Linie beziehen, die bearbeitet wird, während SDS 164 Informationen enthält, die sich auf den derzeitigen Bildschirm beziehen. Schließlich enthält IHDA 166 Informationen, die sich auf die Einfügen- und Verbergen-Editiervorgänge beziehen, die nachstehend im größeren Detail beschrieben werden.
- Zuerst sei auf die Systemzustandsstruktur Bezug genommen, eine diagrammatische Darstellung von SSS ist in den Fig. 8A und 8B gezeigt, wobei die Figur wegen der Anzahl der Elemente, die darin vorhanden sind, auf zwei Blättern dargestellt ist. Wie darin gezeigt, sind die Informationsfelder von SSS in elf Hauptgruppen strukturiert. Diese Gruppen umfassen Profile 802, Schriftartinformationen 804, Gleichungsinformationen 806, momentaner Bildschirm 808, momentaner Betriebszustand 810, Anzeigenzustand 812, derzeitige Umgebung 814, derzeitiger funktionaler Zustand 816, Ortswerte 818, Parameter 820, Bildschirmabmessungen 822 und Einheitsinformationsgruppe 887 (Hinweis: Bezugszeichen sind aufgrund von Editierungen aus der Reihenfolge). Diese Gruppen von Feldern und der Inhalt jedes Feldes werden in der genannten Reihenfolge nachstehend beschrieben. Die Zwecke bestimmter Felder werden aus ihren Beschreibungen und den vorhergegangenen Beschreibungen des Texteditors deutlich. Die Zwecke und Funktionsweisen bestimmter anderer Felder werden in folgenden Beschreibungen von bestimmten Editoroperationen beschrieben.
- Wie dargestellt, umfassen die Informationsfelder von SSS 160, aber sind nicht beschränkt auf:
- SYSTEMPROFILZEIGER 824 - ein Feld, das einen Zeiger auf Informationen umfaßt, die den derzeit in dem System verfügbaren Zeichen/Symbol-Zeichensatz identifiziert, und auf die derzeit verfügbaren Tastaturen, d. h. die Sätze von Zeichensätzen, die mit den Tasten von KB 144 verbunden werden können;
- SYSTEMDOKUMENTPROFILZEIGER 825 - ein Feld, das einen Zeiger auf das voreingestellte Dokumentprofil enthält; und
- DOKUMENTPROFILZEIGER 826 - ein Feld, das einen Zeiger auf DP 126 enthält.
- ZEICHENSATZTABELLE 827 - ein Feld, das die Namen der Unter- Zeichensätze enthält, die derzeit verfügbar sind; TASTATUR 828 - ein Feld, das eine Liste von Tastaturnamen und eine Aufstellung der für KB 114 für jede Tastatur verfügbare Unter-Zeichensätze enthält;
- ZEICHENEIGENSCHAFTEN 829 - ein Feld, das die Eigenschaften bestimmten Zeichen identifiziert, so zum Beispiel, wenn ein bestimmtes Zeichen ein Überschreib-Zeichen, ein diakritisches Zeichen o. dgl. ist; und
- ZEICHENSATZIDENTIFIKATION 830 - ein Feld, das Informationen enthält, die VDI 150 mit den verfügbaren Unter-Zeichensätzen so verknüpft, daß VDI 150 für jedes darzustellende Zeichen darüber informiert ist, welcher Unter-Zeichensatz das Zeichen bereitstellen wird.
- GLEICHUNGSNAME 831 - ein Feld, das einen Zeiger auf den Namen der derzeit erzeugten oder editierten Gleichung oder des Ausdrucks enthält;
- GLEICHUNGSDATEINAME 832 - ein Feld, das einen Zeiger auf den Namen der Datei enthält, die die Gleichung oder den Ausdruck enthält, der derzeit bearbeitet wird;
- TABELLENDATEINAME 833 - ein Feld, das einen Zeiger auf den Namen einer Datei enthält, in der die Gleichungsdatei abgelegt ist; und
- GLEICHUNGSERSTRECKUNG 834 - ein Feld, das die physikalischen Abmessungen, Höhe und Breite enthält, die der derzeitigen Gleichung oder dem Ausdruck in einem Dokument, in dem die Gleichung oder der Ausdruck erscheinen soll, zugeordnet ist;
- DIESE GLEICHUNG 835 - ein Feld, das einen Zeiger auf den Beginn von EB 128 enthält;
- BILDSCHIRMDATENZEIGER 836 - ein Feld, das einen Zeiger auf ein Feld derzeitiger Bildschirme enthält, d. h. auf das Feld von SDSs 164;
- DERZEITIGER BILDSCHIRM 837 - ein Feld, das einen Index auf ein Feld von Bildschirmen enthält, auf das durch den Bildschirmdatenzeiger 836-Zeiger gezeigt wird und von dem Bildschirmfeld den derzeit angezeigten Bildschirm identifiziert, d. h. die SDS 164 des derzeitigen Bildschirms;
- ANZAHL VON LINIEN 838 - ein Feld, das die Anzahl von Linien in dem derzeitigen Bildschirm enthält;
- LINIENDATENZEIGER 839 - ein Feld, das einen Zeiger auf ein Linienfeld enthält, d. h. auf ein Feld von LDSs 162 in dem derzeitigen Dokument;
- DERZEITIGER LINIENINDEX 840 - ein Feld, das einen Index in das Feld von Linien enthält, auf die durch Liniendatenzeiger 839 gezeigt wird und in dem Feld von Linien die derzeit bearbeitete Linie identifiziert, d. h. LDS 162 der derzeitigen Linie;
- VERFÜGBARE EINHEIT 841 - ein Feld, das einen Index auf die nächste verfügbare, unbenutzte US 136 in LUS 130 enthält;
- EINHEITSDATENZEIGER 842 - ein Feld, das einen Zeiger auf ein Feld von derzeitigen USs 136 in LUS 130 enthält; und
- DERZEITIGER EINHEITSDATENZEIGER 843 - ein Feld, das einen Zeiger auf die derzeit bearbeitete US 136 enthält.
- DERZEITIGER TASTATUR 844 - ein Feld, das die derzeitige Tastatur identifiziert;
- DERZEITIGER TASTENANSCHLAG 845 - ein Feld, das die derzeitige Tastenanschlagscodeeingabe enthält;
- VORHERGEHENDER TASTENANSCHLAG 846 - ein Feld, das die vorhergehende Tastenanschlagscodeeingabe enthält;
- AUTOMATA EINGABEZUSTAND 847 - ein Feld, das den derzeitigen oder Eingabezustand des Editors definiert (Automata)
- AUTOMATA EINGABE 848 - ein Feld, das die derzeitige Eingabe an den Editor (Automata) definiert;
- AUTOMATA FUNKTION 849 - ein Feld, das die derzeit durch den Editor (Automata) ausgeführte Funktion identifiziert;
- AUTOMATA FUNKTIONSRÜCKGABE 850 - ein Feld, das die erwartete Rückgabe von der Funktion, die derzeit durch den Editor (Automata) ausgeführt wird, identifiziert; und
- DERZEITIGE BENUTZEROPERATION 851 - ein Feld, das die derzeitige durch den Benutzer des Editors ausgewählte Funktion identifiziert.
- DERZEITIGE ZEICHENPUFFERSTELLUNG 852 - ein Feld, das den Versatz in EB 128 von einem derzeitigen Zeichen enthält;
- DERZEITIGER ZEICHENPUFFERANFANG 853 - ein Feld, das den Versatz in EB 128 des Anfangs von Daten enthält, die dem derzeitigen Zeichen zugeordnet sind;
- DERZEITIGES ZEICHENPUFFERENDE 854 - ein Feld, das den Versatz in EB 128 von dem Ende der Daten enthält, die den derzeitigen Zeichen zugeordnet sind;
- DERZEITIGER ANFANG DES TEXTES 855 - ein Feld, das den Versatz von dem Anfang von EB 158 des Anfangs von editierbarem Text enthält;
- DERZEITIGES ENDE DES TEXTES 856 - ein Feld, das den Versatz von dem Anfang von EB 128 von dem Ende des derzeitigen Textes enthält, d. h. zu der letzten benutzten Position in EB 128, wodurch der Anfang des verfügbaren Raumes für neue EU 134 angezeigt wird als an der nächsten Stelle, nach der die durch derzeitiges Ende des Textes 856 angezeigt wird;
- ENDE DES UNBENUTZTEN PUFFERS 857 - ein Feld, das den Versatz von dem Anfang von EB 128 von dem letzten verfügbaren Platz in EB 128 enthält;
- DERZEITIGE PUFFERSTELLE 858 - ein Feld, das den Versatz von dem Anfang von EB 128 von dem Cursor, d. h. zu der nächsten Stelle, die zu bearbeiten ist, enthält;
- DERZEITIGES ZEICHEN 859 - ein Feld, das den Code für das derzeitige Zeichen enthält;
- DERZEITIGES ZEICHENATTRIBUT 860 - ein Feld, das anzeigt, ob das derzeitige Zeichen ein diakritisches Zeichen ist;
- ZEICHENPOSITION 861 - ein Feld, das die Absolutkoordinaten der Stelle eines Zeichens auf der derzeitigen Seite enthält, normalerweise des derzeitigen Zeichens;
- ÜBERSCHREIBZEICHEN 862 - ein Feld zur Aufnahme eines Zeichens, das gerade überschrieben wurde;
- ÜBERSCHREIBZEICHENFLAG 863 - ein Feld, das anzeigt, ob die sichtbare Länge einer Einheit sich geändert hat, wenn die Zeichen der Einheit sich geändert haben, z. B. in einem Überschreiben;
- ZEICHEN IN DER EINHEITFLAG 864 - ein Feld, das ein Flag enthält, das anzeigt, ob das derzeitige Zeichen in die derzeitige Einheit statt in die nächste Einheit gehört; und
- DERZEITIGE CURSORPOSITION 865 - Felder, die die absoluten x- und y-Anfangs- und Endpunkte des Cursors auf der Seite enthalten.
- DERZEITIGE ZEICHENSATZBEZEICHNUNG 866 - ein Feld, das den derzeitigen Zeichensatz identifiziert;
- DERZEITIGE GRÖSSE AUF DER GRUNDLINIE 867 - ein Feld, das die Anzahl von Schritten bestimmt, um die die Umgebung die Größe des Textes um die Grundlinie ändern muß;
- DERZEITIGE GRÖSSE UM DIE MITTE 868 - ein Feld, das die Anzahl von Schritten bestimmt, um die die Umgebung die Größe des Textes um die Mitte verändern muß;
- DERZEITIGER SCHRÄGSCHRIFTZUSTAND 869 - ein Feld, das ein Flag enthält, das anzeigt, ob der Text in Schrägschrift ist; und
- DERZEITIGE SCHRIFTTIEFE 870 - ein Feld, das die Anzahl von Ebenen von Schriften spezifiziert, um die die derzeitige Position von der Grundlinie weg ist.
- EINFÜGUNGSEBENE 871 - ein Feld, das die Anzahl von Ebenen von Einfügungen an diesem Punkt enthält;
- EINFÜGUNGSPUNKTZEIGER 872 - ein Feld, das einen Zeiger auf ein Feld von IHDAs 166 enthält, einen für jede Einfügung, Verbergung, neue Schrift oder eingefügte Linienteilungen;
- Bemerkung: Die folgenden vier Felder werden verwendet, um innerhalb EB 128 einen Textabschnitt zu begrenzen, der durch zwei sichtbar angezeigte Zeichen, die jeweils als Anfangsbegrenzungszeichen und als das Endbegrenzungszeichen bezeichnet werden, eingegrenzt ist; es sei bemerkt, daß die beiden Enden zusammenfallen können, d. h. auf das gleiche Zeichen oder Symbol bezogen sein können;
- ANFANGSBEGRENZER 873 - ein Feld, das den Versatz vom Anfang von EB 128 auf den ersten Code in EB 128 enthält, der mit den Anfangsbegrenzungszeichen verbunden ist;
- ENDBEGRENZUNG 874 - ein Feld, das den Versatz vom Anfang von EB 128 zu dem letzten Code in EB 128 enthält, das mit dem Endbegrenzungszeichen verbunden ist;
- ANFANGSBEGRENZERENDSTELLUNG 875 - ein Feld, das den Versatz vom Anfang von EB 128 zu dem letzten Code in EB 128 enthält, der mit dem Anfangsbegrenzungszeichen verbunden ist; und
- ENDBEGRENZUNGSENDSTELLUNG 876 - ein Feld, das den Versatz vom Anfang von EB 128 von dem letzten Code in EB 128 enthält, der mit dem Endbegrenzungszeichen verbunden ist.
- ZU POSITIONIERENDES ZEICHEN 877 - ein Feld, das einen Versatz zu einer Position in EB 128 enthält; verwendet durch den Cursor und andere Funktionen;
- LOKALISIERE TYP 878 - ein Feld, das den Zweck des in ZEICHEN AUF POSITION 877 derzeit enthaltenen Wertes identifiziert; und
- ERFORDERLICHE AUFFRISCHUNG 879 - ein Feld, das anzeigt, welcher Abschnitt des derzeitigen Bildschirms aufgrund einer derzeitigen Operation erneut gezeichnet werden muß;
- DERZEITIGE VEKTOREN 880 - zwei x-y-Vektoren, die zwei aneinander anliegende Kanten von dem DERZEITIGES ZEICHEN KASTEN 881 definiert;
- DERZEITIGES ZEICHEN KASTEN 881 - ein Feld, das einen Kasten definiert, das derzeitige Zeichen, Symbol oder diakritische Zeichen enthält; und
- DERZEITIGE BASIS KASTEN 882 - ein Feld, das den derzeitigen Basis-Kasten, das Stammzeichen oder Symbol und alle diakritischen Zeichen, die mit dem Stammzeichen oder Symbol zusammenhängen oder diesem zugefügt werden zu diesem Punkt; und
- BILDSCHIRMERSTRECKUNGEN 883 - ein Feld, das die x- und y-Abmessungen des Bildschirms relativ zu 0,0 auf dem Bildschirm definiert anstelle von Absolutpunkten auf dem Bildschirm;
- FORMATLINIENHÖHE 884 - ein Feld, das die Höhe der Formatlinie enthält; verwendet als Korrekturfaktor bei der Anzeige, in dem die erste Linie auf dem Bildschirm unterhalb der Formatlinie beginnen muß;
- FORMATZEICHENBREITE 885 - ein Feld, das die Breite des Tabulatorzeichens enthält; verwendet als Standardmaß, um alle Zeichen in einer Formatlinie auf gleicher Breite zu halten; und
- FORMATBILDSCHIRM Y-POSITION 886 - die y-Koordinate der Formatlinie auf dem Bildschirm.
- ORT DER FRÜHESTEN ÜBERSCHREIBUNG EINHEIT 888 - ein Feld, das den Ort der Einheit enthält, das die erste Überschreibung in der Linie enthält;
- GLEICHUNGSSTAMMZEICHENABSENKUNG 889 - ein Feld, das die Absenkung für die voreingestellte Größe des Zeichens für die Gleichung enthält;
- UNBEENDETE LINIENTEILUNG AUF LETZTER LINIE 890 - ein Feld, das verwendet wird, um zu bestimmen, ob die derzeitige Einfügungsebene geschlossen werden kann;
- DEFINIERTE AUSRICHTUNGSSTUFEZÄHLER 891 - ein Feld, das einen Zähler enthält, der eine Größe der Teilung definiert, auf die die Textliniengrundlinien in Pixels definiert;
- DEFINIERTE AUSRICHTUNGSSTUFENENNER 892 - ein Feld, das einen Nenner enthält, der die Teilung definiert, auf der die Textliniengrundlinien in Pixels definiert ist;
- ANFÜGUNGSPUNKTABMESSUNGEN 893 - Felder, die die x- und y-Koordinaten des Anhängungspunktes enthalten, falls der Anhängungspunkt auf dem derzeitigen Bildschirm vorhanden ist; und
- ANHÄNGUNGSPUNKTABMESSUNGEN 894 - Felder, die die x- und y-Abmessungen des Anhängungspunktes enthalten, falls der Anhängungspunkt auf dem derzeitigen Bildschirm vorhanden ist.
- Wie vorstehend beschrieben, umfaßt EDS ein Feld von einem oder mehreren LDSs 162, wobei jedes LDS 162 Felder enthält, die Informationen enthalten, die eine derzeitige Linie betreffen, die durch oder mit dem Editor bearbeitet wird, so daß eine LDS 162 für jede derartige Linie vorhanden ist.
- Nun sei auf Fig. 9 Bezug genommen, in der eine diagrammatische Darstellung einer LDS 162 gezeigt ist. Wie angedeutet, umfassen die Felder einer LDS 162, aber sind nicht begrenzt auf:
- ANFANGSPOSITION 902 - ein Feld, das einen Versatz in EB 128 von dem ersten Datenelement, d. h. dem Zeichen- oder Operatorcode enthält, das die erste Einheit einer Linie beginnt;
- ANFANGSEINHEIT DES LINIENZEIGERS 904 - ein Feld, das einen Zeiger auf die erste Einheit der Linie enthält;
- ANFANGSORT 906 - ein Feld, das die x- und y-Anfangspositionen für den Abschnitt der Linie, bezogen auf den Anfang der Seite, enthält; dies sind die x- und y-Orte der oberen linken Ecke der Seite;
- LINIENABMESSUNGEN 908 - ein Feld, das die Relativabmessungen einer Linie um die Grundlinie statt um den Anfangsort der Linie enthält;
- ZEICHENSATZ 910 - ein Feld, das den Zeichensatz am Anfang der Linie identifiziert;
- ZEICHENSATZGRÖSSENVERÄNDERUNG AUF DER GRUNDLINIE 912 - ein Feld, das den Größenveränderungsfaktor um die Grundlinie an dem Anfang der Linie enthält;
- ZEICHENSATZGRÖSSENVERÄNDERUNG UM DIE MITTE 914 - ein Feld, das den Größenveränderungsfaktor um die Mitte am Anfang der Linie enthält;
- SCHRÄGSCHRIFTFLAG 916 - ein Feld, das ein Flag enthält, das Schrägschrift anzeigt; und
- FORMATLINIE 918 - ein Feld, das einen Index zu der Formatlinie für diese Linie in EB 128 enthält;
- Wie vorstehend beschrieben, enthält EDS ein Feld von einer oder mehr SDSs 164, wobei jede SDS 164 Felder enthält, die Informationen enthalten, die den derzeitigen Bildschirm betreffen, wobei für jeden Bildschirm eines laufenden Dokumentes ein SDS 164 vorhanden ist.
- Es sei auf Fig. 10 Bezug genommen, in der eine diagrammatische Darstellung einer LDS 164 dargestellt ist. Wie angezeigt, umfassen die Felder einer SDS 164, aber sind nicht begrenzt auf:
- ANFANGSPOSITION 1002 - ein Feld, das einen Versatz in EB 128 vom Anfang von EB 128 von dem ersten Textelement von dem Bildschirm enthält;
- OBERER BILDSCHIRMRAND 1004 - ein Feld, das die absolute Y-Position auf der Seite des oberen Randes des Bildschirms enthält;
- ANFANGSORT 1006 - ein Feld, das die absoluten x- und y-Positionen auf der Seite des Anfangs des Bildschirms enthält;
- DERZEITIGER ORT 1008 - ein Feld, das die derzeitigen relativen x- und y-Positionen des Bildschirmursprungs (0,0) enthält; nicht verwendet in der derzeitigen Ausführungsform des Editors, aber geplant für eine mögliche Verwendung in einer späteren Implementierung;
- ZEICHENSATZ 1010 - ein Feld, das eine Identifikation des verwendeten Zeichensatzes enthält;
- ZEICHENSATZGRÖSSENVERÄNDERUNG AN DER GRUNDLINIE 1012 - ein Feld, das den Größenveränderungsfaktor an der Grundlinie für die momentane Kette enthält;
- ZEICHENSATZGRÖSSENVERÄNDERUNG UM DIE MITTE 1014 - ein Feld, das den Größenveränderungsfaktor um die Mitte für die derzeitige Kette enthält;
- SCHRÄGSCHRIFTFLAG 1016 - ein Feld, das ein Flag enthält, das Schrägschrift anzeigt; und
- FORMATLINIENZEIGER 1018 - ein Feld, das einen Index zu der Formatlinie für den derzeitigen Bildschirm enthält.
- Wie vorstehend beschrieben, umfaßt EDS 156 ein oder mehrere IHDAs 166, wobei jedes IHDA 166 Felder enthält, die Informationen enthalten, die auf die Einfüge- und Verbergen-Editiervorgänge bezogen sind, was nachstehend in größerem Detail beschrieben ist, und es ist für jede Einfüge- oder Verberge-Operation ein IHDA vorhanden.
- Nachstehend ist auf Fig. 11 Bezug genommen, in der eine diagrammatische Darstellung eines IHDA 166 dargestellt ist. Wie gezeigt, umfassen die Felder eines IHDA 166, aber sind nicht begrenzt auf:
- ORT VOM ENDE 1102 - wie nachstehend beschrieben, wird die Kette von Zeichen/Symbol-, Operator-, Parameter- und Terminatorcodes in EB 128 an dem Punkt zerlegt, wo die Einfüge- oder Verberge-Operation auszuführen ist, wobei der Abschnitt der Kette, der diesem Punkt folgt, zum Ende von EB 128 "bewegt" wird, wodurch die Einfügung ausgeführt wird; und der "bewegte" Teil der Kette wird zurück von dem Ende von EB 128 und zu dem Ende, von dem was eingefügt wurde, bewegt; die bewegten Abschnitte der codierten Kette werden dadurch in EB 128 so gespeichert, daß EB 128 vom Ende von EB 128 nach vorne gefüllt wird; ORT VOM ENDE 1102 ist ein Feld, das einen Zeiger auf den Anfang des bewegten Textes bezüglich des Anfangs von EB 128 enthält;
- POSITION DER UNTERBRECHUNG 1104 - ein Feld, das einen Zeiger auf die Zeichencodeposition in EB 128 enthält, an der eine Einfügung oder Verbergung auszuführen ist;
- BEWÄHRUNGSPOSITION 1106 - ein Feld, das einen Zeiger auf den Anfang aller EB 128-Codes enthält, die auf den Zeichencode bezogen sind, auf den UNTERBRECHUNGSPOSITION 1104 zeigt; beispielsweise kann ein bestimmter Zeichencode einen zugeordneten Schrägschrift-Operatorcode haben, der in EB 128 vor dem Zeichencode erscheinen würde und der mit dem Zeichencode "zu verschieben wäre", um erhalten zu bleiben;
- EINFÜGUNGSTYP 1108 - ein Feld, das ein Flag enthält, das anzeigt, ob eine Einfügungsunterbrechung von einer Schrifteinfügung, einer regulären Einfügungsoperation, einer Verbergungsoperation, einer Linienteilung oder einer regulären Überschreibung aufgetreten ist;
- SPEICHERE GRÖSSENVERÄNDERUNG AUF GRUNDLINIE 1110 - ein Feld, das den Wert der Größenveränderung auf der Grundlinie-Operator enthält, der einer einzufügenden Schrift folgt;
- SPEICHERE GRÖSSENVERÄNDERUNG UM MITTELPUNKT 1112 - ein Feld, das einen Wert der Größenveränderung um eine Mitte-Operator enthält, der von einer einzufügenden Schrift gefolgt ist;
- ANFANG DES TEXTES 1113 - ein Feld, das die Anfangsposition des Textes enthält, der aufgrund dieser Operation zugänglich ist;
- VORHERGEHENDER ORT LINIENHÖHE 1114 - ein Feld, das die Menge des Raums enthält, das durch den Text vor der Unterbrechung belegt ist; wird verwendet, um den erneuten Bildschirmaufbau zu optimieren;
- HINTER DEM ORT LINIENHÖHE 1116 - ein Feld, das die Menge des Raums enthält, der durch den Text nach der Unterbrechung belegt wird; wird verwendet, um die Aktualisierung des Bildschirmaufbaus zu optimieren;
- VOR DEM ORT UNTERLINIENHÖHE 1117 - ein Feld, das die Menge des Raums enthält, das der Text vor dem Unterbrechungspunkt einnimmt, so daß die korrekte Menge des Raums erfaßt werden kann, so daß der Wiederaufbau des Bildschirms optimiert werden kann;
- HINTER DEM ORT UNTERLINIENHÖHE 1118 - ein Feld, das die Menge des Raums enthält, das der Text hinter dem Unterbrechungspunkt einnimmt, so daß die richtige Menge des Raums erfaßt werden kann, so daß der Wiederaufbau des Bildschirms optimiert werden kann;
- ANZAHL DER AUFBEWAHRTEN LINIENTEILUNGSWAGENRÜCKLÄUFE 1119 - ein Feld, das die Anzahl der Wagenrückläufe in einer Linienteilung anzeigt, die durch ein Verberge- oder Einfügungsoperation aufbewahrt werden; und
- KLEINERE LETZTE LINIE LINIENTEILUNG 1120 - ein Feld, das ein Flag enthält, das anzeigt, daß die letzte Linie in einer Linienteilung nur einen einfachen Anhängungspunkt anstelle von Text angehängt hat.
- Nachdem bestimmte der Datenstrukturen, die durch ER verwendet werden, beschrieben wurden, wird nachstehend die Funktion des vorliegenden Editors, zusammen mit einigen weiteren Aspekten der Operation von EE 146 und Parser 148 mit EB 128 und LUS 130 durch die nachstehenden Beschreibungen bestimmter Editoroperationen erläutert.
- Nachstehend werden bestimmte Mechanismen beschrieben, die durch den Editor bei der Bearbeitung von und an Dokumenten verwendet werden, indem bestimmte Editoroperationen, die für den vorliegenden Editor besonders einzigartig sind, beschrieben werden. Unter diesen Operationen befindet sich eine Beschreibung der Cursorbewegung und des Aufbaus der Einheiten und Linien auf einer Seite, inklusive des Aufbaus von Zeichen oder Symbolen mit daran angefügten diakritischen Zeichen. Die Ausführung von Einfügung- und Verbergungsoperationen werden ebenfalls beschrieben. Wie beschrieben werden wird, verwendet der vorliegende Editor und wirkt sowohl mit den Dokumentdatenstrukturen als auch mit den Editoroperationsdatenstrukturen zusammen, um diese Operationen auszuführen, so daß die Funktion und Operation dieser Datenstrukturen in den nachfolgenden Beschreibungen der Editoroperationen erläutert werden wird.
- Wie bekannt ist, verwenden Textverarbeitungssysteme eine Form von Cursoranzeiger oder Symbol, die durch den angezeigten Text durch den Systembenutzer bewegt werden kann, um sowohl Zeichen und Abschnitte des Textes, die zu bearbeiten sind, zu bezeichnen, als auch um sie auszuwählen. Aus den vorstehenden Beschreibungen und Diskussionen ist jedoch deutlich geworden, daß die Cursoroperationen des vorliegenden Texteditors grundlegend von denen herkömmlicher Textverarbeitungssysteme aus dem Stand der Technik abweichen müssen.
- Das heißt, in den meisten herkömmlichen Textverarbeitungssystemen sind die Zeichen im allgemeinen von gleichförmiger Größe und Proportion und sind in einem Bildschirm und Dokument in einem gleichförmigen rechteckigen Gitter angeordnet, so daß der Cursor von Zeichen zu Zeichen oder von jeder beliebigen Position zu jeder beliebigen anderen Position bewegt werden kann, indem nur seine x- und y-Koordinatenpositionen inkrementiert und dekrementiert werden. Bestimmte Textverarbeitungssysteme stellen proportionalen Abstand von Text zur Verfügung, sind aber nur geringfügig komplexer hinsichtlich der Cursorpositionierung als die System mit gleichförmigen Gittern. Die Datenstrukturen, die den Text in den meisten herkömmlichen Textverarbeitungssystemen enthalten, sind in ähnlicher Weise eine gleichförmige, lineare Struktur, die im wesentlichen nur Zeichencodes und eine begrenzte Auswahl von angezeigten Steuercodes enthält, die die Struktur des Textes selbst wiedergeben, und die Korrelation von Bildschirmposition zu Zeichenposition ist einfach und geradlinig.
- In den Textarten, mit denen der vorliegende Editor zu verwenden gedacht ist, sind die Zeichen und Symbole nicht von gleichförmiger Größe oder Proportion und sind nicht in einem Bildschirm oder Dokument oder in einer Beziehung zueinander in gleichförmiger, vorhersehbarer oder regelmäßiger Weise angeordnet. In ähnlicher Weise und wie beschrieben ist der Text, mit dem der vorliegende Editor zu arbeiten gedacht ist, entweder multidimensional oder multidirektional, oder beides und die Datenstruktur, die den Text enthält, während sie im wesentlichen eine Kette in einer Hinsicht ist, ist nicht notwendigerweise eine gleichförmige lineare Struktur, was wiederum die Struktur des Textes wiedergibt. Der Cursor kann daher nicht zwischen Zeichen- und Symbolpositionen hin- und herbewegt werden, indem einfach die Cursor x- und y-Koordinaten innerhalb eines rechtwinkligen, gleichförmigen Gitters inkrement und dekrementiert werden, und die Beziehung zwischen der Cursorposition in dem Bildschirm und der Cursorposition in der Textdatenstruktur ist weder direkt noch einfach.
- Nun sei kurz das Benutzerinterface zu dem Editor betrachtet, wobei der Benutzer die Stellen in dem Text bezeichnet, an denen Editoroperationen auszuführen sind, oder Teile des Textes, an denen Editoroperationen auszuführen sind, mittels des Cursors. Der Benutzer bezeichnet diese Stellen im Text oder Teile des Textes, indem der Cursor auf die Zeichen/Symbolposition plaziert wird, wo die Operation auszuführen ist, oder auf die Zeichen/Symbolposition, die den Bereich des Textes begrenzen, der zu bearbeiten ist. Um dies zu tun, muß der Benutzer in der Lage sein, den Cursor in kontrollierter Weise durch den Text von einer Zeichen/Symbolposition zur nächsten Zeichen/Symbolposition zu bewegen.
- Die Benutzersteuerung der Cursorbewegung wird üblicherweise durch die Cursortasten auf KB 114 ausgeführt, die es dem Benutzer erlauben auszuwählen und anzuzeigen, daß der Cursor auf, ab, rechts oder links (oder Nord, Süd, Ost oder West) durch den Text relativ zu seiner derzeitigen Position zu bewegen ist. Der Editor erhält diese Steuertasteneingaben und muß den Cursor von Position zu Position durch sowohl die bildliche Darstellung des Textes auf dem Bildschirm als auch der Textdaten in EB 128 und LUS 130 in der durch den Benutzer angezeigten Weise und in einer solchen Weise bewegen, daß die Position des Cursors auf dem Bildschirm der Stelle des Cursors in den Textdaten entspricht. Die angezeigte Cursorposition auf dem Bildschirm bezeichnet die Cursorposition für den Benutzer, während die Cursorposition in den Textdaten die Cursorposition für die Editoroperationsroutinen des Editors bezeichnet.
- Unter Betrachtung der Bewegung des Cursors durch die Textdaten in dem vorliegenden Texteditor, wie vorstehend beschrieben ist, sind die Textdaten in zwei getrennten aber dicht ineinander gekoppelten Datenstrukturen, EB 128 und den USs 136 von LUS 130 abgelegt. Wie beschrieben, speichert EB 128 eine logische Darstellung des Textes in einer "codierten" Form als eine Kette von Zeichen-, Operator- und Terminatorcodes. Diese Kette von Codes in EB 128 ist ihrerseits logisch aufgebaut aus einer Kette von codierten Einheiten (EUs) 134, wobei jede EU 134 eine Kette von Zeichen-, Operator- und Terminatorcodes enthält, die eine einzelne Einheit definieren, und von denen eine Einheit als eine Kette oder eine Gruppe von Zeichen definiert ist mit zugehörigen Eigenschaften, die in dem Dokument als eine Einheit positioniert werden können.
- LUS 130 speichert seinerseits Informationen betreffend die physikalische und bildliche Darstellung des Textes. LUS 130 enthält für jede in codierter Form in EB 128 gespeicherte Einheit eine zugehörige Einheitsstruktur (US) 136, die Informationen enthält, die erforderlich sind, um eine bildliche Wiedergabe der zugehörigen Einheit zu bilden, die in EB 128 gespeichert ist. Wie beschrieben, sind die USs 136 von LUS 130 nicht als eine Kette, sondern als individuelle Datenstrukturen gespeichert, die miteinander durch Zeiger in einer Weise verbunden sind, die die physikalische und logische Beziehung der Einheit widerspiegelt, die den Text bilden. Jede US 136 ist ihrerseits zu ihrer zugehörigen codierten Einheit in EB 128 durch Zeiger verbunden.
- Es ist daher aus der vorstehenden Beschreibung der Dokumentdatenstruktur des vorliegenden Editors ersichtlich, daß die Editorcursorroutinen sowohl die logische Dokumentdatenstruktur, d. h. EB 128, als auch die physikalische Dokumentdatenstruktur, d. h. die USs 136, durchqueren muß, wenn der Cursor in dem Text und in dem zugehörigen dargestellten Bild des Textes positioniert wird. Die Cursorroutinen müssen auch Informationen bestimmen und bereitstellen, die die physikalische Position des Cursors auf dem derzeitigen Bildschirm identifiziert. Diese Operationen werden nachstehend beschrieben, um so weiter die Dokument- und Editoroperationsdatenstruktur des vorliegenden Editors zu erläutern.
- Nachstehend wird zunächst die Cursorstelle in den Dokumentdatenstrukturen und auf dem Bildschirm für einen ruhenden Zustand beschrieben, d. h. wenn sich der Cursor nicht bewegt. Die Bewegung des Cursors innerhalb einer Einheit wird dann als nächstes beschrieben, gefolgt von einer Beschreibung von Cursorbewegungen zwischen Einheiten. Schließlich werden Cursorbewegungen zwischen Linien beschrieben.
- Zunächst sei der Fall betrachtet, bei dem der Cursor in Ruhe ist, was effektiv die Ausgangsbedingung für jegliche Cursorbewegung ist, wobei der momentane Ort des Cursors bezüglich der Datenstruktur in EB 128 durch DIE DERZEITIGE ZEICHENPUF- FERSTELLUNG 852-, DERZEITIGER ZEICHENPUFFERANFANG 853- und DERZEITIGES ZEICHENPUFFERENDE 854-Felder von SSS identifiziert sind. Diese Felder identifizieren jeweils und relativ zum Inhalt-von EB 128 die Versätze relativ zum Anfang von EB 128 des Zeichencodes, das der Cursorposition entspricht, und den Stellen in EB 128 der ersten und letzten Elemente, gleichgültig ob dies Zeichencodes, Operatorcodes, Parametercodes oder Terminatorcodes der codierten Einheit (EU 134) sind, die dieses Zeichen enthält. In bestimmten Fällen, wo aufgrund der ausgeführten Operation der Cursor nicht an einem Zeichencode in EB 128 angeordnet ist, identifiziert das DERZEITIGE PUFFER- POSITIONS 858-Feld die Cursorstelle in EB 128.
- Nachdem der Ort des Cursors bezüglich zu der EB 128-Datenstruktur identifiziert ist, wird die US 136, die zu der EU 134 korrespondiert, durch das SSS DERZEITIGER EINHEITSDATENZEIGER 843-Feld identifiziert. Wie vorstehend beschrieben, enthält der US 136 alle Informationen, die erforderlich sind, um eine physikalische und bildliche Wiedergabe der Einheit aufzubauen, in der der Cursor angeordnet ist. Die Cursorroutinen werden dann den Parser 148 aufrufen, der seinerseits die codierte Einheitsinformation von EB 128 und die Einheitsstrukturinformation von der zugehörigen US 136 liest, um den physikalischen Ort und die Abmessungen auf der Seite von jedem Zeichen oder Symbol in der Einheit zu bestimmen.
- Wie in einer nachfolgenden Beschreibung des Aufbaus von diakritischen Zeichen beschrieben ist, umfaßt ER 156 Routinen, die ihrerseits diese Information verwenden, um ein "derzeitiges Zeichen-Kasten" und einen "Stammkasten" aufzubauen, die die physikalischen Abmessungen auf der Seite von einem "Kasten" beschreiben, der jeweils ein laufendes Zeichen enthält, und das laufende Zeichen mit allen Erstreckungen, z. B. angefügten diakritischen Zeichen. In diesem Fall ist das "laufende Zeichen" das Zeichen an der Cursorstelle, so daß die Werte des "Kastens", die die Stelle und die Abmessungen der unteren Kante des "Kastens" bestimmen, dazu dienen, den Ort und die Abmessungen des Cursors auf der Seite festzulegen. Diese Information kann ihrerseits in dem SSS DERZEITIGE CURSORPOSI- TION 865-Feld gespeichert sein.
- Nachdem die Orte des Cursors relativ zu den Datenstrukturen sowohl in EB 128 als auch den USs 136 und der absolute Ort und die Abmessungen des Cursors auf der Seite bestimmen, müssen die Position und die Abmessungen des Cursors auf dem derzeitigen Bildschirm durch die Verwendung der Information bestimmt werden, die in LDSs 162 enthalten ist. Wie vorstehend beschrieben, enthält jede LDS 162 Information, die eine Linie relativ zu der derzeitigen Seite betrifft.
- Die derzeitige Linie, d. h. die LDS 162 der derzeitigen Linie wird durch das SSS 160 DERZEITIGER LINIENZEIGER 840-Feld lokalisiert. Die ANFANGSPOSITION 902-, ANFANGSEINHEIT DES LINIENZEIGERS 904- und ANFANGSORT 906-Felder der derzeitigen LDS 162 können dann verwendet werden im Zusammenhang mit der vorstehend beschriebenen Information, die die absoluten Orte und Abmessungen des Cursors auf der Seite identifiziert, um den Ort und die Abmessungen des Cursors auf der derzeitigen Seite zu bestimmen.
- Nachdem beschrieben ist, wie der Ort und die Abmessungen des Cursors relativ zu den EB 128- und LUS 130-Datenstrukturen und zu dem derzeitigen Bildschirm für einen statischen Fall bestimmt werden, wird nachstehend die Bestimmung dieser Faktoren für den Fall der Cursorbewegung innerhalb einer Einheit als nächstes beschrieben. Es sei dabei bemerkt, daß für die Zwecke der nachstehenden Beschreibung angenommen wird, daß eine bestimmte Einheit, durch die der Cursor sich bewegt, mehr als ein Zeichen oder Symbol enthält; falls die Einheit nur ein Zeichen oder Symbol enthält, wird der Fall einer der Cursorbewegung zwischen Einheiten, der in einer nachfolgenden Beschreibung erläutert wird.
- In diesem Fall muß der Editor zuerst den nächsten Zeichencode in der Einheit in EB 128 in der Richtung bestimmen, die der Benutzer durch die Cursortasten in KB 114 vorgibt, und dann muß der "Kasten" des Zeichens oder Symbols, wie vorstehend beschrieben, aufgebaut werden. Wie beschrieben, sind die Zeichen/Symbol-, Operator-, Parameter- und Terminatorcodes, die eine bestimmte Einheit bilden, nacheinander in einer Kette in der EU 134 dieser Einheit abgelegt.
- Wie vorstehend beschrieben, wird der Ort des Cursors in bezug auf die Datenstruktur in EB 128 durch die DERZEITIGE ZEICHEN- PUFFERPOSITION 852-, DERZEITIGE ZEICHENPUFFERANFANG 853-, DERZEITIGE ZEICHENPUFFERENDE 854- und DERZEITIGE PUFFERPOSI- TION 858-Felder von SSS 160 identifiziert. Diese Felder identifizieren jeweils die Versätze relativ zum Anfang von EB 128 des Zeichencodes, das der Cursorposition und der ersten und letzten Datenelemente entspricht, gleichgültig ob dies Zeichencodes, Operatorcodes, Parametercodes oder Terminatorcodes sind, die mit diesem Zeichencode verbunden sind.
- Beispielweise sei angenommen, daß der Benutzer eingegeben hat, daß der Cursor auf das nächste Zeichen nach das DERZEITIGE ZEICHENPUFFERENDE 854, d. h. nach rechts in der Codekette zu bewegen ist, wobei die gewünschte Cursorbewegung, d. h. die Erhöhung nach rechts um ein Zeichen/Symbol im ZEICHEN ZU POSITIONIEREN 877-Feld gespeichert wird, und der Grund für die Bewegung ist in dem LOKALISIERE TYP 878-Feld gespeichert.
- Wie vorstehend beschrieben, ist die ursprüngliche Cursorpositionsinformation in die DERZEITIGE ZEICHENPUFFERPOSITION 852-, DERZEITIGE ZEICHENPUFFERANFANG 853-, DERZEITIGES ZEICHENPUF- FERENDE 854- und DERZEITIGE PUFFERPOSITION 858-Felder von SSS 160 gespeichert. Der ursprünglich in der DERZEITIGE ZEICHEN- PUFFERANFANG 853-Feld gespeicherte Versatz ist durch den Versatz ersetzt, der in dem DERZEITIGES ZEICHENPUFFERENDE 854-Feld abgelegt ist, erhöht um eins. Der neue Versatz in der DERZEITIGE PUFFERANFANG 853-Feld zeigt damit auch den ersten Code, der mit dem nächsten Zeichen/Symbolcode verbunden ist; der erste Code kann der nächste Zeichen/Symbolcode selbst oder ein Operatorcode sein. Der Parser 148 wird dann von diesem Punkt an weiterlesen, um den Versatzwert zu finden, der in das DERZEITIGE ZEICHENPUFFERPOSITIONS 852-Feld abzulegen ist, um auf den nächsten Zeichen/Symbolcode zu zeigen und um den letzten Code zu finden, der mit dem nächsten Zeichen/Symbolcode verbunden ist, um den geeigneten Versatz in das DERZEITI- GE ZEICHENPUFFERENDE 854-Feld zu schreiben. Der Versatz, der in das DERZEITIGES ZEICHENPUFFERPOSITIONS 852-Feld geschrieben wird, kann auch in das DERZEITIGE ZEICHENPUFFERPOSITIONS 858-Feld geschrieben werden.
- Falls der Benutzer angewiesen hat, den Cursor nach links durch die Codekette in EB 128 zu bewegen, würde die Operation von der gerade obenstehend beschriebenen abweichen. In diesem Fall würde der Editor zu dem Anfang der derzeitigen EU134 sich bewegen, wie dies durch die Felder ANFANGSPOSITION 516 und ANFANGSZEICHEN 518 der zugehörigen US 136 bestimmt ist. Der Editor würde dann die Codes der EU 134 von dem Anfang lesen, bis ein Zeichencode erreicht worden ist, dessen DERZEITIGES ZEICHENPUFFERENDE 854 eines geringer als der DERZEITIGE ZEICHENPUFFERANFANG 853 des Zeichens wäre, von dem der Cursor begonnen hat. Der Editor würde dann die DERZEITIGE ZEICHENPUF- FERPOSITION 852 und DERZEITIGE ZEICHENPUFFERANFANG 852 bestimmen, die diesem neuen DERZEITIGES ZEICHENPUFFERENDE 854 entsprechen, wobei die neue DERZEITIGE ZEICHENPUFFERPOSITION 852 der neuen Cursorposition entspricht und in das Feld DERZEITIGE PUFFERPOSITION 858 geschrieben wird.
- Es sei bemerkt, daß dieses Verfahren der Cursorbewegung zurück durch EB 128 gewählt wurde, um eine volle Allgemeinheit im Hinblick auf die Codestrukturen und Sequenzen in EB 128 zu erreichen, so daß es möglich ist, die Codes und ihre Sequenzen in EB 128 zu verändern, ohne eine weitgehende Modifikation aller Funktionen des Editors zu erfordern. In einer anderen Ausführungsform kann die Bewegung des Cursors rückwärts durch EB 128 in einer ähnlichen, zu der vorstehend für die Vorwärtsbewegung beschriebenen Weise, d. h. nach rechts, ausgeführt sein. In diesem Fall würde der Versatz in der DERZEITIGES ZEICHENPUFFERENDE 854-Feld mit dem Versatz von dem DERZEITIGES ZEICHENPUFFERANFANGS 853-Feld um eines verringert ersetzt werden, wodurch auf das Ende der vorhergehenden Gruppe von Codes gezeigt werden würde, die mit dem vorhergehenden Zeichen/Symbolcode verbunden sind. Der Parser 148 würde dann rückwärts oder nach links von diesem Punkt an lesen, um die neuen Versätze zu finden, die in die DERZEITIGE ZEICHENPUFFER- POSITION 852-, DERZEITIGER ZEICHENPUFFERANFANG 853- und DERZEITIGE PUFFERPOSITION 858-Felder abzulegen wäre.
- Die vorstehenden Schritte haben die neue Cursorposition relativ zu der EB-Datenstruktur identifiziert. Die zu dieser EU 134 korrespondierende US 136 verbleibt die gleiche und wird durch das SSS-Feld DERZEITIGER EINHEITSDATENZEIGER 843 identifiziert. Wie vorstehend beschrieben, enthält US 136 alle Informationen, die erforderlich sind, um eine physikalische und bildliche Wiedergabe der Einheit aufzubauen, in der der Cursor angeordnet ist. Die Cursorroutinen rufen erneut Parser 148 auf, um die codierte Einheitsinformation von EB 128 und der Einheitsstrukturinformation von der zugehörigen US 136 zu lesen, um den physikalischen Ort und die Abmessungen auf der Seite in der Einheit an der neuen Stelle des Cursors zu bestimmen.
- Wie nachstehend beschrieben, baut ER einen "derzeitiges Zeichen-Kasten" und einen "Stamm-Kasten" auf, die den physikalischen Ort und die Abmessungen auf der Seite des "Kastens" beschreiben, der das Zeichen oder Symbol an der neuen Cursorstelle enthält. Erneut können die Werte des "Kastens", die den Ort und die Abmessungen der unteren Kante des "Kastens" bestimmen, den Ort und die Abmessungen des Cursors auf der Seite identifizieren und diese Information kann in SSS in dem Feld DERZEITIGE CURSORPOSITION 865 gespeichert werden.
- Nachdem nun die neuen Orte des Cursors relativ zu den Datenstrukturen sowohl in EB 128 als auch in den USs 136 als auch der absolute Ort und die Abmessungen des Cursors auf der Seite bestimmt worden sind, werden nun der Ort und die Abmessungen des Cursors auf dem derzeitigen Bildschirm erneut durch die Verwendung der Information bestimmt, die in SDSs 164 enthalten ist. Wie vorstehend beschrieben, enthält jedes SDS 164 Information betreffend einen Bildschirm relativ zu der derzeitigen Seite. Der derzeitige Bildschirm, d. h. das SDS 164 wird durch das Feld von SSS, DERZEITIGER BILDSCHIRMZEIGER 837 ermittelt. Die BILDSCHIRMOBERKANTE 1004-, ANFANGSORT 1006- und DERZEITI- GER ORT 1008-Felder des derzeitigen SDS 164 können dann zusammen mit der oben beschriebenen Information, die den neuen absoluten Ort und die Abmessungen des Cursors auf der Seite angibt, zum Bestimmen des neuen Orts und der Abmessungen des Cursors auf dem derzeitigen Bildschirm verwendet werden.
- Die Bewegung des Cursors von einer Einheit zu einer anderen wird beispielsweise auftreten, falls das Zeichen/Symbol, an dem der Cursor derzeit angeordnet ist, das letzte Zeichen/Symbol in der Einheit in der Richtung ist, in der der Cursor sich bewegt, oder in einem besonderen Beispiel dieses Falles, falls die Einheit nur ein Zeichen/Symbol hat. Als weiteres Beispiel kann der Cursor sich auch von einer Einheit zu einer anderen bewegen, falls der Cursor ausgerichtet wird, um sich in einer Richtung zu bewegen, die nicht entlang der Grundlinie der Originaleinheit geht, z. B. von einem Zeichen zu einer Schrift, die diesem Zeichen angefügt ist.
- Wie vorstehend beschrieben, werden in dem Initialisierungsschritt die Eingaben, die die Richtung, in der der Cursor sich zu bewegen hat und der Grund für die Bewegung jeweils in den Feldern ZEICHEN ZU POSITIONIEREN 877- und LOKALISIERE TYP 878-Felder gespeichert.
- Der Editor muß dann bestimmen, ob ein anderer Zeichen/Symbolcode in der derzeitigen Einheit in der Richtung vorhanden ist, in der der Cursor zu bewegen ausgerichtet ist, d. h. ob die Bewegung innerhalb einer Einheit oder von einer Einheit zu einer anderen geht. Der Editor führt diese Operation aus, indem die Stelle und die Erstreckung innerhalb von EB 128 der Gruppe von Codes bestimmt wird, die den Zeichen/Symbolcode an der derzeitigen Stelle des Cursors umfassen und jegliche andere Codes, die zusammen mit diesem Zeichen/Symbolcode an der Stelle und an der Erstreckung innerhalb EB 128 der Einheit zugeordnet sind, die diesen Zeichen/Symbolcode enthält.
- Wie ebenfalls vorstehend beschrieben, werden die Position und die Erstreckung der Gruppe von Codes, die den Zeichen/Symbolcode umfassen oder mit ihm an der derzeitigen Cursorstelle verbunden sind, in bezug auf die Datenstruktur in EB 128 durch DERZEITIGE ZEICHENPUFFERPOSITION 852-, DERZEITIGE ZEICHENPUFFERANFANG 853- und DERZEITIGES ZEICHENPUFFERENDE 854-Felder identifiziert. Die Position und Erstreckung innerhalb EB 128 der Einheit, die den Zeichen/Symbolcode enthält, werden durch STARTPOSITION 516-, STARTZEICHEN 518- und ELT- LÄNGE 520-Felder der zugehörigen US 136 identifiziert.
- Falls der Vergleich ergibt, daß die Einheit weitere Codes in der Richtung der Cursorbewegung enthält als diese, die innerhalb der Gruppe von Codes enthalten sind oder mit diesen Zeichen/Symbolcodes an der derzeitigen Cursorposition verbunden sind, wird der Editor nach weiteren Zeichen/Symbolcodes in dieser Richtung suchen, wie dies vorstehend in bezug auf die Cursorbewegung innerhalb einer Einheit beschrieben ist. Falls der Editor weitere Zeichen/Symbolcodes innerhalb der Einheit in der Richtung der Cursorbewegung findet, wird der Editor den Cursor zu dem nächsten Zeichen/Symbolcode in der oben beschriebenen Weise in bezug auf die Cursorbewegung innerhalb einer Einheit bewegen.
- Falls der Vergleich ergibt, daß keine weiteren Zeichen/Symbolcodes in der Einheit in der Richtung der Cursorbewegung oder, falls die angegebene Cursorbewegung nicht entlang der Grundlinie dieser Einheit ist, vorhanden sind, dann muß der Cursor in eine andere Einheit bewegt werden und diese Einheit muß aufgefunden werden. Wie vorstehend beschrieben, enthält die US 136 jeder Einheit eine Gruppe von Zeigern zu allen anderen Einheiten, d. h. USs 136, die mit der Einheit verbunden sind. Die USs 136 und die Zeiger umfassen auf diese Weise in wirksamer Weise einen Baum von USs 136, die durch die Zeiger miteinander verbunden sind, und der Editor kann eine nächste Einheit lokalisieren, indem dieser Baum von USs 136 durchwandert wird, indem die Zeiger verfolgt werden, die die USs 136 miteinander verbinden.
- Bevor die Mechanismen der Cursorbewegung durch den Baum von USs 136 diskutiert werden, ist es notwendig, die Cursortastenübereinkunft zu beschreiben, die in der vorliegenden Implementierung des Editors verwendet wurde, da die Cursorübereinkunft zum Teil festlegt, welchen Weg der Cursor beim Durchwandern des Baums von USs 136 nimmt. Die Cursortastaturübereinkunft ihrerseits hängt von der bestimmten Struktur des Textes ab, der bearbeitet wird. Es ist also notwendig, das Benutzerinterface zu den Systemen durch KB 114 zu betrachten, sowohl im allgemeinen als auch insbesondere im Hinblick auf den Editor, da dieses Interface sämtliche Operationen des Benutzers im Hinblick auf den Editor, inklusive der Cursorbewegung, beeinflußt.
- Zunächst seien die Auswirkungen der Textstruktur auf das Benutzerinterface im allgemeinen und auf die Cursorbewegung im besonderen betrachtet. In englischem Text zum Beispiel verlaufen die Textzeilen horizontal über eine Seite von links nach rechts und aufeinanderfolgende Zeilen erscheinen auf der Seite von oben nach unten. Aufgrund dieser Textstruktur ist die Standardtastatur zur Verwendung mit Text, der dieser allgemeinen Übereinkunft folgt, mit vier Cursortasten ausgestattet, d. h. mit einer Rechts(Ost)-Taste, einer Links(West)-Taste, einer Aufwärts(Nord)-Taste und einer Abwärts(Süd)-Taste. Im allgemeinen werden die Rechts(Ost)- und Links(West)-Cursortasten verwendet, um den Cursor nach links oder rechts über eine Zeile zu bewegen und die Aufwärts(Nord)- und Abwärts(Süd)-Tasten werden für vertikale Bewegungen zwischen Zeilen verwendet. In anderen Übereinkünften, in denen zum Beispiel die Textzeilen von oben nach unten auf der Seite und aufeinanderfolgende Zeilen von rechts nach links erscheinen, würden die Aufwärts- und Abwärtscursor-Tasten eine Cursorbewegung entlang der Textzeilen bewegen und die Rechts- und Links-Tasten würden eine Bewegung zwischen den Zeilen bewirken. Die nachstehenden Beschreibungen und Beispiele werden annehmen, daß der Editor mit einer herkömmlichen englischen Textstruktur arbeitet, bei der Textzeilen horizontal über eine Seite von links nach rechts und aufeinanderfolgende Zeilen auf der Seite von oben nach unten erscheinen. Es ist offensichtlich für Fachleute in diesem Technikgebiet, daß der Editor ohne weiteres auf andere Textstrukturen adaptiert werden kann, z. B. durch Umbenennung der Cursortasten, wie vorstehend beschrieben.
- In der vorliegenden Erfindung ist daher die allgemeine Regel, daß die rechten (Ost)- und West (linken)-Cursortasten die Bewegung jeweils vorwärts oder rückwärts entlang der derzeitigen Grundlinie richten, während die Nord-(aufwärts)- und Süd-(abwärts)-Tasten dementsprechend die Bewegung des Cursors aufwärts und abwärts von Linie zu Linie, inklusive der Bewegung von Linie zu Linie innerhalb einer Linienteilung richten.
- Als nächstes wird die Bewegung entlang einer Grundlinie betrachtet, wie sie durch die linken und rechten Cursortasten ausgerichtet wird. Die derzeitige Grundlinie, entlang der der Cursor sich bewegt, kann die der derzeitigen Linie oder die einer Schrift oder eine Linie einer Linienteilung sein. Falls der Cursor das Ende der derzeitigen Grundlinie durch Bewegung entlang der Grundlinie erreicht, wird sich der Cursor auf die nächste tiefere oder höhere Grundlinie bewegen, abhängig von der Richtung der Cursorbewegung. Falls der Cursor in einer Linie einer Linienteilung sich befindet, kann die nächste tiefere oder höhere Linie die nächste tiefere oder höhere Linie der Linienteilung sein. Falls jedoch keine nächste tiefere oder höhere Linie in der Linienteilung vorhanden ist, entlang der gegangen werden könnte, wird sich der Cursor zu der nächsten folgenden oder vorangehenden Einheit bewegen. Falls der Cursor schließlich innerhalb einer Schrifteinheit ist und das Ende der Schriftgrundlinie erreicht, wird sich der Cursor zu der Stammeinheit der Schrifteinheit bewegen.
- Wie vorstehend beschrieben, richten die Aufwärts- und Abwärts- Cursortastaturtasten den Cursor so, daß dieser sich vertikal von Linie zu Linie bewegt. Falls der Cursor sich innerhalb einer Linienteilung befindet, bewirken die Aufwärts- und Abwärtstasten, daß der Cursor von Linie zu Linie innerhalb der Linienteilung sich bewegt. Falls jedoch der Cursor sich innerhalb einer Linienteilung bewegt und die oberste und unterste Linie erreicht, wird die nächste Vertikalbewegung jeweils zu der nächsten höheren oder tieferen Linie auf der Seite sein. Erneut sind Schrifteinheiten die Ausnahme für diese allgemeine Regel; falls eine Vertikalbewegung in einer der beiden Richtungen angezeigt ist, während der Cursor sich in einer Schrifteinheit befindet, wird sich der Cursor zur Stammeinheit der Schrifteinheit bewegen.
- Zusätzlich zu den üblichen Text strukturierenden Elementen, die auftreten, beispielsweise in standardenglischem Text, erlaubt der vorliegende Editor die Erzeugung und Editierung von Schrifteinheiten und diakritischen Zeichen, so wie von Linienteilungen und Stricheinheiten. Diese Textstrukturierungen, die im Hinblick auf standardenglischen Text unüblich sind, haben sowohl einen Einfluß auf das allgemeine Benutzerinterface zu dem System und dem Editor durch KB 114 als auch, insbesondere im Hinblick auf die vorliegende Diskussion, die Bewegung des Cursors. Wie nachstehend beschrieben und wie schon vorstehend beschrieben, behandelt der Editor und die Cursormechanismen des Editors Schrifteinheiten und diakritische Zeichen unterschiedlich gegenüber Linienteilungen und Stricheinheiten. Der Fall von Schrifteinheiten wird als nächstes nachstehend diskutiert, gefolgt von einer weiteren Beschreibung von allgemeiner Cursorbewegung, welche die Fälle von Linienteilungen und Stricheinheiten umfaßt. Der besondere Fall von diakritischen Zeichen wird getrennt in einer nachfolgenden Beschreibung des Aufbaus von Zeichen mit zugeordneten diakritischen Zeichen diskutiert.
- Nachstehend sei zuerst auf die Schrifteinheitenausnahme gegenüber den allgemeinen Regeln der oben beschriebenen Cursorbewegung Bezug genommen. Die Bewegung des Cursors in eine Schriftposition wird in einer ähnlichen Weise gerichtet wie die, durch die der Editor geführt wird, um eine Schrifteinheit zu erzeugen. Das heißt, der Editor bewegt den Cursor zu einer Schriftposition in der gleichen Weise, in der der Benutzer den Editor anleitet, eine Schrifteinheit zu erzeugen, indem durch den Benutzer ein Operatorcode durch KB 114 eingegeben wird, wobei der Operatorcode durch KB 114 in Abhängigkeit von der Betätigung oder Aktivierung bestimmter Tasten darauf durch den Benutzer erzeugt wird.
- Wie im Stand der Technik bekannt ist, gibt es viele Methoden und Schemata, durch die Tastaturtasten zugeordnet werden können, um bestimmte Eingabecodes für ein System zu erzeugen. In den meisten Systemen sind die Mehrzahl der Tasten andauernd zugeordnet, um Codes zu erzeugen, die den am häufigsten verwendeten Zeichen und Symbolen entsprechen, z. B. den alphanumerischen Zeichen und Zahlen, sowie Standardsymbolen, die auf den meisten Tastaturen zu sehen sind. Bestimmte andere Tasten können zu der Tastatur hinzugefügt werden und zu bestimmten regelmäßig benutzten Vorgängen zugeordnet werden. Beispielsweise kann in einem System, das für Textverarbeitung weit verbreitet ist, bestimmte zusätzliche dedizierte Funktionstasten zugeordnet sein, um die Eingangssteuercodes zu erzeugen, die z. B. zu den Befehlen EINFÜGEN, LÖSCHEN, VORANGE- HENDE SEITE, NÄCHSTE SEITE, SEITE, EINRÜCKEN, KOPIEREN und VERSCHIEBEN usw. zugeordnet sind. Schließlich können zusätzliche programmierbare Tasten oder Kombinationen von Tasten zu bestimmten Funktionen durch das Programm zugeordnet sein, das derzeit ausgeführt wird.
- Die vorliegende Implementierung des vorliegenden Editors ist ein Beispiel der letzteren Verwendung von bestimmten der KB 114-programmierbaren Funktionstasten. Beispielsweise kann eine programmierbare Funktionstaste auf KB 114 durch den Editor zugeordnet sein, um einen Schriftcode zu erzeugen, wenn sie durch den Benutzer betätigt wird. Wenn die Schrifttaste gedrückt wird, wird von selbst ein Tiefschreibcode erzeugt, der ein Vortiefschreiben oder Unterschreiben erzeugt. Wenn die Schrifttaste in Verbindung mit der Umschalttaste betätigt wird, wird ein Überschreibcode erzeugt, der ein Vorhochschreiben, Überschreiben oder Hochschreiben bewirkt. Nachdem entweder eine Hoch- oder Tiefschrift durch Verwenden von jeweils der Schrift-Taste oder der Schrift- oder der Umschalttaste gewählt wurde, dann wählt der Benutzer unter den drei Möglichkeiten in jedem Fall durch die Verwendung der Cursortasten. Falls zum Beispiel der Benutzer eine Hochschrift gewählt hat, wählt dann der Benutzer zwischen einer Vorhochschrift, einem Überschreiben oder einer Hochschrift, indem jeweils die linke, die Aufwärts- oder die rechte Cursortaste betätigt wird. In ähnlicher Weise, falls der Benutzer eine Tiefschrift gewählt hat, kann der Benutzer zwischen einer Vortiefschrift, einer Unterschrift oder einer Tiefschrift durch jeweiliges Betätigen der linken, der Abwärts- oder der rechten Cursortaste auswählen. Der Benutzer kann den Cursor auf eine bereits existierende Schriftposition in der gleichen Weise führen, d. h. durch Angeben einer Bewegung auf eine Tief- oder Hochschriftposition durch die Schrift oder Schrift- oder Umschalttasten und dann durch eine Bewegung auf eine bestimmte Hoch- oder Tiefschriftposition durch Verwenden der Cursortasten.
- Nachdem der Cursor auf eine Schriftposition bewegt worden ist, kann der Benutzer dann entlang einer Grundlinie der Schrifteinheit durch Verwendung der rechten und linken Cursortasten, wie oben beschrieben, sich entlang bewegen. Die Aufwärts- und Abwärtscursortasten rufen jedoch eine Bewegung in eine nächst höhere oder niedrigere Linie hervor. Statt dessen bewirkt die Betätigung der Aufwärts- oder Abwärtscursortasten innerhalb einer Schriftposition, daß der Cursor zu der Basiseinheit der Schrift zurückkehrt. Nachdem die allgemeinen Cursorübereinkünfte für den vorliegenden Editor und eine wichtige Ausnahme von der allgemeinen Übereinkunft, d. h. die Bewegung zu und von Schrifteinheiten beschrieben worden ist, wird nun die allgemeine Bewegung des Cursors zwischen Einheiten, inklusive Stricheinheiten und Linienteilungen weiter erläutert mit Hilfe der Fig. 12A und 12B. Die Fig. 12A und 12B stellen jeweils einen beispielhaften Teil eines Textes und eine diagrammatische Darstellung des zugehörigen Textes von USs 136 dar.
- Unter Bezugnahme auf Fig. 12 enthält dieser beispielhafte Abschnitt des Textes 6 Einheiten. Die erste Einheit enthält das Zeichen "A". Die zweite Einheit ist eine Hochschrifteinheit von der ersten und enthält das Zeichen "2"; es sei bemerkt, daß der Terminator-Operator für die zweite Einheit, ein Pseudo-Wagenrücklauf, so gezeigt ist, wie er auf einem Bildschirm angezeigt sein könnte. Die dritten und vierten Einheiten sind auf den gleichen Linieneinheiten einer Linienteilung von zwei Linien, wobei die erste Linieneinheit das Zeichen "B" und die zweite das Zeichen "C" enthält. Es sei bemerkt, daß der Linienteilungsoperator so dargestellt ist, wie er auf einem Bildschirm erscheinen könnte, d. h. durch eine senkrechte Linie mit zwei horizontalen Linien, die sich nach rechts erstrecken und die Grundlinien der Linieneinheiten der Linienteilung anzeigen, wobei jede Linieneinheit durch einen Pseudo-Wagenrücklauf beendet ist. Die fünfte Einheit ist eine Stricheinheit mit den Zeichen "D" und "E" mit einem Überstrich. Es sei bezüglich der Stricheinheit bemerkt, daß das Vorhandensein des Striches über dem "D" und dem "E" die Position des Anfangs und des Endes des Strichoperators bezeichnet, jeweils kurz vor dem "D" und kurz nach dem "E". Die sechste Einheit enthält das Zeichen "F" und den Anhängungspunkt, wodurch vorliegend angedeutet ist, daß weiterer Text an das Zeichen "F" folgend eingegeben werden kann.
- Nun sei auf Fig. 12B Bezug genommen. Wie darin angegeben, ist jeder US 136 des beispielhaften Textabschnittes durch einen Kreis wiedergegeben, wobei jeder US 136-Kreis eine Darstellung der anzeigbaren Zeichen oder Symbole enthält, die in der Einheit enthalten sind. Die Zeiger, die die Einheiten miteinander verbinden, sind durch Pfeile mit dem Namen der Zeiger angegeben, z. B. SCHRIFT oder LINIENTEILUNG (LS) 0 oder 1, die entlang des zugehörigen Pfeiles angegeben sind. Es sei bemerkt, daß die sechste Einheit, die das "F" und den Anhängungspunkt enthält, die NÄCHSTE Einheit ist, und daß die erste Einheit, das ist die Einheit, die das "A" enthält, als weiterhin einen VORHERGEHENDEN-Zeiger zu der vorhergehenden Einheit aufweist, die ihrerseits nicht gezeigt ist. Es versteht sich des weiteren, obwohl es nicht ausdrücklich gezeigt ist, daß jede Einheit einen VORHERGEHENDEN-Zeiger zurück zur vorhergehenden Einheit zu dieser Einheit hat. Beispielsweise hat die zweite Einheit, das ist die Schrifteinheit, einen VORHERGEHENDEN-Zeiger zurück zu der ersten Einheit, so wie die dritte, vierte, fünfte und sechste Einheit. Es sei auch bemerkt, daß zu Zwecken der nachstehenden Diskussion, falls die sechste Einheit, das ist das "F", von weiterem Text gefolgt wäre, die sechste Einheit weitere Zeiger zu den nachfolgenden Einheiten hätte, daß der Anhängungspunkt in einer dieser nachfolgenden Einheit erscheinen würde, und daß eine der nachfolgenden Einheiten einen VORHERGEHENDEN-Zeiger zurück zu der sechsten Einheit hätte.
- Zu Zwecken der Diskussion sei angenommen, daß der Cursor ursprünglich an dem "A" der ersten Einheit steht und daß der Benutzer eine Bewegung des Cursors nach rechts, d. h. vorwärts durch EG 128 eingegeben hat, wobei der Editor die nächste Einheit bezüglich der ersten Einheit bestimmen muß, d. h. bezüglich des "A". Hinsichtlich der sichtbaren Darstellung des Textes, wie in Fig. 12A erläutert, könnten entweder die zweite Einheit, die die Hochschrift "2" enthält, die dritte Einheit, die "B" enthält oder die vierte Einheit, die "C" enthält, als die nächste Einheit betrachtet werden. Hinsichtlich der Baumstruktur von USs 136 jedoch, könnte wie in Fig. 12B veranschaulicht, jede der zweiten, dritten, vierten, fünften oder sechsten Einheiten als die nächste Einheit betrachtet werden.
- Wie vorstehend beschrieben, wird die Cursorbewegung zu und von den Schrifteinheiten direkt durch den Benutzer durch KB 114 ausgewählt und gesteuert, so daß die Frage, ob eine Schrifteinheit die nächste Einheit ist, direkt durch den Benutzer gelöst wird. Die Auswahl unter Linienteilungseinheiten, Stricheinheiten und vorhergehenden und nächsten Einheiten als die nächste Einheit zu Zwecken der Cursorbewegung, ist jedoch durch den Editor gelöst, wobei dies in der vorliegenden Ausführung des Editors wie nachstehend beschrieben erfolgt.
- Wie vorstehend beschrieben, enthält die US 136 von jeder Einheit Zeiger auf alle anderen Einheiten, die mit der Einheit verknüpft sind in STRUKTURELLE ZEIGERGRUPPE 514. Die Ordnung der Zeiger in STRUKTURELLE ZEIGERGRUPPE 514 wird durch den vorliegenden Editor verwendet, zusammen mit der Richtung der durch den Benutzer eingegebenen Cursorbewegung, um zu bestimmen, welche der mit der Einheit verknüpften Einheiten, in der der Cursor derzeit steht, für die Zwecke der Cursorbewegung die nächste Einheit sein wird. Das heißt und unter Annahme, daß die angezeigte Cursorbewegung vorwärts durch EB 128 (nach rechts in dem vorliegenden Beispiel) ist, daß der Editor die Felder LINIENTEILUNGSEINHEIT 562, STRICHEINHEIT 564, NÄCHSTE EINHEIT 566 und VORHERGEHENDE EINHEIT 568 in der US 136 der derzeitigen Einheit in dieser Reihenfolge lesen wird, um in jedem Fall zu bestimmen, ob eine derartige Einheit mit der momentanen Einheit verbunden ist. Die erste verbundene Einheit, die beim Lesen der STRUKTURELLE ZEIGERGRUPPE 514 der momentanen Einheit in der vorgegebenen Ordnung gefunden wird, wird durch den Editor als die nächste Einheit bestimmt.
- Wenn der Editor die "nächste" Einheit durch dieses Verfahren gefunden hat, wird der Editor die entsprechenden Zeiger von der STRUKTURELLEN ZEIGERGRUPPE 514 der derzeitigen US 136 lesen, und diese Zeiger werden dann in das Feld DERZEITIGE EINHEITSDATENZEIGER 843 der SSS geladen, und die "nächste" Einheit wird dann die derzeitige Einheit. Der Editor wird dann die Felder ANFANGSPOSITION, ANFANGSZEICHEN 518 und ELTLÄNGE 520 der US 136 lesen und durch den Parser 148 die zugehörige codierte Einheit lesen und zerteilen, d. h. EU 134 von EB 128, um die Versätze in EB 128 der ersten und der letzten Datenzeichen und der ersten Zeichen/Symbolcodes der ersten Gruppe von Gruppen von Codes in dieser EU 134 zu bestimmen. Diese Information wird dann in die Felder DERZEITIGE ZEICHENPUFFERSTEL- LUNG 852, DERZEITIGER ZEICHENPUFFERANFANG 853 und DERZEITIGES ZEICHENPUFFERENDE 854 der SSS 160 geschrieben, um die erste Stellung des Cursors in der Einheit zu bestimmen, in die sich der Cursor bewegt hat. Der Editor baut dann die Zeichen/Symbol-"Kästen" wie nachstehend beschrieben auf und wird den Ort und die Abmessungen des Cursors auf der Seite und dem Bildschirm wie vorstehend beschrieben bestimmen. Die Cursorbewegung kann dann in die nächste Einheit fortgesetzt werden, wie vorstehend beschrieben, und falls notwendig, zu einer anderen Einheit weitergehen, wie gerade vorstehend beschrieben.
- Wenn die vorstehend beschriebene Prozedur auf das vorliegende Beispiel angewendet wird, würde eine angezeigte Cursorbewegung nach rechts von der ersten Einheit der Fig. 12A und 12B, d. h. von dem "A" in einer Bewegung auf die oberste Linieneinheit der Linienteilung resultieren, d. h. auf die das "B" enthaltende Einheit. Falls dort keine mit der ersten Einheit verbundene Linienteilung wäre, hätte der Editor den Cursor zu dem "D" der Stricheinheit bewegt, und falls dort keine Linienteilung oder Stricheinheiten gewesen wären, zu der "nächsten" Einheit, die "F" und den Anhängungspunkt enthält.
- Um mit dem vorliegenden Beispiel fortzusetzen, bei dem der Cursor momentan in der obersten Linieneinheit der Linienteilung angeordnet ist, wie vorstehend beschrieben, und nach rechts entlang der Grundlinie dieser Linieneinheit bewegt werden würde, würde allmählich das Ende der Grundlinie erreicht werden, und der Cursor sollte dann nach unten zu der nächsten Linieneinheit der Linienteilung oder zu der nächsten Einheit gelangen, falls dort keine nächste Linieneinheit in der Linienteilung vorhanden ist. Der Editor führt diese Operation dadurch aus, daß erneut der oben beschriebenen Prozedur gefolgt wird. Das heißt, der Editor liest zunächst der Felder der STRUKTURZEIGERGRUPPE 514 der US 136 der vorliegenden Einheit in der beschriebenen Reihenfolge und wird die erste zugehörige Einheit bestimmen, um in der nächsten Einheit angeordnet zu werden. In dem vorliegenden Beispiel ist der Cursor derzeit in der US 136 der obersten Linieneinheit der Linienteilung und der Editor sucht die "nächste" Einheit durch Lesen der Felder der STRUKTURZEIGERGRUPPE 514 dieser Einheit.
- Wie in Fig. 12B und vorstehend beschrieben, ist die oberste Linieneinheit der Linienteilung die letzte Einheit entlang dieses Zweiges des US 136-Baumes und wird keine Zeiger außer einem VORHERGEHENDE EINHEIT 568-Zeiger zurück auf die erste Einheit enthalten. Der Editor wird dadurch dem VORHERGEHENDE EINHEIT-Zeiger zurück zu der US 136 der ersten Einheit folgen und wird die "nächste" Einheit bestimmen, indem in der STRUK- TURZEIGERGRUPPE 514 der ersten Einheit der nächste verfügbare Zeiger nach dem Zeiger gefunden wird, der auf die Einheit zeigt, von der gerade zurückgekehrt worden ist. Dieser nächste Zeiger wird in dem vorliegenden Beispiel auf die zweite Linieneinheit der Linienteilung deuten und die zweite Linieneinheit der Linienteilung wird dann die "nächste" Einheit, zu der sich der Cursor bewegt, wie vorstehend beschrieben. Um zusammenzufassen, wenn der Editor das Ende eines Zweiges in dem Baum von USs 136 erreicht, wird der Editor dem vorhergehenden Einheitszeiger oder -Zeigern zurück zu dem ersten verfügbaren Verzweigungspunkt in der Baumstruktur folgen, d. h. zu der ersten US 136, die einen Zweig hat, der noch nicht beschritten wurde, und wird finden und diesem nächsten verfügbaren Zweig folgen, um die nächste Einheit zu finden.
- Dieser Prozedur für eine fortgesetzte Rechtsbewegung des Cursors durch das Beispiel der Fig. 12A und 12B folgend, würde der Editor die rechtsgerichtete Cursorbewegung zum Ende der ersten Einheit der Linienteilung fortsetzen und würde dann zu der ersten Einheit zurückkehren, um den nächsten verfügbaren Zweig zu finden und ihm in der geordneten Abfolge der Zeiger in den Feldern der STRUKTURZEIGERGRUPPE 514 in der ersten Einheit folgen. Diese nächste Verzweigung wäre die zu der zweiten Linieneinheit der Linienteilung und würde durch den LS1-Zeiger in den Linienteilungszeigern der STRUKTURZEIGER- GRUPPE 514 der ersten Einheit gezeigt werden. Mit fortgesetzter Rechtsbewegung des Cursors, würde der Editor das Ende der zweiten Linieneinheit der Linienteilung finden und zu der ersten Einheit zurückkehren, um die nächste verfügbare Abzweigung zu finden, das ist, zu der durch den Zeiger in dem Feld der STRICHEINHEIT 564 in der ersten gezeigt wird. Beim Fortsetzen der Rechtsbewegung zum Ende der Stricheinheit würde der Editor zu der ersten Einheit zurückkehren, um erneut die Abzweigung zur nächsten verfügbaren Einheit in der Abfolge zu finden, diese nächste Einheit wäre die Einheit, die das "F" und den Anhängungspunkt enthält, und der Zeiger in dem Feld NÄCHSTE EINHEIT 566 in der ersten Einheit würde darauf deuten, usw..
- Falls, wie vorstehend diskutiert, die das "F" enthaltende Einheit nicht die letzte Einheit in dem Text wäre, würde der Editor fortsetzen, den Cursor durch Folgen des Baums von Zeigern und USs 136 nach rechts zu bewegen von der "F"-Einheit in der vorstehend beschriebenen Weise.
- Schließlich ist im Fall der Cursorbewegung rückwärts durch EB 128, d. h. nach links in dem vorliegenden Beispiel der Fig. 12A und 12B, die Funktionsweise des Editors ähnlich zu der wie vorstehend beschrieben, abgesehen davon, daß das Durchwandern der Zweige in umgekehrter Reihenfolge erfolgt. Das heißt, die Richtung wird vorgegeben, um den Cursor rückwärts durch eine vorgegebene Einheit zu bewegen, dann wird der Editor dem VORHERIGE EINHEIT-Zeiger dieser Einheit zurück zu der vorhergehenden Einheit folgen und wird so fortsetzen, bis eine Einheit erreicht ist, die mehrere Vorwärtsverzweigungen hat, so wie die erste Einheit in dem vorliegenden Beispiel. Wenn eine solche Einheit erreicht wird, wird der Editor durch die STRUKTURZEIGERGRUPPE 514 dieser Einheit in umgekehrter Reihenfolge suchen, d. h. in der Reihenfolge STRICHEINHEIT 564 und die möglichen LINIENTEILUNGSEINHEIT 562-Zeiger, um den Zeiger zu finden, der den Zeiger als nächstes zu der Einheit des Editors folgt, von der der Editor gerade kommt.
- Unter Betrachtung des derzeitigen Beispiels und unter der Annahme, daß der Cursor ursprünglich in der letzten Einheit von Fig. 12A, das ist das "F" und Anhängungspunkt enthaltende Einheit ist, würde eine Cursorbetätigung für eine Linksbewegung den Cursor dazu veranlassen, den VORHERGEHENDE EINHEIT 568-Zeiger dieser Einheit zu lesen, um die US 136 zu finden, auf die gezeigt wird, das ist die US 136 der ersten Einheit. Wie beschrieben, hat die erste Einheit viele Vorwärtsverzweigungen und der Editor muß bestimmen, welcher Zweig zu der nächsten Einheit führt, die der Einheit vorangeht, in der der Cursor ursprünglich angeordnet ist.
- Wie in Fig. 12B gezeigt, sind die möglichen Verzweigungen durch den Stricheinheits-Zeiger angezeigt, die die Stricheinheit enthält, den LS1-Zeiger zu der zweiten Linieneinheit der Linienteilung und den LS0-Zeiger zu der ersten Linieneinheit der Linienteilung. Der Editor wird die Felder der STRUKTURZEI- GERGRUPPE 514 in umgekehrter Reihenfolge wie bei der Cursorvorwärtsbewegung durchsuchen, um den Zeiger zu finden, der dem NÄCHSTEN-Zeiger zu der Einheit vorangeht, von der der Cursor gerade kommt. In diesem Beispiel wird der Editor den STRICH- EINHEITS-Zeiger zu der Stricheinheit finden und wird den Cursor auf das letzte Zeichen in der Stricheinheit, d. h. das "E" setzen. Falls der Cursor gerichtet wird, um weiter in die Rückwärtsrichtung sich zu bewegen, wird der Editor den Cursor rückwärts durch die Zeichen und Symbole dieser Einheit bewegen, bis das erste Zeichen oder Symbol in der Einheit erreicht worden ist, in diesem Fall das "D" der Stricheinheit. Falls der Cursor erneut rückwärts bewegt wird, wird der Editor dem VORHERGEHENDE EINHEITS-Zeiger der Stricheinheit zurück bis zu der US 136 der ersten Einheit folgen und wird erneut rückwärts durch die Felder der STRUKTURZEIGERGRUPPE 514 der ersten Einheit suchen, den LS1-Zeiger zu der zweiten Linieneinheit der Linienteilung finden und den Cursor zu der zweiten Linie der Linienteilung bewegen. Mit der fortgesetzten Rückwärtsbewegung des Cursors wird der Editor den Cursor rückwärts durch die zweite Linieneinheit der Linienteilung zu dem Anfang der zweiten Linieneinheit der Linienteilung führen. Der Editor wird dann dem VORHERGEHENDE EINHEIT-Zeiger der zweiten Linieneinheit zurück zu der US 136 der ersten Einheit folgen und wird sie erneut durch die Zeiger der ersten Einheit von dem Zeiger zu der zweiten Linieneinheit der Linienteilung durchsuchen. Der nächste Zeiger ist, wie beschrieben, auf die erste Linieneinheit der Linienteilung gerichtet. Die Operation, den Cursor rückwärts durch den Text zu bewegen, wird fortgesetzt, bis der Editor sämtliche der Vorwärtszweige von der ersten Einheit durchsucht hat. Falls weitere Rückwärtsbewegung des Cursors befohlen wird, wird der Editor dann dem ersten VORHER- GEHENDE EINHEITS-Zeiger der ersten Einheit bis zu der Einheit zurückfolgen, die der ersten Einheit vorangeht usw., wie beschrieben.
- Nachdem die Cursorbewegung innerhalb einer Einheit und zwischen Einheiten in beiden Richtungen durch EB 128 beschrieben worden ist, wird nachstehend die Cursorbewegung zwischen Textlinien beschrieben. Cursorbewegungen betreffend diakritische Zeichen werden in einer nachfolgenden Beschreibung des Aufbaus von diakritischen Zeichen beschrieben.
- Bewegungen zwischen Zeilen des Textes können zum Beispiel auftreten aufgrund einer direkten Eingabe durch den Benutzer und als ein Ergebnis einer Cursorbewegung entlang einer Linie, die das Ende dieser Linie erreicht und die zum Weiterbewegen des nächsten Zeichens/Symbols gerichtet wird, das auf einer anderen Linie sein wird. Wie vorstehend beschrieben, ist jedoch der Text, für den der vorliegende Editor gedacht ist, entweder multidimensional oder multidirektional, oder beides, und die Zeichen und Symbole sind nicht notwendigerweise von gleichförmiger Größe oder Proportion und sind nicht notwendigerweise in einem Bildschirm oder Dokument angeordnet, oder in einer Beziehung zueinander in einer gleichförmigen, vorhersehbaren oder regelmäßigen Weise. Aufgrund dessen können Cursorbewegungen zwischen Zeilen nicht einfach durch Bewegen des Cursors in vertikaler Richtung zu einer anderen Linie ausgeführt werden. Das heißt, die Grundlinie einer nächsten Linie ist nicht in einem festen vorher bekannten Abstand von einer momentanen Linie, und die Zeichen/Symbole sind nicht notwendigerweise vertikal zueinander ausgerichtet von Zeile zu Zeile.
- Aufgrund der vorstehenden Gründe ist die Cursorbewegung von einer Linie zur nächsten nicht durch direkte vertikale Bewegung in dem vorliegenden Editor ausgeführt. Statt dessen ist eine Cursorbewegung von einer Linie zu einer anderen Linie zum Anfang der Linie, zu der die Bewegung geht, wobei der Cursor dann entlang der neuen Linie zu der gewünschten Position bewegt wird.
- In dem Anfangsschritt muß der Editor bestimmen, daß eine Cursorbewegung zu einer neuen Linie erforderlich ist. Der Editor kann dies von der Benutzercursor-Befehlseingabe bestimmen, z. B. daß der Cursor sich nach oben oder nach unten von der derzeitigen Linie zu bewegen hat, oder durch Bestimmen, daß die angegebene Cursorbewegung über das Ende der vorliegenden Linie hinausgehen wird. Im letzteren Fall wird der Cursor das Ende der Linie erfassen, während der Cursor durch den Baum der USs 136 wandert, die die Linie bilden, wie vorstehend beschrieben, wenn er die letzte Einheit in dem Baum lokalisiert, d. h. wenn er einen Punkt erreicht, an dem ein weiterer Vorwärts- oder Rückwärtspfad durch die Baumstruktur vorhanden ist, in Abhängigkeit von der Richtung der Cursorbewegung.
- Falls eine Cursorbewegung zu einer anderen Linie angezeigt ist, muß der Editor die nächste Linie und die erste Einheit der nächsten Linie finden. Wie angegeben in Fig. 8A und 8B, und wie vorstehend beschrieben, umfaßt SSS 160 in der DERZEI- TIGE BILDSCHIRMGRUPPE 808 einen Satz von LINIENDATENZEIGER 839, die Zeiger auf die LDSs 162 der vorliegenden Seite enthalten. Diese Zeiger und die LDSs 162 umfassen ein geordnetes Feld, so daß eine nächste Linie durch Inkrementieren oder Dekrementieren durch die LINIENDATENZEIGER 839 und zugehörige LDSs 162 gefunden werden kann. Es sei bemerkt, daß es in bestimmten Fällen keine nächste Linie geben kann, zu der gegangen werden kann. Dieser Fall kann auftreten, wenn der Cursor rückwärts durch die erste Linie oder vorwärts durch die letzte Linie wandert. Der erste Fall wird durch den Editor erkannt, wenn er den Anfang der ersten Einheit der Linie erreicht und in dem zweiten Fall durch das Vorhandensein des Anhängungspunktes am Ende der letzten Linie in dem Baum. In letzterem Fall kann der Benutzer entweder die momentane Linie durch Anhängen weiteren Textes fortsetzen und eine neue Zeile beginnen. Es sei bemerkt, daß im Hinblick auf das vorherstehende eine Bewegung auf eine nächste oder vorhergehende Linie auch eine Bewegung auf die nächste oder vorhergehende Bildschirmseite erfordern kann.
- Die LDS 162, die der nächsten Linie entspricht, enthält, wie vorstehend beschrieben, ein STARTPOSITIONS 902-Feld, das einen Versatzzeiger auf den Anfang der ersten Einheit (EU 134) dieser Linie in EB 128 und eine ANFANGSEINHEIT VON LINIENZEI- GER 904-Feld umfaßt, das einen Zeiger zu der zugehörigen ersten US 134 der Linie enthält. Dieser Zeiger wird in das DERZEITIGE EINHEITSDATENZEIGER 834-Feld von SSS geschrieben. Der Cursor wird dann in die erste Einheit in der neuen Linie bewegt und dargestellt in der vorstehend beschriebenen Weise unter Bezugnahme auf die Bewegung zwischen Einheiten. In diesem Prozeß werden die Felder DERZEITIGE ZEICHENPUFFERPOSI- TION 852, DERZEITIGER ZEICHENPUFFERANFANG 853 und DERZEITIGES ZEICHENPUFFERENDE 854 für die neue Einheit, die nun durch den Cursor besetzt wird, aktualisiert und die Felder DERZEITIGER ZEICHEN KASTEN 881 und DERZEITIGER BASIS KASTEN 882 werden für das Zeichen/Symbol an der neuen Cursorposition aufgebaut und der Cursor wird in der Seite und auf dem derzeitigen Bildschirm angeordnet und dimensioniert.
- Es sei bemerkt, daß die neue Linie tatsächlich nicht "aufgebaut" sein kann, d. h. sie kann in EB 128 vorhanden sein, aber die zugehörige USs 134 braucht nicht in LUS 130 existieren, wenn der Cursor in die Linie zu bewegen ist. In diesem Fall wird der Editor Parser 148 aufrufen, der seinerseits die EUs 134 der Linie von EB 128 lesen wird und die zugehörigen USs 136 aufbauen wird, wie vorstehend beschrieben. Der Editor wird dann die ANFANGSEINHEIT VON LINIENZEIGER 904-, ANFANGSORT 906- und LINIENABMESSUNGEN 908-Information in die LDS 162 der Linie einschreiben und mit den gerade vorstehend beschriebenen Schritten weiterfahren.
- In dem Fall, in dem die neue Linie noch nicht existiert, muß der Editor zuerst die erste US 136 der neuen Linie erzeugen, wenn die Codes der EU 134 in EB 128 eingegeben werden, wie vorstehend beschrieben, und muß eine neue LDS 162 erzeugen mit zugehörigen Einträgen in die LINIENDATENSTRUKTURZEIGER 832 von SSS. Der Editor wird den Cursor in die neue Einheit bewegen, wenn sie erzeugt worden ist, in der gerade vorstehend beschriebenen Weise.
- Nachdem die Cursoroperationen des vorliegenden Editors beschrieben worden sind, werden bestimmte Texterzeugungs- und Editieroperationen nachstehend beschrieben. Unter den im folgenden beschriebenen Operationen befinden sich Beschreibungen der Editortexterzeugung und Editoroperationen, die die Erzeugung von Einheiten, inklusive der Erzeugung von Zeichen mit angefügten diakritischen Zeichen und den Aufbau eines exemplarischen Segmentes von Text umfassen, das aus einer Vielzahl von Einheiten besteht und der Zusammenfügung dieser Einheit in ein Segment einer Textlinie auf einer Seite. Schließlich werden die durch den Editor ausgeführten Einfügungs- und Verbergungsoperationen beschrieben.
- Wie vorstehend beschrieben, sind diakritische Zeichen, Symbole oder Marken, obwohl sie in vielen Fällen wie andere Zeichen und Symbole behandelt werden, anders als Schriften behandelt. Das heißt, diakritische Zeichen, Symbole oder Marken werden direkt mit einem einzigen Stammzeichen zusammengefügt und werden Teil der Definition des Stammzeichens, anstatt als eine Einheit behandelt zu werden, die an eine Stammeinheit angefügt worden ist.
- Nachstehend wird auf Fig. 13A bis 13F Bezug genommen. Darin ist der Aufbau eines Stammzeichens mit drei angefügten diakritischen Zeichen dargestellt. Dieses Beispiel und die nachfolgende Beschreibung folgen der allgemeinen Konvention von englischem Text, d. h. von Text, der horizontal von links nach rechts verläuft für die Einfachheit des Durchschnittslesers. Es sei bemerkt, daß, wie in bezug auf die vorhergehenden Beispiele der Editoroperation beschrieben worden ist, auch andere Textübereinkünfte auf den vorliegenden Editor ohne weiteres angepaßt werden können.
- Wie in Fig. 13A gezeigt, soll das endgültige Ergebnis des Aufbaus das Stammzeichen "A" mit zwei über-diakritischen Zeichen und einem unter-diakritischen Zeichen sein. Das erste über-diakritische Zeichen ist als ein Doppelpunkt dargestellt, z. B. um die zweite Ableitung von "A" wiederzugeben, während das zweite über-diakritische Zeichen als ein Vektorzeichen gezeigt ist; der Ausdruck kann daher z. B. einen Vektor wiedergeben, der die zweite Ableitung der Vektorfunktion "A" ist. Das unter-diakritische Zeichen ist als eine Tilde gezeigt.
- Wie vorstehend beschrieben, umfaßt SSS 160 in der Parametergruppe 820 ein DERZEITIGER ZEICHEN KASTEN 881-Feld und ein DERZEITIGER STAMM KASTEN 882-Feld. Während des Aufbaus eines Zeichens, das ein Stammzeichen mit angefügten diakritischen Zeichen enthält, enthält das DERZEITIGER STAMM KASTEN 882-Feld zu jedem Schritt in dem Aufbau die Abmessungen, d. h. die x- und y-Erstreckungen eines "Kastens", das das Stammzeichen mit allen diakritischen Zeichen umfaßt, die zu dem Stammzeichen bis zu diesem Zeitpunkt angefügt worden sind. Das DERZEITIGE ZEICHEN KASTEN 881-Feld enthält zu jedem Schritt die Abmessungen des Zeichens, das zu dem Aufbau bei diesem Schritt zugefügt wird. In der nachfolgenden Beschreibung wird der Inhalt der Felder DERZEITIGES ZEICHEN KASTEN 881- und DERZEITIGES STAMM KASTEN 882-Feld graphisch in den Fig. 13A bis 13F durch jeweils einen derzeitigen Zeichen-Kasten 1202 und einen derzeitigen Stamm-Kasten 1204 dargestellt. Es sei bemerkt, daß im folgenden der Ursprungspunkt des Zeichenaufbaus der links beginnende Grundlinienpunkt des Zeichens oder in anderen Zeichen oder Symbolen, z. B. Schriften, ein ähnlich bestimmter Referenzpunkt vorhanden ist. In dem vorliegenden Beispiel ist der links beginnende Grundlinienpunkt an der unteren linken Ecke des Stammzeichens, an das die diakritischen Zeichen angefügt werden, d. h. die untere linke Ecke des Kastens, der das Stammzeichen umfaßt, und alle Abmessungen werden von diesem Punkt aus gemessen.
- In dem ersten in Fig. 13B erläuterten Schritt, wird das Zeichen "A" als das erste und derzeitige Zeichen des Aufbaus eingegeben und die x- und y-Abmessungen von "A" werden in dem DERZEITIGES ZEICHEN KASTEN 881 geschrieben, um einen derzeitiges Zeichen-Kasten 1302a zu definieren, der ein "A" innerhalb seiner Begrenzungen umschließt. Da "A" das einzige Zeichen zu diesem Zeitpunkt ist, werden die x- und y-Abmessungen des derzeitige Stamm-Kastens 1302, die zum Beginn der derzeitigen Operation null waren, nun die von "A".
- In dem zweiten, in Fig. 13C veranschaulichten Schritt, wird das erste über-diakritische Zeichen zu dem Stammzeichen "A" zugefügt. Der ursprüngliche derzeitige Stamm-Kasten 1304a für diesen Schritt ist der von dem Kasten, der das Stammzeichen "A", wie vorstehend beschrieben, umfaßt. Das erste über-diakritische Zeichen ist das neue momentane Zeichen und die x- und y-Erstreckungen des ersten über-diakritischen Zeichens werden daher in das Feld DERZEITIGER ZEICHEN KASTEN 881 geschrieben, um die Abmessungen eines neuen derzeitigen Zeichen- Kastens 1302b zu definieren, der das erste über-diakritische Zeichen umfaßt. Die Zufügung des ersten diakritischen Zeichens zu dem Stammzeichen "A" in diesem Schritt resultiert in einem neuen derzeitiger Stamm-Kasten 1304b, der, wie in Fig. 13D angezeigt, ein Stammzeichen "A" und das erste über-diakritische Zeichen umfaßt und diese Abmessungen werden in das Feld DERZEITIGER STAMM KASTEN 882 eingeschrieben.
- In dem dritten Schritt, wie in Fig. 13D veranschaulicht, wird das zweite über-diakritische Zeichen zu dem Aufbau hinzugefügt, der an diesem Punkt das Stammzeichen "A" und das erste über-diakritische Zeichen umfaßt. Wie vorstehend beschrieben, sind die Abmessungen in dem Feld DERZEITIGER STAMM KASTEN 882 zu Beginn dieses Schritts gespeichert und es sind die maximalen y- und y-Abmessungen des Stammzeichens "A" mit den Abmessungen, die erforderlich sind, um das über-diakritische Zeichen zu umschließen, die den derzeitige Stamm-Kasten 1304b bestimmen. Das neue derzeitige Zeichen in diesem Schritt ist selbstverständlich das zweite über-diakritische Zeichen, so daß die x- und y-Abmessungen des zweiten über-diakritischen Zeichens in das Feld DERZEITIGER ZEICHEN KASTEN 881 geschrieben werden, um einen neuen derzeitiger Zeichen-Kasten 1302 für diesen Schritt zu definieren. Die Hinzufügung des zweiten diakritischen Zeichens zu dem Aufbau umfaßt das Stammzeichen "A" mit dem ersten über-diakritischen Zeichen, das in einer neuen derzeitiger Stamm-Kasten 1304c resultiert, die, wie in Fig. 13E angegeben, das Stammzeichen "A" und die ersten und zweiten über-diakritischen Zeichen umfaßt. Die Erstreckungen des neuen derzeitiger Stamm-Kasten 1304C werden in das Feld DERZEITIGER STAMM KASTEN 882 geschrieben, um die Abmessungen des Gesamtaufbaus zu diesem Zeitpunkt zu definieren.
- In dem vierten Schritt, dargestellt in Fig. 13E, wird das unter-diakritische Zeichen zu dem Aufbau, der das Stammzeichen "A" zusammen mit dem ersten und zweiten über-diakritischen Zeichen enthält, zugefügt. Wie vorstehend beschrieben, sind die Abmessungen in dem Feld DERZEITIGER STAMM KASTEN 882 gespeichert und zum Beginn dieses Schritts sind dies die maximalen x- und y-Abmessungen des Stammzeichens "A" mit den Abmessungen, die erforderlich sind, um die ersten und zweiten über-diakritischen Zeichen zu umfassen, die das derzeitiger Stamm-Kasten 1304c definieren. Das neue derzeitige Zeichen ist das unter-diakritische Zeichen, so daß die x- und y-Abmessungen des das unter-diakritische Zeichen umfassenden Kastens in das Feld DERZEITIGER ZEICHEN KASTEN 881 geschrieben werden, um das derzeitiges Zeichen-Kasten 1302d-Feld zu definieren. Die Hinzufügung des unter-diakritischen Zeichens zu dem Aufbau, der das Stammzeichen "A" mit den ersten und zweiten über-diakritischen Zeichen enthält, resultiert in einem neuen derzeitiges Stammzeichen 1302d, wie in Fig. 13F angezeigt, das ein Stammzeichen "A", das erste und zweite über-diakritische Zeichen sowie das unter-diakritische Zeichen umschließt. Die Abmessungen des neuen derzeitiger Stamm-Kasten 1304d werden in das Feld DERZEITIGER STAMM KASTEN 882 geschrieben, um die Abmessungen des Gesamtaufbaus bis zu diesem Zeitpunkt zu definieren. Zu diesem Zeitpunkt sind keine weiteren diakritischen Zeichen zu dem Aufbau hinzuzufügen, so daß die Operation beendet ist.
- Wie vorstehend unter Bezugnahme auf die Dokumentdatenstrukturen beschrieben und insbesondere die USs 136 und die Funktionsweise des Parser 148, enthält die US 136 einer Einheit, die Felder EINHEITSABMESSUNGEN 524 und ERSTRECKTE ABMESSUNGEN 526, die die x- und y-Abmessungen der Einheit beschreiben. Diese Abmessungen sind ihrerseits verwendet, wie vorstehend beschrieben, um eine Einheit innerhalb einer Linie und auf einer Seite anzuordnen. Die Abmessungen eines Stammzeichens mit angefügten diakritischen Zeichen, wie oben beschrieben bestimmt, werden verwendet durch den Editor in diesen Bestimmungen des Stammzeichens und ausgedehnten Abmessungen der Einheit, die ein Zeichen mit angefügten diakritischen Zeichen enthält.
- Schließlich und wie vorstehend beschrieben, stellt der vorliegende Editor einen Mechanismus bereit, durch den der Benutzer diakritische Zeichen für Editieroperationen bestimmen kann. Wie soeben vorstehend beschrieben, werden diakritische Zeichen jedoch insofern anders als zum Beispiel Stammzeichen und Schriften und Stricheinheiten behandelt, als sie mit einem Stammzeichen direkt verbunden und ein Teil davon sind, anstatt davon getrennte Einheiten zu sein. Die Einrichtungen, durch die der Benutzer ein diakritisches Zeichen für eine Editieroperation bestimmen kann, weichen daher in entsprechender Weise von den Cursoroperationen ab, wie sie vorstehend beschrieben sind, und spiegeln die Behandlung der diakritischen als mit einem Stammzeichen verbunden und als Teil davon aufgebaut dar.
- Wie vorstehend beschrieben, sind alle Operator-, Parameter-, Terminator- und andere Codes, die mit einem Zeichen verbunden sind, in Verbindung mit dem Zeichencode des Zeichens in EB 128 angeordnet. Falls ein vorgegebener Zeichencode in EB 128 durch das Feld DERZEITIGE ZEICHENPUFFERPOSITION 852 gefunden ist, das die derzeitige Cursorposition definiert, können die zugeordneten Codes inklusive sämtlicher diakritischer Operator- und Zeichencodes ebenfalls gefunden werden, indem die Codes in dem Abschnitt von EB 128 gelesen werden, der durch die Felder DERZEITIGER ZEICHENPUFFERANFANG 853 und DERZEITIGES ZEICHENPUFFERENDE 854, wie vorstehend beschrieben, definiert ist.
- In dem vorliegenden Editor beginnt der Benutzer eine Operation bezüglich eines diakritischen Zeichens daher durch Bewegen des Cursors, wie vorstehend beschrieben, zu dem Stammzeichen des diakritischen Zeichens. Das diakritische Zeichen selbst und die auszuführende Operation können dann in einer Vielzahl von Weisen bestimmt werden. Beispielsweise kann der Benutzer einen diakritischen Befehl eingeben, entweder als einzelnen Funktionstastenanschlag oder als eine Kombination von Steuertastenanschlägen, wie in bezug auf die Schriften vorstehend beschrieben, und kann dann das jeweilige diakritische Zeichen bestimmen, falls es mehr als eines gibt, durch die Verwendung der Cursortasten oder durch einen diakritischen Zeichentastenanschlag. Der Befehl, der die auszuführende Operation bestimmt, z. B. ein LÖSCHEN, kann entweder vorher oder nachdem das jeweilige diakritische Zeichen gekennzeichnet ist, eingegeben werden, in Abhängigkeit von der gewählten Editorübereinkunft.
- In der vorliegenden Implementierung des Editors sind die diakritischen Zeichen, wie beschrieben, direkt mit einem Zeichen verknüpft und werden in dieser Hinsicht als einen Teil des Erscheinungsbildes, das dem Zeichen zugeordnet ist, umfassend behandelt, analog einer Schriftart, Schrägschrift oder Schriftgrößenbestimmung. Dementsprechend positioniert der Benutzer den Cursor unter dem Stammzeichen, gibt das Zeichen für die auszuführende Operation ein, z. B. LÖSCHEN, und gibt dann ein Erscheinungsbild-Tastaturanschlagbefehl. Der Editor reagiert darauf durch Anzeigen in einer menüartigen Anzeige, die der ANZEIGE 116 überlagert ist, aller Erscheinungsbildeigenschaften, die mit diesem Zeichen verknüpft sind, inklusive aller zugehörigen diakritischen Zeichen. Der Benutzer kann dann das diakritische Zeichen von dem Menü auswählen, z. B. unter Verwendung der Cursortasten, und der Editor wird dann die angezeigte Operation auf das angezeigte diakritische Zeichen ausführen.
- Nachdem die Operation des Editors in bezug auf die Cursorbewegung und die Erzeugung und Editierung von diakritischen Zeichen beschrieben wurde, wird nachstehend die allgemeine Funktionsweise des Editors beim Aufbau von Einheiten beschrieben.
- Die bestimmte Weise, in der ein Stammzeichen mit angefügten diakritischen Zeichen aufgebaut wird, wurde vorstehend beschrieben und die allgemeine Funktionsweise von Parser 148 beim Aufbau von Text, d. h. in Linien zusammengefügten Einheiten, wurde vorstehend beschrieben. Im nachfolgenden wird weiter die Funktionsweise des Editors erläutert durch Beschreiben des Aufbaus eines beispielhaften Textabschnitts, der aus einer Anzahl von Einheiten zusammengesetzt ist, und eine nachfolgende Beschreibung wird die Funktionsweise des vorliegenden Editors beim Strukturieren von Einheiten in Textlinien weiter erläutern.
- In der nachfolgenden Beschreibung und den Zeichnungen werden zur Klarheit von Darstellung und Verständnis bestimmte Übereinkünfte verwendet. Zunächst sei angenommen, daß der Text in dem Beispiel von links nach rechts läuft und das x-y-Koordinationssystem, das verwendet wird, um auf bestimmte Orte auf einer Seite Bezug zu nehmen, wird annehmen, daß x die Horizontalachse mit positiven Werten nach rechts von dem x-Ursprung ist, während y die Vertikalachse mit positiven Werten von dem y-Ursprung nach oben ist. Diese Koordinaten sind für die nachfolgenden Beispiele gewählt, da die Beispiele zum einfacheren Verständnis durch den typischen Leser die englische Sprachkonvention verwenden, daß Textlinien von links nach rechts und aufeinanderfolgende Linien von oben nach unten geschrieben und gelesen werden. Zum zweiten zeigen die nachfolgenden Beschreibungen und Figuren den Aufbau von Einheiten mit Kästen und Linien, die die Abmessungen der Einheit und ihrer Grundlinien umrahmen. Die nachstehenden Figuren sind als geringfügig "auseinandergezogene" Darstellungen gezeigt, so daß Linien, die sonst übereinanderliegen würden, in einer dichten nebeneinanderliegenden Beziehung erscheinen.
- Wie vorstehend beschrieben, sind die logische Struktur und der Inhalt jeder Einheit in einer EU 134 in EB 128 gespeichert, während die Information, die benötigt wird, um die physikalischen und bildlichen Eigenschaften der Einheit zu beschreiben, in einer zugehörigen US 136 in LUS 130 gespeichert sind. Wie beschrieben, umfaßt die US 136 für eine Einheit Information, die den Anfangsort der zugehörigen EU 134 in EB 128 (STARTPO- SITION 516), den Ort des ersten Zeichens oder Symbols in EB 128 (STARTZEICHEN 518) und die Länge der EU 134 (ELTLÄNGE 520) umfaßt, so daß die Zeichen/Symbol-, Operator-, Parameter- und Terminatorcodes, die die Einheit in EU 128 bilden, durch den Parser 148 gefunden werden können.
- Unter der in der zugehörigen US 136 gespeicherten Information ist ein ANFANGSORT 522, der aus zwei Feldern besteht, die die absoluten x- und y-Orte auf der Seite für den Anfang des Abschnitts einer Linie enthalten, die die Einheit umfaßt. Eine EINHEITSABMESSUNGEN 524 enthält eine Gruppe von vier Feldern, die die maximalen und minimalen x- und y-Erstreckungen der Einheit in jeder Richtung um ANFANGSORT enthalten, d. h. die Abmessungen der Einheit. Eine ERSTRECKTE ABMESSUNGEN 526 enthält eine Gruppe von vier Feldern, die die maximalen und minimalen x- und y-Erstreckungen enthalten, d. h. die Abmessungen der Einheit zusammen mit der nächsten Einheit, allen Schriften, Linienteilungen und Stricheinheiten, die von der Einheit zum Ende der derzeitigen Grundlinie in jeder Richtung um ANFANGSORT verbunden sind. Die verbleibenden Felder in der US 136 enthalten zum Beispiel Informationen betreffend die Schriftart-Größenveränderungsfaktoren zum Anfang und am Ende der Einheit, Strukturflags und Zeiger aufalle zugehörigen Einheiten, die mit dieser Einheit verbunden sind. Die zugeordneten Einheiten umfassen die nachfolgenden und vorhergehenden Einheiten, alle Schrifteinheiten und die die individuellen Linien einer zugeordneten Linienteilung enthaltenden Einheiten.
- Nun sei auf Fig. 14 Bezug genommen, in der zu Erläuterungszwecken ein Teil einer Textlinie dargestellt ist, die sieben Einheiten umfaßt. Es sei bemerkt, daß Fig. 14 von dem vorhergehend erläuterten Beispiel des Textes in Fig. 12A insoweit abweicht, als die Editor- und Formatbefehle, z. B. das Linienteilungssymbol aus Gründen der Klarheit der Darstellung und Diskussion weggelassen worden sind. Der Anhängungspunkt ist aus den gleichen Gründen nicht dargestellt, da der Ort des Anhängungspunkts während des Verlaufs der nachstehenden Diskussion des Aufbaus des Textes sich verändern würde. Das Beispiel von Fig. 14 erscheint daher, wie der Text in vollendeter Form auf einer gedruckten Seite erscheinen würde, anstatt so wie er auf dem Bildschirm 116 während des Editierens gezeigt ist.
- Die in Fig. 14 gezeigte erste Einheit ist als Einheit 1402 bezeichnet und besteht aus einem einzigen Zeichen, dem kleinen "g". Die zweite Einheit ist eine Stammeinheit, die als Stammeinheit (BU) 1404 bezeichnet ist und besteht aus einem einzigen Zeichen, dem großen "A", mit einem zugeordneten über-diakritischen Zeichen. Die dritte Einheit ist eine Vorhochschrifteinheit (PSupU) 1406, die mit BU 1404 verbunden ist.
- Die vierte, fünfte und sechste Einheit zusammen bilden eine Linienteilungseinheit in der Hochschriftposition bezüglich BU 1404. Die Linienteilungseinheit hat einen Parameterwert von n=1, wodurch angezeigt ist, daß eine Linienteilung in zwei Linien mit einem Bruchstrich dazwischen auf der Zwischenlinie angeordnet ist, die die beiden Linien trennt. Wie vorstehend beschrieben, besteht jede Linie einer Linienteilung aus wenigstens einer geteilten Einheit, und die beiden Einheiten dieser beispielhaften Linienteilung sind als Linienteilungseinheit (LSU) 1408a und Linienteilungseinheit (LSU) 1408b bezeichnet. Wie nachstehend beschrieben, ist eine Linienteilung stets auf einer örtlichen Grundlinie angeordnet. In diesem Fall, in dem die Linienteilung in der Hochschriftposition ist, ist die örtliche Grundlinie für die Linienteilung durch eine Hochschrifteinheit gebildet. Die Hochschrifteinheit ist in Fig. 14 nicht explizit gezeigt, da sich die Hochschrifteinheit hauptsächlich als eine Grundlinie für LSU 1408a und LSU 1408b darstellt.
- Die endgültige Einheit von Fig. 14 ist eine Tiefschrifteinheit von BU 1404 und ist als Tiefschrifteinheit (SubU) 1410 bezeichnet.
- Zuerst sei Einheit 1402 betrachtet. Wie vorstehend beschrieben, bestimmt Parser 148 die ANFANGSORT 522-y-Koordinate des ersten Zeichens oder Symbols einer Einheit, das auf der vorliegenden Grundlinie sein soll, wenn nicht eine andere Grundlinie durch den Benutzer, beispielsweise durch Anzeigen, daß das erste Zeichen das erste Zeichen einer Schrifteinheit ist, bestimmt wird. Der Parser 148 wird die ANFANGSORT 522-x- Koordinate des ersten Zeichens oder Symbols als einen Versatz von dem letzten vorhergehenden Zeichen oder Einheit bestimmen, wobei der Versatz durch die Zwischen-Zeichen-Teilungsinformation von DP 126 bestimmt wird. Dies ist in Fig. 14 dargestellt durch ANFANGSORT 1412 für Einheit 1402. Während das letzte Zeichen oder Symbol für die Einheit, die der Einheit 1402 vorangeht, nicht in Fig. 14 dargestellt ist, sei bemerkt, daß die ANFANGSORT 522-y-Koordinate für "g" so bestimmt worden ist, daß der Hauptkörper des "g" auf der Grundlinie (BL) 1414 angeordnet ist, d. h. die Grundlinie für das Textsegment, das in Fig. 14 dargestellt ist. Wie angezeigt, hat das Zeichen "g" eine Unterlänge, d. h. der Schwanz des "g" erstreckt sich unterhalb die BL 1414.
- Wie beschrieben, bestimmt der Parser 148 die Abmessungen einer Einheit, in diesem Fall des Zeichens "g", von der Zeichenteilungsinformation in DP 126, der FT 144-Information für dieses Zeichen oder Symbol, jegliche anwendbare Größenveränderungsfaktoren, wie sie durch die Felder der vorhergehenden Einheit ANFANGSZUSTAND UNTERGRUPPE 508 der Einheiten US 136, und jegliche Größenveränderungsfaktoren, die durch den Benutzer vorgegeben werden. Die Abmessungen von Einheit 1402, wie durch den Parser 148 definiert und in die Einheitsabmessungen 524-Felder von US 136 der Einheit 1402 sind in Fig. 14 durch den EINHEITSABMESSUNGS-Kasten (DIMS) 1416 dargestellt. Wie angezeigt, erstrecken sich die x-Abmessungen von EINHEITSAB- MESSUNGEN 524 für die Einheit 1402 nur in der positiven Richtung, d. h. für die Zwecke dieser Darstellung nach rechts von ANFANGSORT 1412. Die Abmessungen von Einheit 1402 erstrecken sich jedoch sowohl in die positive (nach oben) als auch in die negative (abwärts) Richtungen von ANFANGSORT 1412 und umfassen dabei jeweils den Hauptkörper und den Schwanz des Zeichens "g".
- Nachstehend sei der Aufbau von BU 1404 und seiner zugeordneten Schrifteinheiten betrachtet. Die Funktionsweise des Parser 148 ist komplexer. Im wesentlichen wird der Parser 148 zuerst BU 1404 allein aufbauen, und dann während des Aufbaus von jeder PSupU 1406, LSUs 1408a und 1408b mit ihren Grundlinien-Hochschrifteneinheit und SubU 1410 die EIGENSCHAFTSIDENTIFIKA- TIONSGRUPPE 504-Felder verändern von US 136 von BU 1404.
- In dem ersten Schritt, d. h. wenn der Parser 148 die Textelemente aufbaut, die allmählich BU 1404 werden, werden das Zeichen "A" und seine zugeordneten diakritischen Zeichen untersucht, um in die Einheit 1402 eingefügt zu werden, da keine Operation bis jetzt stattgefunden hat, die es erfordern würde, das "A" und seine diakritischen Zeichen in einer separaten Einheit zu plazieren. Das heißt und beispielsweise nicht wie eine Schrift, werden die diakritischen Zeichen ein Teil der Definition des Zeichens "A", und so kann das "A" mit seinen zugeordneten diakritischen Zeichen in die vorliegende Einheit 1402 eingefügt werden. In diesem Schritt wirkt der Parser 148 wie vorstehend beschrieben beim Aufbau des Zeichens "A" mit seinen zugeordneten diakritischen Zeichen, und die Einheitsabmessungen von Einheit 1402 werden wie erforderlich vergrößert, um das "A" mit seinen diakritischen Zeichen einzuschließen. Es sei bemerkt, daß das "A" nicht in Einheit 1402 gelegt wird, weil der Schriftoperator unmittelbar dem "A" folgend erfaßt wird; bis der Schriftoperator erreicht wird, wird jedoch das "A" so behandelt, als ob es in die Einheit 1402 gehören würde.
- Der nächste Schritt, bei dem PSupU 1406 in die Vorhochschriftposition bezüglich des Zeichens "A" geschrieben wird, erfordert, daß das Zeichen "A" mit seinen zugehörigen diakritischen Zeichen in eine getrennte Einheit von der Einheit 1402 plaziert wird, um die Stammeinheit für PSupU 1406 zu werden. Der Parser 148 eröffnet demzufolge eine neue Einheit, BU 1404, um das "A" mit seinen zugehörigen diakritischen Zeichen auf zunehmen und bestimmt die EINHEITSABMESSUNGEN 524-Erstreckungen von BU 1404 als dies des Zeichens "A" mit seinen zugehörigen diakritischen Zeichen, wie dies durch den ABMESSUNGS-Kasten 1420 angezeigt ist. Der Parser 148 definiert auch zu diesem Zeitpunkt, daß die Einheit 1402 das Zeichen "g" allein zu enthalten hat, wie dies in Fig. 14 dargestellt ist und bestimmt, daß der Anfangsort 522 von BU 1404 am Punkt 1420 zu sein hat.
- Es sei bemerkt, daß, wenn der Editor den ANFANGSORT 522 von BU 1404 als auf BU 1404 auf der Seite relativ zur Einheit 1402 bestimmt, der Editor die y-Koordinaten des ANFANGSORTES 522 von BU 1404 so bestimmen wird, daß der ANFANGSORT 522 von BU 1404 mit dem ANFANGSORT 522 von Einheit 1402 in den y-Abmessungen ausgerichtet ist, d. h. auf BL 1404. Wie des weiteren beschrieben, wird in der nachfolgenden Beschreibung des Aufbaus einer Linie und des Ortes der Einheiten einer Linie relativ zu anderen Linien, werden alle "Stammeinheiten" einer Linie, d. h. alle Einheiten der Linie, die nicht in einer Schriftposition oder in einer Linienteilung angeordnet sind, auf der Seite so angeordnet, daß ihre ANFANGSORTE 522 zueinander in den y-Abmessungen ausgerichtet sind und damit auf der Grundlinie der Linie angeordnet sind. Dies bewirkt, daß die ANFANGSORTE 522 der Stammeinheiten der Linie die Grundlinie der Linie definieren.
- Bevor die Beschreibung des Aufbaus von PSupU 1406, LSUs 1408a und 1408b sowie SubU 1410 fortgesetzt wird, sei des weiteren bemerkt, daß zu Zwecken der Geschwindigkeit und Vereinbarung beim Zerlegen alle in EB 128 in einer EU 134 erscheinenden Schriften darin in einer bevorzugten Reihenfolge angeordnet sind und dort durch EE 146 in dieser Reihenfolge eingeschrieben worden sind, unabhängig von der Reihenfolge der Eingabe durch den Benutzer. Das heißt, EE 146 wird die Operatoren in einer EU 134 in die bevorzugte Reihenfolge umsortieren, nachdem die Operatoren durch den Benutzer eingegeben worden sind. In der vorliegenden bevorzugten Ausführungsform des Editors ist diese Reihenfolge Vorhochschrift, Vortiefschrift, Überschrift, Unterschrift, Hochschrift und Tiefschrift. Es sei des weiteren bemerkt, daß in anderen Ausführungsformen diese Reihenfolge geändert oder durch Ausführen komplizierterer Codierungen der Operatorcodes durch Parser 148 es keine Notwendigkeit zur Ordnung der Operatoren in einer EU 134 gibt.
- Nachstehend sind die Operationen von Parser 148 in bezug auf PSupU 1406 betrachtet. Wie vorstehend beschrieben, liest der Parser 148 die Zeichen/Symbol-, Operator-, Parameter- und Terminatorcodes, wie sie durch den Benutzer eingegeben worden sind und reagiert in erforderlicher Weise auf jeden Code. Die Eingabe des Operatorcodes für eine Vorhochschrift wird den Parser 148 darüber informieren, daß eine neue Einheit erforderlich ist und daß diese Einheit eine Vorhochschrift von BU 1404 sein muß. Parser 148 wird dann eine US 136 für PSupU 1406 initialisieren, einen entsprechenden Zeiger in das Feld VORHOCHSCHRIFTEINHEIT 554 von US 136 von BU 1404 schreiben, und wird dann die Felder der US 134 während der Eingabe der Zeichen/Symbol-, Operator-, Parameter- und Terminatorcodes bestimmen, die EU 134 von PSupU 1406 enthalten, inklusive der Felder ANFANGSORT 516, ANFANGSZEICHEN 518 und ELTLÄNGE 520, die die Codes von EU 134 des PSupU 1406 in EU 128 anordnen.
- PSuP 1406 ist eine Vorschrift und ist daher das ganz linke Zeichen oder die Gruppe von Zeichen in den mit BU 1404 verbundenen Einheiten und besetzt daher die ganz linke Position bezüglich der vorhergehenden Einheiten. Parser 148 wird daher auf den Vorhochschrift-Operatorcode PSupU 1406 reagieren, indem bestimmt wird, daß die x-Koordinaten des Feldes ANFANGS- ORT 522 der PSupU 1406 an der gleichen Stelle in der x-Abmessung wie der Punkt 1420 anzuordnen ist, d. h. an der am weitest möglichen links angeordneten Position bezüglich der vorhergehenden Einheit 1402. Die y-Koordinate der Felder ANFANGSORT 522 von PSupU 1406 wird von dem Feld SCHRIFTORT 207 von DP 126 bestimmt, das seinerseits wie vorstehend beschrieben bestimmt, ob Schriften über den Stammzeichen oder auf 2/3 der Höhe des Stammzeichens über der Grundlinie des Stammzeichens angeordnet werden, zusammen mit dem Feld ANFANGSORT 906 von LDS 162, der die y-Koordinate von BL 1414 auf der Seite bestimmt. Der resultierende Startort für PSupU 1406, wie in den Felder ANFANGSORT 522 von PSupU 1406 eingegeben, wird in Fig. 14 als ANFANGSORT 1424 angezeigt.
- Die ursprünglichen Abmessungen von PSupU 1406 werden selbstverständlich die des Anhängungspunktes sein, da der Benutzer noch keine in PSupU 1406 erscheinenden Zeichen eingegeben hat. Wenn der Benutzer jedes PSupU 1406-Zeichen eingibt, werden der Parser 148 und EE 146 auf jeden Zeichencode reagieren, indem der Zeichencode in EU 134 von PSupU 1406 eingeschrieben wird, wodurch die Abmessungen von PSupU 1406, wie erforderlich, bestimmt sind, um die eingegebenen Zeichen einzuschließen und um die Zeichen von PSupU 1406 auf der Anzeige 116 anzuzeigen.
- Das heißt, wenn der Benutzer das erste Zeichen von PSupU 1406, eine "1" eingibt, wird der Zeichencode für "1" in die EU 134 von PSupU 1406 eingeschrieben, die Abmessungen von PSupU 1406 werden erhöht, um die "1" einzuschließen und eine "1" wird in der Vorhochschriftposition bezüglich BU 1404 angezeigt. Der Benutzer gibt dann ein zweites Zeichen, ein "," ein, der Code für "," wird in EB 128 eingeschrieben, die Abmessungen von PSupU 1406 werden vergrößert, um die bis zu diesem Zeitpunkt eingegebenen Zeichen einzuschließen, d. h. "1", [Anhängungspunkt] "," und das "1,[Anhängungspunkt]" wird in der Vorhochschriftposition relativ zu BU 1404 angezeigt. Der Benutzer gibt dann das letzte Zeichen, "2"[Anhängungspunkt]" ein, der Code für "2" wird in EB 128 eingeschrieben, die Abmessungen von PSupU 1406 werden erneut vergrößert, um die Gruppe von Zeichen darzustellen, die bis zu diesem Zeitpunkt eingegeben worden sind, d. h. "1,2[Anhängungspunkt]", und die "1,2[Anhängungspunkt]" werden in der Vorhochschriftposition relativ zu BU 1404 angezeigt. Schließlich wird PSupU 1406 beendet, wenn der Benutzer einen Pseudo-Wagenrücklauf eingibt, wodurch die Einheit "1,2[Pseudo-Wagenrücklauf]" abgeschlossen wird.
- Die endgültigen x- und y-Erstreckungen von PSupU 1406, wie sie in die Felder EINHEITSABMESSUNGEN 524 von PSupU 1406 eingeschrieben werden, sind in Fig. 14 durch den ABMESSUNGS-Kasten 1426 angezeigt. Es sei bemerkt, daß PSupU 1406, die eine Schrift ist, keine ausgedehnten Abmessungen hat, die von ihren Einheitsabmessungen abweichen, außer, wenn z. B. andere Schriften oder Linienteilungen mit PSupU 1406 verbunden sind. Falls Schriften oder Linienteilungen mit PSupU 1406 verbunden wären, wäre PSupU 1406 eine Stammeinheit bezüglich dieser Schriften oder Linienteilungen, und die ausgedehnten Abmessungen von PSupU 1406 aufgrund dieser Schriften und Linienteilungen würden in die Felder ERSTRECKTE ABMESSUNGEN 526 von PSupU 1406 geschrieben werden.
- Es wird aus dem vorstehenden und von Fig. 14 deutlich, daß BU 1404 nach rechts geschoben werden muß, um Platz zu schaffen für PSupU 1406 zwischen Einheit 1402 und BU 1404. Dies ist eine allgemeine und wiederkehrende Operation in den Textformen, mit denen der vorliegende Editor zu arbeiten gedacht ist. Es sei bemerkt, daß dieser Vorgang und ähnlich nachstehend beschriebene Vorgänge beim Aufbau des Textes des vorliegenden Beispiels dynamische Prozesse sind, aber daß die spezifische Art und Weise, in der der Vorgang ausgeführt wird, abhängt von den Fähigkeiten des Systems, in dem der Editor implementiert ist. Das heißt, der Editor und das System müssen eine akzeptable Erwiderungszeit auf Benutzereingaben bereitstellen und dies ist wiederum abhängig von der Verarbeitungsgeschwindigkeit von CPU 112 beim Ausführen von Editoroperationen und von der relativen Komplexität von Editoroperationen.
- In der am meisten bevorzugten Betriebsart sind die Bestimmungen der Textabmessungen und der Veränderungen der Anzeige, um die Benutzeroperationen wiederzugeben, kontinuierlich, d. h. die Abmessungen werden bestimmt und der Bildschirm wird bei jedem Zeichen aktualisiert, das durch den Benutzer eingegeben oder gelöscht wird. Zum Beispiel würde in den vorstehend beschriebenen Operationen der Parser 148 die BU 1404 dynamisch nach rechts "bewegen", wenn jede PSupU 1406 Zeichen oder Symbol durch den Benutzer eingegeben wird, indem der Wert in dem x-Koordinatenfeld von ANFANGSORT 522 von BU 1404 um den gleichen Betrag erhöht wird, wie die derzeitige x-Abmessung von SupU 1406 erhöht wird, wenn die PSupU 1406-Zeichen eingegeben werden. Der sichtbare Effekt für den Benutzer besteht darin, daß BU 1404 allmählich nach rechts wandert, während jedes PSupU 1406-Zeichen eingegeben wird. Die endgültigen Ergebnisse in den x- und y-Koordinaten-Ortsfeldern von AN- FANGSORT 522 von BU 1404 werden in Fig. 14 durch ANFANGSORT 1428 angezeigt.
- In der vorliegenden Ausführungsform des Editors, bei dem die CPU 112 ein Intel 8086-Mikroprozessor ist, ist die für die CPU 112 erforderliche Zeit, um diese Operationen Zeichen für Zeichen auszuführen, jedoch zu lang für eine angemessene Benutzererwiderung. Die vorliegende Ausführungsform des Editors führt daher diese Operationen nicht kontinuierlich und Zeichen für Zeichen aus, sondern in Intervallen und Punkten, die durch die Benutzeroperationen so bestimmt sind, wie sie durch die Programmierer ausgewählt worden sind. Unter Betrachtung des vorliegenden Beispiels würde der Editor den Ort von BU 1404 erneut bestimmen und das auf der Anzeige 116 gezeigte Textbild regenerieren, wenn der Benutzer den Aufbau von PSupU 1406 durch Eingabe des Pseudoreturn beendet hat. Aufgrund dessen kann der Benutzer einige oder viele Zeichen, in Abhängigkeit von der Operation, eingeben, bevor der Text und die Anzeige aktualisiert sind, und das angezeigte Textbild wird nicht genau die tatsächliche Erscheinungsform des Textes während dieses Zeitraums wiedergeben. Der Benutzer ist jedoch mit der Möglichkeit ausgestattet, aufgrund seiner eigenen Beurteilung anzufordern, daß der Bildschirm aktualisiert und genau gemacht wird.
- In dem vorliegenden Beispiel würden beispielsweise die Zeichen von PSupU 1406 erscheinen, um BU 1404 zu überschreiben, während PSupU 1406 aufgebaut wird, und ein endgültiges Bild des Textes würde nicht dargestellt, bis der Aufbau von PSupU 1406 beendet wäre. Zu diesem Zeitpunkt wird der Editor die Anordnungsoperationen ausführen, die vorstehend beschrieben sind, um die Orte und die Erscheinungen aller Elemente des Textes zu bestimmen. Zu diesem Zeitpunkt würde BU 1404 erscheinen, um nach rechts, wie vorstehend beschrieben, sich zu bewegen und Einheit 1402, BU 1404 und PSupU 1406 würden, wie in Fig. 14 gezeigt, erscheinen.
- Es sei bemerkt, daß der Editor einer bevorzugten Abfolge bei der Anordnung von Textelementen folgt. Diese Abfolge weicht von der vorher beschriebenen Abfolge beim Zerteilen ab, da das Ziel der Operation ein anderes ist, d. h. der Ort der Textelemente auf der Seite und in der Reihenfolge der Anordnung ist Überschreiben, Unterschreiben, Vorhochschrift, Vortiefschrift, Hochschrift und Tiefschrift.
- Schließlich und bevor die Beschreibung des Aufbaus von Textelementen fortgesetzt wird sei bemerkt, daß die nachfolgende Beschreibung und andere eine beschreibende Übereinkunft für eine einfache und klare Darstellung verwendet haben. Das heißt, die nachfolgenden Beschreibungen werden so dargestellt, als ob der Aufbau von Textelementen, d. h. das Aufbauen von einzelnen Elementen und die Bestimmung der Abmessungen und der Orte jedes Elements wären ein fortlaufender Element um Element- und Zeichen um Zeichen-Prozeß. Aufgrund der Begrenzungen des Prozessors, der in der vorliegenden Implementierung des Editors verwendet wird, folgt der vorliegende Editor tatsächlich in der vorliegenden Implementierung einem Prozeß, der ähnlich ist wie der vorher in bezug auf den Aufbau von Einheiten beschriebene. Das heißt, der Editor und der Parser bauen zuerst alle Elemente des Textes auf, dann bestimmen sie die Abmessungen der Elemente, und schließlich ordnen sie die Elemente auf der Seite an. Zum Beispiel, falls der eingegebene Text fünf Elemente hätte, würde der Benutzer und der Editor die Einheiten 1 bis 5 in dieser Reihenfolge aufbauen; der Editor würde dann die Abmessungen der Einheit 5 bis Einheit 1 erneut in dieser Reihenfolge bestimmen und würde dann die Einheiten 1 bis 5 erneut in dieser Reihenfolge auf der Seite anordnen. In einer anderen Ausführungsform, mit einem schnelleren und leistungsfähigeren Prozessor, könnte der Editor so implementiert werden, daß diese Vorgänge fortlaufend und wiederholt für jedes Element und Zeichen ausgeführt werden; auch diese Übereinkunft wurde zu Zwecken der Klarheit der Darstellung in den folgenden Beschreibungen angenommen.
- Nun wird mit der Beschreibung des Aufbaus des Textes von Fig. 14 fortgesetzt. Die Anfügung von PSupU 1406 als eine Vorhochschrift hat eine Erstreckung der Abmessungen von BU 1404 bewirkt, und die erstreckten Abmessungen von BU 1404 müssen in die Felder ERSTRECKTE ABMESSUNGEN 526 der US 134 von BU 1404 eingeschrieben werden. Erneut in der zu Zwecken der Beschreibungsklarheit verwendeten Übereinkunft ist dies ein dynamischer Prozeß, wobei die ausgedehnten Abmessungen von BU 1404 durch Parser 148, wie erforderlich erhöht werden, um sowohl BU 1404, d. h. DIMS 1402 und PSupU 1406 einzuschließen, wenn jedes Zeichen von PSupU 1406 durch den Benutzer eingegeben wird. Die endgültigen erstreckten Abmessungen von BU 1404 bei Beendigung der hier beschriebenen Schritte, die Addition von PSupU 1406, LSUs 1408a und 1408b und SubU 1410 zu BU 1404 werden in Fig. 14 durch den erstreckte Abmessungskasten (EDIMS) 1430 angezeigt. An diesem Punkt im Aufbau würden sich SDIMS 1430 in der x-Richtung von ANFANGSORT 1424 erstrecken, d. h. die linke Seite von DIMS 1426 zu dem am rechtesten liegenden Punkt von BU 1404, d. h. der rechten Seite von DIMS 1422. XDIMS 1430 würde in der y-Richtung von der unteren Seite von DIMS 1422 zu der oberen Seite von DIMS 1426 erstreckt werden. Es sei bemerkt, daß die Anfügung von PSupU 1406 an BU 1404 in einer Erstreckung der Abmessungen von BU 1404 in der negativen x-Richtung bewirkt wird, d. h. nach links, da PSupU 1406 sich in den x-Abmessungen nach links von ANFANGSORT 1428 erstreckt, und in der negativen y-Abmessung, d. h. nach oben, da PSupU 1406 sich über BU 1404 hinaus erstreckt.
- In der nächsten Abfolge von Schritten wird der Benutzer die LSUs 1408a und 1408b durch Eingeben des Operatorcodes für eine Hochschrift erzeugen, um eine Grundlinie für die Linienteilung bereitzustellen, und dann die Operatorcodes und Parameter für LSUs 1408a und 1408b. Wie vorstehend beschrieben, bewirkt eine Linienteilung mit n=1 eine Linienteilung von zwei Linien mit einem Strich, der auf dem Zwischenraum zwischen den beiden Linien erscheint. Wie ebenfalls vorstehend beschrieben, wird jede Linie der Linienteilung als wenigstens eine geteilte Einheit behandelt und erzeugt, so daß die Erscheinung des Linienteilungsoperators und des Parameters bewirkt, daß der Parser 148 zwei neue Einheiten initialisiert und positioniert, d. h. LSU 1408a und LSU 1408b. Der Strich zwischen den Linien weist keine Einheit auf, sondern ist eine Eigenschaft dieses bestimmten Operators und Parameters. Es sei bemerkt, daß in bezug auf die Initialisierung von LSU 1408a und LSU 1408b die erste bei ihrer Erzeugung anfänglich nur einen Anhängungspunkt hat, und daß die zweite nur erzeugt wird, wenn der Pseudo-Wagenrücklauf, der die erste beendet, eingegeben wird.
- Bevor mit der Beschreibung des Aufbaus der LSUs 1408a und 1408b fortgesetzt wird, wird zunächst der allgemeine Fall von Linienteilungen nachstehend beschrieben, um das Verständnis der nachfolgenden Beschreibungen von LSUs 1408a und 1408b zu unterstützen.
- Wie beschrieben, ist eine Linienteilung einer Grundlinie, die in eine Gruppe von zwei oder mehreren parallelen Linien aufgeteilt ist, wobei jede Linie parallel zu der ursprünglichen Grundlinie verläuft und die Gruppe von Linien auf der ursprünglichen Grundlinie zentriert sind. Jede Linie der Linienteilung ist wenigstens eine Einheit, und ein oder mehrere Zeichen oder Symbole, von beliebigen durch den Benutzer gewählten Abmessungen, können auf jeder der Linien der Linienteilung erscheinen. Jede Linieneinheit der Linienteilung hat einen ANFANGSORT 522 und die y-Abmessungen von jeder der Linieneinheiten werden relativ zueinander durch die y-Erstrekkungen bestimmt, d. h. Abmessungen der Zeichen und Symbole, die in den Linieneinheiten erscheinen. Die Linienteilung hat die weitere Eigenschaft, daß die Linienteilung als ein Ganzes effektiv eine Einheit ist. Das heißt, die Gruppe von Linieneinheiten, die eine Linienteilung bilden, werden als eine Einheit durch den Editor behandelt, wenn die einzelnen Linieneinheiten der Linienteilung auf der Seite angeordnet werden.
- Zunächst sei als Beispiel der einfachste Fall einer Linienteilung betrachtet, nämlich einer Linienteilung, die auf der Grundlinie der derzeitigen Linie, z. B. BL 1414 zentriert ist. Der Parser 148 bestimmt die y-Abmessungen, d. h. die Höhe jeder der Linien von der Zeichengröße und der Größenänderungsinformation, wie vorstehend beschrieben, und kann den Zwischenlinienabstand von dem Feld ZWISCHENLINIENABSTAND 887 von SSS bestimmen. Der Parser 148 wird die ursprüngliche Annahme treffen, daß alle auf den Linien auftretenden Zeichen die am Anfang der ersten Linie der Linienteilung bestimmte Größe haben und wird dementsprechend einen ursprünglichen Anfangspunkt für die Linienteilung als Ganzes bestimmen. Dieser ursprüngliche Ort für die Linienteilung ist ähnlich wie der ANFANGSORT 522 einer Einheit, der, wie beschrieben, die x- und y-Koordinaten des linken Endes der Grundlinie der Einheit identifiziert. In dem Fall einer Linienteilung identifiziert die Anfangsort-x-Koordinate die x-Koordinate auf der Seite der am linkesten ausgerichteten Kante der Gruppe von Linien in der Linienteilung. Die y-Koordinate des Anfangsortes identifiziert in diesem Beispiel jedoch die y-Koordinate auf der Seite von dem Mittelpunkt der Gesamthöhe der Gruppe von Linien, die die Linienteilung bilden.
- Die x- und y-Koordinaten dieses Anfangspunktes für die Gruppe von Linien wird in das Feld LINIENTEILUNGSORT 530 von der US 136 von der Stammeinheit geschrieben, mit der die Linienteilung verbunden ist, und die Anzahl der Linien in der Linienteilung wird in das Feld LINIENTEILUNGSANZAHL 528 der Stammeinheit geschrieben.
- Parser 148 beginnt eine US 136 für jede Linieneinheit der Linienteilung und schreibt Zeiger zu jeder der US 136 in die Felder der LINIENTEILUNGSEINHEIT 562 der US 136 der Stammeinheit. Der Parser 148 wird dann die Zeichengröße und die Zwischenlinienabstandsinformation wie vorstehend beschrieben verwenden, um einen ANFANGSORT 522 für jede Linieneinheit zu bestimmen und wird die x-und y-Koordinaten der ANFANGSORTE in jedes Feld ANFANGSORT 522 der Linieneinheit schreiben.
- Sollte der Benutzer eine Änderung der Zeichengröße bei der Eingabe der Zeichen in die Linien der Linienteilung festlegen, kann diese Veränderung eine Veränderung in den Anfangsorten und Abmessungen der Linien relativ zueinander erfordern. Eine derartige Änderung kann auch bedeuten, daß der Anfangsort (LINIENTEILUNGSORT 530) der Linienteilung zu ändern ist, so daß die Linienteilung als ein Ganzes auf der ursprünglichen Grundlinie zentriert bleibt. Der Parser 148 wird eine derartige Zeichengrößenänderung erfassen und alle anderen Benutzeraktionen, die die Abmessungen und Orte der Linien verändern, und wird die Linienabmessungen, die Linienanfangsorte und die Linienteilungsanfangsorte wie erforderlich berechnen, die neuen Abmessungen und Ortsinformationen in die entsprechenden Felder der Stammeinheit und die USs 136 der Linieneinheit, wie erforderlich, einschreiben. Es sei bemerkt, daß Linienteilungen, wie jede andere Texteinheit, nicht in die Fläche einer anderen Einheit hineinragen dürfen. Der Aufbau einer Linienteilung kann daher, wie in einer nachstehenden Beschreibung des Aufbaus von Linien erläutert, erfordern, daß Linien auf einer Seite relativ zu anderen Linien verschoben werden, so daß die Linienteilung nicht in anderen Text hineinragt.
- In dem Fall einer Linienteilung in einer Schriftposition, wie z. B. in Fig. 14, ist die Operation des Parser 148 beim Aufbau der Linienteilung und deren Einheiten ähnlich wie die in dem gerade vorstehend beschriebenen Fall. Der grundsätzliche Unterschied besteht jedoch im Ort des Anfangsortes, d. h. der lokalen Grundlinie der Linienteilung und der Linieneinheiten, die die Linienteilung bilden. In diesen Fällen ist die Grundlinie, von der die Linienteilung aufgebaut wird, die einer Schrifteinheit in dem gewünschten Ort. Erneut muß die Linienteilung in der y-Richtung so angeordnet sein, daß die Linienteilung nicht in Flächen hineinragt, die für andere Einheiten reserviert sind. Das heißt, und z. B. eine Linienteilung in der Überschriftposition muß so angeordnet sein, daß sie nicht nach unten in das Stammzeichen ragt und Linienteilungen in der Vorhochschrift- oder Hochschriftposition müssen so angeordnet sein, daß sie nicht nach unten in die Tiefschriftposition reichen. Dieses Erfordernis trifft auch bei Linienteilungen in der Unter- und Tiefschriftposition zu, außer daß die Linienteilungen so angeordnet sein müssen, daß sie nicht nach oben in das Stammzeichen oder in Hochschriftpositionen reichen.
- Nun sei der Fall einer Linienteilung in der Hochschriftposition betrachtet. Die Gruppe von Linieneinheiten, die die Linienteilung bilden, sind in der y-Abmessung so positioniert, daß die Grundlinie der untersten Einheit vertikal an einer Stelle angeordnet ist, die normalerweise durch die Grundlinie einer normalen Hochschrifteinheit besetzt ist. Die Linieneinheit erstreckt sich von diesem Punkt nach oben, wobei die Startpositionen von jeder der Linieneinheiten und der Linienteilung entsprechend bestimmt werden. Sollte der Benutzer eine Operation oder einen Wechsel, z. B. in der Zeichengröße, befehlen, die einen Einfluß auf die Abmessungen oder den Abstand der Linieneinheiten oder des Ortes und der Abmessungen der Linienteilung haben, würde der Parser 148 erneut diese Änderungen erfassen und die Anfangspositionen und Abmessungen der Linieneinheiten und Linienteilungen entsprechend modifizieren. In diesem Fall bliebe jedoch die Grundlinie auf der untersten Linieneinheit starr und die Linienteilung würde in der y-Richtung relativ zu dieser starren Grundlinie sich ausdehnen oder zusammenziehen.
- Die Operation von Parser 148 ist ähnlich in dem Fall einer Linienteilung in der Überschriftposition, abgesehen davon, daß die Grundlinie der untersten Linieneinheit fest über dem oberen Rand der Stammzeichens verbleibt. Die Operationen des Parser 148 sind erneut ähnlich in dem Fall, indem eine Linienteilung in der Tiefschrift oder Unterschriftposition erfolgt, abgesehen davon, daß die Grundlinie der obersten Linieneinheit fest ist, um eine Störung mit anderen Einheiten zu vermeiden, und die Linienteilung dehnt sich aus oder zieht sich zusammen in der vertikalen Richtung nach unten von dieser festen Grundlinie.
- Nun sei zu dem Beispiel in Fig. 14 zurückgekehrt, in dem eine Linienteilung in der Hochschriftposition dargestellt ist und es sei an die Beschreibungsübereinkunft erinnert, die vorstehend für die vorliegende Beschreibung gewählt wurde. Der Parser 148 wird in der Richtung des Benutzers eine US 136 für die Hochschrifteinheit beginnen, die eine Grundlinie für LSUs 1408a und 1408b sowie USs 136 für LSUs 1408a und 1408b bereitstellen und wird die Anfangsorte für LSUs 1408a und 1408b und für die Linienteilung bestimmen. Es sei bemerkt, daß die Hochschrifteinheit, die eine Grundlinie für die Linienteilung bereitstellt, von sich aus keine Zeichen oder Symbole enthalten wird, sondern nur als Grundlinie für die Linienteilung dient.
- Der ANFANGSORT 522 für LSU 1408b wird zuerst bestimmt und ist in Fig. 14 durch ANFANGSORT 1432 bezeichnet. Wie angegeben, ist der ANFANGSORT 1432 von LSU 1408b relativ zu BU 1404 in der Position angeordnet, die normalerweise durch den Anfangsort von der Grundlinie einer Hochschrift besetzt ist und die örtliche Grundlinie (LBL) 1434 von LSU 1408b ist in der Position angeordnet, die normalerweise durch die Grundlinie der Hochschrift besetzt ist. Der Anfangspunkt von LSU 1408a wird dann durch den Parser 148 an der Stelle angeordnet, die als ANFANGSORT 1436 bezeichnet ist und die örtliche Grundlinie von LSU 1408a ist, wie angegeben, bei LBL 1438 angeordnet. Der Anfangsort der Linienteilung wird bestimmt als die Position, die mit ANFANGSORT 1440 bezeichnet ist. Die Anfangsorte von LSUs 1408a und 1408b werden in die Felder ANFANGSORT 522 von ihren USs 136 geschrieben. Die Anzahl von Linien in der Linienteilung, die Anfangsorte der Linienteilung und die Zeiger auf die USs 136 der LSU 1408a und 1408b werden jeweils in die Felder LINIENTEILUNGSANZAHL 528, LINIENTEILUNGSORT 530 und LINIENTEILUNGSEINHEIT 562 der US 136 von BU 1404 geschrieben.
- Der Benutzer gibt dann die Zeichen ein, die auf der Linie der ersten Linienteilungseinheit, der von LSU 1408a, erscheinen sollen, und beendet die erste Linie mit einem Pseudo-Wagenrücklauf. In diesem Fall enthält die erste Linie nur das Zeichen "x". Bei dem Pseudo-Wagenrücklauf, der die erste Linie beendet, geht der Parser 148 in die zweite Linieneinheit der Linienteilung und der Benutzer gibt die zu erscheinenden Zeichen ein, in diesem Fall das Zeichen "y", und beendet die Einheit mit einem Pseudo-Wagenrücklauf.
- Es sei betont, daß innerhalb der Beschreibungsübereinkunft, die für diese Zwecke beschrieben wurde, der Parser 148 die vorstehend beschriebenen Prozesse dynamisch ausführt, aber daß der einzelne Prozeß erneut von den Fähigkeiten des Systems abhängt, in dem der Editor arbeitet. In der vorliegenden Implementierung des Editors wird der Drei-Lauf-Prozedur zur Bildung von Einheiten, Bestimmung von Einheitsabmessungen und Anordnen der Abmessungen gefolgt, um eine akzeptierbare Betriebsgeschwindigkeit für den Benutzer bereitzustellen. In der bevorzugten Betriebsart wird jedes Zeichen der Linienteilung eingegeben und so, wie es durch den Benutzer eingegeben worden ist, angezeigt.
- In ähnlicher Weise werden jegliche notwendigen Änderungen der Linieneinheitsorte oder Abmessungen und jegliche notwendige Änderungen der Linienteilungsorte oder Abmessungen durch den Parser 148 auf ein Zeichen für Zeichen-Basis ausgeführt, wenn die Zeichen durch den Benutzer eingegeben werden. Die bildliche Darstellung, die dem Benutzer somit dargeboten wird, würde damit dynamisch mit den Benutzeraktionen sich verändern, so daß der Benutzer stets mit einer aktuellen Zeichen für Zeichendarstellung der Aktivitäten des Benutzers konfrontiert ist. In der vorliegenden Ausführungsform werden diese Operationen jedoch an diskreten Punkten ausgeführt, die durch die ausgeführten Operationen bestimmt werden.
- Die Abmessungen der LSUs 1408a und 1408b würden in der bevorzugten Betriebsart ebenfalls dynamisch und Zeichen für Zeichen bestimmt, wenn die Zeichen dieser Einheiten durch den Benutzer eingegeben werden. Die Abmessungen der LSUs 1408a und 1408b beim Ende des Aufbaus von LSU 1408a und 1408b, wie sie in den Feldern EINHEITSABMESSUNGEN 524 der LSUs 1408a und 1408b von USs 136 gespeichert werden, sind in Fig. 14 durch die jeweiligen Abmessungs-Kästen (DIMS) 1442 und 1444 dargestellt.
- Der Aufbau der LSUs 1408a und 1408b wurde erneut durch die Abmessungen von BU 1404 ausgedehnt und die ausgedehnten Abmessungen von BU 1404 werden in der bevorzugten Ausführungsform erneut dynamisch und Zeichen für Zeichen modifiziert, wenn die Zeichen von LSU 1408a und 1408b durch den Benutzer eingegeben werden. Am Ende des Aufbaus der LSUs 1408a und 1408b würden die ausgedehnten Abmessungen von BU 1404 in der positiven x-Richtung zu den rechten Kanten von DIMS 1442 und 1444 und in der negativen y-Richtung zu der oberen Kante von DIMS 1442 erhöht.
- In der endgültigen Abfolge von Schritten wird die Tiefschrift SubU 1410 zu dem Aufbau hinzugefügt. Der Parser 148 reagiert auf den Tiefschriftoperator, der durch den Benutzer eingegeben wird, indem eine neue Einheit für SubU 1410 angelegt wird und schreibt einen geeigneten Zeiger in das Feld TIEFSCHRIFTEIN- HEIT 552 der US 136 von BU 1404. Der Parser 148 bestimmt dann den ANFANGSORT und die örtliche Grundlinie von SubU 1410, die an ANFANGSORT 1446 und LBL 1448 anzuordnen ist, wie dies in Fig. 14 angedeutet ist und gibt die x- und y-Koordinaten von ANFANGSORT 1446 in den ANFANGSORT 522 von US 136 von SubU 1410 ein.
- Es sei bemerkt, daß als Tiefschrift die x-Koordinate des ANFANGSORTES von SubU 1446 in der x-Abmessung in der Linie mit der rechten Kante von DIMS 1422 von BU 1404 angeordnet ist, d. h. die rechteste Kante von BU 1404. Die y-Koordinate von ANFANGSORT von SubU 1410 wird, wie vorstehend beschrieben, durch die derzeitigen Zeichengrößen- und Größenveränderungsinformation und in Beziehung mit BL 1414 bestimmt, d. h. die untere Kante von DIMS 1422 von BU 1404, so daß die obere Kante des Abmessungs-Kastens von SubU 1410 für die derzeitige Zeichengröße nicht in eine Fläche einer anderen Einheit hineinragen wird.
- Der Benutzer gibt dann das auf LBL 1448 zu erscheinende Zeichen ein und beendet SubU 1410 mit einem Pseudo-Wagenrücklauf am Ende der Zeichen. Es sei bemerkt, daß der Parser 148 erneut dynamisch auf die Zeichen für Zeichen-Eingabe durch den Benutzer reagiert und die Zeichen und die Erstreckung der Abmessungen von SubU 1410 in der erforderlichen Weise anzeigt, wenn jedes Zeichen eingegeben wird, inklusive der Verschiebung von ANFANGSORT 1446, wie dies durch die Zeichen für Zeichen- Größenänderungen erforderlich ist. Am Ende des Aufbaus von SubU 1410 werden die Abmessungen von SubU 1410, wie sie in den Feldern EINHEITSABMESSUNGEN 524 von SubU 1410 gespeichert sind, in Fig. 14 durch den Einheitsabmessungs-Kasten (DIMS) 1450 dargestellt.
- Die Hinzufügung von SubU 1410 zu dem Aufbau hat erneut die Abmessungen von 1404 ausgedehnt, und die ausgedehnten Abmessungen von BU 1404 werden erneut dynamisch und Zeichen für Zeichen modifiziert, während die Zeichen von SubU 1410 durch den Benutzer eingegeben werden. Am Ende des Aufbaus von SubU 1410 würden die erstreckte Abmessungen von BU 1404 in der positiven x-Richtung zu der unteren Kante von DIMS 1450 erstreckt. Die x-Abmessung der erstreckten Abmessungen von BU 1404 würde nicht erhöht werden, es sei denn, DIMS 1450 wäre weiter nach rechts zu erstrecken als DIMS 1442 und 1444. Zu diesem Zeitpunkt werden die erstreckten Abmessungen von BU 1404 in dem Feld ERSTRECKTE ABMESSUNG 526 der US 136 von BU 1404 gespeichert, wie in XDIMS 1430 in Fig. 14 dargestellt.
- Dies vervollständigt die Beschreibung des Aufbaus eines Abschnittes einer Linie, die beispielhafte Einheiten enthält. Im nachfolgenden werden als nächstes bestimmte Aspekte des Betriebes des Editors in bezug auf Linien beschrieben.
- Wie oben und in vorhergehenden Beschreibungsteilen beschrieben, sind die einzelnen Einheiten, die eine Linie von Text bilden, einzeln auf einer Seite angeordnet durch den Einheitsanfangsort-, Abmessungs- und erstreckte Abmessungs-Information, die in den Feldern ANFANGSORT 522, EINHEITSABMESSUNGEN 524 und ERSTRECKTE ABMESSUNGEN 526 von USs 136 der Einheit gespeichert sind. Jede Linie ist für sich selbst auf einer Seite angeordnet und die Abmessungen der Linie, d. h. die Gesamterstreckungen aller Einheiten der Linie, die durch die Felder einer Liniendatenstruktur (LDS) 162, die mit der Linie verbunden sind, identifiziert werden. Die LDS 162 einer Linie enthält auch, wie vorstehend beschrieben, Zeiger auf die erste US 136 der Linie und auf das erste Datenelement der Linie in EU 128, eine Identifikation des derzeitigen Zeichensatzes, der Zeichensatzgrößenveränderungs-Information, der Schrägschriftinformation und einen Zeiger auf eine Formatlinie für die Linie.
- Die Zeiger zu den LDSs 162 für alle Linien auf einer Seite sind ihrerseits in einem geordneten Feld in den Feldern LINIENDATENZEIGER 839 von SSS enthalten und ein Versatz zu der LDS 162 der derzeitigen Linie ist in dem Feld DERZEITIGER LINIENINDEX 840 von SSS 160 gespeichert.
- Die Beziehung zwischen dem Anfangspunkt einer Linie und den Abmessungen und den Einheiten, die die Linie bilden und zwischen den Anfangsorten und Abmessungen voneinander angrenzenden Linien ist hiermit unter Zuhilfenahme der Fig. 15 erläutert. Fig. 15 zeigt eine derzeitige Linie mit Linienanfangsort (LSTARTLOC) 1502 und Linienabmessungs-Kasten (LDIMS) 1504, die die Werte wiedergeben, die in den Feldern ANFANG-ORT 906 und in den Feldern LINIENABMESSUNGEN 908 von LDS 162 der Linien enthalten sind. Die Grundlinie für die derzeitige Linie ist in Fig. 15 durch Liniengrundlinie (LIBL) 1506 wiedergegeben. Ebenfalls in Fig. 15 dargestellt ist die untere Kante des Linienabmessungs-Kastens (LDIMS) 1508 der nächsten vorhergehenden Linie oberhalb der derzeitigen Linie.
- In den LDIMS 1504 der derzeitigen Linie werden die Einheiten angegeben, die derzeit die Linie mit ihrer Abmessung und erstreckten Abmessungs-Kästen umfassen, durch durchgehende Linien veranschaulicht. Wie angegeben, umfassen diese Einheiten Einheit 1402, BU 1404, PSupU 1406, LSUs 1408a und 1408b, wobei die Hochschrifteinheit als eine Grundlinie für LSUs 1408a und 1408b dient und SubU 1410 aus dem vorherigen Beispiel. Zu diesen Einheiten wurde eine Einheit 1510, eine Einheit 1512, die mit der Hochschrifteinheit (SupU) 1514 und einer Einheit 1516 mit einer zugehörigen Linienteilung in der Hochschriftposition hinzugefügt worden ist, wobei die Linienteilung aus Linienteilungseinheiten (LSUs) 1518a, 1518b, 1518c und 1518d sowie einer Hochschrifteinheit besteht, die als Grundlinie für die LSUss 1518a, 1518b, 1518c und 1518d dient.
- Wie vorstehend beschrieben, sind die Abmessungen einer Linie durch einen rechteckigen Linienabmessungen-Kasten definiert, dessen Abmessungen so sind, daß alle Einheiten der Linie, d. h. alle Abmessungs-Kästen der einzelnen Einheiten, wie in Fig. 14 veranschaulicht, die die Linie bilden, enthalten. Der Anfangsort der Linie seinerseits ist als der Ursprung, bezogen auf die Seite, absolut definiert, von dem die Abmessungen der Linie gemessen werden.
- Aus der vorhergehenden Beschreibung des Aufbaus der Einheiten, wie in Fig. 14 veranschaulicht, ist es offensichtlich, daß die Abmessungen einer Linie sich verändern, wenn die Einheiten einer Linie aufgebaut werden und sich verändern können, Zeichen für Zeichen, wenn die Zeichen der Einheiten durch den Benutzer eingegeben werden. Es ist ebenfalls offensichtlich, wie erneut in der vorhergehenden Beschreibung des Aufbaus von Einheiten erläutert worden ist, daß die Einheit von einer Linie nicht in Einheiten von vorhergehenden Linien hineinragen dürfen, d. h. in die Fläche, die durch den Anfangsort und die Abmessungen der vorhergehenden Linien definiert worden sind.
- Der Anfangsort und die Achse der Dimensionen einer neuen Linie werden daher bei dem Initialisieren der Linie durch den Ort und die Abmessungen der vorhergehenden Linie in einer derartigen Weise definiert, daß die Einheiten der neuen Linie nicht in die Fläche hineinragen, die durch die Abmessungen der vorhergehenden Linie definiert ist. Das heißt, der Anfangsort der neuen Linie wird in einer Position neben der durch die Abmessungen der vorhergehenden Linie eingeschlossenen Flächen festgelegt und in einem Abstand von der Fläche, wie er durch das Feld ZWISCHENLINIENABSTAND 887 in SSS definierten Zwischenlinienabstand definiert ist. Wie beschrieben, ist der Anfangsort der Ursprung, von dem die Linienabmessungen gemessen werden und die Anfangsort und die Abmessungsachsen sind so festgelegt, daß die Abmessungen der neuen Linie parallel zu und weg von der Fläche sich ausdehnen werden, die durch die Abmessungen der vorhergehenden Linie eingeschlossen ist. Eine weitere Beschränkung auf den Ort und die Ausrichtung des Anfangsortes und der Abmessungsachsen besteht darin, daß sie so bestimmt sein müssen, daß die Grundlinie der neuen Linie in der durch den jeweiligen Text erforderlichen Richtung sich erstreckt.
- Nun sei auf das in Fig. 15 gezeigte Beispiel Bezug genommen. Wie in den vorliegenden Beispielen beschrieben, folgen die vorliegenden Beispiele der Sprachübereinkunft der englischen Sprache, daß jede Linie von links nach rechts geschrieben und aufeinanderfolgende Linien von oben nach unten eingegeben werden. Wie ebenfalls beschrieben, wird die Abmessungserstreckung der der derzeitigen Linie vorangehenden Linie durch den Abmessungs-Kasten LDIMS 1508 wiedergegeben und der Anfangsort der derzeitigen Linie durch LSTARTLOC 1502. Das heißt, LSTART- LOC 1502 ist angrenzend an und direkt unterhalb der unteren linken Ecke der vorhergehenden Linienfläche und von der vorhergehenden Linienfläche in der y-Richtung um den Zwischenlinienabstand beabstandet. Die x-Richtungsachse ist so gewählt, daß die derzeitige Linie entlang ihrer Grundlinie nach rechts und parallel zu der Grundlinie der vorangehenden Linie sich erstreckt und die y-Achse ist so gewählt, daß die Erstreckung in der Höhe der derzeitigen Linie nach unten und weg von der vorhergehenden Linie geht. Falls in dem vorliegenden Text die Linien von rechts nach links geschrieben wären, befände sich LSTARTLOC 1502 unter der unteren rechten Ecke der vorhergehenden Linienfläche und die x-Achse würde von rechts nach links laufen. In einem weiteren Beispiel, falls der Text so wäre, daß die Linien von unten nach oben und aufeinanderfolgende Linien von rechts nach links eingegeben wären, würde die vorhergehende Linienfläche auf der rechten Seite der derzeitigen Linienfläche erscheinen, wobei ihre Grundlinie vertikal von oben nach unten verläuft. LSTARTLOC 1502 wäre an der Oberkante der Seite angeordnet und auf der linken Seite der vorangehenden Linienfläche um den Zwischenlinienabstand beabstandet, während die Abmessungsachsen so gewählt wären, daß die derzeitige Linien-Grundlinie nach unten von der Oberkante der Seite laufen würde und die Linien würden in der "Höhe" nach links sich ausdehnen.
- In dem vorliegenden Beispiel und unter Bezugnahme auf Fig. 15, hat der Benutzer das Editieren der vorhergehenden Linie beendet und ist derzeit beim Eingeben oder Editieren der derzeitigen Linie. Wenn der Benutzer das Editieren der vorhergehenden Linie beendet hat, wird die derzeitige Linie und die erste Einheit der derzeitigen Linie, d. h. Einheit 1402, durch den Editor initialisiert. Wie vorstehend beschrieben, ist LSTARTLOC 1502 in der in Fig. 15 erläuterten Position so bestimmt, und zu diesem Zeitpunkt wären die Abmessungen der derzeitigen Linie und der Einheit 1402 die des Anhängungspunktes, da keine Zeichen oder Symbole bis jetzt eingegeben worden sind.
- Der Benutzer würde dann die Zeichen von Einheit 1402 eingeben, d. h. das Zeichen "g", wie vorstehend unter Bezugnahme auf Fig. 14 beschrieben. Zu diesem Zeitpunkt wären die Abmessungen von Einheit 1402 wie in der vorherstehenden Beschreibung des Aufbaus der Einheiten. Die Abmessungen der derzeitigen Linie würde zu diesem Zeitpunkt nicht mehr nur die des Anhängungspunktes sein, da die Linie nun eine Einheit enthält, die ein oder mehrere Zeichen zusätzlich zu dem Anhängungspunkt aufweist. Die Abmessungen der derzeitigen Linie würden tatsächlich die der Einheit 1402 mit dem Anhängungspunkt sein, da dies zu diesem Zeitpunkt die einzige Einheit in der derzeitigen Linie ist. Die x-Abmessung der Linie würde nach rechts zu der rechten Kante von Einheit 1402 reichen und die y-Abmessung der Linie würde nach unten von LSTARTLOC 1502 um die y-Abmessung von 1402 reichen. Einheit 1402 wäre auf der Seite, d. h. in der Zeile mit der oberen Kante von Einheit 1402 in Übereinstimmung mit LSTARTLOC 1502 angeordnet, d. h. in vertikaler Richtung erhoben, bezogen auf seine in Fig. 15 gezeigte Position. LIBL 1506 wäre zu diesem Zeitpunkt in entsprechender Weise zusammenfallend mit der Grundlinie von Einheit 1402 in der erhobenen Position angeordnet.
- Der Benutzer würde fortsetzen, die Zeichen des Textes wie vorstehend unter Bezugnahme auf Fig. 14 und Beschreibungen des Aufbaus von Einheiten einzugeben. Wie vorstehend beschrieben, wird das Zeichen "A" mit den zugefügten diakritischen Zeichen, die dem "g" in dem Text folgen, zu diesem Zeitpunkt nicht in der Initialisierung von BU 1404 resultieren, und das "A" mit seinen diakritischen Zeichen wird anfänglich in die Einheit 1402 gehen. Wie beschrieben, wird BU 1404 initialisiert und das "A" mit diakritischen Zeichen in BU 1404 angeordnet, wenn die Hinzufügung von PSupU 1406 die Anwesenheit von BU 1404 als von EINHEIT 1404 getrennte Stammeinheit erforderlich ist. Es sei jedoch bemerkt, daß zu Zwecken der Klarheit der Diskussion Fig. 15 mit dem "A" mit angefügten diakritischen Zeichen in BU 1404 und mit den Schrifteinheiten, die mit BU 1404 zusammenhängen, daran aufgebaut gezeigt ist.
- Wie gezeigt, ist das Zeichen "A" mit angefügten diakritischen Zeichen in der y-Abmessung größer als das Zeichen "g" von Einheit 1402, so daß die Abmessungen der derzeitigen Linie sowohl in der x- als auch in der y-Abmessung erstreckt werden müssen. Die Abmessungen der Linie in der x-Richtung würden zu der rechten Kante von BU 1404 erstreckt oder was BU 1404 sein wird, und in der y-Richtung, so daß die y-Abmessung der Linie die von BU 1404, oder was BU 1404 sein wird, ist. An diesem Punkt werden die Zeichen, die BU 1404 umfaßt, auf der Seite so angeordnet sein, daß die obere Kante von dem, was der Abmessungs-Kasten von BU 1404 sein wird, in der y-Abmessung gleich mit LSTARTLOC 1502 angeordnet ist.
- Wie beschrieben, ist LIBL 1506 die Grundlinie für die derzeitige Linie und sowohl von Einheit 1402 als auch des Zeichens, das BU 1404 sein wird. Der Editor wird daher LIBL 1506 nach unten in der y-Richtung bewegen, um auf der gleichen Höhe wie die Grundlinie zu sein, d. h. die untere Kante von dem was der Abmessungs-Kasten von BU 1404 sein wird, und wird die Einheit 1402 um die gleiche Strecke nach unten bewegen, so daß die Grundlinie von Einheit 1402 auf LIBL 1506 verbleibt.
- Der Benutzer wird PSupU 1406 in der gleichen Weise initialisieren und eingeben, wie es oben unter Bezugnahme auf Fig. 14 beschrieben ist. Dieser Schritt wird in der Initialisierung von BU 1404 resultieren, um das Zeichen "A" mit angefügten diakritischen Zeichen zu enthalten und um als die Stammeinheit für die Schrifteinheiten, die damit verbunden sind, zu dienen, und in der Verschiebung von BU 1404 nach rechts in der x-Richtung. Die Hinzufügung von PSupU 1406 wird erneut in Erstreckungen von sowohl der x- als auch der y-Abmessungen der Linie resultieren. Die x-Abmessung der Linie wird nach rechts zu dem neuen Ort der rechten Kante von BU 1404 auf der Seite erstreckt und die y-Abmessung der Linie wird nach unten erstreckt, um gleich der gesamten y-Abmessung der Kombination von BU 1404 und PSupU 1406 zu sein. Die Zusammenfügung von PSupU 1406 mit der Linie wird erneut erfordern, daß die bereits in der Linie existierenden Einheiten, d. h. Einheit 1402 und BU 1404 zusammen mit LIBL 1506 in der y-Richtung nach unten bewegt werden, insbesondere so, daß die Oberkante des Abmessungs-Kastens von PSupU 1406 in der y-Abmessung gleich mit LSTARTLOC 1502 angeordnet ist.
- In dem nächsten Schritt, erneut wie vorstehend unter Bezugnahme auf Fig. 14 beschrieben, wird der Benutzer die LSUs 1408a und 1408b zu dem Linienaufbau zusammen mit der Hochschrifteinheit hinzufügen, die als Stammeinheit für LSUs 1408a und 1408b dient. Erneut wird diese Hinzufügung eine Erstreckung der Linienabmessungen sowohl in der x- als auch in der y-Richtung erfordern. Auch wird die Hinzufügung von LSUs 1408a und 1408b erneut erfordern, daß die bereits vorhandenen Einheiten in den Linienaufbau nach unten bewegt werden, so daß die Oberkante des Abmessungs-Kastens von LSU 1408a in der y-Richtung gleich mit LSTARTLOC 1502 ist.
- An diesem Punkt werden die Einheit 1402, BU 1404, PSupU 1406, LSUs 1408a und 1408b, die Schriftstammeinheit für LSUs 1408a und 1408b sowie LIBL 1506 in den Stellen in den x- und y-Abmessungen sein, die in Fig. 15 gezeigt ist. Die x-Abmessung der Linie wird zu den rechten Kanten von LSUs 1408a und 1408b sich erstrecken und die y-Abmessung wird sich zu der unteren Kante von Einheit 1402 erstrecken.
- In dem nächsten Schritt, in dem SubU 1410 zu dem Aufbau hinzugefügt ist, wird keine Erstreckung der Abmessungen der Linie sein. Wie vorstehend beschrieben unter Bezugnahme auf Fig. 14, wird der Abmessungs-Kasten von SubU 1410 innerhalb der erstreckten Abmessungen der bereits vorhandenen Einheiten eingeschlossen und befindet sich daher innerhalb der vorhandenen Abmessungen der Linie.
- Die nachfolgenden Hinzufügungen von Einheiten 1510, 1512, 1514 und 1516 wird erfordern, daß die Abmessungen der Linie in der x-Richtung erstreckt werden, aber wird keine Erstreckung der y-Abmessung der Linie erfordern. Die Abmessungen der Linie an diesem Punkt sind durch LDIMS 1508 angezeigt.
- In dem nächsten Schritt wird der Benutzer die Vier-Linien-Linienteilung in der Hochschriftposition zu Einheit 1516 hinzufügen. Wie in Fig. 15 angezeigt, besteht diese Linienteilung aus LSUs 1518a, 1518b, 1518c und 1518d und erfordert eine Schrifteinheit in der Hochschriftposition bezüglich Einheit 1516, um als Stammeinheit für die LSUs 1518a, 1518b, 1518c und 1518d zu dienen. Wie in Fig. 15 angezeigt, erstrecken sich die LSUs 1518a und 1518b erneut über die obere Kante von dem Abmessungs-Kasten der Linie, wobei LSU 1518a in die Fläche des Abmessungs-Kastens der vorhergehenden Linie hineinragt. Erneut wird diese Hinzufügung erfordern, daß LIBL 1506 der existierenden Einheiten der Linie in der y-Richtung in der vorstehend beschriebenen Weise nach unten bewegt wird und eine entsprechende Erstreckung auf die Abmessungen der Linie erfolgt.
- Die obenstehenden Operationen werden fortgesetzt, bis entweder der Benutzer die Linie beendet oder der Editor anzeigt, daß der Benutzer das Ende der Linie erreicht hat. Das Auftreten hiervon, d. h. das Ende der Linie wird durch den Editor erfaßt, der die derzeitigen Linienabmessungen beim Eingeben jedes Zeichens in die Linie mit den maximalen zulässigen Abmessungen der Linie vergleicht, wie sie durch die Formatlinie bestimmt sind, die durch das FORMATLINIENZEIGER 918-Feld in der LDS 162 der Linie angegeben ist.
- Aufgrund der jeweiligen Eigenschaften des Textes, mit dem der vorliegende Editor zu arbeiten gedacht ist, und insbesondere bei wissenschaftlichem Text, zeigt der Editor dem Benutzer an, wenn das Ende der vorliegenden Textlinie erreicht ist, anstatt den fort laufenden Text auf die nächste Linie "wortweise zu schieben". Dies ermöglicht dem Benutzer, den Punkt im Text zu wählen, an dem die Linie zu beenden ist. In anderen Ausführungsformen kann ein automatisches "Wortschieben" implementiert sein, oder die Möglichkeit zum Auswählen oder Deaktivieren eines automatischen "Wortschiebens" kann vorgesehen sein.
- Schließlich sei bemerkt, daß der Benutzer zu einer vorhergehenden Linie zurückkehren kann und weitere Editieroperationen in dieser Linie ausführen kann. Falls diese Operationen in einem Wechsel in der y-Abmessung der Linie resultieren sollten, wird der Editor die LSTARTLOCs sämtlicher nachfolgender Linien und die Orte sämtlicher Einheiten in diesen Linien neu bestimmen.
- Als eine letzte Erläuterung der Operationen des vorliegenden Texteditors wird im nachstehenden mit Hilfe der Fig. 16A, 16B und 16C die Operation des Editors beim Ausführen von Einfügen- und Verbergen-Operationen und die dazu in Beziehung stehenden Kopier- und Verschiebebefehle erläutert.
- Unter Bezugnahme auf Fig. 16A ist eine diagrammatische Darstellung von EB 128 an dem Anfang einer Einfügungs- oder Verbergungs-Operation erläutert. Die Kette von Zeichen/Symbol-, Operator-, Parameter- und Terminatorcodes, die den Text des derzeitigen Dokumentes bilden, sind darin als eine Kette von Kästen wiedergegeben, die Codewortspeicherstellen mit darin gespeicherten Codes wiedergeben. Zu Zwecken der Bezugnahme in der folgenden Beschreibung sind die Codes in den Wortstellen durch alphabetische Zeichen, so wie "A", "B", "C", "D" und "X" wiedergegeben, und bestimmte der obigen Wortstellen sind durch ihre Darstellungen, z. B. als Orte "1", "2", "3" usw., numeriert.
- Wie vorstehend beschrieben, enthält SSS 160 einen derzeitiger Anfang des Textes-Versatz (CBOT) 1602, der in dem Feld DERZEI- TIGER ANFANG DES TEXTES 855 gespeichert ist und auf den ersten Code des Textes in EB 128 zeigt und ein derzeitiges Ende des Textes-Versatz (CEOT) 1604, das in einem Feld DERZEITIGES ENDE DES TEXTES 856 gespeichert ist und auf den letzten Code des Textes in EB 128 zeigt, an Stelle 19, wodurch der derzeit zugängliche Text in EB 128 begrenzt ist. Das Zeichen, das derzeit durch den Cursor angezeigt wird, wird durch einen derzeitigen Puffer-Versatz (CBO) 1606 angezeigt, das in dem Feld DERZEITIGES PUFFERPOSITION 852 gespeichert ist. Der erste Code, der auf das derzeit durch den Cursor angezeigte Zeichen bezogen ist, wird durch einen derzeitiges Zeichenpufferbeginn-Versatz (CCBB) 1608 angezeigt, das in dem Feld DERZEITI- GER ZEICHENPUFFER ANFANG 853 gespeichert ist, und das letzte Zeichen, das zu dem durch den Cursor derzeit angezeigte Zeichen in Beziehung steht, ist durch ein derzeitiges Zeichenpufferende-Versatz (CCBE) 1610 angezeigt, das in dem Feld DERZEITIGES ZEICHENPUFFER ENDE 854 gespeichert ist. Das Ende des unbenutzten Raumes in EB 128 wird durch ein Ende des nutzbaren Puffer-Versatzes (EOUB) 1612 angezeigt, das in dem Feld ENDE DES UNGENUTZTEN PUFFERS 857 gespeichert ist.
- Wie vorstehend beschrieben, unterhält der Editor bestimmte Datenstrukturen, die bei Einfügungs- und Verbergungsoperationen verwendet werden. Insbesondere initialisiert bei jedem Mal, wenn eine Einfügungs- oder Verbergungsoperation begonnen wird, ein zugehörendes IHDA 166 in dem Feld von Einfügungsstrukturen der Felder EINFÜGUNGSPUNKTSTRUKTUREN 872, und die Information einem Feld EINFÜGUNGSNIVEAU 871 wird um ein Grad erhöht.
- Für die Zwecke der vorliegenden Beschreibung sei angenommen, daß der Benutzer die Einfügung weiteren Textes an der Stelle in dem Text wünscht, die derzeit durch den Cursor angezeigt wird. Um eine Einfügungsoperation oder, wie nachstehend beschrieben, eine Verbergungsoperation auszuführen, ist es notwendig, den mit dem Einfügungspunkt verbundenen und ihm nachfolgenden Text so auf zubewahren, daß diese Daten in die Textkette wieder eingefügt werden können, nachdem der neue Text eingefügt worden ist. In dem vorliegenden Editor werden diese zu speichernden Daten das Ende des Raumes EB 128 während der Einfügungs- oder Verbergungsoperation abgelegt.
- Bezugnehmend auf Fig. 16A werden die Worte, die den Worten vorausgehen, die bei der Einfügungsoperation betroffen sind, durch die Zeichen "A" bezeichnet, und belegen in EB 128 die Plätze 1 bis 12. Das Zeichen an dem Punkt der Einfügungsoperation, d. h. das Zeichen, auf das derzeit der Cursor und die CBP 1606 zeigen, ist durch das Zeichen "B" bezeichnet und belegt in EB 128 den Platz 15. Die Worte, die mit diesem Zeichen verbunden oder diesem zugeordnet sind, sind durch die Zeichen "C" bezeichnet und belegen in EB 128 die Plätze 13, 14, 16 und 17. Die Worte, die dem Einfügungspunkt folgen, aber nicht direkt mit dem Zeichen "B" an dem Einfügungspunkt verbunden sind, sind durch die Zeichen "D" bezeichnet und belegen in EB 128 die Plätze 18 und 19.
- Wenn der Benutzer den Einfügungsvorgang beginnt, initialisiert der Editor, wie vorstehend beschrieben, ein zugehöriges IHDA 166 und schreibt die entsprechende Information in ein EINFÜ- GUNGSPUNKTSTRUKTUREN 872- und EINFÜGUNGSPEGEL 871-Feld.
- Wie in Fig. 16B angezeigt, kopiert der Editor dann die Kette der Textworte, die mit dem Einfügungspunkt verbunden sind und diesem folgend, d. h. die mit den Buchstaben "B", "C" und "D" bezeichneten Buchstaben, die ursprünglich in EB 128 die Plätze 13 bis 19 belegen, an das Ende des EB 128-Raums. Der Editor schreibt einen Ort vom Ende-Zeiger (LFE) 1614 in das Feld ORT VOM ENDE 1002 der IHDA 166. LFE 1614 zeigt auf den neuen Platz an dem Ende von EB 128 von dem ersten Wort der Kette von Worten, die dorthin kopiert worden sind, um gespeichert zu werden, d. h. das Wort, das durch "C" bezeichnet ist und vorher in EB 128 den Platz 13 belegt hat. Der Editor aktualisiert auch EOUB 1612 zu diesem Zeitpunkt, um auf das neue Ende des verwendbaren EB 128-Raumes zu zeigen. In diesem Fall zeigt EOUB 16 12 nun auf den Raum oder Platz von EB 128 genau bevor dem, auf den LFE 1614 zeigt.
- Der Editor schreibt auch einen Unterbrechungspunktzeiger (POB) 1616 in das Feld UNTERBRECHUNGSPUNKT 1104 von IHDA 166 und einen Aufbewahrungszeiger (PP) in 1618 in das Feld AUFBEWAH- RUNGSZEIGER 1106 des IHDA 166. Der POB 1616 zeigt auf den Ort in EB 128, an dem die Einfügung begonnen hat, d. h. der Ort, der ursprünglich durch CBP 1606 und den Cursor bezeichnet wurde und als EB 128 Platz 15 in den Fig. 16A und 16B bezeichnet war. Der PP 1618 zeigt auf den Ursprungsort in EB 128 des ersten Wortes, das mit dem Zeichen an dem Einfügungspunkt verbunden war, d. h. auf die mit Platz 13 bezeichnete Stelle in EB 128 und die durch CCBB 1608 bezeichnet ist. POB 1616 und PP 1618 erlauben die "Stapelung" oder "Verschachtelung" von Einfügungs- und Verbergungsoperationen, d. h. sie erlauben zusammen mit dem Feld von IHDA 166-Zeigern, die in dem Feld von EINFÜGUNGSPUNKTSTRUKTUR 872-Feldern gespeichert sind, die Ausführung von Einfügungs- und Verbergungsoperationen innerhalb von Einfügungs- und Verbergungsoperationen. POB 1616 und PP 1618 erlauben ebenfalls in einem weiteren Beispiel die Wiederherstellung des Originaltextes, falls die Einfügungs- oder Verbergungsoperation abgebrochen wird. PP 1618 wird des weiteren verwendet, z. B. um die mit dem Zeichen ursprünglich an dem Einfügungspunkt verbundenen Attribute zu speichern und wieder herzustellen.
- Zu diesem Zeitpunkt füllt der Editor ebenfalls die verbleibenden Felder in IHDA 166 auf, die vorstehend unter Bezugnahme auf Fig. 11 beschrieben worden sind.
- An diesem Punkt sei bemerkt, daß die Operation des Editors bei der Ausführung eines Einfügungsbefehls von der Ausführung eines Verbergungsbefehls abweicht, was nachstehend beschrieben ist. In einem Einfügungsvorgang wird Text in EB 128 an dem Punkt nach der Einfügungsunterbrechung eingefügt, das ist der "editierbare Text", der sich in den EB 128-Plätzen befindet, die der Einfügungsunterbrechung folgen.
- Wie vorstehend beschrieben, wird der Ort des Anfangs von editierbarem Text in EB 128 durch den derzeitiger Anfang des Textes-Versatz angegeben, der in dem Feld DERZEITIGER ANFANG DES TEXTES 855 gespeichert ist und der allgemein durch das Auftreten eines Anhängungspunktes an dem Punkt in dem Text bezeichnet ist. Der Editor aktualisiert dementsprechend CBOT 1602, was vorher in dem DERZEITIGER ANFANG DES TEXTES 855-Feld gespeichert worden ist, um einen Versatz zu dem Anfang des editierbaren Textes für die Einfügungsoperation zu enthalten. Der neue Anfang von editierbarem Text-Versatz ist in Fig. 16B als Einfügungs derzeitiger Anfang des Texts-Versatz (ICBOT) 1620 bezeichnet, und dieser Versatz wird in das Feld DERZEITI- GER ANFANG DES TEXTES 855 geschrieben. Die Bezeichnung ICBOT 1602 wird zur Klarheit der Darstellung in der vorliegenden Beschreibung benutzt, um den neuen Wert von CBOT 1602 zu bezeichnen, der in dem Feld DERZEITIGER ANFANG DES TEXTES 855 an diesem Punkt der Operation gespeichert ist, um den neuen Anfang des editierbaren Textes in EB 128 zu bezeichnen, d. h. den Punkt, an dem Text in EB 128 einzufügen ist. In dem Fall des vorliegenden Einfügungsbeispiels, dieser Punkt ist in EB 128 bei Platz 13, d. h. der Wort-Ort, der vorher durch das erste Wort der Kette besetzt war, das an das Ende von EB 128 bewegt worden ist.
- Es sei bemerkt, daß der Editor ebenfalls den derzeitiger Ende des Textes-Versatz (CEOT) 1604 aktualisiert, der auf den letztbenutzten Platz in EB 128 zeigt, d. h. auf den Platz genau vor dem nächsten Platz, der verfügbar ist, um Text auf zunehmen, um auf den Platz in EB 128 genau vor dem Ort zu zeigen, wo der neue Text, der einzufügen ist, beginnt. In dem vorliegenden Beispiel eines Einfügungsvorgangs wird der neue CEOT 1604 für die Einfügungsoperation anfänglich auf EB 128-Platz 12 zeigen, d. h. auf den Platz in EB 128 genau vor dem ersten verfügbaren Platz in EB 128 für den einzufügenden Text.
- Der Benutzer gibt dann den neuen Einfügungstext, wie in Fig. 16B durch die Zeichen "X" bezeichnet, in die Plätze 13 bis 120 in EB 128 ein. Es sei bemerkt, daß CEOT 1604 kontinuierlich aktualisiert wird, wenn die Worte des einzufügenden Textes durch den Benutzer eingegeben werden, so daß CEOT 1604 nacheinander auf unterschiedliche EB 128-Plätze 12 bis 20 zeigt, wenn die Worte eingegeben werden. Es sei bemerkt, daß einige Positionen nicht als Werte in CEOT 1604 als Ergebnis von Additionsoperatorpaaren oder Operatorparametersätzen erscheinen können.
- Am Ende der Einfügung muß die Textkette, die an das Ende von EB 128 verschoben worden ist, um Platz zu machen für den einzufügenden Text, "wieder angefügt werden" an dem Ende der Kette, die an dem Ende der Einfügung existiert. Das heißt, die abgelegte Kette muß an die Textkette an dem Ende eingefügten Textes angefügt werden.
- Diese Wirkung der Operation wird in Fig. 16C veranschaulicht. In diesem Schritt bestimmt der Editor den nächsten Platz nach dem eingefügten Text durch CEOT 1604. Der Editor kopiert die vorher gespeicherte Kette von dem Ende von EB 128, so daß das erste Zeichen der abgelegten Kette, die durch LFE 1614 gefunden wird, in den nächsten Platz nach dem Platz geschrieben wird, der durch CEOT 1604 bezeichnet ist, wobei der Rest der abgelegten Kette geordnet in die nachfolgenden Plätze in EB 128 geschrieben wird. Wie in Fig. 16C veranschaulicht, wird die abgelegte Kette nun in EB 128 in den Plätzen 21 bis 27 erscheinen und in der gleichen Ordnung, in der sie ursprünglich in den Plätzen 13 bis 19 war.
- Schließlich wird der Editor erneut CBOT 1602, CEOT 1604 und EOUB 1612 auf die Plätze, wie sie in Fig. 16C angezeigt sind, aktualisieren, d. h. entsprechend auf das erste Wort der Kette, auf den letzten Wortplatz an dem Ende der Kette und auf den letzten Wortplatz in EB 128.
- Nachdem eine Einfügungsoperation beschrieben worden ist, wird nachstehend die Verbergungsoperation beschrieben.
- Zunächst seien die Zwecke der Verbergungsoperation betrachtet. Es ist aus den vorherstehenden Beschreibungen des Editors ersichtlich, daß die Editordatenstrukturen, wie viele Datenstrukturen, im wesentlichen sequentiell sind. Das heißt, der Ort und sogar die Eigenschaften von Daten an jedem beliebigen Punkt in der Struktur hängen von den Daten ab, die diesem Punkt vorangehen. Es ist des weiteren ersichtlich, daß jede Operation auf vorhergehende Daten die nachfolgenden Daten beeinträchtigen wird, wie es vorstehend bei den Beschreibungen von dem Aufbau von Einheiten und Linien und der Einfügungsoperation erläutert worden ist.
- Es gibt ebenfalls viele Operationen, die auf die Daten in einer Datenstruktur ausgeführt werden können, die nicht sofort und direkt nachfolgende Daten beeinträchtigen. Die vorstehend beschriebene Einfügungsoperation ist ein Beispiel einer derartigen Operation. Es ist daher vorteilhaft, bei derartigen Operationen tatsächlich die nachfolgenden Daten von der unmittelbaren Operation "zu verbergen" und jegliche notwendige nachfolgenden Operationen auf die nachfolgenden Daten nur nach Beendigung der Operation auf die vorhergehenden Daten aus zuführen.
- Es ist die Absicht und der Zweck der Verbergungsoperation, es zu ermöglichen, einen Abschnitt der Textstruktur als einen Bereich zu definieren, in dem Editieroperationen auszuführen sind, und die diesem Bereich nachfolgenden Textstrukturen von den Wirkungen der Editieroperationen "zu verbergen", bis die Operationen beendet sind. Es sei bemerkt, daß in dieser Hinsicht das Verfahren der Bearbeitung von Datenstruktur im allgemeinen stets dann vorteilhaft ist, wenn Operationen auf Daten in einer Datenstruktur ausgeübt werden, bei der die Struktur oder die Eigenschaften der nachfolgenden Daten von den vorhergehenden Daten abhängen.
- Wie vorstehend beschrieben, stellen die IHDAs des vorliegenden Editors zusammen mit den Feldern von IHDAs 166, die in den Feldern EINFÜGUNGSMASS 871 und EINFÜGUNGSPUNKTZEIGER 872 von SSS einen Mechanismus zum "Verschachteln" oder "Stapeln" von Einfügungsoperationen bereit. Das heißt, ein Benutzer kann eine Einfügungsoperation beginnen, die gespeicherte Kette zu dem Ende von EB 128, wie vorstehend beschrieben, zu verschieben und ein IHDA 166 erzeugen, das alle notwendigen Informationen betreffend die Kette und die Einfügung enthält. Der Benutzer kann dann eine andere Einfügung in den Text beginnen, die einzufügen ist, bevor die erste Einfügung beendet ist, wobei erneut eine abzulegende Kette an das derzeitige Ende von EB 128 geschoben wird und eine neue IHDA 166 erzeugt wird, usw., für so viele Einfügungspegel, wie notwendig. Wie nachstehend beschrieben, wird die Verbergungsoperation in dem vorstehenden Editor in einer modifizierten Form von verschachtelten Einfügungen implementiert.
- Nun sei erneut auf Fig. 16C und die vorstehenden Beschreibungen, betreffend Fig. 16C, Bezug genommen. Es wurde beschrieben, daß der Editor die Textkette hinter den Einfügungspunkt an das Ende von EB 128 geschoben hat und ein ICBOT 1620 erzeugt hat, um anzuzeigen, daß der derzeitige Anfang von editierbarem Text nun an dem Einfügungs-Unterbrechungspunkt war. Der Einfügungstext wurde dann in EB 128 an den durch ISBOT 1620 bezeichneten und nachfolgenden Plätzen eingefügt.
- Es sei an diesem Punkt in der Beschreibung bemerkt, daß die Textkette, die an das Ende von EB 128 verschoben worden ist, in einigen Aspekten von sowohl den Editieroperationen des Editors als auch vor dem Benutzer "verborgen" ist. Das heißt, der Editor kann keine Operationen auf diesen "verborgenen" Text ausführen, außer die "verborgene" Textkette mit dem editierbaren Abschnitt des Textes wieder zu verbinden, wenn die Einfügung beendet ist.
- Eine Verbergungsoperation beginnt in der gleichen Weise wie eine Einfügungsoperation, außer, daß anstelle der Anzeige des Punktes, an der eine Einfügungsunterbrechung aufzutreten hat, der Ort des Textes, der durch die derzeitige Cursorposition angezeigt ist, einen Abschnitt des Textes begrenzt, der zu "verbergen" ist, d. h. daß der Abschnitt des Textes, der diesem Punkt folgt, vor den Operationen des Editors zu "verbergen" ist. Dies definiert auch den Abschnitt des Textes vor dem Unterbrechungspunkt, d. h. vor dem Punkt des Textes zwischen dem Anfang des Textes und dem Unterbrechungspunkt, als den Abschnitt des Textes, der für den Editor zugänglich ist, indem Editieroperationen ausgeführt werden können.
- Wie vorstehend in der Einfügungsoperation beschrieben, "verschiebt" der Editor den Abschnitt der Textkette, der der Cursor- oder Unterbrechungsstelle folgt, zu dem "verborgenen" Bereich an dem Ende von EB 128. Anstatt dann CBOT 1602 auf den Unterbrechungspunkt zu verschieben wie einen ICBOT 1620, wird jedoch, wie vorstehend bei der Einfügungsoperation beschrieben, der Editor den derzeitiger Anfang des Textes-Zeiger an dem Anfang der Textkette vor dem Unterbrechungspunkt belassen oder ihn nur insoweit als erforderlich zu verschieben, um zulässige auftretende Operationen auszuführen, d. h. an dem bisherigen Anfang des editierbaren Textpunktes. In der vorliegenden Implementierung kann dieser Punkt der Anfang der lokalen Grundlinie sein, falls der Editor auf einer Grundlinie operiert, die nicht die derzeitige Grundlinie für die Linie ist.
- Diese Operation ist in Fig. 16B zur Klarheit der Darstellung als ein Verbergen derzeitiger Anfang des Text-Versatz es (HCBOT) 1622 bezeichnet. Es sei erinnert, daß die Bezeichnungen HCBOT 1622 und ICBOT 1620 von der Beschreibung der Einfügungsoperation nur andere Bezeichnungen für CBOT 1602 sind und nur zur Klarheit der Darstellung beim Erläutern der Operation von CBOT 1602 bei den jeweiligen Einfügungs- und Verbergungsoperationen sind. Der derzeitige Anfang des Textes ist tatsächlich stets durch den Versatzwert bezeichnet der in DERZEI- TIGER ANFANG DES TEXTES 856-Feld gespeichert ist und die drei Bezeichnungen dieses Wertes, die in der vorliegenden Beschreibung verwendet werden, d. h. CBOT, ICBOT und HCBOT sind als Namen verwendet, um den verändernden Wert dieses Versatzes während der Einfügungs- und Verbergungsoperation zu erläutern.
- Wie vorstehend beschrieben, zeigt der derzeitige Anfang des Textes-Versatz auf den Anfang des editierbaren Textes, d. h. auf den Text, der für den Editor zur Editieroperationen zugänglich ist. Tatsächlich stellt der derzeitige Anfang des Textes-Versatz den Zugang zu Abschnitten des Textes für den Editor durch Anzeigen des Ortes des Anfangs des Textes für den Editor, auf den er Zugang hat. In der Verbergungsoperation hat der Editor daher Zugang zu einigen der Textabschnitten zwischen dem Anfang der Textkette und dem Punkt, an dem die Verbergungsunterbrechung eingefügt worden ist. Der Editor kann frei auf jeden beliebigen Punkt in diesem Abschnitt der Textkette sich bewegen, wie vorstehend in der Beschreibung der Cursorbewegung erläutert worden ist, und kann jegliche gewünschte Editieroperation in diesem Bereich ausführen, inklusive Einfügen, weiterer Verbergen-Operationen und Kopiere, Verschieben und Löschoperationen.
- Am Ende der Verbergen-Operation wird die Textkette, die verschoben und an das Ende von EB 128 verborgen worden ist, an das Ende der editierbaren Textkette zurückgebracht, wie vorstehend in Fig. 16C erläutert. Jegliche Operationen, die notwendig sind als Folge auf den editierbaren Textabschnitt während der Verbergen-Operation ausgeführten Operationen, werden auf den vorhergehenden verborgenen Abschnitt des Textes zu diesem Zeitpunkt ausgeführt, z. B. Verschieben des Textes in einer Linie oder auf einer Seite.
- Schließlich können die vorstehenden Mechanismen verwendet werden, um auch Kopieren-, Verschieben- und Löschoperationen mit der zusätzlichen Hilfe von Zeigern auszuführen, d. h. von Versätzen in EB 128, um die Abschnitte des zu kopierenden, zu verschiebenden oder zu löschenden Textes zu begrenzen. Diese zusätzlichen Versätze werden durch die Felder SSS 160 ANFANGS- BEGRENZER 873, ENDBEGRENZER 874, ANFANGSBEGRENZER ENDPOSITION 875 und ENDBEGRENZER ENDPOSITION 876 bereitgestellt, wie vorstehend beschrieben. Diese Felder wirken zusammen mit dem Cursor in der vorstehend beschriebenen Weise unter Bezugnahme auf die DERZEITIGE PUFFERPOSITION 852-, DERZEITIGER ZEICHEN- PUFFER ANFANG 853- und DERZEITIGES ZEICHENPUFFER ENDE 854-Felder, um dem Benutzer zu ermöglichen, Abschnitte der Textkette für den Editor zu identifizieren und zu begrenzen.
- In dem Fall einer Kopieroperation würde zum Beispiel der Benutzer den Abschnitt der zu kopierenden Textkette begrenzen, und die Grenzen der Textkette würden durch den Editor beachtet. Der Benutzer würde dann den Punkt bezeichnen, an dem der kopierte Textabschnitt der Textkette einzufügen ist. Der Editor würde dann die Einfügungsoperation ausführen durch Lesen des begrenzten Abschnittes des Textkette und durch Einfügen einer Kopie des begrenzten Abschnittes des Textes an der Einfügungs-Unterbrechungsstelle in der vorstehend beschriebenen Weise.
- Es sei bemerkt, daß der Abschnitt der Textkette, die begrenzt worden ist für die Kopieroperation, strukturelle oder Umgebungsoperationen enthalten kann. Es kann auch Operatoren, insbesondere Umgebungsoperatoren geben, die nicht in dem begrenzten Abschnitt der Textkette enthalten sind und die Zeichen und Symbole in dem begrenzten Abschnitt betreffen. Wie vorstehend beschrieben, treten viele dieser Operatoren als zusammenhängende Paare von Codes in der Textkette auf, d. h. ein erster Code, der eine Struktureigenschaft beginnt oder ein Attribut definiert, wird durch einen anderen Code gefolgt, der die Wirkung des ersten Codes beendet oder verändert. Zum Beispiel kann ein Strich-Anfangsoperator an einem späteren Punkt in der Textkette durch einen Strich-Endeoperator gefolgt sein und ein Größenveränderungs-Operator wird durch einen anderen Größenveränderungs-Operator gefolgt, der die Wirkung des ersten Größenveränderungs-Operator aufhebt oder modifiziert.
- Es ist offensichtlich, daß eine derartige Operation auf einen Textabschnitt, z. B. ein Kopieren oder Verschieben unerwünschte Wirkungen auf die Textkette haben kann. Zum Beispiel kann ein Abschnitt der Textkette, die zu einem anderen Punkt in der Textkette kopiert worden ist, einen Strich- oder Schrägschrift-Anfangsoperator enthalten, aber muß nicht den zugehörigen Strich- oder Schrägschrift-Endoperator enthalten. Das Auftreten des Strich- oder Schrägschrift-Anfangsoperator in dem kopierten Abschnitt des Textes wird bewirken, daß der Strich- oder Schrägschrift-Operator auf den Abschnitt der Textkette angewandt wird, der dem Einfügungspunkt folgt, anstatt nur auf den kopierten Abschnitt des Textes.
- Beim Ausführen einer Kopieroperation muß der Editor die EB 128-Textkette in der Reihenfolge lesen und die strukturellen Operatoren und Attribute bestimmen, die derzeit auf die Zeichen und Symbole wirken, die in dem begrenzten Abschnitt der Textkette vorhanden sind. Der Editor muß dann in ähnlicher Weise die Operatoren und Attribute bestimmen, die an dem Einfügungspunkt wirksam sind und die beiden Sätze von Operatoren und Attributen in dem kopierten Bereich der Textkette verknüpfen. Diese Verknüpfung muß so wirken, daß der kopierte Abschnitt des Textes am Ende der Kopieroperation die gleichen Eigenschaften wie der ursprünglich begrenzte Abschnitt der Texte hat. Zusätzlich muß die Verknüpfung so wirken, daß keine neue Eigenschaften oder Attribute unerwünschterweise auf die Abschnitte der Textkette angewandt werden, die dem kopierten Abschnitt des Textes folgen.
- Um dies durch ein Beispiel zu erläutern, sei angenommen, daß ein Größenveränderungsfaktor von -1 auf den begrenzten Abschnitt der Textkette, die zu kopieren ist, wirkt. Falls die Textkette an dem Einfügungspunkt ebenfalls einen Größenveränderungsfaktor von -1 hat, dann wird der Editor einfach die Zeichen und Symbole des begrenzten Textabschnittes in die Kette an dem Einfügungspunkt kopieren. Falls jedoch ein Größenveränderungsfaktor von +1 an dem Einfügungspunkt wirksam ist, wird der Editor den W1-Grenveränderungsfaktor mit dem +1-Größenveränderungsfaktor verbinden und wird einen Größenveränderungsfaktor von -2 an dem Anfang des kopierten Abschnittes des Textes einfügen und einen entsprechenden Größenveränderungsfaktor von +2 an dem Ende des kopierten Textabschnittes. Falls als weiteres Beispiel ein Größenveränderungsfaktor von -2 an dem Einfügungspunkt wirkt, würde der Editor Größenveränderungsfaktoren von +1 und -1 jeweils am Anfang und am Ende des kopierten Abschnittes des Textes einfügen. In jedem Fall würde auf diese Weise der kopierte Text seinen ursprünglichen Umgebungsoperator, d. h. einen Größenveränderungsfaktor von -1, behalten.
- Es sei des weiteren bemerkt, daß die Verknüpfung die Faktoren erhalten muß, die auf die Zeichen und Symbole um den Punkt, an den der kopierte Text einzufügen ist, wirken. Falls beispielsweise die Einfügung zwischen zwei Zeichen erfolgen soll, die durch einen Größenveränderungsfaktor beeinflußt sind, der vor dem ersten Zeichen auftritt, wie dies oftmals der Fall sein wird, darf der anführende Größenveränderungsfaktor nicht modifiziert werden, ohne das genau vor dem Einfügungspunkt vorhandene Zeichen zu beeinträchtigen. In diesem Fall muß die Verknüpfung den anführenden Größenveränderungsfaktor erhalten, obwohl er einen Größenveränderungsfaktor nach dem Zeichen nach dem Einfügungspunkt beeinträchtigen kann.
- In einem weiteren Beispiel, falls der kopierte Abschnitt der Textkette einen Strich- oder Schrägschrift-Anfangsoperator enthält, oder einen Strich- oder Schrägschrift-Endoperator, muß der Editor jeweils einen Strich- oder Schrägschrift-End- oder -Anfangsoperator in den kopierten Abschnitt des Textes an den erforderlichen Positionen in den kopierten Abschnitt der Textkette einfügen. Diese eingefügten Operationen begrenzen dann den Bereich der Wirkung der Operatoren, die ursprünglich in dem kopierten Abschnitt der Textkette vorhanden waren, auf den kopierten Abschnitt der Textkette.
- Schließlich muß der Editor neue USs 136 erzeugen, um mit dem kopierten Abschnitt der EB 128-Textkette zu korrespondieren, wie vorstehend beschrieben, wobei geeignete EBP 140-Zeiger in die kopierten Abschnitte der Textkette in EB 128 zeigen. In diesem Vorgang muß der Editor ebenfalls die neuen USs 136 mit den bereits existierenden US 136 durch ihre USP 138-Zeiger verknüpfen, wie vorstehend beschrieben, die USP 138-Zeiger der vorher existierenden USs 136, wenn erforderlich, verändern.
- Als nächstes sei die Löschoperation betrachtet. Die Felder DERZEITIGE PUFFERPOSITION 852, DERZEITIGER ZEICHENPUFFER ANFANG 853 und DERZEITIGES ZEICHENPUFFER ENDE 854 erlauben dem Benutzer erneut, Abschnitte der Textkette, die zu bearbeiten ist, zu identifizieren und zu begrenzen. In diesem Fall ist der begrenzte Abschnitt der Textkette zu löschen und jegliche Abschnitte der ursprünglichen EB 128-Textkette, die dem gelöschten Abschnitt folgt, sind nach vorne in EB 128 zu verschieben, um den Abschnitt des Abschnittes der Textkette zu verbinden, der dem gelöschten Abschnitt vorangeht.
- Erneut und wie vorstehend beschrieben, können strukturelle oder Umgebungsoperatoren auf einen Abschnitt einer Textkette wirken, die begrenzt wurde, um gelöscht zu werden. Wenn eine Löschoperation ausgeführt wird, muß daher der Editor wie bei den Kopieroperationen die strukturellen und Umgebungsoperatoren, die in dem begrenzten Abschnitt der EB 128-Textkette auftreten, bestimmen und verbinden oder löschen, um so unerwünschte Effekte auf die ungelöschten Abschnitte in der Textkette zu vermeiden.
- In einem Löschvorgang führt der Editor einen ersten "Durchlauf" durch den gelöschten Abschnitt der LEB 128-Textkette aus, liest alle Zeichen- und Symbolcodes und alle Operatorcodes. In diesem ersten Durchlauf werden alle Zeichen- und Symbolcodes in dem begrenzten Abschnitt der EB 128-Textkette mit "gelöschte Textflag"-Codes ersetzt. Die "gelöschter Textflag"-Codes sind nun in jeder EB 128-Stelle abgelegt, die ursprünglich einen Zeichen- oder Symbolcode enthalten haben, und zeigen an, daß die Zeichen- oder Symbolcodes, die ursprünglich in diesen EB 128-Plätzen abgelegt waren, gelöscht sind und daß die Plätze frei für andere Zwecke sind.
- Ebenfalls bemerkt der Editor in dem ersten "Durchlauf" alle Operatorcodes, die in dem begrenzten Abschnitt der EB 128- Textkette auftreten und den Ort eines jeden solchen Operatorcodes. Der Editor verbindet dann die identifizierten Operatorcodes in einer Weise, die ähnlich wie die vorstehend in bezug auf die Kopieroperation beschriebene Weise ist, um so die Wirkungen der Operatorcodes zu erhalten, die in dem begrenzten Abschnitt des Textes vorhanden sind und die Wirkungen außerhalb des begrenzten Textabschnittes haben. Der Editor kann derartige Operatorcodes durch Erhalten von Codes, durch Löschen von Codepaaren, die sich gegenseitig auslöschende Wirkungen haben, oder durch Kombinieren ähnlicher Operatorcodes in einzelne äquivalente Codes verknüpfen.
- Falls beispielsweise der begrenzte Textabschnitt einen Strich- oder Schrägschrift-Anfangs- oder -Endoperator enthält, aber nicht den zugehörigen End- oder Anfangsoperator, wird der Editor den enthaltenen Operator erhalten, d. h. der Editor wird den Operatorcode nicht mit einem "gelöschter Textflag"-Code ersetzen. In ähnlicher Weise wird zum Beispiel, falls der begrenzte Textabschnitt einen einzigen Größenveränderungsoperator enthält, dieser Operator erhalten. Falls der begrenzte Textabschnitt beispielsweise sowohl einen Anfangsschrift- oder Anfangsschrägschrift-Operator und den zugehörigen Endschrift- oder Endschrägschrift-Operator in der zugehörigen Paarungsabfolge enthält, wird der Editor diese beiden Operatorcodes durch "gelöschter Textflag"-Codes ersetzen. Als weiteres Beispiels, falls der begrenzte Textabschnitt der EB 128-Textkette zwei oder mehrere Größenveränderungsoperatoren einfacher Art enthält, z. B. Größenveränderung um die Mittellinie oder Größenveränderung auf der Grundlinie, wird der Editor diese eingefügten Größenveränderungsoperatoren von diesem Typ in einen einzigen Größenveränderungsoperator von dem Typ kombinieren, der die Gesamtwirkung all der enthaltenen Größenveränderungsoperatoren dieses Typs hat.
- Wie vorstehend beschrieben, ist die Abfolge des Auftretens der Operatorcodes in der EB 128-Textkette bei der Bestimmung der Wirkungen der Operatoren signifikant. Nachdem die ursprünglichen Operatorcodes verknüpft, erhalten oder gelöscht wurden, wie dies erforderlich ist, wird dann der Editor die resultierenden Operatorcodes in der notwendigen endgültigen Abfolge erneut ordnen, um die gewünschten Eigenschaften und Attribute zu verleihen.
- Schließlich führt der Editor einen zweiten "Durchlauf" durch den begrenzten Abschnitt der EB 128-Textkette aus. In dem ersten Teil dieses zweiten "Durchlaufs" schreibt der Editor die Abfolge von Operatorcodes, die von den Schritten herstammen, wie sie oben beschrieben worden sind, in die ersten verfügbaren Plätze in dem begrenzten Abschnitt von EB 128 in der notwendigen Reihenfolge, erhöht die vorstehend beschriebenen Sätze in EB 128, wie dies erforderlich ist, wenn jeder Code in EB 128 geschrieben wird.
- In dem Schlußteil des zweiten "Durchlaufs" liest der Editor die Zeichen/Symbol- und Operatorcodes des Abschnitts der ursprünglichen EB 128-Textkette, die dem abgegrenzten Abschnitt gefolgt ist, in der Reihenfolge und schreibt diese Codes erneut in dieser Reihenfolge in die EB 128-Plätze ein, die dem angefügten Operatorcode folgen, die von dem gelöschten Abschnitt der Textkette verbleiben. Dieser letzte Teil des zweiten "Durchlaufs" "verschiebt" effektiv den Abschnitt der EB 128-Textkette, die von dem gelöschten Abschnitt der Textkette nach vorne in EB 128 gefolgt worden ist, um sich mit dem Abschnitt der Textkette zu verbinden, die dem gelöschten Abschnitt der Textkette vorangegangen ist, wobei die verbundenen Operatorcodes von dem gelöschten Abschnitt der Textkette zwischen den beiden unbeeinträchtigten Abschnitten der Kette erscheinen.
- Erneut wird der Editor die Löschoperation durch Veränderung oder Wiederaufbauen der USs 136, wie dies erforderlich ist, beenden, um den endgültigen Aufbau des Textes, wie er in den Zeichen/Symbol- oder Operatorcodes von EB 128, wie vorstehend beschrieben, erscheint.
- Schließlich wird es für Fachleute offensichtlich sein, wie die vorstehend beschriebenen Operationen verwendet werden können, um andere Texteditieroperationen auszuführen. Zum Beispiel kann eine Verschiebeoperation, d. h. eine Verschiebung eines Abschnittes von Text von einem Ort in der EB 128-Textkette, zu einem anderen ausgeführt werden durch eine Kopieroperation, um den begrenzten Abschnitt von Text zu dem neuen Ort zu kopieren, gefolgt von einer Löschoperation, um den begrenzten ursprünglichen Textabschnitt, der kopiert worden ist, zu löschen.
Claims (11)
1. Texteditor für Texte in mehreren Richtungen oder
Dimensionen in einem Datenverarbeitungssystem, mit einem Editor
(146), der auf Textzeichen darstellende Tastenanschläge
reagiert und Befehle zum Erzeugen einer einen Text definierenden
Codekette aufbereitet, und einem Parser (148) zum Lesen der
Codes der Kette und zur automatischen Syntaxanalyse der Codes
in codierte Einheiten (134), wobei jede codierte Einheit eine
Gruppe aus einem oder mehreren Zeichen definiert, die in
einem Ausdruck als Einheit eingesetzt sind, und von einem die
Gruppe definierenden Codesatz gebildet ist, und in bezug auf
jede codierte Einheit zum Erzeugen einer Einheitsstruktur
(136), welche eine sichtbare Darstellung (120) der
entsprechenden codierten Einheit definierende Informationen enthält,
dadurch gekennzeichnet, daß jede Einheitsstruktur umfaßt:
- Strukturidentifizierungsfelder (502), die Informationen
enthalten, welche die Einheitsstruktur (136) mit der
Codegruppe in der Textfolge in Beziehung setzen, wobei die
Textfolge die der Einheitsstruktur entsprechende codierte Einheit
(134) umfaßt,
- Strukturmarkerfelder (512), die Informationen enthalten,
welche den Grund angeben, weshalb die jeweilige codierte
Einheit von der Stamm- oder der vorhergehenden codierten Einheit
getrennt ist,
- Strukturzeigerinformationsfelder (514), die Informationen
enthalten, welche andere, mit der Einheitsstruktur verbundene
Einheitsstrukturen angeben,
- Eigenschaftsidentifizierungsfelder (504), die Informationen
enthalten, welche auf die Zeichen oder Symbole der
entsprechenden codierten Einheit anzuwendende Attribute definieren,
und
- ein Positionsfeld (522) mit Informationen, welche die
Position
der entsprechenden codierten Einheit auf einer Seite
angeben.
2. Texteditor nach Anspruch 1, bei dem der Parser ferner
auf den Betrieb des Editors anspricht und die
Einheitsstrukturen und die entsprechenden Codes der Folge liest und eine
visuell anzeigbare Darstellung des Textes erzeugt.
3. Texteditor nach Anspruch 1, bei dem die Codes in der
einen Text darstellenden Codefolge die Zeichen des Textes
darstellende Zeichencodes und Operatorcodes umfassen, die die
Eigenschaften des Textes definieren, ausgenommen die Zeichen,
aus denen er zusammengesetzt ist.
4. Texteditor nach Anspruch 3, bei dem die Operatorcodes
umfassen:
- Präfixoperatoren, die Operationen an einem nachfolgenden
Zeichen, einer nachfolgenden Zeichengruppe oder Einheit oder
Einheitengruppe durchführen,
- Postfixoperatoren, die Operationen an einem vorhergehenden
Zeichen, einer vorhergehenden Zeichengruppe oder Einheit oder
Einheitengruppe durchführen, und
- Infixoperatoren, die Operationen gleichzeitig an zwei
Zeichen, Zeichengruppen oder Einheiten oder Einheitengruppen
durchführen.
5. Texteditor nach Anspruch 3, bei dem die Operatorcodes
Strukturoperatoren umfassen, die organisatorische Beziehungen
zwischen den Einheiten definieren, und Umgebungsoperatoren,
die Attribute der Zeichen definieren.
6. Texteditor nach Anspruch 5, bei dem die
Strukturoperatoren Einleitoperatoren, die entsprechende, durch die
Operatoren definierte Einheiten einleiten, und entsprechende
Abschlußoperatoren
umfassen, die die von den Einleitoperatoren
eingeleiteten Einheiten beenden.
7. Texteditor nach Anspruch 5, bei dem die
Strukturoperatoren assoziative Operatoren umfassen, die eine Assoziation
zwischen einem Zeichen und einem anderen Zeichen definieren,
derart, daß das Zeichen Teil der Definition des anderen
Zeichens wird.
8. Texteditor nach Anspruch 5, bei dem die
Umgebungsoperatoren Attributumschaltoperatoren umfassen, die das Ein- oder
Ausschalten eines entsprechenden Attributs durchführen.
9. Texteditor nach Anspruch 3, bei dem die Operatorcodes
Schrift-Operatorcodes umfassen, wobei jeder
Schrift-Operatorcode eine Schreibeinheit der codierten Einheiten definiert,
die in einer Schreibposition in bezug auf eine Basiseinheit
der codierten Einheiten angeordnet ist.
10. Texteditor nach Anspruch 9, bei dem jede Schreibeinheit
als eine Einheit definiert ist, die eine nach der Grundlinie
der Basiseinheit ausgerichtete Grundlinie hat und gegenüber
der Grundlinie der Basiseinheit um einen gewählten Abstand
versetzt ist, und bei der die Lage der Grundlinie der
Schreibeinheit in bezug auf die Grundeinheit durch den
Schrift-Operatorcode bestimmt ist.
11. Texteditor nach Anspruch 3, bei dem bestimmte
Operatorcodes zugehörige Parametercodes umfassen, die den
auszuführenden Operator näher definieren.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US84666786A | 1986-03-31 | 1986-03-31 | |
US87972986A | 1986-06-27 | 1986-06-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
DE3784088D1 DE3784088D1 (de) | 1993-03-25 |
DE3784088T2 true DE3784088T2 (de) | 1993-09-02 |
Family
ID=27126660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE8787104744T Expired - Fee Related DE3784088T2 (de) | 1986-03-31 | 1987-03-31 | Texteditor fuer texte in mehreren richtungen oder dimensionen. |
Country Status (4)
Country | Link |
---|---|
EP (1) | EP0240909B1 (de) |
AU (1) | AU597320B2 (de) |
CA (1) | CA1272293A (de) |
DE (1) | DE3784088T2 (de) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5111398A (en) * | 1988-11-21 | 1992-05-05 | Xerox Corporation | Processing natural language text using autonomous punctuational structure |
US5070478A (en) * | 1988-11-21 | 1991-12-03 | Xerox Corporation | Modifying text data to change features in a region of text |
US6771820B1 (en) * | 1999-08-12 | 2004-08-03 | Hewlett-Packard Development Company, Lp. | Encoding information within text printed on a page using differing gray or color levels |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
FR2509491A1 (fr) * | 1980-04-17 | 1983-01-14 | Comile Sarl | Systeme de traitement de textes scientifiques et techniques |
CA1290855C (en) * | 1986-08-08 | 1991-10-15 | Peter M. Makus | Text editor for multidimensional or multidirectional text |
-
1986
- 1986-12-11 AU AU66440/86A patent/AU597320B2/en not_active Ceased
-
1987
- 1987-03-03 CA CA000530963A patent/CA1272293A/en not_active Expired - Fee Related
- 1987-03-31 EP EP87104744A patent/EP0240909B1/de not_active Expired - Lifetime
- 1987-03-31 DE DE8787104744T patent/DE3784088T2/de not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
EP0240909A2 (de) | 1987-10-14 |
EP0240909B1 (de) | 1993-02-10 |
CA1272293A (en) | 1990-07-31 |
AU6644086A (en) | 1987-10-08 |
DE3784088D1 (de) | 1993-03-25 |
AU597320B2 (en) | 1990-05-31 |
EP0240909A3 (en) | 1989-02-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE3586272T2 (de) | Integriertes vieldaten-edierungsgeraet. | |
DE3586274T2 (de) | Vieldaten-edierungsgeraet mit gebrauch von attributstroemen fuer textobjekte. | |
DE3586273T2 (de) | Implizite erzeugung einer superblockstruktur in einem vieldaten-edierungsgeraet. | |
DE3729023C2 (de) | Bildbearbeitungsgerät | |
DE3853788T2 (de) | Dokumentbildungssystem mit benannten Formaten und Schriftarten. | |
DE3586790T2 (de) | In linie-dynamischer editor fuer gemischte objectdokumente. | |
DE10162156B4 (de) | Die Benutzernavigation durch Multimedia-Dateiinhalte unterstützendes System und Verfahren | |
DE69132816T2 (de) | Veränderung eines graphischen Anzeigebildes | |
DE3629104C2 (de) | ||
DE69521496T2 (de) | Zeicheninformationsprozessor mit funktion zur darstellung | |
DE68926745T2 (de) | Zwischenstruktur für ein tabellenblatt | |
DE69426919T2 (de) | Gerät und Verfahren zur Ausführung von vielen verkettenden Befehlsgesten in einen System mit Gestenbenutzerschnittstelle | |
DE69129959T2 (de) | Elektronisches Dokumentenaufbereitungssystem | |
DE69527331T2 (de) | Datenwiedererfindungssystem, Datenverarbeitungssystem, Datenwiedererfindungsverfahren und Datenverarbeitungsverfahren | |
DE69428675T2 (de) | Apparat und Verfahren zur Unterstützung einer impliziten Strukturation von Freiform-Listen, Übersichten, Texten, Tabellen und Diagrammen in einem auf Handzeichen basierenden Eingabesystem und Editiersystem | |
DE3587690T2 (de) | Verfahren um Schrifttypen mit Skalaänderungen herzustellen. | |
DE3121503C2 (de) | Dokumenten-Verarbeitungssystem | |
DE68929038T2 (de) | Verfahren zur Verarbeitung von digitalen Textdaten | |
EP0096079B1 (de) | Verfahren zur Aufbereitung von Punktrasterdaten für Zeichen- und/oder Bilddarstellungen | |
DE69220583T2 (de) | Vorrichtung zum Anzeigen von Gebieten auf einem Sichtgerät | |
DE69732547T2 (de) | Verfahren und Gerät zum Zusammenklappen und zur Ausdehnung auserwählter Bereiche von Arbeitsräumen auf einem von einem Rechner kontrollierten Anzeigesystem | |
DE69525606T2 (de) | Eingabe- und Anzeigegerät für Handschrift | |
DE69326226T2 (de) | Verfahren zum Strukturieren von in einem industriellen Prozess verwendeten Informationen und Anwendung als Flugzeugführungshilfe | |
DE69130788T2 (de) | Dokumentverarbeitungsapparat | |
DE3686982T2 (de) | Testverarbeitungsrandausgleichsverfahren. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
8364 | No opposition during term of opposition | ||
8327 | Change in the person/name/address of the patent owner |
Owner name: WANG LABORATORIES, INC., BILLERICA, MASS., US |
|
8339 | Ceased/non-payment of the annual fee |