Tabellen in framemaker auf die textspaltbreite skalieren

Adobe framemaker Veelgestelde vragen

tabellen in framemaker auf die textspaltbreite skalieren?

Über das Skript: Hier ist ein einfaches Skript, das eine Tabelle proportional so skaliert, dass sie in die Textspalte passt, die sie enthält. Dieses Skript funktioniert mit der aktuellen Tabelle, kann aber leicht erweitert werden, um mit allen Tabellen in einem Dokument oder Buch zu arbeiten.

Daten erfassen: Klicken Sie mit dem Cursor in eine Tabelle, die skaliert werden soll. Sie müssen einige grundlegende Informationen erfassen, um die Tabelle korrekt zu skalieren. Hier ist kommentierter Code, um die erforderlichen Daten in Variablen zu speichern.

// Die ausgewählte Tabelle.
Set vTbl = SelectedTbl;
// Die aktuelle Breite der Tabelle.
Set vTblWidth = vTbl.TblWidth;
// Die Breite der Spalte, die die Tabelle enthält.
Set vColWidth = vTbl.TextLoc.Object.InTextObj.Width;


Die Variable vColWidth ist die Breite der Spalte in einem mehrstaltigen Textrahmen. Wenn der Textrahmen nur eine Spalte hat, ist die Spaltenbreite gleich der Textrahmenbreite. Wenn Sie mehrere Spalten haben, die Tabelle aber auf die Breite des Textrahmens skalieren möchten, verwenden Sie die folgenden Zeilen anstelle der letzten zwei Zeilen oben.

// Die Breite des Textrahmens, der die Tabelle enthält.
Set vColWidth = vTbl.TextLoc.Object.InTextFrame.Width;


Jetzt kann das Skript etwas Mathematik durchführen, um zu berechnen, wie viel die Tabelle skaliert werden soll.

// Die Spaltenbreite durch die Tabellenbreite teilen.
Set vScaleFactor = vColWidth / vTblWidth;



Wie wird die Tabelle skaliert?

Die Eigenschaft TblWidth der Tabelle ist schreibgeschützt, daher können Sie damit die Tabelle nicht skalieren.

// Das funktioniert nicht.
Set vTbl.TblWidth = vTblWidth * vScaleFactor;


Stattdessen müssen Sie die Breite jeder einzelnen Spalte der Tabelle ändern. Diese Breiten sind in einer MetricList namens TblColWidths gespeichert.

// Eine Variable für die Tabellenspaltbreiten setzen.
Set vWidths = vTbl.TblColWidths;


Eine Metrik-Liste ist eine Liste von Messwerten. In diesem Fall gibt es für jede Spalte in der Tabelle ein Element. Wenn die Tabelle fünf Spalten hat, enthält die Liste TblColWidth fünf Elemente.
Der Schlüssel des Skripts ist, die Liste der Messwerte zu durchlaufen, jedes Element mit vScaleFactor zu multiplizieren und den neuen Wert zurück in die Liste zu setzen.

// Die Liste durchlaufen und die neue Breite jeder
// Tabellenspalte berechnen.
Loop While(vCounter <= vWidths.Count) LoopVar(vCounter)
Init(1) Incr(1)
Get Member Number(vCounter) From(vWidths) NewVar(vWidth);
Set vNewWidth = vWidth * vScaleFactor;
Replace Member Number(vCounter) In(vWidths) With(vNewWidth);
EndLoop


Die Variable vCounter wird um 1 erhöht (Incr(1)), beginnend bei 1 (Init(1)) bis zur Anzahl der Elemente in vWidths (vWidths.Count). Jedes Element wird mit dem Skalierungsfaktor multipliziert, und das Element wird durch den neuen Wert ersetzt.
Ihre Variable vWidths MetricList enthält jetzt die richtigen Breiten, um die Tabelle auf die Spaltenbreite zu skalieren. Alles, was noch zu tun ist, besteht darin, die neuen Werte der Tabelle zuzuweisen.
Set vTbl.TblColWidths = vWidths;


Comments