Mathml문의

안녕하세요
수식에 관하여 문의드립니다.

문서의 수식을 한글수식 매크로형식이 아닌
Mathml의 형식의 문자열로 읽어올 수 있는지 문의 드립니다.
검색해보니 키보드와 마우스를 컨트롤하여
Mathml파일을 생성하는 방법이 있던데
이거 말고 소스코드 안에서 수식의 문자열을 Mathml형식으로 가져올 수 있는
api나 방법이 있는지 알고 싶습니다.
감사합니다.

2개의 좋아요

안녕하세요,

컨트롤을 선택한뒤 CtrlCode 인터페이스에서 GetProperties API 사용이 가능합니다.
수식의 경우 여기서 나온 Properties의 String이라는 Item에 수식 스크립트를 가지고 있는데 그게 한글의 수식 스크립트입니다.
제가 알기론 Mathml이랑 완벽히 호환되지는 않는것으로 알고있습니다.

감사합니다.

2개의 좋아요

안녕하세요ㅎ
직접적인 API를 제공하지는 않지만,
hwp 수식을 latex로 변환해주는 오픈소스 모듈이 있습니다.
OpenBapul/hml-equation-parser (github.com)

또한 파이썬 모듈 중에 latex를 MathML로 변환해주는 latex2mathml 같은 라이브러리를
같이 이용하면?

한/글 Eqn → Latex → MathML 변환이 가능하겠습니다.

아쉬운 점은 OpenBapul/hml-equation-parser 변환 품질이 뛰어난 편은 아닌 것 같습니다…
개발에 1주일 정도 걸렸다는 기사가 있는데, 현재 바풀이라는 서비스는 종료된 것으로 추정됩니다ㅜㅜㅜㅜ

그럼에도 위 라이브러리들을 사용해서 대략의 프로세스를 파이썬으로 짜보면 아래와 같습니다.

# %pip install hml_equation_parser
# %pip install latex2mathml

from hml_equation_parser import eq2latex
from latex2mathml.converter import convert as latex2mathml

hwp_eqn = hwp.HeadCtrl.Next.Next.Properties.Item("String")
print("\n\nhwp_eqn : ", hwp_eqn)


latex_string = eq2latex(hwp_eqn)
print("\n\nlatex_str : ", latex_string)


mathml_string = latex2mathml(latex_string)
print("\n\nmathml_str : ", mathml_string)

with open("result.mml", "w") as f:
    f.write(mathml_string)

# >>>
# hwp_eqn :  s = {1} over {2}at^{2} + v_{o}t+s_0


# latex_str :  s = \frac{ 1 } { 2 } at^ { 2 } + v_ { o } t+s_0


# mathml_str :  <math xmlns="http://www.w3.org/1998/Math/MathML" display="inline"><mrow><mi>s</mi><mo>&#x0003D;</mo><mfrac><mrow><mn>1</mn></mrow><mrow><mn>2</mn></mrow></mfrac><mi>a</mi><msup><mi>t</mi><mrow><mn>2</mn></mrow></msup><mo>&#x0002B;</mo><msub><mi>v</mi><mrow><mi>o</mi></mrow></msub><mi>t</mi><mo>&#x0002B;</mo><msub><mi>s</mi><mn>0</mn></msub></mrow></math>

도움이 되었으면 좋겠지만,
참고만 하는 정도로 보시길 바랍니다.

한/글에서 제공하는 "MathML로 저장"의 품질이 너무 좋은 편이어서
저도 이 기능이 API로 제공되었으면 하는 마음도 듭니다^^;

1개의 좋아요

대략 알아본 결과,
바풀은 2017년도에 네이버(라인플러스)에 인수되었고,
당시 대표였던 이민희 님은
최근에 퍼핀이라는 인기 서비스를 출시하셨죠.

1개의 좋아요