zu meinem Skript, welches einen ausgewählten Text (der eine Tabelle werden soll und Tabulatoren enthält) mit 3 Absatzformaten versieht, die durch das Skript erzeugt werden:
Die erste Zeile kleiner und mit Linie darunter, dann abwechselnd ohne Balken (weiß) hinterlegt, und dann mit Balken (weiß) hinterlegt.
In den Absatzformaten werden dann auch die Tabulatoren des ausgewählten Textes übernommen.
Leider konnte ich die Testdatei nicht hochladen, da beim Versuch hier im Forum folgende Fehlermeldung kommt:
Und egal, welche Dateierweiterung ich hinten anhänge, kommt diese Fehlermeldung.Die Dateierweiterung indd ist nicht erlaubt.
Unten ist die aktuelle Version des Skriptes.
(Leider konnte ich keinen Text innerhalb dieses Codes farblich anders markieren, wie es im HilfDirSelbst-Forum geht. Sonst hätte ich die beiden veränderten Bereiche für die Tabulatoren farblich markiert.)
Der erste Bereich ist unter dem Kommentar
Code: Alles auswählen
// Schleife (Tabulatoren des markierten Text speichern (Position und Ausrichtung))
Code: Alles auswählen
// Schleife: In das Absatzformat gespeicherte Tabulatoren speichern
Ich muß zugeben, daß ich zwar den Unterschied zwischen Referenz und Wert verstehe, aber leider noch nicht vollständig verstanden habe, WIE man einen Wert erzwingen kann.
Zuerst dachte ich, daß es damit geht, daß man die Variable nochmal einer anderen Variable zuweist und es dadurch aufgebrochen wird, das scheint aber nicht der Fall zu sein.
Ich habe auch nach "JavaScript Reference Value" über Google gesucht und dabei viele Einträge zu dem Problem gefunden, die aber leider auch nicht zu meinem Verständnist beigetragen haben. Ich bin in dem Grundverständnis offensichtlich noch seeeehr am Anfang.
Code: Alles auswählen
#target InDesign
// Skript zum automatischen Umformatieren einer Tabelle mit Kopfzeile und abwechselnden hinterlegten Balken
// von Matthias Bracke - V7 -21.3.2013, Nürnberg
// Vielen Dank an die Mitglieder des Forums "Adobe InDesign Skriptwerkstatt" bei https://www.hilfdirselbst.ch/
// ======================================================
// Prüfen: Ist ein Dokument offen und Text ausgewählt
var _Fehler1 = "Es ist kein Dokument geöffnet";
var _Fehler2 = "Es ist kein Text ausgewählt";
var _Fehler3 = "Es ist ein Fehler aufgetreten!\r\rDie Fehlermeldung lautet:\r";
try{
if (app.documents.length == 0){
alert(_Fehler1);
exit();
}
if (app.selection.length == 0) {
alert(_Fehler2);
exit();
}
if (app.selection[0].hasOwnProperty("baseline") == false
|| app.selection[0].length == 0) {
alert(_Fehler2);
exit();
}
}
catch(_Fehler){
alert(_Fehler3 + _Fehler.message);
exit();
}
// ======================================================
// Variablen definieren
var _MeinDokument = app.activeDocument;
var _AusgewaehlterText = app.selection[0];
var _AbsatzformatZahlAnhang = 0; // Zahl im Absatzformatnamen, falls Name besetzt
var _Testzahl = 0;
var _AbsatzformatID = 0; // Später ID des Mutter-Absatzformates
var _TabsAnzahl = _AusgewaehlterText.paragraphs[0].tabStops.length;
var _TabsAlle = _AusgewaehlterText.paragraphs[0].tabStops.everyItem;
_TabsAllePositionRef = new Array();
_TabsAlleAusrichtungRef = new Array();
_TabsAlleZeichenAusrichtungRef = new Array();
_TabsAlleFuellzeichenRef = new Array();
_TabsAllePosition = new Array();
_TabsAlleAusrichtung = new Array();
_TabsAlleZeichenAusrichtung = new Array();
_TabsAlleFuellzeichen = new Array();
// ======================================================
// Schleife (Tabulatoren des markierten Text speichern (Position und Ausrichtung))
for (var i = 0; i < _TabsAnzahl; i ++) {
var _TabPosition = _AusgewaehlterText.paragraphs[0].tabStops[i];
_TabsAllePositionRef.push(_TabPosition.position);
_TabsAllePosition.push (_TabsAllePositionRef[i]);
_TabsAlleAusrichtungRef.push(_TabPosition.alignment);
_TabsAlleAusrichtung.push (_TabsAlleAusrichtungRef[i]);
_TabsAlleZeichenAusrichtungRef.push(_TabPosition.alignmentCharacter);
_TabsAlleZeichenAusrichtung.push (_TabsAlleZeichenAusrichtungRef[i]);
_TabsAlleFuellzeichenRef.push(_TabPosition.leader);
_TabsAlleFuellzeichen.push (_TabsAlleFuellzeichenRef[i]);
/* alert("_TabsAllePosition = " + _TabsAllePosition[i] + "\r" +
"_TabsAllePositionRef = " + _TabsAllePositionRef[i] + "\r" +
"_TabsAlleAusrichtung = " + _TabsAlleAusrichtung[i] + "\r" +
"_TabsAlleAusrichtungRef = " + _TabsAlleAusrichtungRef[i] + "\r" +
"_TabsAlleZeichenAusrichtung = " + _TabsAlleZeichenAusrichtung[i] + "\r" +
"_TabsAlleZeichenAusrichtungRef = " + _TabsAlleZeichenAusrichtungRef[i] + "\r" +
"_TabsAlleFuellzeichen = " + _TabsAlleFuellzeichen[i] + "\r" +
"_TabsAlleFuellzeichenRef = " + _TabsAlleFuellzeichenRef[i] + "\r"); */
}
// Schleife (Absatzformatnamen: Mutterformat definieren und prüfen, ob schon vorhanden) ==NEU2==
var _AbsatzformatZahlAnhang = 0; // erzeugt Formatnamen mit Zähler, Schleife wird abgebrochen, wenn noch nicht vorhanden
while (true) {
var _Absatzformat_Text = "KA-Tab!_Text (Mutterformat)".replace("!",++_AbsatzformatZahlAnhang);
if (_MeinDokument.paragraphStyles.itemByName(_Absatzformat_Text)== null) {
break; // Format nicht vorhanden
}
}
// Übrige Absatzformatnamen definieren
var _Absatzformat_TextBalken = "KA-Tab"+_AbsatzformatZahlAnhang +"_Text_Balken";
var _Absatzformat_Kopf = "KA-Tab"+_AbsatzformatZahlAnhang +"_Kopf";
// ======================================================
//Neues Absatzformat _Absatzformat_Text anlegen mit den entsprechenden Einstellungen (Außerhalb der Absatzformatgruppe)
_AbsatzformatAnlegenText = _MeinDokument.paragraphStyles.add();
with ( _AbsatzformatAnlegenText ) { name = _Absatzformat_Text;
appliedFont = app.fonts.item("ITC Franklin Gothic Std");
fontStyle = "Book Condensed";
pointSize = 9.4;
leading = "3.75 mm";
fillColor = "Black";
tracking = -10;
horizontalScale = 94;
ruleBelow = false;
ruleBelowLineWeight = leading; //*3,5277778 ;
ruleBelowOffset = -0.8 * leading / 3,5277778;
ruleBelowColor = "Paper";
justification = Justification.LEFT_ALIGN;
};
// Schleife: In das Absatzformat gespeicherte Tabulatoren speichern
for (var i = 0; i < _TabsAnzahl; i ++) {
_TabsZuweisen = _MeinDokument.paragraphStyles.itemByName(_Absatzformat_Text).tabStops.add()
with (_TabsZuweisen) {
position = _TabsAllePosition[i];
alignment = _TabsAlleAusrichtung[i];
alignmentCharacter = _TabsAlleZeichenAusrichtung[i];
leader = _TabsAlleFuellzeichen[i];
/*alert(i + " = i" + "\r" +
_TabsAllePosition[i] + " = _TabsAllePosition = " + "\r" +
_MeinDokument.paragraphStyles.itemByName(_Absatzformat_Text).tabStops[i].position + " = position" + "\r" +
_TabsAlleAusrichtung[i] + " = _TabsAlleAusrichtung" + "\r" +
_MeinDokument.paragraphStyles.itemByName(_Absatzformat_Text).tabStops[i].alignment + " = alignment" + "\r" +
_TabsAlleZeichenAusrichtung[i] + " = _TabsAlleZeichenAusrichtung" + "\r" +
_MeinDokument.paragraphStyles.itemByName(_Absatzformat_Text).tabStops[i].alignmentCharacter + " = alignmentCharacter" + "\r" +
_TabsAlleFuellzeichen[i] + " = _TabsAlleFuellzeichen" + "\r" +
_MeinDokument.paragraphStyles.itemByName(_Absatzformat_Text).tabStops[i].leader + " = leader" + "\r"); */
};
};
// ======================================================
// Schleife (ID des Mutter-Absatzformates herausfinden)
for (var _AbsatzformatID = 0; _AbsatzformatID < _MeinDokument.allParagraphStyles.length; _AbsatzformatID++) {
if (_MeinDokument.paragraphStyles.itemByName(_Absatzformat_Text) == _MeinDokument.paragraphStyles[_AbsatzformatID])
{
var _AbsatzformatIDgefunden = _AbsatzformatID
break; }
}
// Absatzformat duplizieren (für TextBalken) und Einstellungen ändern
_AbsatzformatDuplizieren1 = _MeinDokument.paragraphStyles[_AbsatzformatIDgefunden].duplicate();
with (_AbsatzformatDuplizieren1) { name = _Absatzformat_TextBalken;
ruleBelow = true;
basedOn = _MeinDokument.paragraphStyles.itemByName(_Absatzformat_Text);
nextStyle = _MeinDokument.paragraphStyles.itemByName(_Absatzformat_Text);
}
// ======================================================
// Schleife (ID des Mutter-Absatzformates herausfinden)
for (var _AbsatzformatID = 0; _AbsatzformatID < _MeinDokument.allParagraphStyles.length; _AbsatzformatID++) {
if (_MeinDokument.paragraphStyles.itemByName(_Absatzformat_Text) == _MeinDokument.paragraphStyles[_AbsatzformatID])
{
var _AbsatzformatIDgefunden = _AbsatzformatID;
break; }
}
// Absatzformat duplizieren (für Kopfzeile) und Einstellungen ändern
_AbsatzformatDuplizieren2 = _MeinDokument.paragraphStyles[_AbsatzformatIDgefunden].duplicate();
with (_AbsatzformatDuplizieren2) { name = _Absatzformat_Kopf;
pointSize = 7.5;
leading = "2.75 mm";
fillColor = "Black";
tracking = 0;
horizontalScale = 100;
ruleBelow = true;
ruleBelowLineWeight = "0.11 mm";
ruleBelowOffset = "0.50 mm";
ruleBelowColor = "Black";
basedOn = _MeinDokument.paragraphStyles.itemByName(_Absatzformat_Text);
nextStyle = _MeinDokument.paragraphStyles.itemByName(_Absatzformat_Text);
}
// ======================================================
// Absatzformate auf den ausgewählten Text zuweisen
var _AnzahlAbsaetze = _AusgewaehlterText.paragraphs.length;
_AusgewaehlterText.paragraphs[0].appliedParagraphStyle = _Absatzformat_Kopf;
for (var i = 1; i < _AusgewaehlterText.paragraphs.length; i++){
_AusgewaehlterText.paragraphs[i].appliedParagraphStyle = _Absatzformat_Text;
if (i+1 == _AusgewaehlterText.paragraphs.length){
break;
}
i++;
_AusgewaehlterText.paragraphs[i].appliedParagraphStyle = _Absatzformat_TextBalken;
};
// ======================================================
// Absatzformate sortieren: Kopf vor Text
var _AbsatzformatVerschieben = _MeinDokument.paragraphStyles.itemByName(_Absatzformat_Kopf).move(LocationOptions.BEFORE, _MeinDokument.paragraphStyles.itemByName(_Absatzformat_Text));
_AbsatzformatVerschieben;
Soul71 / Matthias