[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt IndexFromCharStyle anpassen

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

IndexFromCharStyle anpassen

uswd
Beiträge gesamt: 317

18. Mai 2011, 10:46
Beitrag # 1 von 12
Bewertung:
(2928 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin ;-)

ich benutze Dein Skript ausgiebig (mit Anpassung für Nummerierung, siehe unten). Für einen weiteren Index müsste ich es jedoch so anpassen, dass keine Umsortierung stattfindet, sondern der String einfach so wie er gefunden wird rausgeschrieben wird.

Mein Skriptverständnis wächst zwar, aber ich weiß nicht, wo ich hier ansetzen soll. Könntest Du mir helfen?

Hier das Skript:
Code
//Eröffnungs_Index_Partienummern.jsx  
// v.2

var d = app.documents.firstItem();
var st = check_style('Index Eröffnung');
app.findTextPreferences = null;
app.findTextPreferences.appliedCharacterStyle = st;
//app.findTextPreferences.appliedParagraphStyle = 'Bibliographie-Nummerierungs-AF';

var r = d.findText();
var l = get_list(r);
write_txt(l.sort().join('\r'), '~/Desktop/Eröffnungsliste.txt');


function write_txt ( myData, f_path )
{
var f = new File( f_path );
f.open( 'w' );
f.encoding = 'UTF-8';
f.writeln ( myData );
f.close();
}

function trim_string(s)
{
var nstr = s.replace(/^\s+/,'').replace(/\s+$/,'');
return nstr
}

function form_topic( aString, aDiv, aSep ) {
aString = trim_string(aString);
if (aString.indexOf(aSep) != -1 )
return aString;
else
{
var tempArray = aString.split( aDiv );
if ( tempArray.length > 1 ) {
var myName = tempArray.pop( );
var newString = myName + aSep + tempArray.join( aDiv ) + aDiv.replace( /\w+/g, '' );
}
else {
var newString = aString;
}
newString = trim_string(newString);
return newString;
}
}

function get_list(r)
{
var aList = new Array;
for (var i = 0; i < r.length; i++)
{
var n = r[i].paragraphs.firstItem().bulletsAndNumberingResultText;
if (n != '')
{
var topic = form_topic(r[i].contents, ' ', ', ');
if (topic != '')
{
if (aList[topic] == undefined)
aList[topic] = new Array;
aList[topic].push(n.match(/\d+/)[0]);
}
}
}
var bList = new Array;
for (var n in aList)
{
aList[n].sort(num_sort);
bList.push( n + '\t' + aList[n].join(', ') );
}
return bList;
}

function num_sort (a, b) {
return a - b;
}

function check_style( aString )
{
var cs = null;
cs = d.characterStyles.itemByName( aString );
if (cs == null)
{
alert ('Zeichenformat "' + aString + '" nicht gefunden.');
exit();
}
else
return cs;
}


Vielen Dank im Voraus
Ciao
Uli
X

IndexFromCharStyle anpassen

Martin Fischer
  
Beiträge gesamt: 12783

18. Mai 2011, 11:09
Beitrag # 2 von 12
Beitrag ID: #471769
Bewertung:
(2918 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uli,

ersetze dazu die Zeile var topic = form_topic(r[i].contents, ' ', ', '); durch
Code
var topic = r[i].contents; 



als Antwort auf: [#471767]
(Dieser Beitrag wurde von Martin Fischer am 18. Mai 2011, 11:09 geändert)

IndexFromCharStyle anpassen

uswd
Beiträge gesamt: 317

18. Mai 2011, 11:35
Beitrag # 3 von 12
Beitrag ID: #471772
Bewertung:
(2909 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

cool, dass es so einfach geht!
D. h. ich kann eigentlich die Funktionen form_topic und trim_strings(s) rausnehmen, oder?

Eine Kleinigkeit noch. Die Einträge und die Zahlen sind nun mit einem Carriage Return getrennt, woher kommt das, es sollte doch ein Tabulatorzeichen dort hin? ((ist aber nicht so wichtig, das lässt sich ja in einem zweiten Schritt bereinigen))

Ciao
Uli


als Antwort auf: [#471769]

IndexFromCharStyle anpassen

Martin Fischer
  
Beiträge gesamt: 12783

18. Mai 2011, 11:45
Beitrag # 4 von 12
Beitrag ID: #471773
Bewertung:
(2903 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ uswd ] Die Einträge und die Zahlen sind nun mit einem Carriage Return getrennt, woher kommt das, es sollte doch ein Tabulatorzeichen dort hin?


Welche Einträge meinst Du?
Im Index selbst?
Wo brauchst Du da ein Tabulatorzeichen?

Vielleicht hilft schon
Code
var topic = trim_string( r[i].contents ); 



als Antwort auf: [#471772]

IndexFromCharStyle anpassen

uswd
Beiträge gesamt: 317

18. Mai 2011, 12:21
Beitrag # 5 von 12
Beitrag ID: #471777
Bewertung:
(2889 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

das Ergebnis sieht so aus:
Code
Caro-Kann 
1, 5
Damengambit
3, 7
Französische Partie
9
Italienische Partie
2
Schottisch
8
Unregelmäßig
6
Wiener Partie
12
Zukertorts Eröffnung
4

Die Indexeinträge sollten mit einem Tabulator von den Absatznummern getrennt sein und nicht mit einem Carriage Return+Tab. Also z. B. Damengambit<tab>3, 7<CR> etc.pp.

Ciao
Uli


als Antwort auf: [#471773]

IndexFromCharStyle anpassen

Martin Fischer
  
Beiträge gesamt: 12783

18. Mai 2011, 12:38
Beitrag # 6 von 12
Beitrag ID: #471782
Bewertung:
(2884 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uli,

jetzt stehe ich auf dem Schlauch und verstehe nicht richtig.

Du sprichst von Absatznummern.
Handelt es sich nicht vielmehr um Seitenzahlen?

Und das Carriage Return, steht das tatsächlich in den Indexeinträgen oder ist das bei Dir nicht vielmehr bei den Indexoptionen als Eintragszeichen nach dem Thema eingestellt?


als Antwort auf: [#471777]

IndexFromCharStyle anpassen

Martin Fischer
  
Beiträge gesamt: 12783

18. Mai 2011, 12:47
Beitrag # 7 von 12
Beitrag ID: #471786
Bewertung:
(2875 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ah, jetzt verstehe ich.

Du hast da einiges aufgebohrt im Skript, um an die Absatznummern zu kommen.

Nun, hast Du das mit dem trim_string() mal ausprobiert?
Das könnte das überflüssige Carriage Return tatsächlich löschen.


als Antwort auf: [#471782]

IndexFromCharStyle anpassen

uswd
Beiträge gesamt: 317

18. Mai 2011, 12:49
Beitrag # 8 von 12
Beitrag ID: #471787
Bewertung:
(2874 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

wie im ursprünglichen Posting zitiert, ist es das angepasste Skript, welches Absatznummern statt Seitenzahlen auswertet und diese in eine Datei schreibt. Das von Dir umgearbeitete Skript hieß glaube ich "AutorenIndex_Absatznummern.jsx"

Ciao
Uli


als Antwort auf: [#471782]

IndexFromCharStyle anpassen

Martin Fischer
  
Beiträge gesamt: 12783

18. Mai 2011, 12:52
Beitrag # 9 von 12
Beitrag ID: #471788
Bewertung:
(2872 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf: wie im ursprünglichen Posting zitiert, ist es das angepasste Skript, welches Absatznummern statt Seitenzahlen auswertet und diese in eine Datei schreibt


Das mit der Nummerierung habe ich nicht richtig auf die Absatznummerierung bezogen und deswegen falsch verstanden.


Bei mir ist das Ergebnis ohne das störende Carriage Return.

Kannst Du mir ein Schnippsel an meine email-Adresse schicken, damit ich den Kontext genauer erfassen kann?


als Antwort auf: [#471787]
(Dieser Beitrag wurde von Martin Fischer am 18. Mai 2011, 12:57 geändert)

IndexFromCharStyle anpassen

Martin Fischer
  
Beiträge gesamt: 12783

18. Mai 2011, 14:11
Beitrag # 10 von 12
Beitrag ID: #471799
Bewertung:
(2841 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uli,

hab Dank für Dein Schnippsel.

Das störende Carriage-Return ist Teil des gefundenen Strings.

Du könntest nun allen CRs, die mit dem Zeichenformat ausgezeichnet sind, das ZF '[Ohne]' zuweisen (also löschen) oder wie oben mehrfach vorgeschlagen die trim_string()-Funktion einsetzen:

Code
var topic = trim_string( r[i].contents ); 


Diese löscht nicht nur Leerzeichen am Anfang und am Ende eines gefundenen Strings, sondern auch CRs.

Damit kommt bei mir die Liste wie gewünscht ohne CRs zustande.


als Antwort auf: [#471787]
(Dieser Beitrag wurde von Martin Fischer am 18. Mai 2011, 14:12 geändert)

IndexFromCharStyle anpassen

uswd
Beiträge gesamt: 317

18. Mai 2011, 15:35
Beitrag # 11 von 12
Beitrag ID: #471808
Bewertung:
(2815 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin,

wie immer vielen Dank für Deine kompentente und schnelle Hilfe!
Es war mir nicht klar, wie man die trim_string Funktion einbinden kann -- dass es sooo einfach ist ...

Ciao
Uli


als Antwort auf: [#471799]

IndexFromCharStyle anpassen

Martin Fischer
  
Beiträge gesamt: 12783

18. Mai 2011, 15:50
Beitrag # 12 von 12
Beitrag ID: #471811
Bewertung:
(2812 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Uli,

alles paletti.
Gut, dass es am Ende doch noch funktioniert.

Dein Ansatz mit Bezugnahme auf die Absatznummer hat mir gefallen.
Das werde ich mir für den späteren Gebrauch markieren.


als Antwort auf: [#471808]
X