Дело касается стихотворных строк. Да, настройки табуляции могут быть разные. При выравнивании строк по центру фрейма (отступ слева), позиция табуляции сохраняется - в результате чего нарушается изначальное позиционирование строк.Поиском-заменой думаю... но все, зависит от настроек табуляции, возможно придется скриптом.
Но зачем? Можете рассказать более подробно, возможно будет более простое/правильно решение Ибо отступы пробелами ИМХО зло.
Да, все верно Михаил (~myLine.characters.firstItem().horizontalOffset~). У Вас это реализовано в скрипте ~Вёрстка стихов~. Не могу сделать цикл добавления пробелов до Х-координаты.Можно сперва запомнить Х-координату начала строки, перед которой знаки табуляции, а потом убрать их и в цикле добавлять пробелы, пока не будет достигуто или перейдено запомненнное значение.
function main(){
if (app.activeDocument.selection.length > 0) {
var sel = app.activeDocument.selection[0];
if (app.activeDocument.selection[0].constructor.name == "TextFrame"){
var Frame = sel;
} else {
if (app.activeDocument.selection[0].constructor.name == "Character"){
var Frame = app.activeDocument.selection[0].textFrames[0];
} else {
var Frame = sel.parentTextFrames[0];
};
};
var tLines = Frame.lines;
app.findGrepPreferences = NothingEnum.NOTHING;
app.changeGrepPreferences = NothingEnum.NOTHING;
app.findGrepPreferences.findWhat = "\t";
app.changeGrepPreferences.changeTo = "";
for (j=0;j<tLines.length;j++){
var xEnd = tLines[j].insertionPoints[-2].horizontalOffset
Frame.lines[j].changeGrep();
Frame.lines[j].paragraphs[0].leftIndent = xEnd - tLines[j].insertionPoints[-2].horizontalOffset
}
} else {
alert ("Нет выделенного текста")
};
}; //main
app.doScript (main, undefined,undefined, UndoModes.ENTIRE_SCRIPT);
Спасибо, хорошее решение. Результат получили - заменой \t на .leftIndent. Вместо отступа слева нужна очередность пробелов.Не особо понимаю в особенностях верстки стихов
А вот так не пойдет?
Обрабатывает весь активный фрейм.Код:function main(){ if (app.activeDocument.selection.length > 0) { var sel = app.activeDocument.selection[0]; if (app.activeDocument.selection[0].constructor.name == "TextFrame"){ var Frame = sel; } else { if (app.activeDocument.selection[0].constructor.name == "Character"){ var Frame = app.activeDocument.selection[0].textFrames[0]; } else { var Frame = sel.parentTextFrames[0]; }; }; var tLines = Frame.lines; app.findGrepPreferences = NothingEnum.NOTHING; app.changeGrepPreferences = NothingEnum.NOTHING; app.findGrepPreferences.findWhat = "\t"; app.changeGrepPreferences.changeTo = ""; for (j=0;j<tLines.length;j++){ var xEnd = tLines[j].insertionPoints[-2].horizontalOffset Frame.lines[j].changeGrep(); Frame.lines[j].paragraphs[0].leftIndent = xEnd - tLines[j].insertionPoints[-2].horizontalOffset } } else { alert ("Нет выделенного текста") }; }; //main app.doScript (main, undefined,undefined, UndoModes.ENTIRE_SCRIPT);
Мне казалось это решает Вашу проблему с выравниванием... видимо нетВместо отступа слева нужна очередность пробелов.
function main(){
if (app.activeDocument.selection.length > 0) {
var sel = app.activeDocument.selection[0];
if (app.activeDocument.selection[0].constructor.name == "TextFrame"){
var Frame = sel;
} else {
if (app.activeDocument.selection[0].constructor.name == "Character"){
var Frame = app.activeDocument.selection[0].textFrames[0];
} else {
var Frame = sel.parentTextFrames[0];
};
};
var tLines = Frame.lines;
app.findGrepPreferences = NothingEnum.NOTHING;
app.changeGrepPreferences = NothingEnum.NOTHING;
for (j=0;j<tLines.length;j++){
var xEnd = tLines[j].insertionPoints[-2].horizontalOffset
setChangeGrep ("\t", "");
Frame.lines[j].changeGrep();
while (tLines[j].insertionPoints[-2].horizontalOffset<xEnd) {
textLine = " " + Frame.lines[j].contents
setChangeGrep (Frame.lines[j].contents, textLine);
Frame.lines[j].changeGrep();
}
}
} else {
alert ("Нет выделенного текста")
};
}; //main
app.doScript (main, undefined,undefined, UndoModes.ENTIRE_SCRIPT);
function setChangeGrep(find, change) {
app.findGrepPreferences.findWhat = find;
app.changeGrepPreferences.changeTo = change;
};
Большое спасибо. То что надо.Мне казалось это решает Вашу проблему с выравниванием... видимо нет
Держите.
Код:function main(){ if (app.activeDocument.selection.length > 0) { var sel = app.activeDocument.selection[0]; if (app.activeDocument.selection[0].constructor.name == "TextFrame"){ var Frame = sel; } else { if (app.activeDocument.selection[0].constructor.name == "Character"){ var Frame = app.activeDocument.selection[0].textFrames[0]; } else { var Frame = sel.parentTextFrames[0]; }; }; var tLines = Frame.lines; app.findGrepPreferences = NothingEnum.NOTHING; app.changeGrepPreferences = NothingEnum.NOTHING; for (j=0;j<tLines.length;j++){ var xEnd = tLines[j].insertionPoints[-2].horizontalOffset setChangeGrep ("\t", ""); Frame.lines[j].changeGrep(); while (tLines[j].insertionPoints[-2].horizontalOffset<xEnd) { textLine = " " + Frame.lines[j].contents setChangeGrep (Frame.lines[j].contents, textLine); Frame.lines[j].changeGrep(); } } } else { alert ("Нет выделенного текста") }; }; //main app.doScript (main, undefined,undefined, UndoModes.ENTIRE_SCRIPT); function setChangeGrep(find, change) { app.findGrepPreferences.findWhat = find; app.changeGrepPreferences.changeTo = change; };