Skip to content

다단: 마지막 단 단나누기 시 같은 페이지 새 단-밴드 (배분 단 한정) — #846 + #849#851

Closed
planet6897 wants to merge 8 commits into
edwardkim:develfrom
planet6897:pr-task846-849
Closed

다단: 마지막 단 단나누기 시 같은 페이지 새 단-밴드 (배분 단 한정) — #846 + #849#851
planet6897 wants to merge 8 commits into
edwardkim:develfrom
planet6897:pr-task846-849

Conversation

@planet6897
Copy link
Copy Markdown
Contributor

개요

다단(2단 이상) zone 의 마지막 단에서 명시적 단나누기([단나누기])를 만났을 때, 새 페이지가 아니라 같은 페이지에 새 단-밴드를 시작하도록 한다 (≈ 닫힌 #768). 단, 이는 단 유형이 "배분"(Distribute) 인 zone 에서만 — "일반"(Normal/신문형) 단은 기존대로 새 페이지로 간다.

local/task846 (#846, 신규 동작) + local/task849 (#849, 배분 단 한정 게이트 + 회귀 해소) 를 묶은 PR.

closes #846
closes #849

변경 내용

  • src/renderer/typeset.rs:
    • start_new_column_band(...) 추가 — 마지막 단 명시적 단나누기 시: flush_column → 다음 밴드 콘텐츠에 떠다니는(글자처럼 취급 아닌) 표·그림·그리기 개체가 있으면 새 페이지, 아니면 직전 밴드 높이만큼 zone_y_offset 진행 후 같은 페이지에 새 밴드 (들어갈 공간이 있을 때; 없으면 새 페이지).
    • paginateColumnBreakType::Column 경로: 마지막 단 + col_count > 1 + current_zone_column_type == ColumnType::Distribute 일 때만 start_new_column_band 호출. 그 외(Normal/Parallel zone, 비-마지막 단)는 기존 advance_column_or_new_page 유지.
    • process_multicolumn_break 는 변경 없음 ([다단나누기] 동작 보존).
  • mydocs/plans|working|report/task_m100_846*.md, task_m100_849*.md: 수행/구현 계획서, 단계별 보고서, 최종 보고서.

효과 / 검증

샘플 한컴 PDF base(devel) 본 PR
basic/shortcut.hwp 7 (2022) 8 7 ✅ (pi=94/95 <편집 화면 분할에서> | 화면 이동 ⟶ Ctrl+W,N 가 페이지 4 → 페이지 3)
exam_math.hwp (신문형 다단) 20 20 20 (무변화)
21_언어_기출_편집가능본.hwp 15/16 15 15 (무변화)
그 외 다단 샘플 (exam_eng/kor/science/social, k-water-rfp, biz_plan, hwpspec, hwp-3.0-HWPML, aift, treatise, interview, issue-505-equations …) 무변화
  • SVG 바이트 비교(export-svg): shortcut.hwp 페이지 3~7 변화 + 페이지 8 제거(8→7페이지). 그 외 다단 샘플 전 페이지 base 와 바이트 동일.
  • cargo test --lib: 1232 passed, 0 failed.
  • cargo clippy --lib: 신규 경고 0.

Test plan

  • cargo test
  • cargo clippy
  • rhwp export-svg samples/basic/shortcut.hwp — 페이지 3 하단에 <편집 화면 분할에서> / 화면 이동 ⟶ Ctrl+W,N 2단 밴드 정상 표시, 총 7페이지
  • rhwp dump-pages samples/exam_math.hwp -p 0 — 20페이지 (회귀 없음)

🤖 Generated with Claude Code

planet6897 and others added 8 commits May 12, 2026 16:49
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…같은 페이지 새 단-밴드, ≈ edwardkim#768)

shortcut.hwp 8→7페이지(한컴 PDF 정합), pi=94/95 페이지 3 이동.
exam_math 18→11(PDF 20) 회귀 — 다단 밴드 높이 과소추정(인라인 수식·도형 박스
미반영)이 노출됨 → 선행 이슈 edwardkim#849 로 분리, 그 처리 후 합류 예정. cargo test 3건 실패 상태.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…트 누락 (구현계획 v2 간소화)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
…단으로 한정 (신문형 단 회귀 해소)

edwardkim#846 회귀(exam_math 18→11, 21언어 콘텐츠 시프트) 해소. exam_math 20페이지(PDF 정합),
shortcut 7페이지 유지, cargo test 전건 통과.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
… cargo test 1232 통과)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
edwardkim pushed a commit that referenced this pull request May 13, 2026
PR #851 (@planet6897) GitHub diff 기반 cherry-pick.
mydocs 거버넌스 산출물 제외 (PR #629 패턴 정합).

typeset.rs start_new_column_band() 추가:
- 마지막 단 명시적 단나누기 시 같은 페이지 새 단-밴드 시작
- 배분(Distribute) 단에서만 적용, 일반(Normal/신문형) 단은 기존대로 새 페이지
- 떠다니는 개체가 있으면 새 페이지로 fallback

효과: shortcut.hwp 8→7페이지 (한컴 2022 PDF 정합)
회귀: 다른 다단 샘플 전부 무변화

검증:
- cargo test --release --lib: 1246 passed (회귀 0)
- SVG before/after: 8→7페이지 확인
- 시각 판정 ★ 통과

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@edwardkim
Copy link
Copy Markdown
Owner

검토 + cherry-pick 머지 완료. 감사합니다.

처리 결과

재검증

검증 결과
cargo test --release --lib 1246 passed (회귀 0)
SVG before/after shortcut.hwp 8→7페이지 (한컴 2022 PDF 정합)
다단 샘플 회귀 exam_math 등 전부 무변화
시각 판정 ★ 통과

배분 단 한정 게이트(#849)로 신문형 다단 회귀를 차단한 설계가 좋습니다. 수고하셨습니다.

@edwardkim edwardkim closed this May 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants