여러 셀 선택과 병합
여러 셀 선택은 복수의 값을 한 번에 다루는 런타임 상태다. 선택 자체는 문서에 저장되지 않는다. 병합을 확정하면 값과 기본 행·열 구조는 Markdown에 남고, rowspan·colspan에 해당하는 표현은 projection profile의 overlay로 저장된다.
병합 실습 파일을 사용한다.
| 분기 | 채널 | 목표 | 실제 | 비고 |
| :--- | :--- | ---: | ---: | :--- |
| 상반기 | 문서 | 40 | 38 | |
| 상반기 | 영상 | 12 | 11 | |
| 하반기 | 문서 | 60 | 0 | 검토 필요 |
| 하반기 | 영상 | 20 | 0 | 검토 필요 |1. 직사각형 범위를 선택한다
- 첫 셀에서 마지막 셀까지 마우스로 드래그한다.
- 첫 셀을 선택하고
Shift+방향키로 범위를 넓힌다.
선택 결과가 하나의 직사각형인지 확인한다. 병합과 선택 범위 Chart는 직사각형 좌표가 있어야 원본 표를 명확히 참조할 수 있다.
다중 선택 상태에서 Backspace나 Delete를 누르면 선택된 셀 content만 비워야 한다. raw Markdown 전체가 예기치 않게 삭제되면 즉시 undo하고 선택 범위를 다시 확인한다.

다음 영상은 첫 셀을 클릭하고 Shift+→, Shift+↓를 차례로 눌러 2×2 범위를 만드는 과정이다. 선택 범위는 오른쪽 info zone에도 R1:R2 C1:C2로 표시된다.
2. 비연속 셀을 선택한다
Windows에서는 Ctrl+click, macOS에서는 Cmd+click으로 같은 table section의 셀을 하나씩 토글한다. 비연속 선택은 여러 값을 비교하거나 지울 때 유용하지만, 하나의 병합 영역으로 해석할 수 없다.
비연속 선택에서 셀 병합 action이 숨겨지는 것이 정상이다. 병합하려면 Esc로 선택을 해제하고 마우스 drag 또는 Shift+방향키로 직사각형 범위를 다시 만든다.

위 화면의 info zone은 선택 범위를 비연속 본문 R1:R3 C3:C4로 표시한다. 우클릭 메뉴에는 행 추가·복제·제거와 셀 병합 해제가 남지만 셀 병합은 제공되지 않는다. 병합 해제는 실제 merge overlay가 없으면 변경하지 않는 noop이다.
3. 빈 셀 범위를 병합한다
- 실습 파일에서 상반기 두 행의 빈 비고 셀을 위에서 아래로 드래그한다.
- 셀 메뉴 또는 표 info zone에서 셀 병합을 선택한다.
- 병합된 표시가 한 anchor cell을 기준으로 만들어졌는지 확인한다.
- Source로 전환해 pipe table의 직사각형 구조가 유지되는지 확인한다.
- 저장 후
.glif/projections.json이 있는 예제 Scope라면 table presentation 설정이 함께 갱신되는지 확인한다.
Markdown 표 자체에는 rowspan이나 colspan 문법을 삽입하지 않는다. Glif 밖에서 열어도 원래 셀 값과 행·열 구조는 보존된다.
다음 9.8초 영상은 비연속 선택에서 병합 action이 숨겨지는 상태부터 빈 비고 셀 두 개의 drag 선택, 병합, 병합 해제까지 이어서 보여 준다.


이 실증에서는 병합 직후 info zone의 선택 요약이 전체 표 · 본문 R1:R4 C1:C5로 돌아왔고, 해제 뒤 두 빈 셀과 4×5 pipe table 구조가 유지됐다.
4. 값이 있는 셀을 병합한다
덮이는 covered cell에 값이 있으면 Glif는 자동으로 버리지 않고 선택을 요구한다.
| 선택 | Markdown에 일어나는 일 | 적합한 경우 |
|---|---|---|
| 내용 합쳐 병합 | covered cell 내용을 anchor cell에 <br>로 합침 |
두 값 모두 남겨야 함 |
| 다른 셀 내용 삭제 | anchor 외 값을 비움 | 중복 표기이며 anchor만 남겨도 됨 |
| 취소 | 원문과 profile 모두 변경하지 않음 | 무엇을 보존할지 다시 검토해야 함 |
실습에서는 첫 열의 상반기 두 셀을 위에서 아래로 드래그한다. 충돌 창은 covered cell 한 개의 상반기 값을 보여 주며, 같은 깨끗한 fixture에서 두 결과를 각각 실행해 비교한다.

내용 합쳐 병합은 anchor 값을 상반기<br>상반기로 바꾸고 covered cell을 비운 뒤 2행 span overlay를 저장한다.

다른 셀 내용 삭제는 anchor의 첫 상반기만 남기고 covered cell 값을 비운 뒤 같은 2행 span overlay를 저장한다.

취소는 원문과 projection profile을 모두 바꾸지 않는다. 어떤 값을 보존할지 확신할 수 없으면 먼저 취소하고 Source 또는 History에서 두 행을 비교한다.
5. 병합을 해제한다
병합 영역을 선택하고 셀 메뉴 또는 info zone에서 병합 해제를 실행한다. 해제는 overlay를 제거하지만, 병합할 때 이미 합치거나 삭제한 Markdown 값까지 자동으로 되살리지는 않는다.
병합을 취소하려는 목적이라면 병합 해제보다 병합 직후 Ctrl+Z가 정확하다. Glif는 covered cell의 Markdown 값 변경과 merge overlay를 하나의 history action으로 기록하므로, undo 한 번으로 값과 span을 함께 되돌린다.
- 병합 직후 결과를 확인한다. 아래 실증에서는 anchor가
상반기<br>상반기가 되고 첫 셀이 두 행을 차지한다. - 다른 편집을 하기 전에 editor에 focus를 두고
Ctrl+Z를 누른다. - anchor가 다시
상반기하나가 되고, covered row의 첫 셀에도상반기가 돌아왔는지 확인한다. - 렌더형 표에서 첫 셀의 2행 span이 사라지고 두 개의 독립된 1행 셀이 보이는지 확인한다.
- 필요하면
Ctrl+Shift+Z로 병합을 다시 적용해 redo 경계도 확인한다.


다음 4.2초 영상은 실제 내용 합쳐 병합 선택 뒤 Ctrl+Z를 입력한다. 실행 전·복구 후 Markdown 전체가 정확히 같고, 렌더된 첫 셀도 rowspan 2 → 1로 돌아왔다.
6. 병합된 표의 구조를 바꾼다
병합 영역과 교차하는 행·열 추가, 삭제, 복제, 이동은 source와 profile 좌표를 동시에 바꾼다. Glif가 안전한 remap을 증명할 수 있는 작업만 허용한다.
- 삽입으로 병합 span을 안전하게 확장할 수 있으면 적용될 수 있다.
- 병합을 둘로 찢거나 covered value를 잃는 삭제·복제·reorder는 차단될 수 있다.
- Markdown rewrite나 profile write 중 하나라도 실패하면 action을 적용하지 않거나 원문을 rollback한다.
차단 메시지가 나오면 먼저 병합을 해제하고 구조를 바꾼 뒤 새 좌표에서 다시 병합하는 순서가 가장 명확하다.
7. 열 너비와 줄무늬를 함께 확인한다
열 너비와 zebra 표시도 table presentation profile에 저장된다. 기존 mdtable comment가 있는 문서를 처음 수정하면 profile로 migration될 수 있다. 병합 후 열 너비가 예상과 다르면 표·차트 설정 경계에서 해당 열을 auto로 돌린 뒤 고정 폭을 다시 설정한다.
- legacy migration 예제를 복사해 연다.
- 가운데 정렬, 두 번째 열
160px, 줄무늬가 기존 comment에서 읽혔는지 확인한다. - 두 번째 열 셀을 선택하고 info zone의 고정 열 너비를
240px로 바꾼다. - 줄무늬가 유지되고 두 번째 열만 넓어졌는지 확인한다.
- Source로 돌아가 표 값과 정렬 separator는 남고
mdtablecomment가 제거됐는지 확인한다. .glifprojection profile에 문서 참조,240,"zebra": true가 함께 저장됐는지 확인한다.




열 너비와 줄무늬는 Markdown portability를 해치지 않도록 profile에 함께 저장된다. 원문 표를 다른 앱에서 열면 값과 정렬은 유지되지만 Glif 전용 고정 폭과 줄무늬는 적용되지 않을 수 있다.
실패와 복구
| 증상 | 의미 | 복구 |
|---|---|---|
| 병합 action이 없음 | 한 셀만 선택했거나 비직사각형 선택 | 두 셀 이상을 직사각형으로 다시 선택 |
| 값 충돌 dialog가 열림 | covered cell에 값 존재 | 합치기·삭제·취소 중 의도에 맞는 선택 |
| 행·열 이동이 차단됨 | span remap이 안전하지 않음 | 병합 해제 → 구조 변경 → 재병합 |
Ctrl+Z가 다른 편집부터 되돌림 |
병합 뒤 다른 source action을 실행함 | 병합 action까지 순서대로 undo하거나 History에서 revision 확인 |
| 병합 해제 뒤 값이 안 돌아옴 | 병합 해제는 overlay만 제거하며 병합 때 바뀐 원문 값은 복원하지 않음 | History revision에서 값 복구 |
| 다른 앱에서 병합이 안 보임 | 병합은 Glif projection overlay | Markdown 원문은 정상이며, 병합 없는 표로 공유하거나 Glif output 사용 |
완료 체크
- 직사각형 선택과 비연속 선택을 각각 만들었다.
- 비연속 선택에서 병합 action이 제공되지 않는 이유를 확인했다.
- 값 충돌의 합치기·삭제·취소와 원문 영향을 비교했다.
- 빈 셀 병합과 병합 해제를 실행했다.
- 현재 빌드의 undo 검증 대기 경계와 History 복구 절차를 이해했다.