언제부터인가… 캡션 위치가 왼쪽으로 된 그림/수식들이 발견되면서.. 그럼에서는 이상한 점이 생기기도 하고…
PDF 만들 때 깨지기도 하고…
그림 / 수식 등에서 캡션을 없애는(캡션의 위치가 가운데…) 방법이 궁금합니다.
(물론 한번에 되는 방법이 궁금합니다…^^)
언제부터인가… 캡션 위치가 왼쪽으로 된 그림/수식들이 발견되면서.. 그럼에서는 이상한 점이 생기기도 하고…
PDF 만들 때 깨지기도 하고…
그림 / 수식 등에서 캡션을 없애는(캡션의 위치가 가운데…) 방법이 궁금합니다.
(물론 한번에 되는 방법이 궁금합니다…^^)
안녕하세요
스크립트 매크로에 아래 코드를 참고하여 돌리면 캡션 제거가 가능합니다.
감사합니다.
// 동작 모드: "DETACH"=캡션 제거 / "BOTTOM"=캡션을 아래(정상 위치)로 이동
var MODE = "DETACH";
// 캡션을 아래로 옮길 때 CtrlID별 액션
var POS_BOTTOM = {
"tbl": "TableCaptionPosBottom", // 표
"gso": "CaptionPosBottom", // 그림/도형
"eqed": "EqCaptionPosBottom" // 수식
};
// JScript에는 String.trim()이 없어 직접 구현(CtrlID 뒤 공백 제거용)
function rtrim(s) { return String(s).replace(/\s+$/g, ""); }
function ShowMsg(s) {
XHwpMessageBox.String = s;
XHwpMessageBox.Flag = 0; // 0 = [확인] 버튼
XHwpMessageBox.DoModal();
}
function FixCaptions() {
var n = 0;
var ctrl = HeadCtrl; // 현재 문서의 첫 컨트롤 (접두사 없음)
while (ctrl !== null) {
var cid = rtrim(ctrl.CtrlID); // "tbl ","gso ","eqed"
var nxt = ctrl.Next; // 수정 전에 다음 컨트롤 미리 확보
if (cid in POS_BOTTOM) {
SetPosBySet(ctrl.GetAnchorPos(0)); // 개체 앵커로 이동
FindCtrl(); // 개체 선택
try {
if (MODE === "DETACH") {
Run("ShapeObjDetachCaption"); // 캡션 제거
} else {
Run(POS_BOTTOM[cid]); // 캡션을 아래로
}
n++;
} catch (e) {
// 캡션이 없는 개체 등은 건너뜀
}
}
ctrl = nxt;
}
ShowMsg("캡션 처리 완료: " + n + "건");
}
function OnDocument_New()
{
FixCaptions()
}
감사합니다…
아이디어를 얻어서 잘 사용하고 있습니다. 다만, 수식의 경우 문서 전체 적용이 가능해서… 하나씩 순회하지 않아도 처리되는 것을 발견했습니다~