logo
HWPJS
  • 가이드
  • API
  • 명세서
  • 로드맵
  • 백로그
    명세서
    HWP 자료형 (Types)
    HWP 3.0 / HWPML 형식
    HWP 5.0
    배포용 문서 형식
    한글 문서 파일 형식 - 수식
    차트 형식
    Previous page배포용 문서 형식Next page차트 형식

    #한글 문서 파일 형식 - 수식

    #저작권

    한글과컴퓨터(이하 "한컴")는 문서 형식의 개방과 표준화를 적극 지원하고 있습니다. 한컴은 한글 97에 대한 무료 지원을 제공했으며, 한글 2002-2010 문서의 XML 형식인 HWPML을 공개했습니다. HWPML은 한국 산업 표준 KS X 6101:2011(OWPML)로 표준화되었습니다. 또한 한컴오피스는 PDF/A-1, ODF, OOXML 형식을 지원합니다.

    #사용 권리

    본 문서는 자유롭게 열람, 복사, 배포, 출판 및 사용할 수 있습니다. 단, 배포 시에는 원본 또는 수정되지 않은 사본을 배포해야 하며, 한컴의 최신 규격서 버전을 포함해야 합니다.

    한컴은 공개 문서를 근거로 독점적 권리를 주장하려는 시도에 대해 권리를 보유합니다.

    #개발 제품에 대한 면책 조항

    본 문서를 참고하여 개발한 제품의 모든 저작권은 개발자에게 있습니다. 이러한 제품은 다음 문구를 명시해야 합니다:

    "본 제품은 한컴의 한글 문서 파일(.hwp) 공개 문서를 참고하여 개발되었습니다."

    이 문구는 사용자 인터페이스, 매뉴얼, 도움말, 소스 코드에 표시되어야 하며, 위 항목이 없는 경우 기존 구성 요소에 표시되어야 합니다.

    한컴은 본 문서를 참고하여 개발된 결과물의 정확성이나 진실성을 보장하지 않습니다.

    #본 문서에 대하여...

    본 문서는 한글 2002 이후 제품에서 사용되는 한글 문서 파일 형식의 수식에 대해 설명합니다. 이는 한글 워드프로세서의 파일 저장 형식 중 하나입니다.

    본 문서에서는 한글 문서 파일 형식의 수식과 관련된 주요 명령어, 기호, 기호 종류에 대해 설명합니다.

    한글 문서 파일 형식 5.0, 차트, 배포 문서, 한글 문서 파일 형식 3.0(HWPML)에 대한 정보는 별도의 문서에서 다룹니다.


    #수식 형식

    한글 문서 파일 형식에서 수식은 EQN 스크립트 호환 형식으로 저장됩니다. 수식 개체는 HWPTAG_EQEDIT 태그를 사용하며, 수식 편집기를 통해 작성된 수식을 텍스트 기반 스크립트로 표현합니다.

    #1. 수식

    #1.1. 수식 편집기의 기본 개념

    한글 수식 편집기는 팔레트를 통해 다양한 기호와 수식을 제공하며, 템플릿을 사용하여 복잡한 수식을 쉽게 작성할 수 있게 해줍니다. 작성된 수식은 한글 문서에 삽입할 수 있으며, 기존 수식은 더블클릭하여 편집할 수 있습니다.

    #1.1.1. 수식에 쓰이는 글씨체

    수식에서 영문 입력은 기본적으로 이탤릭체로 표시됩니다. 수식 내에서 사용 가능한 글꼴 스타일에는 제한이 있으며, 수식 내의 기본 글꼴 스타일은 첫 번째 문자의 스타일(크기, 색상, 글꼴 종류)을 따릅니다.

    수식 내에서 글꼴 크기를 다양하게 하려면 SCALE 함수를 사용할 수 있습니다. 첫 번째 문자의 크기를 100%로 기준으로 합니다.

    입력 예제:

    유리수={ scale 70 분자 over 분모 }={ scale 90 m over n }

    출력 예제:

    유리수 = 분자/분모 = m/n

    (분수 부분이 각각 70%, 90% 크기로 표시됨)

    #1.1.1.1. 영문 글꼴 명령

    수식 편집기에 입력한 로만 문자는 기본적으로 이탤릭체로 표시됩니다. 로만체(이탤릭이 아닌 일반체)를 사용하려면 텍스트 앞에 rm 명령을 사용해야 합니다. 볼드체를 입력하려면 텍스트 앞에 bold 명령을 사용해야 합니다.

    글꼴 명령 표:

    명령설명
    기본이탤릭체
    rm로만체
    it로만체 입력 중 이탤릭체로 다시 전환
    bold볼드체

    입력 예제:

    Equation font test
    Equation rm font it test
    rm Equation bold Editor

    출력 예제:

    • 첫 번째: Equationfonttest (모두 이탤릭체)
    • 두 번째: Equation font test (font와 test는 이탤릭체, rm과 it 명령 적용)
    • 세 번째: Equation Editor (Equation은 로만체, Editor는 볼드체)
    #1.1.1.2. 한글 글꼴 명령

    수식 편집기에서 한글 글꼴 스타일(종류나 크기)을 변경하는 것은 일반 문서 편집과 동일하게 "모양 글자 모양"을 통해 수행합니다.

    #1.1.2. 수식 편집기 고유 규칙

    한글 수식 편집기는 일반 문서 편집과는 다른 고유한 규칙을 가지고 있습니다. 이러한 기본 규칙을 이해하는 것은 수식 편집기를 효율적으로 사용하기 위해 필수적입니다.

    편집 화면과 표시 화면 매핑:

    편집 화면 입력표시 화면 출력
    (공백)빈칸( 효과)
    (빈 문자열, 특정 컨텍스트)빈칸의 ¼
    {}여러 항의 묶음
    ""9자 이상의 한 낱말 묶음
    #줄 바꾸기( 효과)
    &세로 칸 맞춤( 효과)
    #1.1.2.1. 항의 구분

    수식 편집기에서 항은 공백, 줄바꿈(Enter), 또는 탭으로 구분됩니다. 공백의 유무에 주의해야 합니다.

    #1.1.2.2. 여러 항의 묶음

    여러 항을 묶으려면 수식을 {}로 감싸야 합니다.

    #1.1.2.3. 한 항이 9자를 넘을 때

    한 낱말(항)이 9자를 넘으면 수식 편집기는 이를 두 개의 항으로 인식합니다. 9자를 넘는 낱말을 하나의 항으로 인식시키려면 영문 따옴표 ""로 감싸야 합니다.

    #1.1.2.4. 줄 바꾸기

    수식 편집 화면에서 <Enter>를 누르는 것은 표시 화면에 영향을 주지 않습니다. 최종 수식 결과에 줄바꿈을 삽입하려면 #를 입력해야 합니다.

    #1.1.2.5. 사이띄개, 엔터

    사용자가 수식 편집기에서 입력한 <Space>와 <Enter>는 항을 구분하는 용도로만 사용되며, 표시 화면에는 공백으로 나타나지 않습니다. 연속된 공백이나 줄바꿈은 무시됩니다.

    #1.1.2.7. 빈칸

    수식 결과에 빈칸을 표시하려면 ~ 또는 `를 입력해야 합니다.

    빈칸 종류:

    • ~: 일반 빈칸
    • `: 일반 빈칸의 ¼ 크기 빈칸

    여러 빈칸 규칙: 긴 문장에서 여러 빈칸이 필요한 경우, 편의를 위해 전체 문장을 영문 따옴표("")로 묶고 일반 텍스트 편집기처럼 입력할 수 있습니다.

    #1.1.2.6. 세로 칸 맞춤

    수식의 여러 줄을 세로로 정렬하려면 정렬 기준이 되는 문자 앞에 &를 입력합니다. 이는 <Tab> 효과와 같습니다.

    #1.1.3. 수식에 쓰이는 기본 함수

    한글 수식 편집기는 표준 수학 함수를 자동으로 인식하여 이탤릭체가 아닌 로만체로 표시합니다. 이러한 함수들은 항상 로만체(영문 명조체)로 표시됩니다.

    기본 함수 목록 (항상 로만체):

    함수함수함수함수함수
    sincoscothlogtan
    cotlnlgseccosec
    maxmincscarcsinlim
    LimarccosarctanexpExp
    arcsinhdetgcdcosh
    tanhmodasinacosatan
    lcm

    예약어 목록 (항상 로만체):

    예약어예약어예약어예약어예약어
    ifforandhomker
    degargdimPr

    입력 예제:

    f(x)= logx+sinx

    출력 예제:

    f(x) = log x + sin x

    (log와 sin은 로만체로 표시되며, 출력 시 자동으로 주변에 공백이 삽입됨)

    화학식: 화학식은 항상 로만체로 표시됩니다. 이를 보장하려면 입력 시작 부분에 rm을 사용하세요.

    입력 예제:

    rm 2H_2 O = 2H_2 + O_2

    출력 예제:

    2H₂O = 2H₂ + O₂

    (rm 명령으로 전체 수식이 로만체로 표시되며, 아래첨자가 올바르게 렌더링됨)

    로만체 함수/예약어를 이탤릭체로 표시: 기본 함수나 예약어(일반적으로 로만체로 표시됨)를 이탤릭체로 표시하려면 문자 사이에 공백을 삽입해야 합니다. 예를 들어, sin을 이탤릭체로 만들려면 s in, si n, 또는 s i n으로 입력합니다.

    입력 예제:

    si n. cos, and

    출력 예제:

    sin, cos, and

    (여기서 sin, cos, and는 삽입된 공백으로 인해 이탤릭체로 표시됨)

    #1.2. 기본 명령어

    수식 편집기는 텍스트 기반 명령어를 사용하여 수식을 작성합니다.

    #TIMES

    곱셈 기호를 표시합니다.

    입력 예제:

    2 times 5=10

    출력:

    2×5=10

    #OVER

    분수를 표시합니다. 분수는 일반적으로 중앙 정렬됩니다. 오른쪽 또는 왼쪽 정렬을 강제하려면 <SpaceBar>를 사용합니다.

    입력 예제:

    1 over 2

    출력:

    1/2

    #ATOP

    "OVER" 명령과 유사하지만, 가로 구분선 없이 분자를 분모 위에 쌓아 표시합니다.

    입력 예제:

    x atop y

    출력:

    x
    y

    (구분선 없이 x가 y 위에 쌓임)

    #SQRT

    제곱근 기호를 표시합니다.

    입력 예제:

    sqrt 2

    출력:

    √2

    #^ (위첨자)

    위첨자를 표시합니다. 수식 편집 영역에서 직접 ^를 입력하거나 명령 입력 창에 "SUP"를 입력하여 사용할 수 있습니다.

    입력 예제:

    E=mc^2

    출력:

    E=mc²

    #_ (아래첨자)

    아래첨자를 표시합니다. 수식 편집 영역에서 직접 _를 입력하거나 명령 입력 창에 "SUB"를 입력하여 사용할 수 있습니다.

    입력 예제:

    H_2 O

    출력:

    H₂O

    #INT, OINT

    적분 기호를 표시합니다.

    입력 예제:

    int _1 ^2 {3x^2}dx

    출력:

    ∫₁² 3x² dx

    #SUM

    합 기호(시그마)를 표시합니다.

    입력 예제:

    sum_{x=0} ^{inf}

    출력:

    Σ (x=0부터 ∞까지)

    #BIGG 기호

    뒤에 오는 기호의 크기를 확대합니다.

    입력 예제:

    {a+b} over {a-b} bigg/ {x+y} over {x-y}

    출력:

    (a+b)/(a-b) / (x+y)/(x-y)

    (가운데 / 기호가 더 크게 표시됨)

    #lim, Lim

    극한 기호를 표시합니다. lim과 Lim 명령은 대소문자를 정확히 구분하여 입력해야 합니다.

    입력 예제:

    y= lim _{x -> 0} {{1} over {x}}

    출력:

    y = lim (x→0) 1/x

    #UNION, INTER, PROD

    집합론 기호를 표시합니다. 명령 앞에 "SMALL"을 붙이면 위첨자나 아래첨자 없이 집합 기호만 입력됩니다.

    입력 예제:

    U=(A SMALLUNION B) SMALLINTER C

    출력:

    U = (A ∪ B) ∩ C

    #NOT

    바로 뒤에 오는 문자에 대각선을 그어 표시합니다.

    입력 예제:

    not =

    출력:

    ≠

    #REL

    두 항 사이의 상세한 관계를 표현하는 기능을 제공합니다. 두 항을 연결하는 화살표 위아래에 관계식이나 내용을 삽입할 수 있습니다.

    입력 예제:

    A REL <-> {+2} {-5} B

    출력:

    A ←→ B
        +2
        -5

    (화살표 위에 +2, 아래에 -5가 표시됨)

    #BUILDREL

    REL 명령과 유사하지만, 화살표 아래 내용을 생략할 수 있습니다.

    입력 예제:

    A BUILDREL <-> {+2} B

    출력:

    A ←→ B
        +2

    (화살표 위에만 +2가 표시됨)

    #CASES

    여러 줄의 방정식이나 식을 묶는 큰 중괄호를 표시합니다. 중괄호의 크기는 내용에 맞게 자동으로 조정됩니다.

    입력 예제:

    cases {2x+y=4 # 3x-4y=-1}

    출력:

    { 2x+y=4
      3x-4y=-1

    #PILE, LPILE, RPILE

    문자나 식을 세로로 쌓는 명령입니다. LPILE과 RPILE은 각각 왼쪽 정렬과 오른쪽 정렬로 쌓는 것으로 보입니다. 위의 문자를 기준으로 정렬됩니다.

    #EQALIGN

    수식의 정렬(중앙, 왼쪽, 오른쪽)을 선택할 수 있습니다. 또한 & 정렬 표시를 사용하여 수식의 세로 위치를 조정할 수 있습니다.

    #CHOOSE 또는 BINOM

    조합 기호를 입력하는 데 사용됩니다.

    입력 예제:

    [전체항] CHOOSE [선택항]

    또는

    BINOM [전체항] [선택항]

    #MATRIX

    행렬을 입력합니다. matrix는 표준적인 행 단위 입력 방법입니다. matrix 뒤에 col을 사용하면 열 단위로 입력할 수 있습니다. 열 단위 입력에서 col을 사용할 때, 각 수식 앞에 col(중앙 정렬) 대신 Icol(왼쪽 정렬) 또는 rcol(오른쪽 정렬)을 사용하여 정렬을 지정할 수 있습니다.

    입력 예제:

    matrix{a_{1} &b_{1}&c_{1} # a_{2}&b_{2}&c_{2} # a_{3}&b_{3}&c_{3}}

    출력:

    a₁ b₁ c₁
    a₂ b₂ c₂
    a₃ b₃ c₃

    (괄호 없이 3×3 행렬 표시)

    #PMATRIX

    matrix 대신 pmatrix를 사용하면 행렬이 괄호 ()로 둘러싸입니다.

    입력 예제:

    pmatrix{a_{1} &b_{1}&c_{1} # a_{2}&b_{2}&c_{2} # a_{3}&b_{3}&c_{3}}

    출력:

    (a₁ b₁ c₁)
    (a₂ b₂ c₂)
    (a₃ b₃ c₃)

    (각 행이 괄호로 둘러싸인 3×3 행렬)

    #BMATRIX

    matrix 대신 bmatrix를 사용하면 행렬이 대괄호 []로 둘러싸입니다.

    입력 예제:

    bmatrix{a_{1} &b_{1}&c_{1} # a_{2}&b_{2}&c_{2} # a_{3}&b_{3}&c_{3}}

    출력:

    [a₁ b₁ c₁]
    [a₂ b₂ c₂]
    [a₃ b₃ c₃]

    (각 행이 대괄호로 둘러싸인 3×3 행렬)

    #DMATRIX

    matrix 대신 dmatrix를 사용하면 행렬이 세로선 ||로 둘러싸입니다.

    입력 예제:

    dmatrix{a_{1} &b_{1}&c_{1} # a_{2}&b_{2}&c_{2} # a_{3}&b_{3}&c_{3}}

    출력:

    |a₁ b₁ c₁|
    |a₂ b₂ c₂|
    |a₃ b₃ c₃|

    (각 행이 세로선으로 둘러싸인 3×3 행렬)

    #LSUB

    문자 왼쪽에 아래첨자를 표시합니다.

    입력 예제:

    x LSUB y

    또는

    {}_{y}x

    출력:

    ᵧx

    ('y'가 'x'의 왼쪽 아래첨자로 표시됨)

    #LSUP

    문자 왼쪽에 위첨자를 표시합니다.

    입력 예제:

    x LSUP y

    또는

    {}^{y}x

    출력:

    ʸx

    ('y'가 'x'의 왼쪽 위첨자로 표시됨)

    #LADDER

    최소공배수/최대공약수(LCM/GCD) 함수를 표시합니다.

    입력 예제:

    LADDER {2&12&28#2&6&14#3&7&}

    출력:

    2 | 12 28
    2 | 6 14
    3 | 7

    (LCM/GCD를 위한 사다리꼴 다이어그램)

    #SLADDER

    십진수를 이진수로 변환하는 데 사용되는 함수를 표시합니다.

    입력 예제:

    SLADDER {2&12&#2&6&0#2&3&0#1&1&}

    출력:

    2 | 12
    2 | 6 0
    2 | 3 0
    1 1

    (이진 변환을 위한 사다리꼴 다이어그램)

    #LONGDIV

    긴 나눗셈을 표현합니다. 숫자만 입력해도 레이아웃이 자동으로 조정됩니다. ~를 사용하면 명시적으로 레이아웃을 조정할 수 있습니다.

    입력 예제 1:

    LONGDIV {6}{422}{2532#24#13#12#12#12#0}

    출력 예제 1:

        422
    6) 2532
       24
       13
       12
       12
       12
        0

    입력 예제 2:

    LONGDIV {6}{422}{2532#24#~13#~12#~~12#~~~0}

    출력 예제 2:

        422
    6) 2532
       24
       13
       12
       12
        0

    (입력 문자열 내에서 ~를 사용한 간격 조정 예시)

    #COLOR

    첫 번째 인자로 RGB 값을 받고, 두 번째 인자로 내용을 받아 지정된 색상으로 내용을 표시합니다.

    입력 예제:

    {COLOR {255,0,255} {3}} over {4}

    출력:

    3
    ─
    4

    ('3'이 RGB 값(255,0,255)에 해당하는 색상으로 표시됨)

    #1.2.1. 글자 장식 명령어

    글자에 장식을 추가하는 명령어들:

    입력결과
    acute AÁ
    grave AÀ
    dot AȦ
    ddot AÄ
    hat AÂ
    hat AAÂÂ
    hat AAAÂÂÂ
    check AǍ
    check AAǍǍ
    check AAAǍǍǍ
    bar AĀ
    vec A⃗A
    dyad A⃑A
    under AA̲
    arch AȂ
    arch AAȂȂ
    arch AAAȂȂȂ
    tilde AÃ
    tilde AAÃÃ
    tilde AAAÃÃÃ

    #1.2.2. 입력 기호 요약

    수식 편집기에서 사용하는 특수 입력 기호와 그 효과:

    입력결과
    ~빈칸 (스페이스 효과)
    `빈칸의 1/4
    {}여러 항의 묶음
    ""9자 이상의 한 낱말 묶음
    #줄 바꾸기 ( 효과)
    &세로 칸 맞춤 (탭 효과)

    #1.2.3. 스크립트 입력 창에서 입력

    스크립트 입력 창에서 사용할 수 있는 명령어와 그 이름:

    명령어이름
    TIMES곱하기
    OVER분수
    ATOP위아래
    SORT제곱근
    BIGG 기호가운데 큰 기호
    CASES경우들
    INT, OINT, DINT, TINT, ODINT, OTINT적분
    lim 또는 Lim극한

    #1.2.4. 기호 종류

    수식에서 사용할 수 있는 다양한 기호들이 있습니다.

    #1.2.4.1. 그리스 대문자

    그리스 대문자 기호들:

    기호이름기호이름기호이름
    AAlphaBBetaΓGamma
    ΔDeltaEEpsilonZZeta
    HEtaΘThetaIIota
    KKappaΛLambdaMMu
    NNuΞXiOOmicron
    ΠPiPRhoΣSigma
    TTauΥUpsilonΦPhi
    XChiΨPsiΩOmega
    #1.2.4.2. 그리스 소문자

    그리스 소문자 및 수학 기호들:

    기호이름기호이름기호이름
    אALEPHℏHBARιIMATH
    JJMATHΩOHMℓELL, LITER
    ℘WPℑIMAGÅANGSTROM
    ϑvarthetaϖvarpiςvarsigma
    ϒvarupsilonφvarphiεvarepsilon
    #1.2.4.3. 합/집합 기호

    합과 집합 관련 기호들:

    기호이름기호이름기호이름
    ΣSigmaΠPROD∏COPROD
    ∩INTER∪CAP⊓SQCAP
    ⊔SQCUP⊕OPLUS⊖OMINUS
    ⊗OTIMES⊙ODOT⊘OSLASH
    ∨VEE∧WEDGE⊂SUBSET
    ⊃SUPSET⊆SUBSETEQ⊇SUPSETEQ
    ∈IN∋OWNS∉notin
    ≤LEQ≥GEQ⊏SQSUBSET
    ⊐SQSUPSET⊑SQSUBSETEQ⊒SQSUPSETEQ
    ≪<<≫>>⋘LLL
    ⋙>>>≺PREC≻SUCC
    ⊎UPLUS
    #1.2.4.4. 연산/논리 기호

    연산 및 논리 기호들:

    기호이름기호이름기호이름
    ±PLUSMINUS∓MINUSPLUS×times
    ÷DIV, DIVIDE∘CIRC•BULLET
    °DEG*AST★STAR
    ○BIGCIRC∅EMPTYSET∴THEREFORE
    ∵BECAUSE∷IDENTICAL∃EXIST
    ≠neq, !=≐DOTEQℐimage
    ℜREIMAGE∼SIM≈APPROX
    ≃SIMEQ≅CONG≡==, EQUIV
    ≁ASYMP≊ISO◇DIAMOND
    ∔DSUM∀FORALL′prime
    ∂PARTIAL∞inf¬LNOT
    #1.2.4.5. 화살표

    화살표 기호들:

    기호이름기호이름기호이름
    ←larrow→rarrow↑uparrow
    ↓downarrow←LARROW→RARROW
    ↑UPARROW↓DOWNARROW↕udarrow
    ↔lrarrow↕UDARROW↔LRARROW
    ↖nwarrow↘searrow↗nearrow
    ↙swarrow←hookleft→hookright
    ↦mapsto∣vert∣VERT
    #1.2.4.6. 기타 기호

    기타 수학 기호들:

    기호이름기호이름기호이름
    ...cdots...LDOTS⋮VDOTS
    ∴DDOTS△TRIANGLE▽TRIANGLED
    ∠ANGLE⦡MSANGLE⦠SANGLE
    ∟RTANGLE⊣VDASH⊢HLEFT
    ⊥BOT⊤TOP⊨MODELS
    ℒLAPLACE℃CENTIGRADE℉FAHRENHEIT
    ∕LSLANT∖RSLANT※att
    ‰hund‱thou#well
    □base◎benzene

    #2. 수식 작성 예제

    #2.1. 분수식 만들기

    분수식을 만드는 예제:

    수식:

    (10a³)/(b²) × (b³)/(2a) = ((2a²)/b)³

    명령어:

    10a^3 over b^2 times ~ ~ + b^3 over 2a =(2a^2 over b)^3

    설명:

    • OVER는 분수를 만듭니다.
    • TIMES는 곱셈 기호를 만듭니다.
    • SUP 또는 ^는 지수를 만듭니다.
    • ~는 공백을 나타냅니다.
    • 기호표를 사용하여 □와 +를 입력할 수 있습니다.

    #2.2. De Morgan's 법칙 표현

    드 모르간 법칙을 표현하는 예제:

    수식:

    (A ∪ B)^C = A^C ∩ B^C

    명령어:

    (A UNION B)^C^ = A^C INTER B^C

    설명:

    • UNION은 합집합 기호를 만듭니다.
    • INTER는 교집합 기호를 만듭니다.
    • SUP C 또는 ^C는 여집합을 나타냅니다.
    • <>는 공백을 나타냅니다.

    #2.3. 거듭제곱근이 들어간 식 만들기

    거듭제곱근이 포함된 수식 예제:

    수식:

    ∫₀³ ³√(x²+1)dx

    명령어:

    int from 0 to 3 ^3sqrt{x^2 +1}dx

    설명:

    • INT는 적분 기호를 만듭니다.
    • FROM과 TO는 적분의 범위를 지정합니다.
    • ^와 SQRT를 함께 사용하여 거듭제곱근을 만듭니다.

    #2.4. 간단한 행렬 만들기

    행렬을 만드는 예제:

    수식:

    X = [ 42  52  48  58 ]
        [  4   5   4   3 ]

    명령어:

    X = bmatrix { 42 & 52 & 48 & 58 # 4 & 5 & 4 & 3 }

    설명:

    • X=bmatrix{}는 기본 행렬 구조를 만듭니다.
    • &는 열을 구분합니다.
    • #는 행을 구분합니다.

    #2.5. 극한과 총합이 들어간 식 만들기

    극한과 총합이 포함된 복잡한 수식 예제:

    수식:

    lim_(N→∞) (1/N) Σ_(n=1)^N (Σ_(k=1)^n (1/2^k))

    명령어:

    lim_N->inf 1 over N sum_n=1^N
    LEFT(SUM_k=1^n 1 over 2^k right)

    설명:

    • 여러 기호가 있어도 입력은 복잡하지 않으며, 왼쪽에서 오른쪽으로 순서대로 입력합니다.
    • 아래첨자는 SUB 또는 _를 사용하여 만듭니다.
    • 화살표는 RARROW 또는 ->로 표현합니다.
    • 무한대는 INF 명령으로 표현합니다.
    • 큰 괄호를 만들려면 먼저 LEFT(와 RIGHT)를 입력한 후, 그 사이에 식을 입력합니다.

    주의사항: LEFT와 RIGHT 명령을 괄호 앞에 사용하지 않으면 수식이 제대로 보이지 않을 수 있습니다. 예를 들어, 내부 합 (Σ_(k=1)^n (1/2^k))가 제대로 렌더링되지 않을 수 있습니다.

    #4. 수식 개체 구조

    HWP 파일 형식에서 수식 개체는 다음과 같은 구조를 가집니다:

    #4.1. 수식 개체 속성

    수식 개체 속성은 표 105에 정의되어 있으며, 다음 필드들을 포함합니다:

    • attribute (UINT32, 4바이트): 속성. 스크립트가 차지하는 범위. 첫 비트가 켜져 있으면 줄 단위, 꺼져 있으면 글자 단위.
    • script_length (WORD, 2바이트): 스크립트 길이
    • script (WCHAR array[len], 2×len 바이트): 한글 수식 스크립트 (EQN 스크립트 호환)
    • character_size (HWPUNIT, 4바이트): 수식 글자 크기
    • character_color (COLORREF, 4바이트): 글자 색상
    • base_line (INT16, 2바이트): base line
    • version_info (WCHAR array[len], 2×len 바이트): 수식 버전 정보
    • font_name (WCHAR array[len], 2×len 바이트): 수식 폰트 이름

    전체 길이는 16 + (6×len) 바이트입니다.

    #4.2. 구현 참고사항

    현재 구현에서는 EqEdit 구조체가 수식 개체를 표현합니다. 수식 스크립트는 UTF-16LE 형식으로 저장되며, EQN 스크립트 호환 형식을 따릅니다.

    #3. 변경 사항 이력

    #Revision 1.2

    날짜: 20141030

    • 한글 문서 파일 구조 파트별로 구성
    • 한글 문서 파일 형식 - 수식 공개

    #Revision 1.3

    날짜: 20181108

    • 신규 기본 함수/기본 명령어 추가