[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Problem mit Grep und Nummerierung

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

Problem mit Grep und Nummerierung

r3to
Beiträge gesamt: 2

7. Aug 2011, 19:17
Beitrag # 1 von 5
Bewertung:
(2241 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich habe ein längeres Dokument, welches Endnoten aus Word ganz am Ende des Textes auflistet. Diese möchte ich unter jeden Artikel setzen. Die Endnoten müssen dann natürlich auch von Artikel zu Artikel neu durchnummeriert werden, also jeweils von 1 bis n.

Das Problem, das ich dabei habe ist, dass der Index bei 10 einfach als 0 dargestellt wurde, also einstellig bleibt.

mein Ansatz sieht so aus:
(_myEndnoteReferences ist ein Array mit allen Endnoten-Zahlen aus dem Artikel, _endnoteFrame ist das Text-Frame in welchem alle Endnoten drin stehen.)

Code
var index = 1; 
for (i = 0; i < _myEndnoteReferences.length; i++) {
for (j = 0; j < _endnoteFrame.paragraphs.length; j++) {
zeile = _endnoteFrame.paragraphs.item(j).words[0];
if (zeile !== null) {
if (zeile.contents.startsWith(_myEndnoteReferences[i].contents)) {
verschieben = zeile.parent.paragraphs.item(j);

app.findChangeTextOptions.includeLockedLayersForFind = false;
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeMasterPages = false;
app.findChangeGrepOptions.includeFootnotes = false;

app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = "\\d+\\x{2A}"; // beliebige zahl und *
app.changeGrepPreferences.changeTo = index + "*\u2002"; // neue Zahl und * -> aus 10 wurde 0
verschieben.changeGrep();
index += 1;
}
}
}


Hat jemand eine Ahnung was ich da falsch mache?
Gebe ich "index" an die Konsole aus werden zweistellige Zahlen korrekt dargestellt.
X

Problem mit Grep und Nummerierung

Peter Kahrel
Beiträge gesamt: 182

10. Aug 2011, 15:32
Beitrag # 2 von 5
Beitrag ID: #477851
Bewertung:
(2149 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
r3to,

(Pardon my English) The problem is that when you replace 9 with 10 (and 99 with 100), the collection you found earlier changes entirely. You should therefore work from the last paragraph up to the first. In other words, not

for (i = 0; i < myCollection.length; i++)

but, rather, this:

for (i = myCollection.length-1; i >= 0; i--)

Apart from this, your code is inefficient in that in each iteration all options are set. This is necessery just once, so you can move all that code to the beginning of the sacript, before the loops. As follows (I haven't tried this code):


Code
app.findChangeTextOptions.includeLockedLayersForFind = false;  
app.findChangeGrepOptions.includeLockedStoriesForFind = false;
app.findChangeGrepOptions.includeHiddenLayers = false;
app.findChangeGrepOptions.includeMasterPages = false;
app.findChangeGrepOptions.includeFootnotes = false;

app.findGrepPreferences = app.changeGrepPreferences = null;
app.findGrepPreferences.findWhat = "\\d+\\x{2A}";; // beliebige zahl und *

var index = 1;
for (i = _myEndnoteReferences.length-1; i >= 0; i--) {
for (j = _endnoteFrame.paragraphs.length-1; j >= 0; j--) {
zeile = _endnoteFrame.paragraphs.item(j).words[0];
if (zeile !== null) {
if (zeile.contents.startsWith(_myEndnoteReferences[i].contents)) {
verschieben = zeile.parent.paragraphs.item(j);
app.changeGrepPreferences.changeTo = index + "*\u2002"; // neue Zahl und * -> aus 10 wurde 0
verschieben.changeGrep();
index += 1;
}
}
}


Peter


als Antwort auf: [#477625]

Problem mit Grep und Nummerierung

r3to
Beiträge gesamt: 2

13. Aug 2011, 17:47
Beitrag # 3 von 5
Beitrag ID: #478144
Bewertung:
(2095 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi Peter

Thank you for the answer! This is the first script I'm writing after learning the basics on how to script InDesign with your brilliant Short Cuts-Ebook.

I've tried your advice but it turned out to be another problem:
I have a variable which i use to reference a single Endnote
Zitat verschieben = zeile.parent.paragraphs.item(j);

i perform the change Grep on this variable and which I move to the end of the paragraph to which it will be appended (I've just seen, that I didn't copy-paste the whole part of the for-loop...) so there will be something like that:
Code
newLoc = verschieben.move(LocationOptions.AT_BEGINNING, _insertHere); 

It turns out that at this point, "verschieben" doesn't point to the whole paragraph, but just to the last number and the rest of the string, so it cut away the 1 when the when the Number was a 10 or 11.

So the workaround was to reassign the paragraph to the variable
Code
verschieben = verschieben.parent.paragraphs.item(j); 


Do you have any idea, why move() behaves like that?

cheers
Reto


als Antwort auf: [#477851]

Problem mit Grep und Nummerierung

WernerPerplies
Beiträge gesamt: 2693

13. Aug 2011, 18:07
Beitrag # 4 von 5
Beitrag ID: #478146
Bewertung:
(2087 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo reto,

ich denke es ist ein Bug, ich hatte einen ähnlichen Effekt:
http://www.hilfdirselbst.ch/...;;page=unread#unread
der sich auf die gleiche Weise beheben lässt.


als Antwort auf: [#478144]

Problem mit Grep und Nummerierung

Peter Kahrel
Beiträge gesamt: 182

14. Aug 2011, 11:42
Beitrag # 5 von 5
Beitrag ID: #478153
Bewertung:
(2038 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Werner is right, it looks like a bug. I've played around with this a while and see the same effects.

Peter


als Antwort auf: [#478146]
X

Aktuell

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
02.02.2023

Prozesse optimieren und effizient gestalten

Zürich
Donnerstag, 02. Feb. 2023, 08.00 - 10.00 Uhr

Digitalisierung, Webauftritt

Digitalisierung mitgestalten - Worauf kommt es an? Wie wichtig ist die Webseite? Webseite mit Word Press? Interne Prozesse optimieren

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: Birol Isik, E-Mailinfo AT bkcc DOT ch

https://digitalisierung-heute.ch/digitalisierung-informationstag-schweiz/

Veranstaltungen
01.03.2023 - 09.03.2023

Online
Mittwoch, 01. März 2023, 00.00 Uhr - Donnerstag, 09. März 2023, 00.00 Uhr

Online Webinar

Wie gehen wir mit diesen Veränderungen um? Was ist notwendig, damit wir die Digitalisierung im Unternehmen klappt? Veränderungsprozesse verstehen und entsprechend handeln Mitarbeiter als Botschafter Webseite mit WordPress erstellen SEA /SEO (Ads aufschalten)

Ja

Organisator: B. Isik - SNF Academy

Kontaktinformation: B. Isik, E-Mailinfo AT snfa DOT ch

https://www.fernstudiumfitness.ch/digitalisierung-schweiz/