Hi Vandy,
It is a xml workflow.
Here is the script.
function caption(){
this.name = "caption";
this.xpath = "//caption";
this.apply = function(caption,){
with(caption){
var mydoc = app.activeDocument;
var pwidth = mydoc.documentPreferences.pageWidth;
var pheight = mydoc.documentPreferences.pageHeight;
var topmargin = app.activeDocument.masterSpreads.item(0).pages.item(0).marginPreferen ces.top;
var bottommargin = app.activeDocument.masterSpreads.item(0).pages.item(0).marginPreferen ces.bottom;
var insidemarginfirstmaserpage = app.activeDocument.masterSpreads.item(0).pages.item(0).marginPreferen ces.left;
var outsidemarginfirstmaserpage = app.activeDocument.masterSpreads.item(0).pages.item(0).marginPreferen ces.right;
var y1 = topmargin;
var x1 = outsidemarginfirstmaserpage;
var y2 = pheight - bottommargin;
var x2 = pwidth- insidemarginfirstmaserpage;
citpage = figCitationPage.name;
textfm = placeIntoFrame(app.activeDocument.pages.item(citpage), [y1, x1, y2, x2]);
textfm.fit(FitOptions.FRAME_TO_CONTENT);
textfm.appliedObjectStyle = mydoc.objectStyles.item("oSlug");
mydoc.xmlImportMaps.add(mydoc.xmlTags.item("caption"), mydoc.paragraphStyles.item("Slug"));
mydoc.mapXMLTagsToStyles();
textfm.textWrapPreferences.textWrapMode = TextWrapModes.BOUNDING_BOX_TEXT_WRAP;
textfm.textFramePreferences.ignoreWrap = true;
var textfmy1 = textfm.geometricBounds[0];
var textfmx1 = textfm.geometricBounds[1];
var textfmy2 = textfm.geometricBounds[2];
var textfmx2 = textfm.geometricBounds[3];
figfmy1 = figfm.geometricBounds[0];
figfmx1 = figfm.geometricBounds[1];
figfmy2 = figfm.geometricBounds[2];
figfmx2 = figfm.geometricBounds[3];
textfm.geometricBounds = [textfmy1,textfmx1,textfmy2,x2];
textfm.move([textfmy1, figfmy2]);
textfm.fit(FitOptions.FRAME_TO_CONTENT);
var myPage = mydoc.pages.everyItem();
var myArray = new Array;
myArray.push(figfm);
myArray.push(textfm);
var t = (textfmy2-textfmy1)
var groupitem = figCitationPage.groups.add(myArray);
var citbaseline = exbm - citpos;
var test = parseInt(citpage)
var citbaseline = exbm - citpos;
var test = parseInt(citpage)
if (citbaseline<groupitem.geometricBounds[2]){
groupitem.move(app.activeDocument.pages[test]);
groupitem.move([x1,y1])
}
else {
var by1 = groupitem.geometricBounds[0];
var by2 = groupitem.geometricBounds[2];
var t = (by2-by1)
groupitem.move([x1, (y2-t)])
}
}
return true;
}
}
function figure(){
this.name = "figure";
this.xpath = "//figure";
this.apply = function(figure,){
with(figure){
var mydoc = app.activeDocument;
var pwidth = mydoc.documentPreferences.pageWidth;
var pheight = mydoc.documentPreferences.pageHeight;
var topmargin = app.activeDocument.masterSpreads.item(0).pages.item(0).marginPreferen ces.top;
var bottommargin = app.activeDocument.masterSpreads.item(0).pages.item(0).marginPreferen ces.bottom;
var insidemarginfirstmaserpage = app.activeDocument.masterSpreads.item(0).pages.item(0).marginPreferen ces.left;
var outsidemarginfirstmaserpage = app.activeDocument.masterSpreads.item(0).pages.item(0).marginPreferen ces.right;
//var insidemarginsecondmaserpage = app.activeDocument.masterSpreads.item(0).pages.item(1).marginPreferen ces.left;
//var outsidemarginsecondmaserpage = app.activeDocument.masterSpreads.item(0).pages.item(1).marginPreferen ces.right;
var y1 = topmargin;
var x1 = outsidemarginfirstmaserpage;
//var x1recto = AMinsidemargin
var y2 = pheight - bottommargin;
var x2 = pwidth- insidemarginfirstmaserpage;
//var x2recto = pwidth- AMoutsidemargin;
citpage = figCitationPage.name;
figfm = placeIntoFrame(app.activeDocument.pages.item(citpage), [y1, x1, y2, x2]);
figfm.fit(FitOptions.FRAME_TO_CONTENT);
figfm.textWrapPreferences.textWrapMode = TextWrapModes.BOUNDING_BOX_TEXT_WRAP;
figfm.textFramePreferences.ignoreWrap = true;
figfm.appliedObjectStyle = mydoc.objectStyles.item("ofigure");
fy1 = figfm.geometricBounds[0];
fx1 = figfm.geometricBounds[1];
fy2 = figfm.geometricBounds[2];
fx2 = figfm.geometricBounds[3];
}
return true;
}
}