美しい組版

同じ内容を書いたのに、LaTeX で組んだ文書はなぜか「それらしく」見えます。理由の大半はたった一つの数——\textwidth345pt に集約されます。標準の article クラスは、用紙が A4 だろうと US レターだろうと本文の幅をここで打ち止めにし、余った分をすべて余白に回します。実測すると 1 行はおよそ 75 文字。組版の古典が「理想は 66 文字」と言う値からは少しはみ出しますが、はみ出し方には理由があります。このページでは、LaTeX の見た目を決めている数字を実際に測りながら、あなたの文書が素人っぽく見える原因と、その直し方を順に見ていきます。

1 行は何文字がよいのか——既定の article を実測する

TeX Live 2024 で \documentclass[a4paper]{article}\lipsum[1-12] を流し込み、出力 PDF からテキストを抜いて数えると、1 行あたり平均 75.1 文字(99 行、最長 85 文字)でした。組版の古典であるロバート・ブリングハーストの『The Elements of Typographic Style』(1992 年)は、1 段組の本文では 45〜75 文字が満足のいく行長で、66 文字が理想とされる、と書いています。つまり既定の article は「許容範囲の上端ぎりぎり」に立っています。読みにくいわけではない——けれど、あと一歩の余地はここにあります。

本文幅実測の 1 行あたり文字数評価
250pt54.5狭い。脚注や傍注、2 段組の 1 段分の幅
280pt61.3快適。理想の 66 にやや届かない
305pt約 66古典が理想とする行長。長文の読み物向き
320pt69.9まだ許容範囲。論文の本文でよく見る幅
345pt74.5article の既定。許容範囲の上端
400pt85.8行を追う目が戻り先を見失いはじめる
450pt93.7geometry で余白を詰めた文書にありがちな失敗

ブリングハーストはもう一つ、道具を使わずに測る方法も伝えています。本文の書体で小文字の a から z までを一続きに組み、その幅(アルファベット長)を物差しにして、1 行が 2〜3 アルファベット分であればよい、というものです。実際に \settowidth で測ると、10pt の Computer Modern では a–z が 127.58pt。345pt はその 2.70 倍 ですから、この見立てでもやはり「上限に近いが範囲内」となり、文字数で数えた結果と一致します。ここが気持ちよく効くのは、和文でも同じ考え方が使えることです。全角なら 1 行 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 に広がる一方、1 行あたりの文字数は 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(実測で 1 行 90 文字超)。LaTeX はそこから 4 分の 1 以上を削って 345pt に落としたのです。広い余白は手抜きの結果ではなく、行長を読みやすさの側へ寄せた判断の副産物でした。

面白い痕跡も残っています。size10.clo には旧 LaTeX 2.09 との互換モード用の枝があり、そこでは計算をせずに \setlength\textwidth{345\p@} と直書きされています。345 という数はもともと定数で、用紙に応じて上限として使う仕組みは後から被せられたわけです。だから実務上の判断はこうなります——余白を詰めたいときに \textwidth を素手で広げない。広げれば本文幅がそのまま行長になり、上の表の 400pt・450pt の行へ落ちます。詰めるなら geometry余白の側を指定し、行長は 66〜75 文字の帯に置いたまま、上下の余白を削るのが定石です。

一行足すだけで見た目が変わる——microtype

\usepackage{microtype} の 1 行は、費用対効果でいえばこのページで最大です。11pt の article、T1 エンコーディング、行長 180pt、\lipsum の 100 段落という条件で実測すると、行からはみ出した箱(overfull hbox)が 128 個から 15 個へ減り、しかも ページ数は 43 から 42 へ 1 ページ減っただけでした。つまり文書を無理に縮めているのではありません。約物を紙の端へごくわずかに追い出し(protrusion)、字形の幅を 1% にも満たない範囲で伸縮させる(font expansion)ことで、語間の伸び縮みが平らになり、手で直さなければならない箇所が消えていくのです。仕組みそのものは専用ページに譲りますが、入れない理由はまずありません。

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

書体をいくつ使ってよいか——抑制がいちばん効く

実務上の答えは 本文用に 1 つ、見出しに同じか対になる 1 つ、コード用に等幅 1 つ の、多くて三種類です。素人っぽく見える文書の典型は、行長が長すぎるか、書体が多すぎるかのどちらかで、後者は特に見分けがつきやすい——本文が明朝、見出しがゴシック、強調がまた別、図のキャプションがさらに別、といった具合です。LaTeX の既定 Computer Modern はクヌースが自分で設計した書体で、細い線と高いコントラストが特徴です。品よく見えますが、線が細いぶん、粗い印刷や小さな画面では痩せて見えることがあります。差し替えるなら lmodern(Computer Modern の輪郭を整えた後継)、libertinusnewtx あたりが手堅い候補で、いずれも本文・見出し・数式を一式で揃えられます。書体を替えるときは数式書体も一緒に替える——本文だけ替えて数式を Computer Modern のまま残すのが、いちばんよくある事故です。

字下げか、段落間の空きか——両方やると素人に見える

段落の切れ目を示す方法は二つあり、どちらか一方を選ぶのが作法です。標準クラスの既定は「字下げ、段落間の空きなし」で、実測すると \parindent は 10pt で 15pt、11pt で 17pt、12pt で 17.62pt。\parskip0pt plus 1pt——つまり素の空きはゼロで、ページ末の調整用にわずかな伸びだけを持っています。ところが「段落の間が詰まって見える」と感じた人が \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 を 1 行足す書体を替えるなら本文と数式をまとめて替える段落は字下げか空きのどちらか一方に決める。この四つで、たいていの文書は「LaTeX で組んだ」以上に「読ませるために組んだ」文書になります。残りの微調整は、本文ではなく前文で、しかも最後にまとめてやってください。