[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

Tabellenzelle wächst bei rotiertem Text nicht mit

Martin Fischer
  
Beiträge gesamt: 12783

26. Okt 2011, 12:31
Bewertung:

gelesen: 1364

Beitrag als Lesezeichen
Hallo,

normalerweise sorgt die Angabe einer Mindesthöhe einer Tabellenzelle dafür, dass die Zelle in der Höhe mitwächst, wenn es zur vollständigen Unterbringung des Textes erforderlich ist.

Wird der Text um 90° oder 270° rotiert, dann scheint dieses Mitwachsen nicht zu wirken.

Ausgangspunkt:
1. einzeiliger Text in einer Tabellenzelle mit ca. 25 mm Breite;
2. Zellenhöhe = mindestens 5 mm;
3. keine Textrotation

Änderung:
Textrotation um 270°

Ergebnis:
Text ist im Übersatz, die Zelle wächst in der Höhe nicht mit.

An dem Ergebnis ändert sich (erwartungsgemäß) nichts, wenn statt mindestens 5 mm genau 5 mm angegeben werden.


Nun habe ich versucht, mit Hilfe eines Skripts den Einfluss der Angaben von Höhe (height), Mindesthöhe (minimumHeight), der Maximalhöhe (maximumHeight) und mitwachsend (autoGrow = true) und nicht mitwachsend (autoGrow = false) im Wechsel festzustellen.

Code
if (app.selection.length > 0 && app.selection[0].parent.constructor.name == 'Cell') 
{
_cell = app.selection[0].parent;
_cell.autoGrow = !_cell.autoGrow;
alert('Mitwachsend: ' + _cell.autoGrow); // mitwachsend / nicht mitwachsend im Wechsel
_cell.height = 10;
_cell.minimumHeight = 2;
_cell.maximumHeight = 100;
_cell.rotationAngle = 270;
}


Am grundsätzlichen Problem ändert sich nichts.
Rotierter Text verschwindet im Übersatz, wenn er vor der Rotation breiter war, als die Zelle hoch ist.

autoGrow nimmt lediglich Einfluss darauf, welche von den beiden Eigenschaften height bzw. minimumHeight zum Zuge kommt.
Code
autoGrow = true  -> in der Zellenpalette werden 'mindestens' und der minimumHeight-Wert angezeigt 
autoGrow = false -> in der Zellenpalette werden 'Genau' und der height-Wert angezeigt.


Der maximale Wert scheint (erwartungsgemäß) in diesem Bereich keinen Einfluss zu nehmen auf das Mitwachsverhalten.

Ein Workflow über die Prüfung des Textüberlaufs und der Erhöhung der Zellenhöhe, so lange bis der Textüberlauf verschwunden ist, schlägt fehl, da unmittelbar nach der Rotation die Ermittlung des Textüberlaufs (overflows) false zurückgibt, obwohl der Text tatsächlich überläuft.

Code
if (app.selection.length > 0 && app.selection[0].parent.constructor.name == 'Cell') 
{
_cell = app.selection[0].parent;
_cell.autoGrow = !_cell.autoGrow;
alert('Mitwachsend: ' + _cell.autoGrow); // mitwachsend / nicht mitwachsend im Wechsel
_cell.height = 10;
_cell.minimumHeight = 2;
_cell.maximumHeight = 100;
_cell.rotationAngle = 270;
alert('Textüberlauf: ' + _cell.overflows);
}

Bei der nochmaligen Ausführung des Skripts wird der Textüberlauf, der bei der vorherigen Ausführung erfolgt ist, angezeigt.

Hat jemand eine Idee, wie dem ausgefallenen Mitwachsen bei Textrotationen in Tabellenzellen beizukommen wäre?


Eine spontane Idee: Markierung der rotierten Zellen und Prüfung des Textüberlaufs (und anschließender Korrektur der Höhe, bis kein Überlauf).

Das scheidet (bei mir in CS4) aus, da damit der Textüberlauf gar nicht verschwindet.

Auf der Benutzeroberfläche habe ich beobachtet, dass man den Überlauf zum Verschwinden bringt, indem man die Breite der Spalte minimal verändert.

Aber das Skript zeigt sich während der Ausführung unbeeindruckt von der Veränderung der Spaltenbreite. Allerdings ist nach Ausführung des Skripts der Textüberlauf behoben.

Code
if (app.selection.length > 0 && app.selection[0].parent.constructor.name == 'Cell') 
{
_cell = app.selection[0].parent;
while (_cell.overflows == true && _cell.minimumHeight <= 50)
{
_cell.minimumHeight += 1;
_cell.width += 0.00001;
}
}


(Dieser Beitrag wurde von Martin Fischer am 27. Okt 2011, 06:42 geändert)
Änderungsverlauf:
Beitrag geändert von Martin Fischer (Moderator) am 26. Okt 2011, 14:59
Beitrag geändert von Martin Fischer (Moderator) am 27. Okt 2011, 06:42