Connect failed: Connection timed out

[GastForen Programme Print/Bildbearbeitung Adobe InDesign Ein JavaScript zum Ausrichten tabellarischer Texte

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

Ein JavaScript zum Ausrichten tabellarischer Texte

Hans Haesler
Beiträge gesamt: 5826

24. Apr 2014, 20:44
Beitrag # 1 von 16
Bewertung:
(7036 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo InDesign-Fans,

kommt immer wieder vor: Ein paar Absätze mit tabellarischer Darstellung. Und man möchte die Abstände zwischen den Spalten gleichmässig aufteilen. Manuell ist das gar nicht so rasch gemacht. Aber per Script geht das sehr fix.

Das JavaScript TabStopVerteiler ist hier erhältlich: http://www.fachhefte.ch / Links "JavaScripts", "Mac OS X deutsch" (oder "Windows deutsch"), "InDesign CS2" bis "InDesign CS5". Letzteres funktioniert auch mit CS6 und CC.

Der ausgewählte Text (oder der/die Textrahmen) muss Tabulator-Zeichen enthalten. Dann werden die Abstände zwischen den Spalten vereinheitlicht.

Wenn keine Tabstops definiert sind, werden linksbündige erzeugt und zugewiesen. Per Vorgabe mit einem Abstand von 4 mm zwischen den Spalten. Dieser Wert kann im Script geändert werden.

Sind aber Tabstops vorhanden, dann wird nur deren Position geändert. Die Ausrichtung und andere Optionen werden beibehalten. Die letzte Spalte wird nicht bewegt.

Im Script kann bestimmt werden, ab welchem Tabstop die Positions-Anpassungen erfolgen sollen. Das wäre eine Lösung für das Problem, welches hier gepostet wurde: http://www.hilfdirselbst.ch/..._P496971.html#496971

Eine dritte Option: die Rundungs-"Feinheit" der neuen Positionswerte kann definiert werden.
– nicht runden; – Zehntelsmillimeter; – halbe Millimeter; – ganze Millimeter

*****
Die Vorgeschichte des Scripts:
Vor vielen Jahren hatte ich ein AppleScript für QuarkXPress entwickelt, welches das regelmässige Ausrichten besorgt. Kürzlich erhielt ich eine Anfrage eines begeisterten Benutzers, welcher nun diese Aktionen mit InDesign ausführen möchte.

Es war nicht möglich, das AppleScript nach JavaScript zu portieren. Zu gross sind die Unterschiede zwischen QuarkXPress und InDesign. Also: Von Grund auf neu schreiben, inspiriert von den Ideen des XPress-Scripts.

Doch nicht ganz von Grund auf. Denn ich erinnerte mich an eine Studie von Gerald Singelmann, welche ähnliches vollbringt. Gesucht, gefunden: Sein Script "spaltenbreite_nach_längster_spalte.jsx". Daraus übernahm ich einige Zeilen und wandelte sie ab, um schon mal Tabellarisches ohne Tabstops zu behandeln.

Für die zweite Version – welche bei bestehenden Tabstop-Definitionen nur die Position ändert –, war es schwieriger: Jetzt mussten sowohl die minimale als auch die maximale Position der Spaltenabstände ermittelt werden. Zudem noch die Ausrichtung der nächsten Spalte einbeziehen. Und die Einzüge. Und auch einen eventuellen Zeilenspalter ...

Die Tabellen des Kunden sind ziemlich speziell aufgebaut. Allen ist ein Absatzformat zugewiesen. Und bei allen dürfen die erste und die zweite Spalte nicht verschoben werden. Und es sollten alle Tabellen im ganzen Dokument behandelt werden.

Das hier angekündigte Script ist eine Variante des ursprünglichen Scripts. Die Texte oder Textrahmen müssen ausgewählt werden. Ein Absatzformat wird nicht berücksichtigt. Aber eine Option für die obenerwähnte Problemlösung ist eingebaut.
*****

Gruss, Hans
X

Ein JavaScript zum Ausrichten tabellarischer Texte

Hans Haesler
Beiträge gesamt: 5826

24. Apr 2014, 22:50
Beitrag # 2 von 16
Beitrag ID: #526534
Bewertung:
(7002 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
... angehängt sind zwei Beispiele, damit klarer ist, worum es geht.

ohne_Tabstops.png:
vorher
Der Text enthält Tabulatorzeichen, aber es sind keine Positionen und Ausrichtungen definiert.
nachher
Bei jeder Spalte wurde die grösste Breite ermittelt, der definierte Abstand dazugezählt und an dieser Position ein linksbündiger Tabstop erzeugt.

mit_Tabstops.png
vorher
Den Absätzen ist "Einzug links" und "Einzug links erste Zeile" zugewiesen. Zusätzlich sind schon Tabstops definiert. Deren Ausrichtung könnte auch mittig oder rechtsbündig sein.
nachher
Bei jedem Abstand zwischen den Spalten wurde der kleinste Wert ermittelt. Diese wurden zusammengezählt, das Ergebnis durch die Anzahl Abstände geteilt. Dieser Wert wurde benutzt, um die neuen Positionen zu errechnen, welche schliesslich den Tabstops zugewiesen wurden.

Gruss, Hans


als Antwort auf: [#526530]
Anhang:
ohne_Tabstops.png (55.3 KB)   mit_Tabstops.png (59.2 KB)

Ein JavaScript zum Ausrichten tabellarischer Texte

Headway
Beiträge gesamt: 28

25. Apr 2014, 09:57
Beitrag # 3 von 16
Beitrag ID: #526541
Bewertung:
(6949 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans,

vielen Dank für das für mich sehr nützliche Skript.
Wäre es möglich, dieses Skript so zu erweiteren (wenn es deine Zeit erlaubt und nicht zu aufwändig ist), dass es auch auf Tabellen einen ähnlichen Einfluß ausübt, damit man das händische Angleichen/Ausgleichen der Spaltenbreite automatisieren kann?

Vielen Dank nnochmals und beste Grüße
Headway


als Antwort auf: [#526534]

Ein JavaScript zum Ausrichten tabellarischer Texte

Ralf Hobirk
Beiträge gesamt: 5961

25. Apr 2014, 10:13
Beitrag # 4 von 16
Beitrag ID: #526542
Bewertung:
(6939 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Mit "Erweitern" ist es da wohl nicht getan, da Tabs mit Tabellen nichts gemeinsam haben, außer dass beide in Textrahmen stehen. Sieh dir mal das hier an:

http://www.indesign-faq.de/de/autospalte2


als Antwort auf: [#526541]

Ein JavaScript zum Ausrichten tabellarischer Texte

Hans Haesler
Beiträge gesamt: 5826

25. Apr 2014, 10:19
Beitrag # 5 von 16
Beitrag ID: #526543
Bewertung:
(6933 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Headway,

bitte sehr.

Nun ... wie Ralf richtig sagt, wäre das keine Erweiterung, sondern ein separates Script.
Doch: Dafür habe ich keinen Bedarf. Zudem wäre der Aufwand sicher gross.

Vielleicht hat jemand schon etwas ähnliches gemacht. Vielleicht gibt es ein PlugIn.

Gruss, Hans


als Antwort auf: [#526541]

Ein JavaScript zum Ausrichten tabellarischer Texte

Headway
Beiträge gesamt: 28

25. Apr 2014, 10:45
Beitrag # 6 von 16
Beitrag ID: #526544
Bewertung:
(6911 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Hans, habe ich mir ja eh auch gedacht.
In FrameMaker 8 ging das so schön einfach und in Indesign vermisse ich es halt noch.
Aber vielleicht denkt ja irgendwann das Christkind auch an mich ;-)

Danke Ralf, werde mir Autospalte mal genauer ansehen.

Gruß
Headway


als Antwort auf: [#526543]

Ein JavaScript zum Ausrichten tabellarischer Texte

Uwe Laubender
Beiträge gesamt: 5316

25. Apr 2014, 11:01
Beitrag # 7 von 16
Beitrag ID: #526545
Bewertung:
(6883 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Hans!

Ja. Der Aufwand wäre immens.

Ich hatte mal in Richtung Tabelle geforscht.
Dazu aber bisher nichts veröffentlicht.

Ziel war es eine Tabelle automatisiert auf eine optimale, kleinstmögliche Höhe zu bekommen. Also: optimale Weißraumausnutzung bei guter Lesbarkeit der Inhalte.

Das "Hauptproblem" sehe ich bei der Ästhetik der entstehenden Weißräume. Das gilt für jeden numerisch arbeitenden Scriptansatz, der den Umbruch nicht verändern soll. Die Abstände mögen numerisch ok sein, die Weißräume sind es meistens nicht, sodass der Anwender den "guten Satz" meist durch individuelle Anpassung der Spaltenbreiten erreicht. Und dann doch eine Umbruchänderung in Kauf nimmt.

Das in den Griff zu bekommen ist schwierig, besonders, wenn man bedenkt, dass Tabellen "gemergte" Zellen enthalten können.

Was ich noch von meinen Experimenten sagen kann: einigermaßen erfolgreich, jedoch war die Laufzeit bedenklich hoch, sodass ein menschliches Auge die Weißraumproblematik da und dort vielleicht etwas schneller in Griff bekommt.

Vorausgesetzt, der Anwender weiss wie er die Spaltendimensionen ändern kann ohne die Gesamtbreite der Tabelle zu ändern (Hochstelltaste beim Verschieben der Spaltenränder halten).

Ich hab' mal ein Beispiel für Tabellensatz hier angehängt. Hat erstmal nichts mit Scripting zu tun. Nur um die Problematik der Weißräume zu verdeutlichen.

Also nichts für schwache Skripternerven ;-)

WhiteSpaceAndTables.idml
WhitespaceAndTables.png


als Antwort auf: [#526543]
Anhang:
WhiteSpaceAndTables.idml (45.9 KB)   WhitespaceAndTables.png (48.4 KB)

Ein JavaScript zum Ausrichten tabellarischer Texte

Quarz
Beiträge gesamt: 3550

25. Apr 2014, 14:38
Beitrag # 8 von 16
Beitrag ID: #526557
Bewertung:
(6808 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,

ich wundere mich, dass keiner auf den
Post vom Ralf reagiert hat.

Das Script vom Gerald von 2009 tut auch
heute noch seine Dienste.
Ich habe es gerade unter CS6 ausprobiert.

Das wäre doch das, was Headway sich
wünscht.

@Ralf,
wenn Du den Link markiert hättest, wäre er
sicherlich aufgerufen worden ;-)
http://www.indesign-faq.de/de/autospalte2


Gruß
Quarz

-------------------------------------
Win7 | InDesign CS6 ver 8.02



als Antwort auf: [#526542]

Ein JavaScript zum Ausrichten tabellarischer Texte

Ralf Hobirk
Beiträge gesamt: 5961

25. Apr 2014, 14:50
Beitrag # 9 von 16
Beitrag ID: #526559
Bewertung:
(6803 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Quarz,

danke für den Hinweis. Ich markiere Links normalerweise immer, und ich ärgere mich auch immer, wenn andere dies nicht tun…

Ging wohl heute Morgen etwas zu schnell, weil ich weg musste ;-)


als Antwort auf: [#526557]

Ein JavaScript zum Ausrichten tabellarischer Texte

Gerald Singelmann
  
Beiträge gesamt: 6269

25. Apr 2014, 17:07
Beitrag # 10 von 16
Beitrag ID: #526568
Bewertung:
(6759 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
@Quarz,

Headway sucht, soweit ich das verstehe, eine Lösung, die die Breite der Spalten selbst ermittelt. Mein autospalte_v2 gibt aber dem Anwender nur die Möglichkeit, selbst Breiten nummerisch einzutippen.


als Antwort auf: [#526557]

Ein JavaScript zum Ausrichten tabellarischer Texte

Headway
Beiträge gesamt: 28

25. Apr 2014, 17:42
Beitrag # 11 von 16
Beitrag ID: #526569
Bewertung:
(6743 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Die Breite der Spalte sollte sich immer nach der längsten Textzeile einer Zelle richten. Der Abstand des Weißraumes zur nächsten Spalte sollte dann in jeder Spalte gleich sein und automatisch ermittelt werden (wobei er in der letzten Spalte eigentlich nicht benötigt wird). Tabellenbreite = Satzspiegelbreite.
Autospalte_v2 ist in diesem Falle, soweit ich es bisher getestet habe, leider nicht die idelale Lösung.

Vielen Dank und schönes Wochenende
Headway


als Antwort auf: [#526568]

Ein JavaScript zum Ausrichten tabellarischer Texte

Hans Haesler
Beiträge gesamt: 5826

26. Apr 2014, 18:12
Beitrag # 12 von 16
Beitrag ID: #526588
Bewertung:
(6624 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Liebe Leute,

zurück zum Thema! :-)

Das Script wurde bisher insgesamt 34 Mal heruntergeladen:
– bedankt hat sich einer;
– beschwert hat sich (noch) keiner ...

Nochmals der Link: Das JavaScript TabStopVerteiler ist hier erhältlich: http://www.fachhefte.ch / Links "JavaScripts", "Mac OS X deutsch" (oder "Windows deutsch"), "InDesign CS2" bis "InDesign CS5".

Anwenderfreundlich
Ich habe versucht, die Benutzung anwenderfreundlich zu gestalten. Auf einen Dialog wird verzichtet, weil nicht wenige Anwender dies als Störung empfinden.

Das bedingt, dass Änderungen der Vorgabenwerte im Code gemacht werden müssen.

Am einfachsten geht man so vor (siehe angehängten Screenshot):
– Im Bedienfeld "Skripte" den Namen des Scripts markieren;
– Im Fly-out-Menü den Artikel "Skript bearbeiten" wählen.

Die Script-Datei wird geöffnet. Unter Mac OS X mit "TextEdit" oder mit dem "ExtendScript Toolkit". Unter Windows wird das "Notepad" benutzt oder eventuell ebenfalls das "ExtendScript Toolkit".

Letzteres wird auch gestartet, wenn man die Umschalt-Taste niederhält und einen Doppelklick auf den Namen des Scripts im Bedienfeld macht. Aber dann befindet sich das Script im Debog-Modus und dieser muss zuerst beendet werden. Entweder im Menü "Debuggen" oder mit Klick auf die kleine quadratische Schaltfläche "Skriptausführung stoppen". Oder: Man versuche eine Änderung vorzunehmen ... Dann kommt ein Dialog, in welchem man mit Klick auf den Button "Ja" den Debug-Modus stoppen kann.

Variante mit Dialog
Dennoch: Mit einem Dialog wäre es doch einfacher. Deshalb werde ich eine Variante des Scripts herstellen, mit welcher der Dialog nur beim ersten Mal gezeigt wird. Sollte später der Dialog erneut erscheinen, dann genügt es, einen Eintrag in der Preferences-Datei zu ändern.

Gruss, Hans


als Antwort auf: [#526569]
Anhang:
Skript_bearbeiten.png (39.7 KB)

Ein JavaScript zum Ausrichten tabellarischer Texte

Uwe Laubender
Beiträge gesamt: 5316

27. Apr 2014, 11:41
Beitrag # 13 von 16
Beitrag ID: #526599
Bewertung:
(6547 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Hans!

Erstmal natürlich Herzlichen Dank für das Erstellen des Skriptes!!
Das jetzt mal nachgeholt.

Runtergeladen hab ich's.
Zum Testen bin ich leider noch nicht gekommen.

Ein Dialog zum Einstellen von Werten wäre natürlich die Krönung.


als Antwort auf: [#526588]

Ein JavaScript zum Ausrichten tabellarischer Texte

Hans Haesler
Beiträge gesamt: 5826

27. Apr 2014, 11:50
Beitrag # 14 von 16
Beitrag ID: #526601
Bewertung:
(6541 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Uwe!

danke für Deine Anerkennung.

Die Variante mit einem Dialog steht. Aber ich muss noch etwas verfeinern, damit der Dialog der Auswahl angepasst wird.

Weil der Minimal-Abstand der Spalten nur benötigt wird, wenn keine Tabstops definiert sind. Und, umgekehrt, die erste zu verändernde Spalte nur berücksichtigt wird, wenn Tabstops vorhanden sind.

Gruss, Hans


als Antwort auf: [#526599]

Ein JavaScript zum Ausrichten tabellarischer Texte

Hans Haesler
Beiträge gesamt: 5826

28. Apr 2014, 07:55
Beitrag # 15 von 16
Beitrag ID: #526634
Bewertung:
(6476 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Sorry, folks,

eine Version 02 des Scripts wurde notwendig, um einen kleinen Bug zu entfernen.
http://www.fachhefte.ch / Links "JavaScripts", "Mac OS X deutsch" (oder "Windows deutsch"), "InDesign CS2" bis "InDesign CS5", TabStopVerteiler_202d bis _502d

Die Fehlermeldung kommt nur, wenn als Rundungsfaktor 0 (also nicht runden) definiert wird und nur wenn die Absätze keine Tabstops enthalten.

Dieses Problem wird im Script mit Dialog behoben sein. Diese Variante ist bereit, wird aber nicht vor heute Nacht zur Verfügung stehen.

Gruss, Hans


als Antwort auf: [#526601]
X