Hallo Clause,
habe Dein Skript ausprobiert.
Ich finde, das sieht schon richtig gut aus.
Dank Deiner Skizze habe jetzt auch kapiert, was Du vorhast.
Es geht also um drei Spalten, wovon eine - nämlich die Marginalspalte - einen festen Wert bekommt, während die anderen sich aus dem Rest des Satzspiegels abzüglich des Stegs ergeben.
Die linke Kante der ersten Spalte ist klar:
0.
Die rechte Kante der letzten Spalte ist gemessen vom linken Rand gleich der Satzspiegelbreite:
pWidth - pMargins.left - pMargins.right.
Die rechte Kante der ersten Spalte ist 0 + die Breite der Marginalspalte, also
43.
Die linke Kante der zweiten Spalte ist dasselbe zzgl. der Breite des Stegs:
43 + myColumnsGutter.
Dann kommt dir rechte Kante der zweiten Spalte. Hier ist etwas Mathematik gefragt.
Zu der linken Kante der zweite Spalte kommt die Hälfte des verbleibenden Rests abzüglich der Hälfte der Stegbreite hinzu:
myMarginalSpaltenbreite + myColumnsGutter + (pWidth - pMargins.left - pMargins.right - myMarginalSpaltenbreite - myColumnsGutter)/2 - myColumnsGutter/2.
Fehlt noch die linke Kante der dritten Spalte. Die ist gleich der rechten Kante der zweiten Spalte plus der Stegbreite, also
myMarginalSpaltenbreite + myColumnsGutter + (pWidth - pMargins.left - pMargins.right - myMarginalSpaltenbreite - myColumnsGutter)/2 + myColumnsGutter/2 .
Im Code versteht sich das leichter.
Weil wir die Breite der Marginalspalte mehrfach brauchen und Du sie vielleicht nachträglich noch verkleinern möchtest, wenn Du siehst, daß die Textspalten nur noch 44,5 mm breit sind, habe ich sie in ne extra Variable geschrieben.
Die Formel für die 4. und die 5. Hilfslinie ist, so wie sie hergeleitet ist, etwas kompliziert.
Mit etwas mathematischem Gespür sollte sie sich noch vereinfachen lassen.
Das ist Dein Job. ;-)