본문 바로가기
아래아한글 자동화/python+hwp 중급

[4/5, HwpEqn] 수식문자열로 수식 만드는 방법

by 일코 2020. 12. 18.

지난 포스팅은...

 

[3/5, HwpEqn] 컨트롤 탐색방법(feat. 파이썬)

지난 포스팅은... [2/5, HwpEqn] HWP문서 수식을 텍스트로 추출하는 방법 (1) 안녕하세요 ~ 저는 유튜브 회사원코딩 구독자입니다. 올려주신 영상들 잘 시청하고 있습니다. 문의드릴 사항으로는 한글

www.martinii.fun


 

지난 포스팅에서는 수식을 선택하기 위해 컨트롤을 탐색하는 방법과, 찾아낸 앵커포지션(좌표)에 캐럿을 갖다놓고, 수식을 선택하여 수식문자열을 추출하는 과정까지 진행해보았다.

이번 포스팅에서는 저장해둔 수식 문자열로 한/글 안에 수식을 생성하는 방법을 소개한다.

코드를 먼저 보여드리면,

"""dict를 가지고 수식 삽입하기"""

for position, eqn_string in eqn_dict.items():
    hwp.HAction.GetDefault("EquationCreate", hwp.HParameterSet.HEqEdit.HSet)
    hwp.HParameterSet.HEqEdit.EqFontName = "HancomEQN"
    hwp.HParameterSet.HEqEdit.string = eqn_string
    hwp.HParameterSet.HEqEdit.BaseUnit = hwp.PointToHwpUnit(30.0)  # 수식 폰트 크기 : 30
    hwp.HAction.Execute("EquationCreate", hwp.HParameterSet.HEqEdit.HSet)  # 폰트이상함
    sleep(1)  # 시연을 위해 1초 멈춤
    hwp.FindCtrl()  # 다시 선택
    hwp.HAction.GetDefault("EquationPropertyDialog", hwp.HParameterSet.HShapeObject.HSet)
    hwp.HParameterSet.HShapeObject.HSet.SetItem("ShapeType", 3)
    hwp.HParameterSet.HShapeObject.Version = "Equation Version 60"
    hwp.HParameterSet.HShapeObject.EqFontName = "HancomEQN"
    hwp.HParameterSet.HShapeObject.HSet.SetItem("ApplyTo", 0)
    hwp.HParameterSet.HShapeObject.HSet.SetItem("TreatAsChar", 1)
    hwp.HAction.Execute("EquationPropertyDialog", hwp.HParameterSet.HShapeObject.HSet)
    hwp.Run("Cancel")  # 폰트 예뻐짐
    hwp.Run("MoveRight")  # 다음 수식 삽입 준비
    sleep(1)  # 시연을 위해 1초 멈춤

위 코드를 실행한 모습은 아래와 같다.

수식문자열만 가지고 한/글 안에 수식 삽입하기.

한 가지만 부연설명하자. 코드 안에 실행(Execute)하는 액션이 두 개 들어 있는데, 하나는 수식생성, 하나는 편집 액션이다. 필자의 경험이 짧아서 더 좋은 방법을 아직 찾지 못했지만, 현재는 "생성"시점에 굉장히 저품질의 폰트가 출현한다. 다시 "편집"액션을 생성하고 별다른 아이템값을 넣지 않은 상태로 한 번 더 Execute를 해야만 (다행히) 한/글 특유의 아름다운 수식폰트가 적용된다.

이번 포스팅은 여기서 마친다. 다음 포스팅은, 부족한 대로 한/글 수식을 LaTeX로 변환하는 방법을 소개하고 이번 시리즈를 마치려 한다.

모두들 행복한 하루 되시길^^

댓글