별표 — box-drawing 표

법제처 XML의 별표는 표가 아니라 텍스트 그림이다. AKN에서는 rowspan/colspan을 가진 실제 표가 된다.

Before — 법제처 XML의 <별표내용>

┌────────────────────┬──────┬───────────────┐
│위반행위            │근거 법조문│과태료        │
│                    │      ├────┬────┬─────┤
│                    │      │1차 위반│2차 위반│3차 이상│
│                    │      │        │        │위반    │
├────────────────────┼──────┼────┼────┼─────┤
│가. 법 제34조를 위반하여 근로복지공단   │법 제129조  │100만원 │150만원 │200만원│
│또는 이와 비슷한 명칭을 사용한 경우     │제2항제1호  │        │        │       │
└────────────────────┴──────┴────┴────┴─────┘

실제 원문은 한글 글리프의 표시 폭 때문에 공백이 더 많다. kr2akn은 codepoint 길이와 display width가 어긋나면 display-width 좌표로 전환해서 경계를 다시 맞춘다.

After — AKN

<attachment GUID="att_byulpyo_16">
  <doc name="별표 12">
    <mainBody eId="mainBody_byulpyo_16">
      <heading>과태료의 부과기준(제128조 관련)</heading>
      <table eId="byulpyo_16__table_1">
        <tr eId="byulpyo_16__table_1__tr_1">
          <th eId="...__tr_1__th_1" rowspan="2"><p>위반행위</p></th>
          <th eId="...__tr_1__th_2" rowspan="2"><p>근거 법조문</p></th>
          <th eId="...__tr_1__th_3" colspan="3"><p>과태료</p></th>
        </tr>
        <tr eId="byulpyo_16__table_1__tr_2">
          <td eId="...__tr_2__td_1"><p>1차 위반</p></td>
          <td eId="...__tr_2__td_2"><p>2차 위반</p></td>
          <td eId="...__tr_2__td_3"><p>3차 이상 위반</p></td>
        </tr>
        <tr eId="byulpyo_16__table_1__tr_3">
          <td eId="...__tr_3__td_1"><p>가. 법 제34조를 위반하여 근로복지공단 또는 이와 비슷한 명칭을 사용한 경우</p></td>
          <td eId="...__tr_3__td_2"><p>법 제129조 제2항제1호</p></td>
          <td eId="...__tr_3__td_3"><p>100만원</p></td>
          <td eId="...__tr_3__td_4"><p>150만원</p></td>
          <td eId="...__tr_3__td_5"><p>200만원</p></td>
        </tr>
      </table>
    </mainBody>
  </doc>
</attachment>

읽는 법

  • 표의 첫 줄은 <th>, 데이터 줄은 <td>가 된다.
  • rowspan/colspan은 box-drawing의 끊긴 선에서 복원한다. 세로선이 없으면 colspan, 가로선이 없으면 rowspan이다.
  • eId는 table → tr → td 경로를 따라 붙는다. 그래서 “별표 12의 3행 4열”을 문자열 검색 없이 찾을 수 있다.
  • 표의 셀 텍스트는 <p>로 들어간다. 줄바꿈으로 끊긴 셀은 이전 행에 병합한다.
  • 별표내용 원문은 --preserve-source-text를 켜면 kr:sourceTexts에 보존되어 roundtrip에서 정확히 복원된다.

관련 문서