[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Inhaltsverzeichnisformat erstellen (CS6, WIN7)

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

Inhaltsverzeichnisformat erstellen (CS6, WIN7)

cwenet
Beiträge gesamt: 1139

7. Mär 2015, 09:33
Beitrag # 1 von 12
Bewertung:
(4295 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

ich versuche gerade ein Inhaltsverzeichnisformat via Script zu erstellen:

Code
var myDocument = app.activeDocument;  

try{
myTocStyle = myDocument.tocStyles.item("myToc");
myTocStyle.name;
}
catch (myError){
myTocStyle = myDocument.tocStyles.add();
myTocStyle.name = "myToc";
}
with(myTocStyle){
createBookmarks = true;
includeBookDocuments = true;
title = "Inhaltsverzeichnis";
//titleStyle = "Inhaltsverzeichnis_Format";

}


myTocStyle.tocStyleEntries.add({formatStyle:"IVZ1", level:1, separator:"^t", pageNumberStyle:"ziffer", separatorStyle:"punkte", PageNumberPosition.AFTER_ENTRY});

myTocStyle.tocStyleEntries.add({formatStyle:"IVZ2", level:2, separator:"^t", pageNumberStyle:"ziffer", separatorStyle:"punkte", PageNumberPosition.AFTER_ENTRY});

myTocStyle.tocStyleEntries.add({formatStyle:"IVZ3", level:3, separator:"^t", pageNumberStyle:"ziffer", separatorStyle:"punkte", PageNumberPosition.AFTER_ENTRY});



Leider wirft Indesign einen Fehler aus: Ungültige Parameter.

Und:
Wo kann ich "Absatzformate einschließen ..." definieren? Als das jeweilge Pendant zu IVZ1, IVZ2, ...


Dateien zum ausprobieren:
https://www.dropbox.com/s/t7uoap2v5tqicvh/toc_vorher.idml?dl=0
https://www.dropbox.com/s/v5hxb71vlhif7wm/toc_nacher.idml?dl=0


Bitte um Hilfe

Gruss
Christoph
X

Inhaltsverzeichnisformat erstellen (CS6, WIN7)

Kai Rübsamen
Beiträge gesamt: 4684

7. Mär 2015, 15:19
Beitrag # 2 von 12
Beitrag ID: #537769
Bewertung:
(4236 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

wo hier die Fehler liegen, hättest du eigentlich leicht selber herausfinden können, wenn du mal nach den erforderlichen properties im OMV nachgesehen hättest, bzw. etwas mehr Zeit investiert hättest!

Ich hab jedenfalls heute mein erstes IHV erstellt und bei mir funktioniert folgendes:

Code
var curDoc = app.documents[0]; 
var cStyles = curDoc.characterStyles;
var sepStyle = cStyles.itemByName("punkte");
var pNumbStyle = cStyles.itemByName("ziffer");

var toc = curDoc.tocStyles.itemByName( "myToc" );
if ( !curDoc.tocStyles.itemByName.isValid ) {
curDoc.tocStyles.add({ name: "myToc" });
}

var tocProps = { title: "Inhaltsverzeichnis", titleStyle: "Inhaltsverzeichnis_Format" , createBookdmarks: true, includeBookDocuments: true };
toc.properties = tocProps;

toc.tocStyleEntries.add("U1", { formatStyle: "IVZ1", level: 1, separator: "\t", separatorStyle: sepStyle, pageNumberStyle: pNumbStyle, PageNumberPosition: PageNumberPosition.AFTER_ENTRY });
toc.tocStyleEntries.add("U2", { formatStyle: "IVZ2", level: 2, separator: "\t", separatorStyle: sepStyle, pageNumberStyle: pNumbStyle, PageNumberPosition: PageNumberPosition.AFTER_ENTRY });
toc.tocStyleEntries.add("U3", { formatStyle: "IVZ3", level: 3, separator: "\t", separatorStyle: sepStyle, pageNumberStyle: pNumbStyle, PageNumberPosition: PageNumberPosition.AFTER_ENTRY });


Lt. OMV sollte eigentlich für das Zeichenformat 'String' oder 'characterStyle' möglich sein. Bei mir hat die reine Übergabe eines Strings den Fehler geworfen. Ansonsten war der Enumerator am Schluss nicht vollständig und das einzuschließende Format gar nicht angegeben.


als Antwort auf: [#537760]

Inhaltsverzeichnisformat erstellen (CS6, WIN7)

Kai Rübsamen
Beiträge gesamt: 4684

7. Mär 2015, 15:50
Beitrag # 3 von 12
Beitrag ID: #537772
Bewertung:
(4222 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Im o.g. Schnipsel ist noch ein Fehler bei der 'is.Valid'-Prüfung. So wie es aussieht, kann man auch die Schreibweise noch etwas verkürzen, wenn sich mehrere Sachen wiederholen:

Code
var curDoc = app.documents[0]; 
var cStyles = curDoc.characterStyles;
var sepStyle = cStyles.itemByName("punkte");
var pNumbStyle = cStyles.itemByName("ziffer");

var toc = curDoc.tocStyles.itemByName("myToc");
if ( !curDoc.tocStyles.itemByName("myToc").isValid ) {
curDoc.tocStyles.add({name: "myToc"});
}

var tocProps = {title: "Inhaltsverzeichnis", titleStyle: "Inhaltsverzeichnis_Format", createBookdmarks: true, includeBookDocuments: true};
toc.properties = tocProps;

toc.tocStyleEntries.add("U1", {formatStyle: "IVZ1", level: 1});
toc.tocStyleEntries.add("U2", {formatStyle: "IVZ2", level: 2});
toc.tocStyleEntries.add("U3", {formatStyle: "IVZ3", level: 3});

var entryProps = {separator: "\t", separatorStyle: sepStyle, pageNumberStyle: pNumbStyle, PageNumberPosition: PageNumberPosition.AFTER_ENTRY};
toc.tocStyleEntries.everyItem().properties = entryProps;



als Antwort auf: [#537769]
(Dieser Beitrag wurde von Kai Rübsamen am 7. Mär 2015, 15:54 geändert)

Inhaltsverzeichnisformat erstellen (CS6, WIN7)

cwenet
Beiträge gesamt: 1139

7. Mär 2015, 18:39
Beitrag # 4 von 12
Beitrag ID: #537778
Bewertung:
(4162 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen lieben Dank, Kai

so klappt es prima.
Ich habe in der Scriptdoku zwar alle Optionen gefunden. Es scheitert dann aber an der Syntax.
Schön wären da entsprechende Beispiele.

Grüße
Christoph


als Antwort auf: [#537772]

Inhaltsverzeichnisformat erstellen (CS6, WIN7)

Kai Rübsamen
Beiträge gesamt: 4684

7. Mär 2015, 19:35
Beitrag # 5 von 12
Beitrag ID: #537783
Bewertung:
(4149 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Entsprechend schlechte Beispiele zu fast allem was machbar ist, findest du auf den Developer-Seiten von Adobe. Allerdings nur bis CS6.

Die Skripte funktionieren meistens, haben aber keinen schönen Code. Die kannst du dann "kaputtspielen". Ansonsten fand ich das Vorgehen anhand des OMV relativ logisch. Hier hättest du gesehen, wo du dein einzuschließendes Format reinsetzen musst.


als Antwort auf: [#537778]

Inhaltsverzeichnisformat erstellen (CS6, WIN7)

cwenet
Beiträge gesamt: 1139

8. Mär 2015, 07:22
Beitrag # 6 von 12
Beitrag ID: #537787
Bewertung:
(4053 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Lieber Kai,

ich konnte in meiner Doku nur dieses hier finden:

Code
TOCStyleEntry add ([styleName: string][, withProperties: Object]) 


Gefunden in idcs6jshtml. (Quelle: jongware)
Ist diese in Ordnung?

Welche Anleitung verwendest du?

Gruss
Christoph


als Antwort auf: [#537783]

Inhaltsverzeichnisformat erstellen (CS6, WIN7)

Kai Rübsamen
Beiträge gesamt: 4684

8. Mär 2015, 11:36
Beitrag # 7 von 12
Beitrag ID: #537791
Bewertung:
(4006 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
z.B. alles Infos von hier: http://www.adobe.com/...getting_started.html

und ich nutze das ESTK und bin wohl einer der wenigen hier, die das richtig toll finden.

Im Screenshot siehst du, dass da offensichtlich etwas in runden Klammern erwartet wird. Die properties – hab ich geraten – gibt man aber sonst in geschweiften Klammern an. Also habe ich einfach ausprobiert und den ersten Eintrag direkt in die runde Klammer und den zweiten getrennt durch Komma dann in geschweifte Klammern gesetzt.

Gleiches gilt für die Prüfung, ob etwas vorhanden ist. Du prüfst immer noch nach der alten Variante. Ich hab dir das schon mehrfach gesagt ;-) D.h. ohne nachzusehen, wusste ich hier automatisch, was ich schreiben muss.

Und die properties: Das war mal ein Tipp von Dirk Becker. Wenn du hier regelmäßig mitlesen würdest, auch wenn du keine konkrete Frage hast, könntest du so den einen oder anderen Tipp zusätzlich abgreifen.

Ansonsten lege ich mir meistens alles in eine function, lasse dann das Skript zeilenweise im ESTK laufen und schaue mir im Datenbrowser an, was wann wo wie ankommt. Also, MIR hilft das.


als Antwort auf: [#537787]
(Dieser Beitrag wurde von Kai Rübsamen am 8. Mär 2015, 11:38 geändert)

Anhang:
Bildschirmfoto 2015-03-08 um 11.33.24.png (146 KB)

Inhaltsverzeichnisformat erstellen (CS6, WIN7)

cwenet
Beiträge gesamt: 1139

8. Mär 2015, 12:17
Beitrag # 8 von 12
Beitrag ID: #537792
Bewertung:
(3978 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
vielen Dank für deine Hinweise und die Quellangaben zu weiteren Informationen.

Grüße und einen schönen Tag
Christoph


als Antwort auf: [#537791]

Inhaltsverzeichnisformat erstellen (CS6, WIN7)

Uwe Laubender
Beiträge gesamt: 5316

8. Mär 2015, 15:19
Beitrag # 9 von 12
Beitrag ID: #537794
Bewertung:
(3916 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Christoph!

Sollten die Absatzformate, deren Namen als erstes Argument der Methode add() von tocStyleEntries benötigt werden, verschachtelt in Absatzformatgruppen sein, gibt's allerdings die Besonderheit den "Pfad" des Namens durch die Absatzgruppen zu verfolgen.

Hier ein Beispiel mit einem Absatzformat, das über zwei Absatzformatgruppen verschachtelt ist. Die Syntax sieht dann so aus:

Code
var myName = "Absatzformatgruppenname:Absatzformatgruppenname:Absatzformatname"; 


Im Unterschied zum UI wo das dann folgendermaßen angezeigt wird:

Code
"Absatzformatname (Absatzformatgruppenname:Absatzformatgruppenname)" 



Du kannst ja mal ein paar Absatzformate verschachtelt in Formatgruppen anlegen, einem bestehenden Inhaltsverzeichnis zuordnen und folgendes Schnipsel im ESTK laufen lassen:

Code
$.writeln(app.documents[0].tocStyles.everyItem().tocStyleEntries.everyItem().name); 



als Antwort auf: [#537792]

Inhaltsverzeichnisformat erstellen (CS6, WIN7)

cwenet
Beiträge gesamt: 1139

8. Mär 2015, 17:02
Beitrag # 10 von 12
Beitrag ID: #537796
Bewertung:
(3880 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,
danke für deinen Hinweis mit der Formatgruppe und für die Zeile mit writln.

Das kann ich ja direkt so verwenden, prima:
Code
toc.tocStyleEntries.add("Formatgruppe 1:U1", {formatStyle: "IVZ1", level: 1}); 



Gruß
Christoph


als Antwort auf: [#537794]

Inhaltsverzeichnisformat erstellen (CS6, WIN7)

Uwe Laubender
Beiträge gesamt: 5316

9. Mär 2015, 08:54
Beitrag # 11 von 12
Beitrag ID: #537802
Bewertung:
(3757 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo, Christoph!

Funktioniert's denn so? Auf Windows?

Ich war mir zunächst ein wenig unsicher, ob die Abtrennung mit dem ":" zwischen Absatzfromatgruppe und Absatznamen nicht doch eine (alte) mac-spezifische Darstellung des Strings ist.


als Antwort auf: [#537796]

Inhaltsverzeichnisformat erstellen (CS6, WIN7)

cwenet
Beiträge gesamt: 1139

9. Mär 2015, 16:32
Beitrag # 12 von 12
Beitrag ID: #537816
Bewertung:
(3687 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uwe,

ja, so funktioniert es auf Windows auch.

Gruß
Christoph


als Antwort auf: [#537802]
X