자동으로 줄을 바꾼 필명을 다음 줄로 보내기

10424 단어 indesign
※ 공개된 소스 파일 중 오류 처리 생략
※ 사용은 자신의 책임이 아닙니다
※ 해당 스크립트의 동작은 InDesign CS5로 확인됩니다.5로 했어요.
이번에는 오른쪽 들여쓰기에서 정렬하려는 문자가 줄 너비 관계로 되돌아간 후 줄을 바꾸는 처리입니다.아, 글이 전달되기 어려워요.편집 후기, 편집 후기, 편집 후기에 자주 나오는 (이것만 생각난다) 모양의 그거다.필명은'단락의 마지막 오른쪽으로 정렬'형식이다.

스크립트로 '작가의 이름이 줄 너비로 인해 자동으로 줄을 바꾼다면 줄을 가지런히 바꾸기를 바랍니다.' 를 자동으로 처리해 보십시오.금번
마지막 행에 오른쪽 들여쓰기가 없으면 오른쪽 들여쓰기 전에 새 행을 삽입합니다.
그럼 한번 해보세요.
잠깐 설명 좀 해주세요.
·우축진 판정은'스페셜 체라커스(RIGHT INDENT TAB)'를 사용했다.만약 제어코드로 검사를 한다면 처음에는 분명히 동작이었는데 중간에 움직일 수 없는 이상한 현상은 잘 모르겠지만 이쪽의 동작은 비교적 안정적이다.
· 다른 줄의 추가 부분이지만, 여기는 Character의 콘텐츠에 문자를 강제로 삽입하는 방법을 취한다.기타노 씨의 스크립트에도 소개됐는데 체라커의 콘텐츠에 글을 붙이면해당 부분에 Character와 동일한 설정의 문자(@@; 처음 이를 알아차렸을 때 깜짝 놀랐다. 아이고, 쉽고 좋다. 그나저나 콘텐츠의 오른쪽으로 들여쓰기는 했지만 판정에 사용된'Special Characters. RIGHT INDENTTAB'그럼 잘 안되니까 여기서 바로 스트링.fromChard(8)가 추가되었습니다.
//各段落の最終行をCheck
function LAST_LINE_Check() {
    var myDoc = app.activeDocument;
    var myPage= null;
    var myItems = null;
    var myParagraphs = null;
    var myParagraph = null;
    var myCharacters = null;
    var myCharacter = null;
    var myBox = "";

    //ページのループ
    for (var p=0; p<myDoc.pages.length; p++) {
        myPage = myDoc.pages.item(p);
        myItems = myPage.allPageItems;
        //ページアイテムのループ
        for (var i=0;i<=myItems.length-1;i++) {
            if (myItems[i].constructor.name !== "TextFrame") {
                continue;
            }
            myBox = myItems[i];
            myParagraphs = myBox.paragraphs;
            //段落のループ
            for (var j = 0;j<=myParagraphs.length-1;j++) {
                myParagraph = myParagraphs[j];
                myCharacters = myParagraph.characters;
                //文字列のループ
                for (var t=myCharacters.length-1;t>=0;t--) {
                    myCharacter = myCharacters[t];
                    //右インデントのチェック
                    if (myCharacter.contents === SpecialCharacters.RIGHT_INDENT_TAB) {
                        //右インデントの位置が最終行かどうか判定
                        if (No_LastLine(myParagraph,t)) {
                            //conntentsに強引に複数文字を割り当てると
                            //該当箇所に文字が追加されます
                            myCharacter.contents = "\015" + String.fromCharCode(8);
                        }
                        break;
                    }
                }
            }
        }
    }
}

//段落の最終行か否かのチェック
function No_LastLine(NowParagraph,NowIndex) {
    var myLines = NowParagraph.lines;
    var total = 0;
    var myPosition = NowIndex;
    //最終行の文字を除いた文字数を計算
    for (var i = 0;i<myLines.length-1;i++) {
            total = total + myLines[i].characters.length;
    }

    //境目の文字がトータルより小さい=最終行では無いので改行が必要
    if (total > myPosition) {
        return true
    } else {
        return false
    }
}

LAST_LINE_Check();

좋은 웹페이지 즐겨찾기