Wie man tabellen in framemaker an die textspaltenbrei anpasst

Adobe framemaker Domande frequenti

wie man tabellen in framemaker an die textspaltenbrei anpasst?

Zum Skript: Hier ist ein einfaches Skript, das eine Tabelle proportional an die Textcolumne anpasst, die sie enthält. Dieses Skript funktioniert mit der aktuellen Tabelle, kann aber problemlos erweitert werden, um mit allen Tabellen in einem Dokument oder Buch zu arbeiten.

Daten abrufen: Klicken Sie Ihren Cursor in eine Tabelle, die skaliert werden muss. Sie müssen einige grundlegende Informationen sammeln, um die Tabelle korrekt zu skalieren. Hier ist kommentierter Code zum Speichern der erforderlichen Daten in Variablen.

// 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 mehrspaltigen Textrahmen. Wenn der Textrahmen nur eine Spalte hat, ist die Spaltenbreite gleich der Textrahmenbreite. Wenn Sie mehrere Spalten haben, die Tabelle aber an die Breite des Textrahmens anpassen möchten, verwenden Sie stattdessen die folgenden Zeilen.

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


Jetzt kann das Skript einige Berechnungen durchführen, um den Skalierungsfaktor zu ermitteln.

// Teilen Sie die Spaltenbreite durch die Tabellenbreite.
Set vScaleFactor = vColWidth / vTblWidth;



Wie skaliert man die Tabelle?

Die Eigenschaft TblWidth der Tabelle ist schreibgeschützt, daher können Sie sie nicht zum Skalieren der Tabelle verwenden.

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


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

// Legen Sie eine Variable für die Tabellenspaltenbrei fest.
Set vWidths = vTbl.TblColWidths;


Eine Metric List ist eine Liste von Messwerten. In diesem Fall gibt es ein Listenelement für jede Spalte in der Tabelle. Wenn die Tabelle fünf Spalten hat, enthält die TblColWidths-Liste fünf Elemente.
Der Schlüssel zum Skript ist, die Liste der Messwerte zu durchlaufen, jeden Wert mit vScaleFactor zu multiplizieren und den neuen Wert zurück in die Liste zu schreiben.

// Durchlaufen Sie die Liste und berechnen Sie die neue Breite
// jeder Tabellenspalte.
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 inkrementiert (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 nun die korrekten Breiten, um die Tabelle an die Spaltenbreite anzupassen. Das Einzige, das noch zu tun ist, besteht darin, die neuen Werte der Tabelle zuzuweisen.
Set vTbl.TblColWidths = vWidths;


Comments