[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt Marginalie nimmt falsche Zeichen

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

Marginalie nimmt falsche Zeichen

Ramius
Beiträge gesamt: 208

18. Nov 2013, 17:01
Beitrag # 1 von 4
Bewertung:
(1127 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Zusammen

Bei folgenden Zeilen sollte die erste Zahl vor dem Schrägstrich in einem verankerten Objekt bewegt werden. Der rote Textbaustein ": SRK #/##" sollte danach verschwinden.

PflegehelferIn SRK, Basismodul: SRK 3/14
PflegehelferIn SRK, Aufbaumodul: SRK 2/14
PflegehelferIn SRK, Basismodul: SRK 3/14

Mein Script erstellt zwar ein korrektes verankertes Objekt, bewegt wird aber nicht ein sondern zwei ganz andere Zeichen.
Code
#target InDesign  
/*Bestimmte Zeichen werden via Grep gesucht und in eine verankerte Textbox mit dem Namen "marginalie" verschoben.
*/
if (app.documents.length > 0 )
{
createInlineText();
}
else
{
alert ("Bitte Dokument öffnen")
}

function createInlineText()
{
var _doc = app.activeDocument;

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;

// Reduzierung der Leerzeichen
app.findGrepPreferences.findWhat = "(?<=: ) +(?=SRK \\d{1,}\\/\\d{1,})";
app.changeGrepPreferences.changeTo = "";
_doc.changeGrep();

// Setzen der Sucheinstellungen
app.findGrepPreferences.findWhat = ": SRK (\\d{1,})\\/\\d{1,}";
app.changeGrepPreferences.changeTo = "$1";

// Suchen und Ergebnisse in Variable speichern
var _result = _doc.changeGrep();

// Den Text in einen neuen Rahmen verschieben
for (var n = _result.length-1; n >= 0; n--)
{
var _a = _result[n].paragraphs[0].insertionPoints[0];
var _newTf = _a.textFrames.add();
var _breite = 10;
var _hoehe = 8;
_newTf.geometricBounds = [0,0,_hoehe,_breite];
_newTf.appliedObjectStyle = _doc.objectStyles.itemByName("marginalie", false);
_result[n].move(LocationOptions.AT_BEGINNING, _newTf.insertionPoints[0]);
_newTf.parentStory.texts.firstItem().appliedParagraphStyle = _newTf.appliedObjectStyle.appliedParagraphStyle;
}
}

Gearbeitet wir in Indesign CS6 auf MacOS 10.8.5

Ich wäre schon froh, wenn irgend ein Javascript-Profi hier ein Lösungsansatz hat.

Schöne Grüsse, Radius
X

Marginalie nimmt falsche Zeichen

WernerPerplies
Beiträge gesamt: 2762

18. Nov 2013, 17:25
Beitrag # 2 von 4
Beitrag ID: #519866
Bewertung:
(1112 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ramius,

ich hätte hier ein (allerdings kostenpflichtiges) Skript, das eventuell Deine Aufgabe erfüllen könnte.

Für Fragen stehe ich gerne zur Verfügung.

WpsCreateAnchoredFrames – Adobe InDesign Skript zur automatischen Erzeugung verankerter Rahmen


als Antwort auf: [#519864]

Marginalie nimmt falsche Zeichen

Martin Fischer
  
Beiträge gesamt: 12783

18. Nov 2013, 18:28
Beitrag # 3 von 4
Beitrag ID: #519869
Bewertung:
(1092 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Ramius,

in Zeile 30 speicherst Du Textobjekte eines Ersetzenvorgangs, der Textmenge verändert (hier reduziert) in eine Variable, die Du anschließend in einer Schleife rückwärts in die Marginalrahmen verschiebst (wodurch die Textmenge in den betroffenen Textabschnitten abermals reduziert wird.


Spontan kann ich zwar die Ursache des dabei entstehenden Fehlers, der falsche Adressierung der zu verschiebenden Textobjekte, nicht erkennen.

Aber ich würde in dieser Situation empfehlen, eins nach dem anderen zu machen:
Erst den Ersetzenvorgang in Zeile 30 durch einen einfachen Suchvorgang ersetzen ( var _result = _doc.findGrep(); ) und die Reduzierung des Textes in den Marginalienrahmen später (nach der Erstellung aller Marginalien) vornehmen.


als Antwort auf: [#519864]
(Dieser Beitrag wurde von Martin Fischer am 18. Nov 2013, 18:41 geändert)

Marginalie nimmt falsche Zeichen

Ramius
Beiträge gesamt: 208

19. Nov 2013, 07:56
Beitrag # 4 von 4
Beitrag ID: #519882
Bewertung:
(1011 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Martin

Der Hinweis war in der Tat die Lösung. Zuerst den Ersetztenvorgang ausgeführt. Dann erst am Ende nochmals den Text bereinigt.
Der Vollständigkeit halber liste ich das Script hier nochmals auf.
Code
#target InDesign  
/*Bestimmte Zeichen werden via Grep gesucht und in eine verankerte Textbox mit dem Namen "marginalie" verschoben.
*/
if (app.documents.length > 0 )
{
createInlineText();
}
else
{
alert ("Bitte Dokument öffnen")
}

function createInlineText()
{
var _doc = app.activeDocument;

// Zurücksetzen der Sucheinstellungen
app.findGrepPreferences = app.changeGrepPreferences = null;

// Setzen der Sucheinstellungen, es wir nach der Zeichenkette, Beispiel ": SRK 1/14" gesucht
app.findGrepPreferences.findWhat = "(?<=: SRK )\\d+(?=\\/\\d+)";
app.changeGrepPreferences.changeTo = "$1";

// Suchen und Ergebnisse in Variable speichern
var _result = _doc.findGrep();

// Den Text in einen neuen Rahmen verschieben
for (var n = _result.length-1; n >= 0; n--)
{
var _a = _result[n].paragraphs[0].insertionPoints[0];
var _newTf = _a.textFrames.add();
var _breite = 10;
var _hoehe = 8;
_newTf.geometricBounds = [0,0,_hoehe,_breite];
_newTf.appliedObjectStyle = _doc.objectStyles.itemByName("marginalie", false);
_result[n].move(LocationOptions.AT_BEGINNING, _newTf.insertionPoints[0]);
_newTf.parentStory.texts.firstItem().appliedParagraphStyle = _newTf.appliedObjectStyle.appliedParagraphStyle;
_result[n].contents = "";
}

//Text wird bereinigt
app.findGrepPreferences.findWhat = ": SRK \\/\\d+";
app.changeGrepPreferences.changeTo = "";
_doc.changeGrep();

}


Vielen herzlichen Dank
Ramius


als Antwort auf: [#519869]
X