![]() |
Word Processor: Fortlaufende Abschnitte
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
ich schreibe heute mal etwas Off-Topic, weil ich gern die Funktionsweise, den Ablauf der Komposition von fortlaufenden Abschnitten in einem Textverarbeitungsprogramm, wie man es aus Microsoft Word, Libre Office oder Apple Pages kennt, zu verstehen. Ich schreibe im Moment mein eigenes Word Processor Control. Dieses soll sehr umfangreich werden. Ich habe zwei Module. Eines kümmert sich um die Daten, das andere um die Darstellung der Daten. Es handelt sich beim zweiten also um den Renderer für die Datenklasse. Den Aufbau eines Daten Dokumentes mit formatierten Texten kann man sich grob umschrieben so bei mir vorstellen:
Code:
Wir haben also eine Datenstruktur mit einem Abschnitt, der wiederum zwei Absätze mit verschiedenem Inhalt enthält.
Dokument
+ Abschnitt (2 Spalten) + Absatz + Text + Tabulator + Text + Bild + Absatz + Text + Abschnitt ... Die Render Engine übersetzt das Ganze im Moment wie folgt:
Code:
Der Renderer berechnet wieviele Zeilen, die durch die Datenstruktur erzeugt werden, in einen Absatz passen. Dann wird wiederum geschaut, wieviele Blöcke (Absatz oder Tabelle) in eine Spalte passen, falls die Höhe überschritten wird, wird in der nächsten Spalte fortgefahren und bei Bedarf eine neue Seite hinzugefügt.
Dokument
+ Seite + Spalte (1. Spalte) + Blöcke + Absatz + Zeile + Text + Tabulator + Text + Bild + Absatz + Zeile + Text + Spalte (2. Spalte) + Blöcke Das bedeutet, dass ich im Moment mit meiner Struktur "feste" Abschnitte darstellen kann, also solche, die auf graden/ungraden/nächste Seite (Even/Odd/NextPage) beginnen. Für das Zeichnen des Controls bedeutet das einfach, dass ich für jede Seite alle Spalten von Links nach Rechts ausgebe, wobei der Inhalt der Spalten, die Blöcke dann von oben nach unten gezeichnet werden. Innerhalb von Word, Pages etc. ist es aber möglich, dass auf einer Seite auch fortlaufende Abschnitte dargestellt werden können. Beispiel:
Code:
Wie muss man die Struktur verändern, dass man dies umsetzen kann? Bei einem fortlaufenden Abschnitt mit mehr als einer Spalte, muss man ja irgendwie im Vorhinein berechnen, wieviele Blöcke samt Zeilen in die jeweilige Spalte passen, um ein ausgeglichenes Anzeige Ergebnis zu erhalten.
Seite
Abschnitt (1 Spalte) Abschnitt (2 Spalten) Abschnitt (1 Spalte) Hat jemand einen Vorschlag? Vielen Dank. |
AW: Word Processor: Fortlaufende Abschnitte
Eine "Zeile" ist zunächst einmal nur eine "gedruckte" Zeile. Ihre Länge ist zunächst von der Spaltenbreite (Seitenbreite) abhängig. Mit fixen Zeilenumbrüchen kannst Du sie verkürzen, falls gewollt.
Gruß K-H |
AW: Word Processor: Fortlaufende Abschnitte
Genau. Ich glaube aber, dass es bei einem fortlaufenden Abschnitte, der zwischen zwei anderen Abschnitten liegt, etwas anderes ist. Schau Dir nochmal das Foto an bitte. Irgendwann muss der Inhalt ja merken, dass er zur nächsten Spalte des Absatzes umbrechen muss, damit ein ausgeglichenes Bild entsteht.
|
AW: Word Processor: Fortlaufende Abschnitte
Vielleicht muss man die Blöcke 'teilbar machen, so das der Renderer so lange Zeilen darstellt bis der freie Platz weg ist.
Dann die nächste Seite ab da mit dem 2. Blockteil weitermachen, bis der nächste Block dran ist oder die Seite voll ist. Was mir generell bei Word fehlt ist eine gute Formatierungsmöglichkeit wie in Excel, wo man FitOnPage oder NoOfPages vorgeben kann. Ist bei Textprozessoren aber schwieriger, insbesondere wenn noch Bilder dabei sind. Ich würde auch versuchen vorzugeben welche Bereiche zusammenhängend sein müssen (die Blöcke ?), und welche auf der Folgeseite fortlaufen können. Interessante Aufgabe, ob es da wohl ein Standardpattern gibt ? Ich würde auch mal schauen wie HTML5 das macht. |
AW: Word Processor: Fortlaufende Abschnitte
Zitat:
Zitat:
HTML ist ja nicht Seitenbasiert. Mein Renderer zeichnet ja wirklich alles WYSIWYG. |
AW: Word Processor: Fortlaufende Abschnitte
Es gibt so was bei HelpAndManual, wo man sagen kann welche Zeilen, Bereiche zusammenhängen sollten.
Das kann trotzdem zerrissen werden, aber es wird dann bevorzugt versucht umzubrechen so das Alles zusammen auf der nächsten Seite bleibt. Man könnte das über Umbrechlimits global steuern, oder Seitenweise. |
AW: Word Processor: Fortlaufende Abschnitte
Hmm, leider kann ich aus Deiner letzten Antwort nicht soviel deuten. :/
|
AW: Word Processor: Fortlaufende Abschnitte
Man kann Zeilen markieren, ich denke das sind dann intern irgendwelche SubBlocks.
Diese versucht der Renderer dann ohne Umbruch zu lassen und am Stück darzustellen. |
AW: Word Processor: Fortlaufende Abschnitte
Es tut mir leid, ich verstehe leider nicht, worauf Du hinauswillst. Kannst Du es mir bitte nochmal anders, ausführlicher beschreiben? Vielen Dank.
|
AW: Word Processor: Fortlaufende Abschnitte
Sorry, bin nur am Tablet.
Ich meine es sollte Bereiche geben die nicht umbrechen sollen, von einer Seite auf die nächste. Dann lieber eine grössere Lücke auf einer Seite lassen Insbesondere bei Abschnitten mit Bildern, Tabelle, n, Aufzählungen sinnvoll. Bei H&M ist das aber keine so strikte Regel. Wenn zu viel Platz bleiben würde, dann bricht es trotzdem an irgendeiner Stelle um. Es ist wie ein Wunsch der Daten an den Renderer :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:50 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz