[GastForen Programme Print/Bildbearbeitung Adobe InDesign Tabellen automatisch mit SmartStyles formatieren

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

Tabellen automatisch mit SmartStyles formatieren

Franz_S
Beiträge gesamt: 5

7. Mai 2006, 12:43
Beitrag # 1 von 12
Bewertung:
(6779 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo an alle ID-Scripting-Freaks,

möchte gerne automatisch folgendes als InDesign-Java-Script realisieren:

1. Suchen eines Absatzformates (z.B. Tabelle_A)
2. Markieren der gefunden Tabelle (wie Alt+Strg+A)
3. Anwenden eines SmartStyles (z.B. Tabelle_Gelb)
4. weiter zur nächsten Tabelle (Tabelle_A) bis Dokumentende
....
zum Anfang des Dokuments
5. Suchen eines Absatzformates (z.B. Tabelle_B)
6. Markieren der gefunden Tabelle (wie Alt+Strg+A)
7. Anwenden eines SmartStyles (z.B. Tabelle_Rot)
8. weiter zur nächsten Tabelle (Tabelle_B) bis Dokumentende
...
usw.

Ich freue mich schon auf Eure Beiträge und hoffe Ihr schlagt Euch auch das Wochenend um die Ohren.

Gruß Franz
X

Tabellen automatisch mit SmartStyles formatieren

Gerald Singelmann
  
Beiträge gesamt: 6269

7. Mai 2006, 21:14
Beitrag # 2 von 12
Beitrag ID: #227597
Bewertung:
(6753 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mönsch Franz,
wie könnte man bei einer so freundlichen Aufforderung widerstehen?
Ich kann, denn mein JavaScript ist zu rostig. Also gehe ich doch lieber raus, bei dem Wetter <freu>
Viel Erfolg mit der Anfrage.


als Antwort auf: [#227554]

Tabellen automatisch mit SmartStyles formatieren

Martin Fischer
  
Beiträge gesamt: 12778

7. Mai 2006, 23:43
Beitrag # 3 von 12
Beitrag ID: #227605
Bewertung:
(6745 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Gerald,

das Wetter ist zwar immer noch toll, aber jetzt hat's mich auf Grund der Frische doch reingezogen. Das Thema interessiert mich auch.

Habe die letzten Tage eine Menge Tabellen mittels SmartStyles einheitlich formatiert und fürchte vor der Ablieferung des Umbruchs, daß der Kunde es sich beim Korrekturlesen trotz mehrfacher Bestätigung des Tabellenlayouts doch nochmal anders überlegen könnte.

Die Dokumentation von SmartStyles bzgl. Scripting ist sehr dürftig.
Ich finde nur zwei Erweiterungen des Scritping-Object-Modells durch SmartStyles:
1. Bibliotheks-Eigenschaft "SmartStyles", um die Bibliothek zwischen Objekt- und Smart Styles-Bibliothek umzuschalten. - Die bringt uns in dieser Sache (Zuweisung eines SmartStyles-Formats an eine Tabelle) nicht weiter.

2. Eine Methode zur Zuweisung eines SmartStyles-Formats auf ein Seitenelement (PageItem; z.B. Textrahmen - ich frage mich, auf welches Seitenelement ein SmartStyle-Format sonst noch angewendet werden können soll), nicht aber direkt auf eine Tabelle (welche z.B. ein Element - child - eines Seitenelements - textFrame - ist).


Gerald, hast Du eine Idee, wie man ein SmartStyles-Format auf eine Tabelle anwendet (gerne auch in AppleScript und gerne auch bei Sonnenschein)? - Der Rest wäre ein Klacks.



Wie ist es überhaupt mit der Terminologie: Handelt es sich bei dem Ding, das man einem Seitenelement zuweist, um ein SmartStyles-Format oder -Objekt oder -Objektformat? Manchmal ist auch von Stil die Rede. Das ganze Ding ist mir immer noch etwas unheimlich, da mit herkömmlichen Mitteln nicht zu analysieren und die Auswirkungen seiner Anwendung nicht immer eindeutig vorhersehbar.

@ Franz_S: Mich würde Dein Realname interessieren, also das, was hinter dem S steht.


als Antwort auf: [#227597]

Tabellen automatisch mit SmartStyles formatieren

Martin Fischer
  
Beiträge gesamt: 12778

8. Mai 2006, 00:39
Beitrag # 4 von 12
Beitrag ID: #227607
Bewertung:
(6741 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zu einer möglichen globalen Änderung ohne Scripting:

Im Benutzerhandbuch wird auf Seite 26 beschrieben, wie ein Smart Styles-Element über das gesamte Dokument hinweg geändert werden kann (Überschrift: "Modifizieren von Smart Styles-Elementen über das gesamtes (sic) Dokument".

Ist es jemanden gelungen, über diese Methode auch Tabellen global zu ändern?


als Antwort auf: [#227605]

Tabellen automatisch mit SmartStyles formatieren

Martin Fischer
  
Beiträge gesamt: 12778

8. Mai 2006, 09:21
Beitrag # 5 von 12
Beitrag ID: #227622
Bewertung:
(6719 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat von Martin Fischre PageItem; z.B. Textrahmen - ich frage mich, auf welches Seitenelement ein SmartStyle-Format sonst noch angewendet werden können soll


Hier muß ich mich nun selber korrigieren:
Selbstverständlich können auch andere Seitenobjekte wie Bildrahmen, Rechtecke, Ovale und Kreise per SmartStyles formatiert werden. Aber dank der Objektstile in InDesign CS2 hält sich der paktische Nutzen von Smartstyles diesbezüglich in Grenzen (ich lasse mich gerne eines Besseren belehren).

Die Frage nach der Zuweisung von SmartStyles-Formaten an Tabellen per Script bleibt freilich nach wie vor offen. Auch die direkten Anfragen bei WoodWing und einem deutschen Lieferanten warten noch auf ihre Beantwortung.


als Antwort auf: [#227605]
(Dieser Beitrag wurde von Martin Fischer am 8. Mai 2006, 09:22 geändert)

Tabellen automatisch mit SmartStyles formatieren

Martin Fischer
  
Beiträge gesamt: 12778

8. Mai 2006, 10:11
Beitrag # 6 von 12
Beitrag ID: #227628
Bewertung:
(6711 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Inzwischen ist die Antwort von WoodWing eingetroffen:
Zitat von WoodWing It is only possible to apply styles to page items so if you need to apply a styles to a table you will have to apply the style to the page item containing the table. This means that the item in the Smart Styles library will also have to be applied to the page item insead of the table itself.


Ich habe es erneut geprüft ... und in der Tat, läßt sich eine Tabelle über die Zuweisung des SmartStyles-Formats an den übergeordneten Textrahmen formatieren. Damit sich die Formatierung nur auf die Tabellen- und Zelleigenschaften beschränkt, sollte bei dem entsprechenden SmartStyles-Format die SmartStyle Einstellungen für Text-Stil (und eventuell auch Objekt-Stil) deaktiviert werden.

Mein Testskript (Textrahmen mit Tabelle ist ausgewählt):
Code
// applySmartStyle2TextFrame.jsx 

if ((app.selection.length > 0) && (app.selection[0].constructor.name == "TextFrame"))
{
var myLib = app.libraries.item("Testbibliothek.indl"); // SmartStyles-Bibliothek
var myStyle = myLib.assets.item("Testformat"); // SmartStyles-Format

myTextFrame = app.selection[0];
myStyle.applySmartStyle(myTextFrame);
}


@ Franz_S: Du müßtest also folgendermaßen vorgehen:
1. Absatzformat, mit dem eine Tabelle identifiziert werden soll suchen;
2. den übergeordneten Textrahmen finden (etwa über myFoundItems[myCounter].parent.parent.parent);
3. diesem Textrahmen das entsprechende SmartStyles-Format (wie oben angegeben) zuweisen - dabei darauf achten, daß die SmartStyle-Einstellungen lediglich auf Tabellen- und Zelleneigenschaften beschränkt sind (sonst könnte es Dir die Absatz- und Zeichenformatierungen im Textrahmen durcheinanderbringen).

Allerdings ist mir die automatische Zuweisung solcher Blackboxen wie den SmartStyles-Formaten immer noch etwas unheimlich. Ich erledige dies zunächst nur bei Kopien von meinen Arbeitsdateien.


als Antwort auf: [#227622]

Tabellen automatisch mit SmartStyles formatieren

Christoph Steffens
  
Beiträge gesamt: 4906

8. Mai 2006, 10:29
Beitrag # 7 von 12
Beitrag ID: #227634
Bewertung:
(6699 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Martin Fischer ] Allerdings ist mir die automatische Zuweisung solcher Blackboxen wie den SmartStyles-Formaten immer noch etwas unheimlich. Ich erledige dies zunächst nur bei Kopien von meinen Arbeitsdateien.

Martin, was ist daran unheimlicher als an anderen Aktionen, die über Script gesteuert werden?


als Antwort auf: [#227628]

Tabellen automatisch mit SmartStyles formatieren

Martin Fischer
  
Beiträge gesamt: 12778

8. Mai 2006, 10:58
Beitrag # 8 von 12
Beitrag ID: #227638
Bewertung:
(6683 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Man weiß nie so genau, was wie in einem SmartStyle drinsteckt und wie die Auswirkungen der Anwendung eines SmartStyles sind.

Die Auswirkungen sind nur "graphisch" wahrzunehmen.
Es ist nicht möglich, anders als über die graphische Umsetzung an die Eigenschaften eines SmartStyles ranzukommen.

Bei Objektstilen oder Absatz- und Zeichenformaten können per Skript (und Benutzeroberfläche) die Eigenschaften aus dem Stil selbst und nicht erst aus dem Objekt, das mit diesen Formaten/Stilen traktiert wurde, eingesehen werden.

Letzthin trieb z.B. eine kleine "nichtkonservierte" Eigenschaft eines SmartStyles-Formats meinen Blutdruck in die Höhe:
1. Ich hatte mir eine Mustertabelle angelegt, bei welcher die Kopfzeile per Zeichenformat kursiv ausgezeichnet war.
2. Aus dieser Mustertabelle erzeugte ich ein SmartStyles-Format. In den SmartStyles-Einstellungen setzte ich eine Beschränkung auf Tabellen-Stil inkl. aller Tabelleneinstellungen und Text-Stile mit Ausnahme von Zeicheneinstellungen (also inkl. Zeichenformate).
3. Bei der Zuweisung des SmartStyles-Formats an die folgenden Tabellen wurde die Formatierung des ersten Eintrags in der Kopfzeile mit dem Kursiv-Zeichenformat stets verschluckt. Alle anderen Einträge sind jedoch korrekt mit dem Zeichenformat ausgezeichnet worden.

Die Definition habe ich mehrfach vorgenommen und aktualisiert. Das Ergebnis blieb das alte (falsche).
Habe das Objekt per Drag & Drop aus der Bibliothek neu im Dokument plaziert und inspiziert: die Auszeichnung mit dem Kursiv-Zeichenformat war vorhanden.

Schließlich habe ich die fehlende Auszeichnung per Suchen-Ersetzen korrigiert (bestimmter Begriff, ausgezeichnet mit bestimmtem Absatzformat).

Weißt Du jetzt, was ich mit der Blackbox meine?

Man hat das Gefühl, es passieren Dinge, die man selber nicht kontrollieren und nicht immer vorhersehen kann. Man kann nur probieren und bekommt keine andere Darstellung der Eigenschaften als die graphische Umsetzung am Bildschirm.


> Martin, was ist daran unheimlicher als an anderen Aktionen, die über Script gesteuert werden?

Ok, ich glaube, jetzt verstehe ich Deine Frage besser.
Für jemanden, der ein Skript nicht lesen kann, mag jedes Skript unheimlich sein.
Aber jeder hat die Chance, sich die Sprache anzueignen und ein Skript verstehen zu lernen. Die SmartStyles werden hingegen eine Blackbox bleiben. ;-)


als Antwort auf: [#227634]
(Dieser Beitrag wurde von Martin Fischer am 8. Mai 2006, 11:05 geändert)

Tabellen automatisch mit SmartStyles formatieren

Franz_S
Beiträge gesamt: 5

8. Mai 2006, 13:20
Beitrag # 9 von 12
Beitrag ID: #227685
Bewertung:
(6657 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin und allen Anderen,

vielen Dank für die Mühe, die Ihr mit meiner Anfrage habt. Ich habe das Script geprüft und es hat mich schon einen großen Schritt weitergebracht. Langsam verstehe ich auch das Objektmodell von ID.
Nur was mache ich jetzt wenn ich mehrere Tabellen in einem Textframe habe?

Habt Ihr da eine gute Idee?


als Antwort auf: [#227628]

Tabellen automatisch mit SmartStyles formatieren

Martin Fischer
  
Beiträge gesamt: 12778

8. Mai 2006, 13:44
Beitrag # 10 von 12
Beitrag ID: #227695
Bewertung:
(6651 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
> Nur was mache ich jetzt wenn ich mehrere Tabellen in einem Textframe habe?

Das ist so eine Schwachstelle ...
Da hilft wahrscheinlich kein Skript mehr weiter, sondern nur noch Mäusleschieben.

Theoretisch ist es möglich, ein SmartStyles-Objekt anzulegen, in dem mehrere Tabellen mit unterschiedlichen Formatierung in einer festen Reihenfolge enthalten sind. Wird dieses SmartStyles-Format per Skript dem Textrahmen zugewiesen, dann werden die Tabellen im Textrahmen so formatiert, wie im SmartStyles-Objekt definiert.

Angenommen, Du hast im Textrahmen 5 Tabellen und wendest darauf ein SmartStyles-Format mit 3 Tabellenobjekten an, dann bekommst du etwa folgende Formatierung (die Formatierung der letzten SmartStyles-Tabelle wiederholt sich):

1 1
2 2
3 3
4 3
5 3

Also mit der Zuweisung von einem Format auf eine bestimmte Tabelle in einem Textrahmen per Skript wirst Du Dir schwer tun. Du kannst also dann, wenn mehrere Tabellen in einem Textrahmen enthalten sein können, nicht anweisen, daß jeder Tabelle mit einem bestimmten Absatzformat ein bestimmtes SmartStyles-Format zugewiesen wird.

Hier sind TableStyles & CellStyles flexibler.
Allerdings haben die ihre Schwächen anderswo ... aber das ist ein anderes Thema.


als Antwort auf: [#227685]
(Dieser Beitrag wurde von Martin Fischer am 8. Mai 2006, 13:49 geändert)

Tabellen automatisch mit SmartStyles formatieren

Franz_S
Beiträge gesamt: 5

8. Mai 2006, 15:37
Beitrag # 11 von 12
Beitrag ID: #227735
Bewertung:
(6632 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich denke, dass ich mich da unklar ausgedrückt habe.

Ich will nicht mit einem Schlag ein SmartStyle auf drei oder vier Tabellen anwenden. Das Script soll nur eine Tabelle von dreien formatieren.

In einer weiteren Schleife dann die nächste Tabelle (mit einem anderen SmartStyle) usw.

Viele Grüße Franz


als Antwort auf: [#227695]

Tabellen automatisch mit SmartStyles formatieren

Martin Fischer
  
Beiträge gesamt: 12778

8. Mai 2006, 16:11
Beitrag # 12 von 12
Beitrag ID: #227743
Bewertung:
(6622 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Nein, Du hast Dich nicht unklar ausgedrückt.
Aber viellecht hast Du mich falsch verstanden (was auf meinen Ausdruck zurückzuführen wäre).

Ich wollte Dir lediglich zum einen aufzeigen, daß das, was Du Dir wünscht, über das Scripting mit SmartStyles so nicht machbar sein dürfte und zum zweiten wollte ich aufzeigen, was machbar wäre, wenn mehrere Tabellen in einem Textrahmen sind.

Per Script kannst Du mit den SmartStyles nicht eine einzelne Tabelle formatieren, sondern immer nur alle in einem Textrahmen versammelten Tabellen, weil SmartStyles nicht die einzelne Tabelle anspricht, sondern den einzelnen Textrahmen.


Das was Du Dir vorstellst, wäre am ehesten über TableStyles & CellStyles (wie oben geschrieben) zu lösen. Mit diesem Plugin kannst Du per Skript jede einzelne Zelle einer Tabelle ansprechen und formatieren. Aber es ist leicht möglich, daß Du zur Formatierung einer einzelnen Tabelle über TableStyle & CellStyles 4-7 Stile brauchst:
1. Tabellenstil;
2. Zellenstil für die inneren Zellen mit Versatzabstand links und rechts;
3. Zellenstil für die Zellen links außen mit Versatzabstand nur rechts;
4. Zellenstil für die Zellen rechts außen mit Versatzabstand nur links.

Hinzu kommen eventuell drei weitere Stile für die Kopfzeile.
Und bei sieben notwendigen Stilen zur Formatierung einer Tabelle stellt sich dann die Frage nach der Effektivität (ob nicht doch besser gleich alles per Skript formatiert wird).

Hier ist SmartStyles äußerst ökonomisch: mit einem SmartStyles-Objekt kannst Du alle unterschiedlichen Formatierungen innen und außen, oben und unten auf einen Schlag fassen.
Und ein Mäusleschieber kann daran seine wahre Freude haben.


als Antwort auf: [#227735]
X