아름다운 조판

같은 내용을 썼는데도 LaTeX으로 조판한 문서는 어쩐지 «제대로 된 책»처럼 보입니다. 그 이유의 대부분은 단 하나의 숫자, \textwidth345pt로 모입니다. 표준 article 클래스는 용지가 A4든 US 레터든 본문 폭을 여기서 끊고, 남은 몫을 전부 여백으로 돌립니다. 실제로 재어 보면 한 줄은 약 75자입니다. 조판의 고전이 «이상은 66자»라고 말하는 값보다 조금 넓지만, 그 넓음에는 이유가 있습니다. 이 페이지에서는 LaTeX의 겉모습을 결정하는 숫자들을 직접 측정하면서, 내 문서가 아마추어처럼 보이는 원인과 고치는 방법을 차례로 살펴봅니다.

한 줄에 몇 자가 좋은가 — 기본 article을 실측하다

TeX Live 2024에서 \documentclass[a4paper]{article}\lipsum[1-12]를 흘려 넣고, 나온 PDF에서 텍스트를 뽑아 세어 보면 한 줄 평균 75.1자였습니다(99행, 최장 85자). 조판의 고전인 로버트 브링허스트의 『The Elements of Typographic Style』(1992년)은 통용되는 기준을 이렇게 적습니다. 1단 본문에서는 45~75자가 만족스러운 행 길이이고, 66자가 이상적으로 여겨진다. 즉 기본 article은 허용 범위의 위쪽 끝에 아슬아슬하게 서 있습니다. 읽기 어려운 것은 아니지만, 첫 번째 개선 여지가 바로 여기에 있습니다.

본문 폭실측 한 줄 글자 수평가
250pt54.5좁음. 각주·방주나 2단 조판의 한 단 폭
280pt61.3쾌적함. 이상적인 66에는 조금 못 미침
305pt약 66고전이 이상으로 삼는 행 길이. 긴 읽을거리에 적합
320pt69.9아직 허용 범위. 논문 본문에서 흔한 폭
345pt74.5article의 기본값. 허용 범위의 상단
400pt85.8눈이 다음 행의 첫머리를 놓치기 시작함
450pt93.7geometry로 여백을 줄인 문서에서 흔한 실패

브링허스트는 도구 없이 재는 방법도 함께 전합니다. 본문 서체로 소문자 a부터 z까지를 이어 붙여 조판하고, 그 폭(알파벳 길이)을 자로 삼아 한 줄이 2~3 알파벳이면 된다는 것입니다. \settowidth로 실제로 재면 10pt Computer Modern에서 a–z는 127.58pt입니다. 345pt는 그 2.70배이므로 이 잣대로도 «상한에 가깝지만 범위 안»이 되어, 글자 수로 센 결과와 일치합니다. 기분 좋은 점은 같은 사고방식을 옮겨 쓸 수 있다는 것입니다. 전각 기준으로 한 줄 35~45자 안팎이 읽기 좋다는 한국어·일본어의 경험칙은, 이 «2~3 알파벳»을 다른 문자로 말한 것에 지나지 않습니다.

latex
% narrow the measure toward the classic 66 characters per line
\usepackage[a4paper,textwidth=305pt]{geometry}

% or keep A4 and state the margins instead
\usepackage[a4paper,margin=45mm]{geometry}

흥미로운 것은 본문 크기를 키워도 글자 수는 거의 변하지 않는다는 점입니다. 같은 실측을 11pt와 12pt로 되풀이하면 \textwidth는 360pt·390pt로 넓어지는 반면, 한 줄은 70.1자와 70.0자입니다. 즉 표준 클래스는 크기를 키울 때 폭도 함께 넓혀, 글자 수로 센 행 길이를 거의 일정하게 유지합니다. 게다가 그 값은 10pt일 때보다 이상적인 66에 더 가깝습니다. 가독성이 고민이라면 geometry에 손을 대기 전에 [11pt]를 먼저 시험해 보는 것이 가장 값싼 한 수입니다.

article의 여백이 지나치게 넓어 보이는 이유

답은 «여백을 넉넉히 잡았기» 때문이 아니라, 본문 폭을 먼저 못 박고 남은 몫을 전부 여백으로 돌리기 때문입니다. 표준 클래스의 치수를 정하는 size10.clo는 용지 폭에서 좌우 1인치씩을 뺀 값과 345pt를 비교해 더 작은 쪽을 \textwidth로 삼습니다. A4(597.51pt)든 US 레터(614.30pt)든 이 뺄셈의 결과는 345pt를 넘으므로, 어느 용지에서나 본문 폭은 정확히 345pt가 됩니다. 종이가 커지면 늘어나는 것은 여백뿐입니다. «A4는 여백이 넓다»는 말의 정체가 이것입니다.

latex
% size10.clo (LaTeX 2024): the measure is a hard cap, not a fraction of the page
\setlength\@tempdima{\paperwidth}
\addtolength\@tempdima{-2in}
\setlength\@tempdimb{345\p@}
\ifdim\@tempdima>\@tempdimb\relax
  \setlength\textwidth{\@tempdimb}   % A4 and US Letter both land here
\else
  \setlength\textwidth{\@tempdima}
\fi

여기서 널리 퍼진 오해 하나를 바로잡아 두겠습니다. «345pt는 레터 크기에 맞춘 값이라 A4에는 맞지 않는다»는 설명을 보게 되지만, 코드는 용지를 보지 않습니다. 상한 자체가 용지와 무관하므로 A4와 레터의 본문 폭은 동일합니다. 오히려 비율로 보면 여백이 넓은 쪽은 레터입니다. 용지 폭에서 여백이 차지하는 비율은 A4가 42.3%, 레터가 43.8%입니다. 그리고 345pt가 답답하게 느껴진다면 비교 대상을 잘못 고른 것입니다. 커누스의 plain TeX 기본값은 \hsize=6.5in, 곧 469.75pt로, 같은 방식으로 재면 한 줄이 90자를 넘습니다. LaTeX은 거기서 4분의 1 이상을 덜어내 345pt로 내렸습니다. 넓은 여백은 손을 놓은 결과가 아니라, 행 길이를 가독성 쪽으로 되당긴 판단의 부산물이었습니다.

파일에는 흥미로운 화석도 남아 있습니다. size10.clo에는 옛 LaTeX 2.09와의 호환 모드를 위한 갈래가 있고, 거기에는 계산 없이 \setlength\textwidth{345\p@}라고 그대로 적혀 있습니다. 345라는 수는 본래 상수였고, 용지를 보고 상한으로 쓰는 장치는 나중에 덧씌워진 것입니다. 그래서 실무의 판단은 이렇게 됩니다. 여백을 줄이고 싶을 때 \textwidth를 맨손으로 넓히지 마세요. 넓히면 본문 폭이 그대로 행 길이가 되어 위 표의 400pt·450pt 줄로 떨어집니다. 공간이 필요하다면 geometry여백 쪽을 지정하고, 행 길이는 66~75자 띠에 둔 채 위아래 여백을 깎는 것이 정석입니다.

한 줄만 더해도 겉모습이 달라진다 — microtype

\usepackage{microtype} 한 줄은 이 페이지의 어떤 수단보다 비용 대비 효과가 큽니다. 11pt article, T1 인코딩, 행 길이 180pt, \lipsum 100개 단락이라는 조건으로 실측하면 행을 넘친 상자(overfull hbox)가 128개에서 15개로 줄고, 그러면서도 쪽수는 43에서 42로 한 쪽 줄었을 뿐이었습니다. 문서를 억지로 줄이는 것이 아니라는 뜻입니다. 구두점을 종이 가장자리 밖으로 머리카락만큼 내밀고(protrusion), 글자 폭을 1%도 안 되는 범위에서 늘이고 줄여서(font expansion) 단어 사이 간격의 기복을 평평하게 만들고, 그 결과 손으로 고쳐야 했을 자리가 사라져 갑니다. 원리는 전용 페이지에 넘기고, 여기서는 넣지 않을 이유가 거의 없다는 점만 말해 둡니다.

latex
\documentclass[11pt,a4paper]{article}
\usepackage[T1]{fontenc}   % load this before microtype
\usepackage{microtype}
\usepackage[textwidth=320pt]{geometry}

서체를 몇 개까지 써도 되는가 — 절제가 가장 크게 작용한다

실무의 답은 많아야 셋입니다. 본문에 하나, 제목에 같은 것이거나 의도적으로 짝지은 하나, 코드에 고정폭 하나입니다. 아마추어처럼 보이는 문서는 대개 둘 중 하나에서 무너집니다. 행이 너무 길거나, 서체가 너무 많거나. 뒤쪽이 알아보기 쉽습니다. 본문 하나, 제목 또 하나, 강조에 또 하나, 그림 설명에 또 하나 하는 식이지요. LaTeX의 기본 Computer Modern은 커누스가 직접 설계한 서체로, 가는 획과 높은 대비가 특징입니다. 품위 있어 보이지만 획이 가는 만큼 거친 인쇄나 작은 화면에서는 야위어 보일 수 있습니다. 바꾼다면 lmodern(Computer Modern의 윤곽을 정리한 후계), libertinus, newtx가 무난한 후보이며, 모두 본문·제목·수식을 한 벌로 갖춥니다. 서체를 바꿀 때는 수식 서체도 함께 바꾸세요. 본문만 바꾸고 수식을 Computer Modern에 남겨 두는 것이 가장 흔한 사고입니다.

들여쓰기냐 단락 사이 여백이냐 — 둘 다 하면 아마추어로 보인다

단락의 경계를 표시하는 방법은 둘이고, 관례는 둘 중 하나만 고르는 것입니다. 표준 클래스의 기본은 «들여쓰기, 단락 사이 여백 없음»입니다. 실측하면 \parindent는 10pt에서 15pt, 11pt에서 17pt, 12pt에서 17.62pt이고, \parskip0pt plus 1pt — 즉 여백 자체는 0이고 쪽 나누기 조정용 신축분만 조금 지니고 있습니다. 그런데 «단락 사이가 답답해 보인다»고 느낀 사람이 \setlength{\parskip}{1em}만 더하면 들여쓰기와 여백이 동시에 작동해 경계가 두 번 주장되고, 읽는 이의 눈에 걸립니다. 여백으로 나누고 싶다면 \setlength{\parindent}{0pt}를 반드시 함께 쓰거나, 양쪽을 다 돌봐 주는 parskip 패키지를 읽어 들이세요.

latex
% pick ONE of these two, never both by accident
% (a) indent, no vertical space -- the standard-class default, nothing to write
% (b) vertical space, no indent:
\usepackage{parskip}

한 가지 더, 행간도 짚어 둡니다. 표준 클래스의 \baselineskip은 10pt에서 12pt, 11pt에서 13.6pt, 12pt에서 14.5pt로, 대략 글자 크기의 1.2배입니다. 행 길이만 넓히고 행간을 그대로 두면 눈이 다음 행의 첫머리로 돌아오지 못합니다. 둘을 한 쌍으로 생각하세요. 행을 길게 하면 행간도 넓혀야 하고, 반대로 행간을 좁히려면 행 길이도 함께 좁혀야 합니다. (제출 규정이 «1.5행 간격» 같은 것을 요구할 때의 구체적인 조작은 줄 간격 페이지가 가지고 있습니다.) 단락이 아마추어로 보이느냐 장인의 것으로 보이느냐는, 거의 언제나 이 셋의 조합 — 행 길이, 행간, 단락 경계를 표시하는 방식 — 으로 갈립니다.

건드리면 안 되는 것 — \vspace\\로 고치지 않기

여기까지의 조정은 모두 전처리부(프리앰블)에서 한 번만 하는 것이었습니다. 반대로 본문 중간에 \vspace{1cm}을 넣어 그림 위치를 밀거나, \\로 행을 갈라 제목 모양을 다듬는 식의 땜질은 피하세요. 이유는 미의식이 아니라 역학입니다. LaTeX의 줄 나누기와 쪽 나누기는 문서 전체를 보고 최적의 접는 자리를 찾으므로, 한 곳을 손으로 고정하면 그 뒤의 단락과 쪽이 통째로 밀립니다. 마감 직전에 한 곳을 고치면 다른 곳이 깨지는 그 소모가 여기서 생깁니다. 본문에는 구조를 쓰고, 겉모습은 전처리부에서 정한다. 이 분업을 지키는 한 수정은 언제나 한 곳으로 끝납니다.

정리하면 순서는 이렇습니다. 먼저 행 길이를 66~75자 띠에 넣습니다([11pt]geometrytextwidth). 다음으로 microtype 한 줄을 더합니다. 서체를 바꾼다면 본문과 수식을 함께 바꿉니다. 단락은 들여쓰기와 여백 중 하나로 정합니다. 이 넷이면 대개의 문서는 «LaTeX으로 조판한» 문서를 넘어 «읽히기 위해 조판한» 문서가 됩니다. 남은 미세 조정은 본문이 아니라 전처리부에서, 그것도 맨 마지막에 몰아서 하세요.