[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Anzahl von TextFrames auf einer Seite

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

Anzahl von TextFrames auf einer Seite

WernerPerplies
Beiträge gesamt: 2762

4. Apr 2014, 11:53
Beitrag # 16 von 34
Beitrag ID: #525889
Bewertung:
(4025 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

Zitat Wollte die Reihenfolge nach den IDs der erzeugten Rahmen festlegen (also zeitliche Reihenfolge).


Ich würde mich niemals auf etwas verlassen, was ich nicht selbst geprüft habe. ;-)

Deshalb würde ich in solchen Fällen immer zuerst die Rahmen nach von mir festgelegten Kriterien sortieren (das erfordert in der Regel eine einmalig programmierte Methode als Erweiterung des Array-Objektes) und dann die eigentliche Verarbeitung beginnen.

Allgemeiner ausgedrückt:

Zuerst Daten normieren, dann verarbeiten.


als Antwort auf: [#525887]
X

Anzahl von TextFrames auf einer Seite

Uwe Laubender
Beiträge gesamt: 5319

4. Apr 2014, 13:15
Beitrag # 17 von 34
Beitrag ID: #525890
Bewertung:
(4006 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Werner!

Von "verlassen" kann ja keine Rede sein. Geprüft habe ich ja die von mir erwähnte Methode. Und wieder verworfen. Ich bin dann dazu übergegangen eine eigene Kontrollstruktur einzuführen. Und damit hat's dann auch fehlerfrei geklappt :-)

Aber manchmal ist es ja doch aus gewissen Überlegungen heraus sinnvoll sich der InDesign-eigenen Funktionlität zu bedienen und nicht das Rad neu zu erfinden. Kann auch in die Hose gehen. Klar.

Als positives Beispiel möchte ich mal die GREP oder TEXT-Suche anführen. Die dann, wenn es um Gründlichkeit und Tiefe des "Scopes" geht, nicht unbedingt um Geschwindigkeit, einen Vorteil gegenüber anderen Methoden hat.
Wie zum Beispiel den DOM-Baum rauf- und runterzuflitzen, um irgendwelche Textstellen einzusammeln.

Kommen wir zurück zu DataMerge.
Dessen Funktionalität ließe sich ja nachbauen. Schon richtig. Ob's dann im konkreten Fall den Aufwand lohnt?


als Antwort auf: [#525889]

Anzahl von TextFrames auf einer Seite

WernerPerplies
Beiträge gesamt: 2762

4. Apr 2014, 13:42
Beitrag # 18 von 34
Beitrag ID: #525892
Bewertung:
(3995 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

Zitat Kommen wir zurück zu DataMerge.
Dessen Funktionalität ließe sich ja nachbauen. Schon richtig. Ob's dann im konkreten Fall den Aufwand lohnt?


Data Merging gehört ja, neben der Datenkonvertierung, zu meinen Arbeitsschwerpunkten.

Und natürlich muss man immer den Aufwand für den Einzelfall prüfen, aber da InDesigns Datenzusammenführungsfunktion nun wirklich nicht sehr mächtig ist, lohnt es sich fast immer, etwas Aufwand zu betreiben.

Oft sind es ja Kleinigkeiten, die Anwender glücklich machen können, wie z. B.:
bedingtes Zusammenfügen von Feldern,
Felder mit mehren Zeilen oder Absätzen,
Felder mit Sonderzeichen,
Gruppenbildung,
Formatierung von Zahlen und Daten,
Verarbeitung unterschiedlicher InDesignvorlagen für gleiche Datensätze in einem Arbeitsgang,
frei definierbare Nutzenanzahl für Datensätze,
frei wählbare Ausgabebereiche mit automatischer Erstellung von Zielverzeichnissen und Zieldateinamen,

Einiges von diesen Aufgaben kann man natürlich über den Umweg Tabellenkalkulationsprogramm lösen, ob ob das wirklich sehr produktiv ist?


als Antwort auf: [#525890]

Anzahl von TextFrames auf einer Seite

Stefan Dpunkt
Beiträge gesamt: 12

7. Apr 2014, 11:28
Beitrag # 19 von 34
Beitrag ID: #525913
Bewertung:
(3872 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammmen.
Ich hoffe, ihr hattet ein schönes Wochenende. Ich lag bzw. lieg leider immer noch flach.
Ich habe mir jetzt grade eure Kommentare durchgelesen und werde jetzt erst mal die vorgeschlagenen bzw. notwendigen Änderungen einbauen


als Antwort auf: [#525892]

Anzahl von TextFrames auf einer Seite

Stefan Dpunkt
Beiträge gesamt: 12

8. Apr 2014, 11:59
Beitrag # 20 von 34
Beitrag ID: #525940
Bewertung:
(3819 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen,

nachdem ich am Wochenende flach lag und noch immer nicht ganz auf der Höhe bin,
hab ich gestern einigen Anpassungen an das Script vorgenommen.
Irgendwie läuft das alles noch nicht richtig!

1. Ich jetzt erstmal damit begonnen, mir ein Array aufzubauen, dass die Musterseiten beinhaltet. Ich lese die Musterseiten aus dem Dokument aus und schreibe diese in ein Array. Dann muss man sich damit nicht mehr beschäftigen.
2. Dann habe ich ganz naiv, das Dokument genommen und mit der Datenzusammenführung erzeugt und schon waren die Fehlermeldung von wegen "TextFrames" weg -> Hans seine Vermutung war richtig!
3. Nach dem Ausführen des Scripts bleibt nur ein TextFrame übrig, soweit erst mal richtig, die Reihenfolge des Inhalts innerhalb des TextFrames ist aber durcheinander. Warum???
Dann werden zwei weitere leere Seiten erstellt, also insgesamt drei Seiten mit jeweils unterschiedlichen Mustervorlagen. Mein Dokument enthält nur drei Mustervorlagen.

Es wäre super, wenn ihr mir noch mal auf die Sprünge helft!

Code
/******* 
init
*******/
// das aktuelle Dokument
var _dok = app.activeDocument;

// alle Seiten
var _alleSeiten = _dok.pages;

// alle Musterseiten
var _alleMusterseiten = _dok.masterSpreads;
/* Mustervorlagen werden automatisch ausgelesen und ins Array geschrieben */
var _masterArray = new Array();
// var _masterArray = ["A-1", "D-2", "C-3"];

// Die Bildpfade auflisten
var _bilderArray = new Array();

/*******
action
*******/
// dem ersten Textrahmen ein Label verpassen
_dok.pages[0].textFrames[-1].label = "Text 0";

// alle TextFrames anpassen (ALT-STRG-C)
app.documents[0].textFrames.everyItem().fit(FitOptions.frameToContent);

// eine Schleife durch die Musterseiten
for (var i = 0; i < _dok.masterSpreads.length; i++) {
try {
var _curMspread = _dok.masterSpreads[i].name;
_masterArray.push(_curMspread);
} catch(e) {
}
}

// for _alleSeiten -> eine Schleife durch alle Seiten
for (var i = 0; i < _alleSeiten.length; i++) {
var _seite = _alleSeiten[i];

// Die Bildpfade auflisten
for (var j = _seite.rectangles.length - 1; j > -1; j--) {
try {
var _pp = _seite.rectangles[j].graphics[0].itemLink.filePath;
_bilderArray.push(_pp);
} catch (e) {
_bilderArray.push("");
}
}

if (_seite.textFrames.length > 1) {
for (var j = 0; j < _seite.textFrames.length - 1; j++) {
var _tf = _seite.textFrames[j];
_tf.parentStory.insertionPoints[-1].contents = SpecialCharacters.FRAME_BREAK;
_tf.nextTextFrame = _seite.textFrames[j - 1];
}
}
try {
_seite.textFrames[-1].nextTextFrame = _alleSeiten[i+1].textFrames[0];
} catch (e) {
// alert ("Fehler");
}
} // for _alleSeiten


_dok.pages.itemByRange(1, -1).remove();

/*
mit einer R&#65533;ckw&#65533;rtschleife die anderen Objekte,
die nicht das Label "Text 0" tragen, entfernen
*/

var _alleRahmen = _dok.pages[0].pageItems;

// for _alleRahmen -> rückwärts durch alle Rahmen und alle Rahmen löschen die nicht das Label "Text 0" haben
for (var n = _alleRahmen.length - 1; n > -1; n--) {
if (_alleRahmen[n].label != "Text 0") {
_alleRahmen[n].remove();
}
} // for _alleRahmen

for (var p = 0; p < _masterArray.length - 1; p++) {
_dok.pages.add();
}

for (var p = 0; p < _alleSeiten.length; p++) {
alert(_masterArray[p]);
_alleSeiten[p].appliedMaster = _dok.masterSpreads.itemByName(_masterArray[p]);

var _allObjects = _alleSeiten[p].masterPageItems;
for ( n = 0; n < _allObjects.length; n++) {
if (_allObjects[n].label != "") {
_allObjects[n].override(_alleSeiten[p]);
}
}
}

_dok.pages[0].textFrames.itemByName("Text 0").label = "Text 1";



als Antwort auf: [#525913]

Anzahl von TextFrames auf einer Seite

Hans Haesler
  
Beiträge gesamt: 5826

8. Apr 2014, 13:14
Beitrag # 21 von 34
Beitrag ID: #525944
Bewertung:
(3793 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

gute Besserung!

Es gibt noch viel zu tun ...

Die Textrahmen werden an die Rahmen angepasst. Soweit, so gut.
Aber: Die Zeilen werden nicht gezählt. Das ist doch notwendig, um zu bestimmen, welche Musterseite zugewiesen werden soll.

Die Namen der Musterseiten werden automatisch ausgelesen.
Aber: Wie "weiss" man, welche Musterseite die passende Anzahl Rahmen enthält?
Okay: Die Namen enthalten eine Ziffer. Aber dieser Weg ist umständlich.

Die Reihenfolge des Inhalts ist durcheinander. Das geschieht, weil beim Verketten etwas schief läuft.
Vergleiche bitte mal Deinen Code mit meinem Punkt 8 im Beitrag #8.

Zum Zuweisen der Musterseiten braucht es einen Array, welcher aufgrund der Anzahl Zeilen erzeugt worden ist.
Zusätzlich muss ein Array mit der Anzahl Rahmen pro Seite erstellt werden.
Denn: Es kann vorkommen, dass auf einer Zweier-Seite nur ein Textrahmen Platz findet, weil der nächste eine ganze Seite beansprucht. Also müssen auf jener Zweier-Seite, sowohl der zweite Text- als auch der zweite Bildrahmen entfernt werden.

Gruss, Hans


als Antwort auf: [#525940]

Anzahl von TextFrames auf einer Seite

Stefan Dpunkt
Beiträge gesamt: 12

9. Apr 2014, 10:25
Beitrag # 22 von 34
Beitrag ID: #525963
Bewertung:
(3732 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen,

auch wenn Hans mal wieder schnell geantwortet hat, bleibt mir die Welt der Automatisierung verschlossen, leider!
Zwei deiner Hinweise konnte ich lösen. Bei der Zuordnung von Musterseite und Zeilenanzahl, stehe ich vorm Berg, wie nen Ochse!

Zitat Die Textrahmen werden an die Rahmen angepasst. Soweit, so gut.
Aber: Die Zeilen werden nicht gezählt. Das ist doch notwendig, um zu bestimmen, welche Musterseite zugewiesen werden soll.

"Mist, hab ich ungewollt weg gehauen! Hab ich wieder eingefügt!"

Zitat Die Reihenfolge des Inhalts ist durcheinander. Das geschieht, weil beim Verketten etwas schief läuft.
Vergleiche bitte mal Deinen Code mit meinem Punkt 8 im Beitrag #8.

"Hab ich wieder korrigiert, keine Ahnung was ich da gemacht habe.
Ich habe jetzt nur den Fehler, dass zwischen dem dritten und vierten TF nicht sauber getrennt wird.
Scheinbar wird kein Textrahmenumbruch eingefügt"

Zitat Die Namen der Musterseiten werden automatisch ausgelesen.
Aber: Wie "weiss" man, welche Musterseite die passende Anzahl Rahmen enthält?
Okay: Die Namen enthalten eine Ziffer. Aber dieser Weg ist umständlich.

Zum Zuweisen der Musterseiten braucht es einen Array, welcher aufgrund der Anzahl Zeilen erzeugt worden ist.
Zusätzlich muss ein Array mit der Anzahl Rahmen pro Seite erstellt werden.
Denn: Es kann vorkommen, dass auf einer Zweier-Seite nur ein Textrahmen Platz findet, weil der nächste eine ganze Seite beansprucht. Also müssen auf jener Zweier-Seite, sowohl der zweite Text- als auch der zweite Bildrahmen entfernt werden.

"Wie löse ich das Problem am besten?"


als Antwort auf: [#525944]

Anzahl von TextFrames auf einer Seite

Kai Rübsamen
Beiträge gesamt: 4684

9. Apr 2014, 11:28
Beitrag # 23 von 34
Beitrag ID: #525964
Bewertung:
(3718 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Stefan, wir wären hier schon fertig, wenn du deine Dateien öffentlich zur Verfügung gestellt hättest!

Ich und viell. auch andere würden gerne euren Schritten folgen und hätten viell. auch den einen oder anderen Tipp. Ohne Beispieldatei macht das allerdings wenig Sinn.

Falls du dazu keine Lust hast, solltest du diese Diskussion am Besten außerhalb des Forums führen.


als Antwort auf: [#525963]

Anzahl von TextFrames auf einer Seite

Stefan Dpunkt
Beiträge gesamt: 12

9. Apr 2014, 11:35
Beitrag # 24 von 34
Beitrag ID: #525965
Bewertung:
(3712 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

ich würde sehr gerne meine Dateien allen zur Verfügung stellen, nicht nur Hans.
Ich bin aber leider kein Member oder höher, so das mir diese Funktionalität nicht zur Verfügung steht.

Und ich weiß nicht wie die Betreiber auf externe Links reagieren.


als Antwort auf: [#525964]

Anzahl von TextFrames auf einer Seite

kurtnau
Beiträge gesamt: 2170

9. Apr 2014, 11:38
Beitrag # 25 von 34
Beitrag ID: #525966
Bewertung:
(3711 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

das ganze Forum ist voll von externen Links. Aber am besten nicht einen von den ganz Schrägen nehmen.


Gruß Kurt


als Antwort auf: [#525965]

Anzahl von TextFrames auf einer Seite

Stefan Dpunkt
Beiträge gesamt: 12

9. Apr 2014, 12:18
Beitrag # 26 von 34
Beitrag ID: #525968
Bewertung:
(3674 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen


als Antwort auf: [#525966]

Anzahl von TextFrames auf einer Seite

Kai Rübsamen
Beiträge gesamt: 4684

9. Apr 2014, 15:24
Beitrag # 27 von 34
Beitrag ID: #525980
Bewertung:
(3620 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

ich habs mir kurz angesehen und auch eure Beiträge nur kurz überflogen. Da Hans hier DER mit den genialen Ideen ist, bin ich mal mit meinen Aussagen etwas vorsichtig …

Ich hab das Gefühl, dass ihr euch in die Idee mit den Musterseiten verrannt habt und das Pferd von hinten aufzäumt ;-)

Was ich bisher verstanden habe:
1. Du arbeitest noch mit CS3 (mein CS3 lies sich heute noch starten, freu)
2. Du hast drei Musterseiten mit 1,2 oder drei Rahmen
3. Die Datenzusammenführung kann immer nur gleiche Anzahl, also drei
4. Nach der Datenzusammenführung wissen deine Rahmen nicht mehr, von welchem Rahmen auf einer Musterseite sie stammen (das wussten sie vorher in CS3 aber auch nicht ;-) )
5. Meiner Meinung nach ist das Musterseitenkonzept damit hinfällig!!!
6. Die Idee den Übersatz zu erkennen, ist gut
7. So wie es aussieht, gibt es drei mögliche Startpositionen für die Rahmen, also kann man die direkt festlegen. Damit kann das Zuweisen von Musterseiten, Übergehen von irgendetwas entfallen
8. Ich hatte oben einen Link gepostet, wo man alle zusammengeführten Elemente in einem Textfluss erzeugen kann. Ich hab mir aber das Skript noch nicht angesehen. Evtl. hilft das, wenn es um die Anzahl der Rahmen auf der Seite geht.

Ansonsten kann ich erst heute Abend dein Skript laufen lassen, da habe ich aber dann kein CS3.


als Antwort auf: [#525968]

Anzahl von TextFrames auf einer Seite

Stefan Dpunkt
Beiträge gesamt: 12

9. Apr 2014, 16:02
Beitrag # 28 von 34
Beitrag ID: #525983
Bewertung:
(3606 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

schön das du mit helfen möchtest!

ich versuche mal kurz deine Punkte zu beantworten!

Zitat 1. Du arbeitest noch mit CS3 (mein CS3 lies sich heute noch starten, freu)

Jip, is da gestern auch der Support abgelaufen :)

Zitat 2. Du hast drei Musterseiten mit 1,2 oder drei Rahmen

Richtig!

Zitat 3. Die Datenzusammenführung kann immer nur gleiche Anzahl, also drei

Was meinst du damit?

Zitat 4. Nach der Datenzusammenführung wissen deine Rahmen nicht mehr, von welchem Rahmen auf einer Musterseite sie stammen (das wussten sie vorher in CS3 aber auch nicht ;-) )

???

Zitat 5. Meiner Meinung nach ist das Musterseitenkonzept damit hinfällig!!!

Wie würdest du das lösen?

Zitat 7. So wie es aussieht, gibt es drei mögliche Startpositionen für die Rahmen, also kann man die direkt festlegen. Damit kann das Zuweisen von Musterseiten, Übergehen von irgendetwas entfallen

Wenn ich dich richtig verstehe, ja. Der erste hat zwar immer die gleiche Startposition, aber Zwei und Drei können eine andere Startposition haben

Gruss Stefan


als Antwort auf: [#525980]

Anzahl von TextFrames auf einer Seite

Kai Rübsamen
Beiträge gesamt: 4684

9. Apr 2014, 16:45
Beitrag # 29 von 34
Beitrag ID: #525987
Bewertung:
(3588 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Stefan,

wahrscheinlich endet es damit, dass Hans uns am Schluss beiden erkärt, was wir am Besten wie machen, aber mal sehen … ;-)

3. Die Datenzusammenführung erstellt soviele Elemente auf einer Seite, wie Platz auf der Seite ist. Die entsprechenden Einstellungen sind von deinen zwei Rahmen und den Einstellungen unter "Layout mit mehreren Datensätzen" abhängig. Also in deinem Fall immer 3.

4. Du hast auf deinen Musterseiten generell Platzhalterrahmen, auf den Dokumentseiten aber Platzhalter- und Textrahmen. Nach der Datenzusammenführung liegen die neuen Rahmen über den Rahmen auf der Musterseite. >> Bei der Datenzusammenführung braucht es keine Rahmen auf der Musterseite.

Antwort auf: Wie würdest du das lösen?

Ich glaube ich würde von vorne nach hinten gehen. Mir ist allerdings noch nicht klar, wie deine Rahmen auf die Seiten verteilt werden sollen!
Antwort auf: Ich gehe alle TextFrames durch und alle die mehr als oder genau 14 Zeilen, sollen eine neue Mustervorlage zugewissen bekommen.

Rahmen 1 hat 14 Zeilen: Was soll in dem Fall mit Rahmen 1 passieren, Was soll mit Rahmen 2 passieren?
Ich würde vermuten, dass Rahmen 1 da bleibt, wo er ist? Das gleiche gilt für Rahmen 2, aber Rahmen 3 rutscht auf die nächste Seite?
Was passiert in den Fällen, in denen Rahmen 1 bereits 30 Zeilen hat? Oder anders, ab wann rutscht Rahmen 2 an die letzte Position auf der Seite und ab wann soll er auf die nächste Seite rutschen.

Hier wäre jetzt ein finales Dokument von dir nicht schlecht, dass dein gewünschtes Ergebnis zeigt!

Zur Frage, wie ich das machen würde, folgende Idee:
1. Wenn die Rahmen von vorne nach hinten verschoben werden, gibt das wohl durcheinander.
2. Ich würde ein weiteres Dokument erzeugen, dort den ersten Datensatz per move() verschieben. Vorher per fit() den Rahmen anpassen.
3. Auslesen wieviel Platz noch auf der Seite ist (in deiner Vorlage ist nicht genau ersichtlich, wie hoch ein Rahmen sein darf!)
4. Dann die Höhe des nächsten Rahmens anpassen, die Rahmenhöhe auslesen und mit dem noch zur Verfügung stehenden Platz vergleichen
5. Ist genug Platz auf die aktuelle Seite an y-Position 2 oder 3 verschieben. Ist nicht genug Platz an y-Position 1 auf einer neu erzeugten Seite setzen

Soweit die Theorie …


als Antwort auf: [#525983]

Anzahl von TextFrames auf einer Seite

Stefan Dpunkt
Beiträge gesamt: 12

9. Apr 2014, 17:10
Beitrag # 30 von 34
Beitrag ID: #525990
Bewertung:
(3572 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kai,

Zitat wahrscheinlich endet es damit, dass Hans uns am Schluss beiden erkärt, was wir am Besten wie machen, aber mal sehen … ;-)

Wir sind froh wenn das Script fertig ist und Hans sein Script kocht im grad noch zudem nen Tasse Kaffee.

Also ausgehend davon dass die Musterseite mit den drei Textrahmen das "Grundlayout" ist, sollen abweichend bei einer höheren Anzahl von Zeilen eine andere Musterseite genutzt werden.

Zitat Rahmen 1 hat 14 Zeilen: Was soll in dem Fall mit Rahmen 1 passieren, Was soll mit Rahmen 2 passieren?

Kommt drauf an, wieviele Zeilen Rahmen 2 hat, hat es sag wir mal auch 14 Zeilen, dann passt es noch auf die Musterseite von der 2er Musterseite, hat es wesentlich mehr,
dann rutscht auf die nächste Seite und auf dieser Seite muss dann ggf. das nächste Textrahmen untersucht werden.

Hans hat mir dazu schon was geschrieben, was theoretisch top ist, aber ich praktisch noch am pröckeln bin!
Zitat *****
Nun zum Problem des Musterseiten-Arrays. Wie schon gesagt, muss
zuerst ein Array mit der Anzahl der Zeilen erstellt werden.
Wichtig ist die richtige Reihenfolge.

Später wird dann der Musterseiten-Array erzeugt. Man macht eine
Schleife durch der Zeilenanzahl-Array und fügt den Namen der
passenden Musterseite an den Musterseiten-Array an.

Angenommen, der Array der Zeilenzahlen beginnt so:
[12, 13, 9, 16, 23, 32, 20, 33 ...]
Dann ergibt das einen Musterseiten-Array, welcher so beginnt:
["C-3", "D-2", "A-1", "D-2", "A-1" ...]
Warum? Die drei ersten (12, 13, 9) passen auf eine Seite. Deshalb
"C-3". Die beiden nächsten (16, 23) füllen ebenfalls eine Seite.
Also "D-2". Die 32 hat alleine auf einer Seite Platz: "A-1".
Bei der 20 muss das Script vorausschauen: kommt ein Wert, welcher
auf derselben Seite Platz hat? Nein, die 33 ist zuviel.
Deshalb eine "D-2"-Seite für die 20 und eine "A-1" für die 33.

Und wie schon gesagt, muss parallel ein Array mit der Anzahl Rahmen
pro Seite bestückt werden. Bei diesem angenommenen Beispiel ist das:
[3, 2, 1, 1, 1 ...]
Man könnte die Sache auch umdrehen und notieren, wieviele Rahmen
entfernt werden müssen. Das wäre einfacher:
[0, 0, 0, 1, 0 ...]
Mit anderen Worten: Wenn eine Null steht, werden die Rahmen
auf der betreffenden Seite alle gebraucht. In diesem Beispiel
bedeutet die Eins, dass auf der "D-2"-Seite der untere Textrahmen
entfernt werden muss, weil der nächste Inhalt nur auf einer
Einer-Seite Platz hat.

Noch ein Beispiel: Es wird Fälle geben, in welchen zwei "C-3" von
einem "D-2"-Inhalt gefolgt werden. Der dritte Rahmen auf der "C-3"-
Seite kann nicht benutzt werden, die Anzahl Zeilen ist zu gross.
Der dritte Textrahmen und der Bildrahmen müssen entfernt werden.

Wie kann man nun ausgehend von der Zeilenzahl ausrechnen, ob der
nächste Inhalt noch Platz hat oder nicht? Es drängt sich auf, die
Zeilen-Zahlen in Einheiten einer Seite zu übersetzen, welche das
kleinste gemeinsame Vielfache (= 6) bilden.

Eine "A-1" gilt 6 Einheiten; für "D-2" rechnet man 3; "C-3" = 2:
"A-1" = ein Rahmen = 1 mal 6 = 6.
"D-2" = zwei Rahmen = 2 mal 3 = 6.
"C-3" = drei Rahmen = 3 mal 2 = 6.

Diese Einheiten werden laufend zusammengezählt. Wenn die Seite
"voll" ist, wird der Musterseiten-Name an den Musterseiten-Array
gehängt, welcher der Anzahl Rahmen entspricht.

Der Einheiten-Zähler wird auf Null gesetzt und das Spiel geht
mit den nächsten Werten weiter.

Jetzt ist ein "D-2" (= 3) dran. Vorausschauen: was kommt? Ist es
nochmals ein "D-2", dann sind es nochmals 3 Einheiten, also
ein Total von 6, die Seite ist voll. Mit einem "C-3" kämen
2 Einheiten dazu = total 5 und die Seite ist auch voll.

Aber wenn der nächste Inhalt statt ein "D-2" oder ein "C-3" ein
langer "A-1" ist, dann würden die total 9 Einheiten nicht auf
die Seite passen. Der "D-2" muss also alleine zurechtkommen und
der "A-1" wird auf die nächste Seite plaziert.

Der langen Rede kurzer Sinn: Man könnte den Array der Zeilen-
Anzahl direkt durch die entsprechenden Einheiten ersetzen.
Aber um das vorausschauende Prüfen wird man nicht herumkommen.

ich hab es mehrfach gelesen :)


als Antwort auf: [#525987]
X