[GastForen Programme Print/Bildbearbeitung Adobe InDesign

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

Marginalien via Tags automatisch in Textrahmen verschieben

madram
Beiträge gesamt: 3

8. Jan 2008, 09:51
Bewertung:

gelesen: 5357

Beitrag als Lesezeichen
Besten Dank erstmal für den Hinweis. Habs versucht, aber das ganze Element konnte ich nicht verschieben. Entweder kam es zum Absturz oder ID hat sich geweigert; weiß nicht mehr genau.

Folgendes Script geht jetzt durch sämtliche Tags, erzeugt Textrahmen, kopiert die Inhalte und weist den neuen Rahmen das existierende Tag zu.

Bleiben noch zwei offene Fragen:
Code
  * Der Cursor bleibt immer an der Stelle, wo ich 
ihn hingesetzt habe. Wie kann ich den so
manipulieren, dass er immer vor das ehemalige
XML-Element im alten Textrahmen zeigt?
* Wenn ich versuche, dem neuen Textrahmen einen
Objektstil zuzuweisen, schmiert ID ohne jegliche
Fehlermeldung einfach ab. Es scheint auch genau
bei diesem Befehl zu passieren, nicht irgendwann
später.


Antwort auf: Hier gibt es wahrscheinlich eine Kollision mit der foreneigenen Formatierung.
[i] Sample Text ergibt zum Beispiel Kursiven Text = Sample Text

Das ist ja lustig. Hab's umbenannt.

Danke nochmal für die Antworten.
Richard

Code
/** 
* This script walks through all XML-tags and moves
* all texts associated with "Marginalia" to
* anchored text frames
*/

var wantedTag = "Footnote";
var marginaliaStyle = "Marginalia";
var actDoc = app.activeDocument; // just lazyness

// start script
deepSearch(actDoc, wantedTag);


/**
* traverse XML-Tree and look for element
*/
function deepSearch(element, tag){
var crnt, x;
for (x = 0; x < element.xmlElements.length; x++){
crnt = element.xmlElements[x];
if (crnt.markupTag.name == tag){
convertToMarginalia(crnt);
}
deepSearch(crnt, tag);
}
}


/**
* create text frame, and copy content into
*/
function convertToMarginalia(element) {
var margStyle, elemPrntFrame;

elemPrntFrame = element.texts[0].parentTextFrames[0];

// perform only, when textframe is not tagged as marginalia
if(elemPrntFrame.appliedObjectStyle.name != marginaliaStyle) {
$.writeln("Found marginalia, move it to anchored text frame...");
// create frame at actual cursor position
var newFrame = actDoc.selection[0].insertionPoints[0].textFrames.add();
// move Text into Frame
element.texts[0].move(LocationOptions.atBeginning, newFrame.texts[0]);
newFrame.markup(element);

// get marginalia style
var margStyle = actDoc.objectStyles.item(marginaliaStyle);
// aply this style -> ID will crash here...
//newFrame.applyObjectStyle(margStyle, true);
}
}


(Dieser Beitrag wurde von madram am 8. Jan 2008, 09:58 geändert)
Änderungsverlauf:
Beitrag geändert von madram (Anfänger) am 8. Jan 2008, 09:58