AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Algorithmen, Datenstrukturen und Klassendesign Word: Strategie hinter ausgeglichener Spaltenaufteilung
Thema durchsuchen
Ansicht
Themen-Optionen

Word: Strategie hinter ausgeglichener Spaltenaufteilung

Offene Frage von "stahli"
Ein Thema von hansklok · begonnen am 17. Mär 2020 · letzter Beitrag vom 19. Mär 2020
Antwort Antwort
Seite 3 von 3     123   
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#21

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 22:02
Ich bin schon eine gei... Sau - oder?

Ok, mal drauf rum denken...


Wenn man davon ausgeht, dass der Text annähernd homogen ist, dann könnte man vielleicht als Ausgangsbasis vom Gesamtvolumen des Textes ausgehen.

Als Idee:

- Text komplett in Spalte 1 rendern, so dass Du z.B. 300 kurze Zeilen hast mit deren höhen und und der benötigten Gesamthöhe.
- Wenn Du jetzt 3 gleich breite Spalten hättest, wäre die Aufteilung rel. einfach. Eben dritteln (jeweils 100 Zeilen) und gut ist.
- Bei unterschiedlich breiten Spalten musst Du einen Faktor mit einrechnen (bei Breiten 30, 30, 60) wäre die dritte Spalte doppelt so breit wie die ersten zwei und müsste 2 mal so viel Zeilen aufnehmen wie die ersten beiden (75, 75, 150 Zeilen von der ersten Berechnung).
- die dritte Spalte müsste wegen den Umbrüchen natürlich neu berechnet werden.
- Wenn diese Annäherung noch nicht passt, musst Du weitere Tests machen (z.B. mit 72, 72, 156 Zeilen) und neuer Berechnung der dritten Spalte. Bis das Ergebnis ok ist.


Hilft Dir das? Hattest Du ähnliche Gedanken?

Kann natürlich auch naiv und untauglich sein, aber das wäre mein erster Ansatz.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
hansklok

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

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 22:20
Ich bin schon eine gei... Sau - oder?
Haha, kein Kommentar.
- Text komplett in Spalte 1 rendern, so dass Du z.B. 300 kurze Zeilen hast mit deren höhen und und der benötigten Gesamthöhe.
Du meinst also die gesamte Breite des Absatzes?
- Bei unterschiedlich breiten Spalten musst Du einen Faktor mit einrechnen (bei Breiten 30, 30, 60) wäre die dritte Spalte doppelt so breit wie die ersten zwei und müsste 2 mal so viel Zeilen aufnehmen wie die ersten beiden (75, 75, 150 Zeilen von der ersten Berechnung).
Und an welchen Faktor oder welche Vorgehensweise denkt Du da?
- Wenn diese Annäherung noch nicht passt, musst Du weitere Tests machen (z.B. mit 72, 72, 156 Zeilen) und neuer Berechnung der dritten Spalte. Bis das Ergebnis ok ist.
So in etwa waren auch Gedankengänge von mir. Die Frage ist, wie könnten die Methoden dazu aussehen? Einiges hört sich für mich nach Iteration an. Auch wenn ich schon lange entwickle, bin kein Profi, habe ich damit nie zu tun gehabt und tue mich immer schwer mit dem Verständnis dieser.
Kann natürlich auch naiv und untauglich sein, aber das wäre mein erster Ansatz.
Naiv ist immer gut. Vielen Dank.
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#23

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 17. Mär 2020, 23:31
"coole Sau" oder "geiler Typ" wäre wohl auch passender gewesen...

Also nochmal:

- alles rendern in eine schmale Spalte (Breite = 30) -> ergibt 300 Zeilen Text und 3000 Pixel Höhe
- 3 Spalten mit Breiten 30, 30, 60 ergeben 100% Breite
- Ergibt Faktoren pro Spalte 0.25, 0.25, 0.5
- also Zeilen pro Spalte 75, 75, 150
- das wäre die erste Abschätzung
- für die ersten 2 Spalten könnte man das erste Ergebnis sofort übernehmen und die Höhe auf 750 festlegen
- die dritte Spalte müsste neu berechnet werden, wegen den verschobenen Wortumbrüchen
- die benötigte Höhe kann nun kleiner sein (größer eher nicht, würde ich denken)
- wenn der freie Platz zu groß ist, könntest Du die Gesamthöhe von 750 und 75 Zeilen zeilenweise reduzieren, bis die Spaltenhöhen der Texte ausgeglichen sind.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
hansklok

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

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 18. Mär 2020, 00:50
Danke für Deinen Beitrag.
- alles rendern in eine schmale Spalte (Breite = 30) -> ergibt 300 Zeilen Text und 3000 Pixel Höhe
- 3 Spalten mit Breiten 30, 30, 60 ergeben 100% Breite
Wie kommst Du auf diese Werte? 30 + 30 + 60 = 120

Ich habe mir eben noch einmal angesehen, wie Microsoft Word vorgeht. Dort wird erst ab der 4. Zeile in der ersten Spalte umgebrochen. Danach wird die Lage neu bewertet. Anbei ein Bildschirmvideo, wie das in MS Word aussieht. Kann man daraus eine Abfolge, einen Algorithmus ableiten?
Angehängte Dateien
Dateityp: zip MS Word.mp4.zip (917,1 KB, 4x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#25

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 18. Mär 2020, 01:02
Die beispielhaften 120 Einheiten (cm oder was auch immer) wären halt 100% der Breite der Zeichenfläche.
Also Spalten 1 und 2 hätten 1/4 der Gesamtbreite und die rechte Spalte 1/2.

Das Video schaue ich mir im Laufe des Tages mal an...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
hansklok

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

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 18. Mär 2020, 12:46
Also in Microsoft Word werden ab vier Zeilen in der ersten Spalte dann Zeile drei und vier in die zweite spalte verschoben. 
Sobald wir eine fünfte Zeile haben, wird die logische (fortlaufende) Zeile 4 (Zeile 1 aus der 2. Spalte) in die erste Spalte verschoben. Bei insgesamt sechs Zeilen, wird wieder alles einheitlich über die drei Spalten aufgeteilt (2 Zeilen pro Spalte). 

Erkennst ihr eine Logik, ein Muster, welches man in einem Algorithmus ausdrücken kann?

Es sieht für mich danach aus, als wäre es immer so, als würde die Anzahl der Zeilen von einer Spalte immer der Zeilenanzahl der vorherigen Spalte minus eins betragen.

  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#27

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 18. Mär 2020, 14:36
Was Du da beobachtest ist die Vermeidung von Hurenkindern und Schusterjungen. Das lässt sich irgendwo in den Tiefen der Einstellungen der Textverarbeitung schalten.

Sherlock
Oliver
Geändert von Sherlock (Morgen um 16:78 Uhr) Grund: Weil ich es kann
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#28

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 18. Mär 2020, 18:43
Ok, ich habe mir das Video mal angesehen.

Ich würde es tatsächlich so anfangen, wie oben besprochen und dann Stück für Stück verfeinern.
Die grundsätzliche Frage ist, was Dir am wichtigsten ist.

Angenommen, Du hast Text mit 3 Zeilen.

Du kannst nun sagen, das Wichtigste ist, alle drei Spalten gleichmäßig zu füllen.
Dann kommt jede Zeile in eine Spalte.

Oder Du sagst, die Spalten sollen möglichst nicht höher werden als 10 Zeilen.
Dann füllst Du erst die linke Spalte bis zehn Zeilen und machst dann weiter rechts weiter.
Erst nach 30 Zeilen vergrößerst Du alle Spalten.

Das ist halt Geschmackssache und auch davon abhängig, wie Deine Text aussehen.
Können die auch dynamisch wachsen, wie beim Tippen im Video? Oder gibt es quasi einen festen Satz, der quasi gedruckt wird?

Mein Ansatz von oben würde die Spalten immer möglichst gleichmäßig ausfüllen.
Statt aber ständig zeilenweise immer wieder für alle Spalten neue Ergebnisse auszurechnen und diese immer weiter neu aufzufüllen, würden die ungefähren Ergebnisse schon mal zuvor abgeschätzt.
Da braucht es dann sicher noch etwas Feinarbeit, um an die bestmöglichen Abschätzungen zu kommen.
Zum Schluss gibt es dann noch ein paar Iterationen, um zum Endergebnis zu kommen.

So würde ich es wohl machen.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
hansklok

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

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 19. Mär 2020, 13:42
Können die auch dynamisch wachsen, wie beim Tippen im Video? Oder gibt es quasi einen festen Satz, der quasi gedruckt wird?
Es gibt einen festen Satz.
Zum Schluss gibt es dann noch ein paar Iterationen, um zum Endergebnis zu kommen.
Was für Iterationen?

Die Sache ist folgende, dadurch, dass Zeilen eine unterschiedliche Höhe haben können, dürfte das doch den Ansatz, erstmal alles in eine Spalte zu packen und dann durch die Anzahl der Spalten zu teilen, um dann die restlichen Zeilen zu befallen, schwierig sein, oder?
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli
Online

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#30

AW: Word: Strategie hinter ausgeglichener Spaltenaufteilung

  Alt 19. Mär 2020, 14:04
Du wirst keine Formel finden, die Dir die beste Höhe und die besten Umbrüche vorab ausgibt (ohne wirkliche Texte zumindest temporär zu schreiben und die Höhen und Breiten zu ermitteln.)

Bei jeder kleinen Änderung können sich am Ende wieder völlig andere Ergebnisse ergeben. Insofern wird es mehrere Durchläufe brauchen, um ein gutes Ergebnis zu erhalten.

Im Fall einer fließenden Eingabe (wie beim Tippen) wird man versuchen, nicht ständig vor und zurück zu springen und eine gewisse Kontinuität beizubehalten (also nicht bei jedem Tastendruck das vorherige Ergebnis komplett verwerfen, sondern erst mal davon weiter ausgehen). Aber das brauchst Du ja nicht, da Du einen fertigen Text hast, der in bestimmte Spalten gesetzt werden soll.

Da der Text und die Spalten gegeben sind, könntest Du zunächst eine grobe Annäherung berechnen (z.B. wie ich vorgeschlagen hatte - das sollte eigentlich grob funktionieren).

Da es aber nicht genau passen wird, musst Du Dich nachher mit einigen Durchgängen noch einer optimalen Lösung annähern. Das meinte ich mit Iterationen.

Direkt bei der Vorberechnung die Höhe der einzelnen Zeilen zu beachten, wird schwierig werden. Du weißt ja vorab nicht, ob hohe Zeilen eher in der linken, mittleren oder rechten Spalte landen werden oder vielleicht sogar ausgeglichen sind. Diese Feinheiten sollten dann bei den Optimierungsdurchläufen berücksichtigt werden.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)

Geändert von stahli (19. Mär 2020 um 14:07 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 11:48 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