AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Word Processor: Fortlaufende Abschnitte

Ein Thema von hansklok · begonnen am 12. Mär 2020 · letzter Beitrag vom 12. Mär 2020
Antwort Antwort
Seite 1 von 2  1 2      
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#1

Word Processor: Fortlaufende Abschnitte

  Alt 12. Mär 2020, 17:36
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:
Dokument
  + Abschnitt (2 Spalten)
    + Absatz
      + Text
      + Tabulator
      + Text
      + Bild
    + Absatz
      + Text
  + Abschnitt
    ...
Wir haben also eine Datenstruktur mit einem Abschnitt, der wiederum zwei Absätze mit verschiedenem Inhalt enthält.
Die Render Engine übersetzt das Ganze im Moment wie folgt:
Code:
Dokument
  + Seite
    + Spalte (1. Spalte)
      + Blöcke
        + Absatz
          + Zeile
            + Text
            + Tabulator
            + Text
            + Bild
        + Absatz
          + Zeile
            + Text
    + Spalte (2. Spalte)
      + Blöcke
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.

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:
Seite
  Abschnitt (1 Spalte)
  Abschnitt (2 Spalten)
  Abschnitt (1 Spalte)
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.

Hat jemand einen Vorschlag?

Vielen Dank.
Miniaturansicht angehängter Grafiken
abschnitte-microsoft-word.jpg  

Geändert von hansklok (12. Mär 2020 um 18:09 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Word Processor: Fortlaufende Abschnitte

  Alt 12. Mär 2020, 18:46
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#3

AW: Word Processor: Fortlaufende Abschnitte

  Alt 12. Mär 2020, 18:59
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.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#4

AW: Word Processor: Fortlaufende Abschnitte

  Alt 12. Mär 2020, 19:00
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.
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#5

AW: Word Processor: Fortlaufende Abschnitte

  Alt 12. Mär 2020, 19:06
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..
Das ist eh schon programmiert und funktioniert auch, wie erwähnt für Abschnitte vom Typ Grade Seite/Ungrade Seite/Nächste Seite.
Ich würde auch versuchen vorzugeben welche Bereiche zusammenhängend sein müssen (die Blöcke ?), und welche auf der Folgeseite fortlaufen können.
Was meinst Du genau?

HTML ist ja nicht Seitenbasiert. Mein Renderer zeichnet ja wirklich alles WYSIWYG.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#6

AW: Word Processor: Fortlaufende Abschnitte

  Alt 12. Mär 2020, 19:15
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.
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#7

AW: Word Processor: Fortlaufende Abschnitte

  Alt 12. Mär 2020, 19:18
Hmm, leider kann ich aus Deiner letzten Antwort nicht soviel deuten. :/
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#8

AW: Word Processor: Fortlaufende Abschnitte

  Alt 12. Mär 2020, 19:27
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.
  Mit Zitat antworten Zitat
hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#9

AW: Word Processor: Fortlaufende Abschnitte

  Alt 12. Mär 2020, 19:31
Es tut mir leid, ich verstehe leider nicht, worauf Du hinauswillst. Kannst Du es mir bitte nochmal anders, ausführlicher beschreiben? Vielen Dank.
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.093 Beiträge
 
Delphi 12 Athens
 
#10

AW: Word Processor: Fortlaufende Abschnitte

  Alt 12. Mär 2020, 19:38
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz