마크다운 PDF 페이지 나누기: 원하는 위치에서 정확히 새 페이지 시작하기

작성 pdftomd.tools 팀 · 업데이트 · 6분 분량

마크다운에는 페이지 나누기 문법이 없습니다. PDF에서 페이지를 나누려면 대신 HTML 한 줄을 넣습니다. <div style="page-break-after: always"></div>를 쓰고 위아래에 빈 줄을 하나씩 두면 됩니다. 저희 마크다운 PDF 변환 도구를 포함해 HTML 기반 내보내기 도구는 그 자리에서 새 페이지를 시작합니다. Pandoc의 LaTeX 경로라면 \newpage를 쓰세요. 그다음 PDF에 빈 페이지가 생기지 않았는지 확인하세요.

일러스트: 나란히 놓인 두 페이지 사이의 점선 페이지 나누기와 새 페이지를 가리키는 화살표

마크다운에 페이지 나누기가 없는 이유

마크다운은 웹을 위해 만들어졌고, 웹 페이지에는 쪽이 없습니다. 원래 문법도 CommonMark도 페이지 나누기를 정의하지 않습니다. 가장 비슷한 것은 하이픈 세 개 ---로 된 주제 구분선인데, 이건 새 페이지가 아니라 <hr> 가로줄이 됩니다. 많은 사람이 이걸 먼저 페이지 나누기로 써 보고 왜 아무 일도 안 일어나는지 의아해합니다.

대신 마크다운은 HTML을 그대로 쓰는 것을 허용합니다. 대부분의 내보내기 도구는 마크다운을 먼저 HTML로 바꾼 뒤 그 HTML을 PDF로 인쇄합니다. 그러니 페이지 나누기는 사실상 HTML 요소에 붙인 CSS 규칙입니다. 예외는 Pandoc의 기본 경로로, LaTeX를 거치기 때문에 LaTeX 명령을 기대합니다.

실제로 동작하는 페이지 나누기 코드

사용하는 내보내기 도구에 맞는 줄을 골라 한 줄에 단독으로 쓰고, 앞뒤에 빈 줄을 두세요. 그래야 마크다운 파서가 HTML 블록으로 처리합니다.

Last paragraph of the first part.

<div style="page-break-after: always"></div>

## Part two

This heading starts a new page.
저희가 아는 모든 HTML 기반 내보내기 도구가 이해하는 예전 속성 이름입니다.
  • 최신 CSS: <div style="break-after: page"></div>, 또는 페이지를 시작할 요소에 break-before: page.
  • 제목에 바로: 제목을 HTML로 써도 괜찮다면 <h2 style="page-break-before: always">2부</h2>.
  • VS Code 확장 Markdown PDF: README에는 <div class="page"/>가 나와 있고, 확장의 스타일시트가 페이지를 나눕니다. VS Code에서 흔히 쓰는 방법이며, 위의 인라인 스타일도 그대로 동작합니다.
  • Pandoc + LaTeX(PDF의 기본 경로): \newpage 한 줄. raw_tex 확장은 이 줄을 LaTeX와 ConTeXt writer에만 그대로 넘깁니다. Pandoc의 newpage 명령은 HTML 출력용이 아니므로, PDF에 HTML 엔진을 쓴다면 div를 쓰세요.

왜 이름이 두 개일까요? CSS 조각화 명세는 page-break-before와 page-break-after를 break-before와 break-after로 바꾸면서 예전 이름을 별칭으로 남겼습니다. page-break-after: always는 break-after: page와 똑같이 동작합니다. 오래된 도구에서는 예전 형식이 더 안전하며, MDN에 둘 다 문서화되어 있습니다.

“주 상자의 앞/뒤에서 항상 페이지 나누기를 강제한다.”
W3C, CSS Fragmentation Module Level 3, page 값의 정의 (번역)

저희 내보내기 도구가 수동 페이지 나누기를 처리하는 방식

2026년 10월 19일까지 저희 도구는 수동 페이지 나누기를 무시하고 모든 나눔 위치를 직접 정했습니다. 지금은 렌더링된 문서의 각 요소에서 계산된 break-before와 break-after 값을 읽기 때문에, style 속성에 넣은 CSS 페이지 나누기를 예전 표기와 새 표기 모두 지킵니다. 실시간 미리보기는 새 페이지가 시작되는 곳에 '페이지 나누기'라는 점선을 그리고, 내보낸 뒤에는 수동 나누기가 몇 개 적용되었는지 알려 줍니다.

스크린샷: 저희 편집기의 페이지 나누기. 왼쪽에 div, 오른쪽 미리보기에 점선 표시
스크린샷: 원본의 페이지 나누기 줄과 미리보기의 점선 표시.

출력을 깔끔하게 유지하는 규칙 몇 가지:

  • 문서 맨 처음이나 맨 끝의 페이지 나누기는 무시하므로, 첫 페이지나 마지막 페이지가 비는 일은 없습니다.
  • 연속된 두 개의 나누기는 하나로 칩니다. Chrome은 그 사이에 빈 페이지를 인쇄하지만, 그걸 원하는 경우는 드물다고 봅니다.
  • left, right, recto, verso 값은 새 페이지를 시작합니다. 왼쪽이나 오른쪽 페이지에 맞추려고 빈 페이지를 넣지는 않습니다.
  • ---는 마크다운 정의대로 가로줄로 남습니다.
  • 긴 구간 안에서는 여전히 자동 나누기가 적용되고, 한 줄이나 표의 행, 이미지가 잘리지 않게 합니다.
스크린샷: 내보낸 PDF 두 페이지. 1쪽에 짧은 요약, 2쪽 맨 위에서 부록 표가 시작됨
스크린샷: 위 예시로 내보낸 PDF. 부록이 2쪽에서 시작합니다.

테스트 내용과 Chrome 인쇄와의 비교

페이지 나누기 표기법을 하나씩 시험하는 작은 문서 9개를 만들고, 실제 PDF 다운로드 버튼으로 내보낸 뒤 pdfinfo와 pdftotext로 다시 읽어 어떤 텍스트가 몇 쪽에 들어갔는지 확인했습니다. 기준으로 같은 HTML을 Chrome의 PDF 프린터로도 출력했습니다. 테스트에서 9개 사례 모두 빈 페이지 없이 예상한 페이지가 나왔고, 9개 중 8개가 Chrome과 쪽마다 일치했습니다.

저희 내보내기 도구의 수동 페이지 나누기 vs Chrome에서 PDF로 인쇄, 저희 테스트 기준 (2026년 10월 19일)
마크업저희 페이지 수Chrome 페이지 수빈 페이지(저희)예상 결과Chrome과 비교
<div style="page-break-after: always">220예같음
<div style="break-before: page">220예같음
<div style="break-after: page">220예같음
<h2 style="page-break-before: always">220예같음
페이지 나누기 뒤에 마크다운 제목220예같음
페이지 나누기 div 두 개 연속230예다름
문서 맨 처음과 맨 끝의 페이지 나누기110예같음
--- (마크다운 구분선)110예같음
수동·자동 페이지 나누기 혼합440예같음
유일한 차이는 연속된 두 나누기입니다. Chrome은 빈 페이지를 넣고 저희 도구는 넣지 않습니다. 내보낸 PDF를 다시 마크다운으로 변환하면 제목과 본문이 그대로 돌아왔습니다.

제목을 본문과 함께 두기, 그리고 다른 어색한 나눔

수동 나누기는 내가 아는 위치를 해결합니다. 나머지는 내보내기 도구 몫인데, 대표적인 실수가 제목만 페이지 맨 아래에 남고 본문은 다음 쪽에서 시작하는 경우입니다. 워드프로세서에서는 이 해결책을 '다음 단락과 함께'라고 부릅니다. CSS에서는 제목에 break-after: avoid를 주는 것이 해당 규칙이지만, 인쇄할 때 avoid 값 지원은 엔진마다 다르니 믿기 전에 테스트하세요.

일러스트: 왼쪽은 페이지 맨 아래에 혼자 남은 제목, 오른쪽은 다음 페이지 맨 위로 옮겨진 같은 제목
왼쪽: 혼자 남은 제목. 오른쪽: 제목이 본문과 함께 다음 페이지로 이동.

저희 도구는 별도 마크업 없이 이렇게 처리합니다. 제목은 바로 뒤 첫 줄과 함께 붙어 있고, 표의 행과 이미지는 한 페이지에 들어가면 나누지 않습니다. 그래도 페이지가 끝나는 위치가 마음에 들지 않으면 제목 바로 앞에 수동 페이지 나누기를 넣으세요. 아래 그림은 나눔이 들어갈 수 있는 곳과 없는 곳을 보여 줍니다.

일러스트: 블록 사이에 나눔이 허용되는 점선, 표 안에 나눔이 금지되는 빨간 표시가 있는 페이지
나눔은 블록 사이(파란색)에는 들어갈 수 있지만, 한 줄이나 표의 행 중간(빨간색)에는 들어가지 않습니다.

표는 특히 주의가 필요합니다. 표 인쇄 가이드에서 길고 넓은 표를 다루며, 실제 문서 전에 MD PDF 변환으로 짧게 내보내 보는 것이 레이아웃을 시험하는 가장 빠른 방법입니다.

페이지 나누기에서 흔한 실수

페이지 나누기가 아무 효과가 없다면 원인은 거의 항상 다음 네 가지 중 하나입니다.

  • div 뒤에 빈 줄이 없음. CommonMark에서 <div>로 시작하는 HTML 블록은 다음 빈 줄까지 이어집니다. 바로 아래 텍스트가 HTML에 흡수되어 서식 없이, ##와 **가 문자 그대로 보이게 됩니다.
  • div가 목록, 인용, 표 안에 있음. 문서의 최상위 수준에 두어야 어떤 도구든 독립된 블록으로 인식합니다.
  • HTML이 꺼져 있음. 일부 렌더러는 기본적으로 HTML을 끄고 태그를 텍스트로 보여 줍니다. 설정에서 HTML을 켜거나, 도구에 자체 페이지 나누기 문법이 있으면 그것을 쓰세요.
  • 미리보기만 보고 판단. HTML을 정리하는 미리보기는 인라인 스타일을 지우는 경우가 많아서, 화면에서는 나누기가 없어 보여도 내보내면 동작합니다. 저희 미리보기는 점선을 보여 주지만, 진짜 확인은 내보낸 파일로 하세요.

도움이 되는 습관이 하나 더 있습니다. 수동 나누기는 새 페이지에서 시작할 구간의 제목 바로 위에 두고, 절대 아래에 두지 마세요. 그러면 제목과 첫 문단이 늘 함께 있고, 나중에 나누기를 지워도 문서가 올바른 순서로 읽힙니다.

PDF를 공유하기 전 빠른 점검

  1. 모든 페이지를 넘겨 보며 빈 페이지를 찾으세요. 대개 나누기가 연속으로 두 개 있거나 문서 끝에 나누기가 있다는 뜻입니다.
  2. 각 구간이 제목부터 페이지 맨 위에서 시작하는지 확인하세요.
  3. 마지막 페이지의 단어를 검색해 텍스트 레이어가 진짜인지 확인하세요.
  4. 양면 인쇄를 하고 장이 오른쪽 페이지에서 시작해야 한다면 break-before: right를 지원하는 도구를 쓰세요. 저희 도구는 일반 새 페이지로 처리합니다.

자주 묻는 질문

마크다운에서 PDF용 페이지 나누기는 어떻게 넣나요?

마크다운에는 그런 문법이 없습니다. <div style="page-break-after: always"></div> HTML 한 줄을 앞뒤 빈 줄과 함께 넣으면, HTML 기반 PDF 내보내기 도구가 그 자리에서 새 페이지를 시작합니다.

`---`로 페이지가 나뉘나요?

아니요. 하이픈 세 개는 주제 구분선이 되어 가로줄로 표시됩니다. PDF에서도 줄로 남습니다.

page-break-after와 break-after 중 무엇을 써야 하나요?

둘 다 됩니다. break-after: page가 현재 CSS 이름이고 page-break-after: always는 예전 별칭입니다. 오래된 도구에서는 예전 것이 조금 더 안전하며, 저희 도구는 둘 다 읽습니다.

Pandoc에서는 페이지 나누기를 어떻게 넣나요?

LaTeX를 거쳐 PDF를 만든다면 \newpage를 한 줄에 단독으로 쓰세요. HTML을 거쳐 PDF를 만든다면(예: HTML 엔진 사용) CSS div를 쓰세요. LaTeX 명령은 LaTeX와 ConTeXt writer에만 전달됩니다.

왜 빈 페이지가 생겼나요?

보통 나누기가 연속으로 두 개 있거나 문서 맨 끝에 나누기가 있기 때문입니다. Chrome은 두 경우 모두 빈 페이지를 인쇄하지만, 저희 도구는 건너뜁니다.

모든 H2를 새 페이지에서 시작할 수 있나요?

사용자 CSS를 받는 도구라면 스타일시트에 h2 { break-before: page; }를 넣으면 됩니다. 저희 편집기에서는 각 H2 앞에 div 줄을 넣거나, 제목을 <h2 style="page-break-before: always">로 쓰세요.