[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Bibelstellen mit IndexFromList_withSubtopics.jsx

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

Bibelstellen mit IndexFromList_withSubtopics.jsx

JoPie
Beiträge gesamt: 75

3. Dez 2015, 15:52
Beitrag # 1 von 6
Bewertung:
(2587 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Kollegen,

ich muss ein Bibelstellenregister erstellen.
Das sieht wie folgt aus:

Genesis 1
Genesis 1,1

Nun findet das Script natürlich bei Genesis 1,1 auch Genesis 1 und setzt die entsprechende Indemarke.
Siehe Beispiel
--------------------
Es ist so, als wenn du mit einem unsinnigen Menschen reden und ihm beweisen wolltest, dass Gott Himmel und Erde geschaffen hat ({xe "Genesis 1,1"}{xe "Genesis 1"}Genesis 1,1), und du ihm mit Fingern Himmel und Erde zeigst, er aber dennoch plaudert, dass dies nicht der Himmel noch die Erde sei, von denen {xe "Genesis 1"}Genesis 1 redet
-------------------

Gibt es eine Möglichkeit dass das Script nur 1,1 findet und nicht auch noch 1?

Gruß
JoPie


ID SC6 unter WIN 8.1
X

Bibelstellen mit IndexFromList_withSubtopics.jsx

Quarz
Beiträge gesamt: 3508

3. Dez 2015, 17:51
Beitrag # 2 von 6
Beitrag ID: #545127
Bewertung:
(2553 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo JoPie,

ich würde die Anführungszeichen
mitberücksichtigen.

(?<=»)Genesis 1(?=«)
(?<=»)Genesis 1,1(?=«)


Gruß
Quarz
---------------------------
Win7 | InDesign CS6 ver 8.1



als Antwort auf: [#545119]

Bibelstellen mit IndexFromList_withSubtopics.jsx

JoPie
Beiträge gesamt: 75

4. Dez 2015, 08:30
Beitrag # 3 von 6
Beitrag ID: #545131
Bewertung:
(2465 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ich glaube, ich muss meine Frage doch besser erläutern.

In ID lese ich einen Wordtext ohne Indexeinträge ein.

Mustertext:
"Es ist so, als wenn du mit einem unsinnigen Menschen reden und ihm beweisen wolltest, dass Gott Himmel und Erde geschaffen hat (Genesis 1,1), und du ihm mit Fingern Himmel und Erde zeigst, er aber dennoch plaudert, dass dies nicht der Himmel noch die Erde sei, von denen Genesis 1 redet"

Anschließend lasse ich das Script "IndexFromList_withSubtopics.jsx" laufen und lese eine ensprechend Konkordanztabelle ein.

Muster Konkordanztabelle:
Genesis 1
Genesis 1,1

Das Ergbnis nach Scriptlauf sieht als exportierte RTF-Datei wie folgt aus:
"Es ist so, als wenn du mit einem unsinnigen Menschen reden und ihm beweisen wolltest, dass Gott Himmel und Erde geschaffen hat ({xe "Genesis 1,1"}{xe "Genesis 1"}Genesis 1,1), und du ihm mit Fingern Himmel und Erde zeigst, er aber dennoch plaudert, dass dies nicht der Himmel noch die Erde sei, von denen {xe "Genesis 1"}Genesis 1 redet"

Hier kann man sehen, das bei "Genesis 1,1" auch "Genesis 1" indexiert wurde.
Um das zu vermeiden, suche ich eine Lösung.

PS: Die RTF-Datei habe ich nur erstellt um das Problem darstellen zu können. Die benötige ich natürlich nicht.
Das Problem müsste schon in ID gelöst werden.

Gruß JoPie


als Antwort auf: [#545127]

Bibelstellen mit IndexFromList_withSubtopics.jsx

Martin Fischer
  
Beiträge gesamt: 12691

4. Dez 2015, 09:32
Beitrag # 4 von 6
Beitrag ID: #545133
Bewertung:
(2446 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo JoPie,

zum Ersten müsste man im Skript die Suche nach den Ausdrücken auf GREP- statt TEXT-Suche umbauen.

Dann könnte man bei den Sucheinträgen GREP-Code integrieren.

In Deinem Fall etwa
Code
Genesis\s\d+(,\d+)? 


Damit könntest Du Dir die Wiederholung
Zitat Genesis 1
Genesis 1,1

sparen.


Möchtest Du mal versuchen, das Skript entsprechend umzubauen?


als Antwort auf: [#545131]
(Dieser Beitrag wurde von Martin Fischer am 4. Dez 2015, 09:33 geändert)

Bibelstellen mit IndexFromList_withSubtopics.jsx

Martin Fischer
  
Beiträge gesamt: 12691

4. Dez 2015, 11:52
Beitrag # 5 von 6
Beitrag ID: #545150
Bewertung:
(2409 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo JoPie,

alternativ könnte ich Dir ein Skript anbieten, das Indexeinträge auf der Basis von bedingtem Text erstellt.

1. Erstelle eine (oder mehrere) Bedingung(en) mit dem Begriff "Register" im Namen;
2. weise den zu indizierenden Begriffen die entsprechende Bedingung zu (z.B. per GREP-Suche);
3. führe das folgende Skript aus.

Code
/* 
conditions2index.jsx

//DESCRIPTION:Indexeinträge aus bedingtem Text mit 'register' im Namen.
VERSION: 0.3
AUTHOR: Martin Fischer
EMAIL: InDesign@MartinFischer.de
DATE: 30.10.2014
© Martin Fischer 2014
*/

main();

function main()
{
var myErr = mySucc = 0,
i = 0, myList = "", ct = new Array,
pb_max = pb_width = 400,
myMax = 0,
doc = app.activeDocument,
_index = ( doc.indexes.length == 0 )
? doc.indexes.add()
: doc.indexes.firstItem();

app.findTextPreferences = NothingEnum.nothing;

for (i = 0; i < doc.conditions.length; i++)
{
if (doc.conditions[i].name.match(/register/gi) != null)
ct.push(doc.conditions[i]);
}

for (i = 0; i < ct.length; i++)
cond2index(ct[i]);

app.findTextPreferences = NothingEnum.nothing;

if (myErr.length > 0)
alert('Achtung!\n' + myErr.join('\n'));
else
alert('Fertig!');

function cond2index(cond)
{
var f = null, oneEntry = 0, _topic = null, _topic_base = null, entry_arr = new Array, str = '', sur_name = '';
if (cond.name == "Register")
_topic_base = _index;
else
_topic_base = (_index.topics.itemByName( cond.name ).isValid) ? _index.topics.itemByName( cond.name ) : _index.topics.add( {name: cond.name});

app.findTextPreferences.appliedConditions = [cond];
f = doc.findText();
if (f.length > 0)
{
create_progresspanel(pb_max,pb_width, cond.name);
progress_panel.show();

myMax = f.length;
var pb_increment = pb_width/(myMax+1);

for( oneEntry = f.length-1; oneEntry > -1; oneEntry-- )
{
progress_panel.progress_bar.value += pb_increment;
progress_panel.counter_text.text= (myMax - oneEntry) + '/' + myMax;
str = f[oneEntry].contents.replace(/\s+/g,' ').replace(/\s+$/g,'');
if (cond.name.match(/autor|name/gi) != null)
{
entry_arr = str.split(' ');
if (entry_arr.length > 1)
{
sur_name = entry_arr.pop();
if (sur_name.match(/^[IVXLCDM]+\.$/) == null)
str = sur_name + ', ' + entry_arr.join(' ');
}
}


_topic = (_topic_base.topics.itemByName( str ).isValid) ? _topic_base.topics.itemByName( str ) : _topic_base.topics.add( {name: str });

try
{
_topic.pageReferences.add( f[oneEntry], PageReferenceType.currentPage ) ;
mySucc++;
}
catch(e) {
myList += f[oneEntry].contents + "\r" ;
myErr++;
}
}
progress_panel.close();
}
}

function create_progresspanel(pb_max, pb_width, title)
{
progress_panel = new Window('window', title);
progress_panel.progress_bar = progress_panel.add('progressbar', [12, 12, pb_width, 24], 0, pb_max);
progress_panel.counter_text = progress_panel.add('statictext', [12, 0, pb_width, 24], '');
return progress_panel;
}
}


Besonderheit:
Steckt im Namen der Bedingung der Begriff "Name" oder "Autor", dann versucht das Skript bei Einträgen mit mehreren Worten das letzte Wort nach vorne zu stellen und durch Komma vom Rest zu trennen.
Beispiel: "Gustav Knut" -> "Knut, Gustav".


als Antwort auf: [#545133]

Bibelstellen mit IndexFromList_withSubtopics.jsx

JoPie
Beiträge gesamt: 75

4. Dez 2015, 12:28
Beitrag # 6 von 6
Beitrag ID: #545155
Bewertung:
(2394 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

mit dem neuen Script könnte es funktionieren.
Ich werde es Morgen ausprobieren.

Gruß
JoPie


als Antwort auf: [#545150]
X