[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Absätze manuell nummerieren (CS6, WIN)

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

Absätze manuell nummerieren (CS6, WIN)

cwenet
Beiträge gesamt: 1139

22. Nov 2014, 16:13
Beitrag # 1 von 6
Bewertung:
(2856 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Guten Tag,

ich möchte bei jedem ausgewählten Absatz eine fortlaufende manuelle Ziffer voranstellen.

Folgendes Script nummeriert aber nur den ersten Absatz.

Code
var mySel = app.selection[0]; 

app.findTextPreferences = app.changeTextPreferences = null;
app.findTextPreferences.appliedParagraphStyle = "Nummer";
var myResult = mySel.findText();

for (var oneResult=myResult.length-1; oneResult >= 0; oneResult--) {
myResult[oneResult].insertionPoints[0].contents = String(oneResult+1)+'\t';
}



myResult.length zeigt mir hier auch nur den Wert 1.

Kleines Testdokument anbei (oberer Textrahmen = vorher, unterer Textrahmen = so soll es aussehen)

Bitte um Hilfe

Christoph

Anhang:
nummer.idml (28.2 KB)
X

Absätze manuell nummerieren (CS6, WIN)

Martin Fischer
  
Beiträge gesamt: 12783

23. Nov 2014, 09:38
Beitrag # 2 von 6
Beitrag ID: #534298
Bewertung:
(2783 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Christoph,

wenn Du nach einem Absatzformat suchst, dann erstreckt sich ein Treffer unter Umständen über mehrere aufeinanderfolgende Absätze mit demselben Format.

Spontan sehe ich drei Lösungsmöglichkeiten:
1. Du baust eine zweite Schleife durch die Absätze der gefundenen "Bereiche" ein und sprichst darin die einzelnen Absätze an.
2. Du ersetzt Deine TEXT-Suche durch eine GREP-Suche und ergänzt die Suche nach '[^\r]+'.
3. Du verzichtest auf die Suche und prüfst statt dessen in einer Schleife die Absatzformate aller Absätze im ausgewählten Bereich und reagierst dann mit der Zuweisung der Nummer, wenn das Absatzformat dem von Dir gewünschten entspricht.


als Antwort auf: [#534291]

Absätze manuell nummerieren (CS6, WIN)

Dirk Becker
Beiträge gesamt: 193

23. Nov 2014, 19:01
Beitrag # 3 von 6
Beitrag ID: #534302
Bewertung:
(2610 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Das geht auch ganz ohne Scripting:

Absatzformate können auch selber nummerieren. Das ist ein ziemlich mächtiges Feature, im Format-Editor konfigurierbar in der Seite "Aufzählungszeichen und Nummerierung".
Die Nummern kann man später statisch in den Text schreiben lassen, etwa durch eine Menüaktion am Absatzformat-Panel "Nummerierung in Text konvertieren".


als Antwort auf: [#534298]

Absätze manuell nummerieren (CS6, WIN)

cwenet
Beiträge gesamt: 1139

24. Nov 2014, 06:55
Beitrag # 4 von 6
Beitrag ID: #534304
Bewertung:
(2534 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Vielen Dank an Martin und Dirk,

da ich nur ausgewählte Absätze behandeln möchte, würde mir eine Scriptlösung besser gefallen:

Code
var doc = app.activeDocument; 

var mySel = doc.selection[0];


// Alle Absätze in aktueller Auswahl
var paras = mySel.paragraphs.everyItem().getElements();


for (var j=0,l=paras.length; j<l; j++) {
var para = paras[j];
if (para.appliedParagraphStyle.name == 'Nummer') {
para.insertionPoints[0].contents = String(j+1)+'\t'
}
}


Ich benötige leider nochmals Hilfe.
Das obige Script platziert die Nummern irgendwie willkürlich in die Absätze. Lediglich der erste wird richtig gemacht.

Gruß
Christoph


als Antwort auf: [#534302]

Absätze manuell nummerieren (CS6, WIN)

Dirk Becker
Beiträge gesamt: 193

24. Nov 2014, 08:53
Beitrag # 5 von 6
Beitrag ID: #534306
Bewertung:
(2510 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Jede Art von Text, also auch die Objekte im "paras" Array, merkt sich seine Position als Offset. Wenn man Inhalt einfügt, verschiebt sich der Text unter dem Offset. Daher sollte man bei Änderungen von hinten arbeiten - den Schleifenzähler umdrehen.

Für die find…() Funktionen gibt es sogar ein Argument, das die Reihenfolge umdreht.


als Antwort auf: [#534304]

Absätze manuell nummerieren (CS6, WIN)

cwenet
Beiträge gesamt: 1139

24. Nov 2014, 12:16
Beitrag # 6 von 6
Beitrag ID: #534312
Bewertung:
(2308 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Merci viel mal,

da falle ich jedesmal darauf rein.

So tut es:

Code
var doc = app.activeDocument;  

var mySel = doc.selection[0];

// Alle Absätze in aktueller Auswahl
var paras = mySel.paragraphs.everyItem().getElements();

for ( j = paras.length-1; j>= 0; j-- ) {

var para = paras[j];
if (para.appliedParagraphStyle.name == 'Nummer') {
para.insertionPoints[0].contents = String(j+1)+'\t'
}
}


Schönen Tag
Christoph


als Antwort auf: [#534306]
X