「ダブルスペース(二重行送り)で提出のこと」——投稿規定にそう書いてあるとき、それはタイプライターの寸法の話です。12 ポイントの活字を打つタイプライターは 1 行につき 12 ポイント紙を送り、ダイヤルを「2」にすると 24 ポイント送る。査読者が行間に赤を入れられるように、という実務から生まれた決まりでした。LaTeX で行間を広げる setspace パッケージは、この寸法を今でも忠実に再現します。ですから \doublespacing は行送りを 2 倍にする命令ではありません——文字サイズのちょうど 2 倍に合わせる 命令です。このページでは、\baselineskip という長さ、\linespread が効かない理由、そして setspace が実際に何ポイントを出しているのかを、すべて実測値で追います。
行間の正体は \baselineskip という長さ
LaTeX が言う行間とは、ある行の ベースライン(文字の下端がそろう見えない線)から次の行のベースラインまでの距離で、\baselineskip という長さに入っています。「文字と文字のすき間」ではなく「行の送り量」を測っている点が肝心で、だから字を大きくすれば送りも自動的に増えます。実測すると、article の 10pt では \baselineskip はちょうど 12.0pt、本文の幅 \textwidth は 345.0pt です。「行送りは文字サイズの 1.2 倍」という有名な目安は、この 10pt のときだけぴったり成り立ちます。
| クラスオプション | 実際の文字サイズ | baselineskip | 比 |
|---|---|---|---|
10pt | 10pt | 12.0pt | 1.200 |
11pt | 10.95pt(11pt ではありません) | 13.6pt | 1.242 |
12pt | 12pt | 14.5pt | 1.208 |
表の 2 行目に、知っておくと得をする事実が隠れています。11pt オプションが実際に選ぶ文字は 11pt ではなく 10.95pt です(\f@size を表示させると 10.95 と出ます)。Computer Modern の設計サイズがそうなっているためで、行送りだけは切りのよい 13.6pt に丸められています。あとで出てくる setspace の倍率が中途半端な数字に見えるのは、この 0.05pt のずれを吸収しているからです。
\linespread が効かない——プリアンブルでは効くのに本文では効かない理由
\linespread{1.5} はその場では何も起こしません。次にフォントが選び直されるまで、\baselineskip は 1pt も動きません。 実測するとこうなります——既定で 12.0pt、\linespread{1.5} の直後も 12.0pt、\selectfont を呼んだ瞬間に 18.0pt。理由は仕組みを見ると一目瞭然で、\linespread{x} の中身は \renewcommand{\baselinestretch}{x} そのもの、つまり 倍率をメモに書き換えるだけ です。そのメモを実際の長さに変換するのは \selectfont の仕事で、\selectfont は現在有効な倍率と \baselinestretch を突き合わせ、食い違っていたときだけ行送りを計算し直します。
これで、症状の出方も説明がつきます。プリアンブルに書いた \linespread が効くのは、\begin{document} のところで LaTeX が \normalsize を実行し、そこでフォントが選び直されるからです。本文の途中に書いた場合は自分で \selectfont を呼ぶ必要があり、\Large などのサイズ変更や \bfseries のような書体変更でも同じ効果があります(どれも内部で \selectfont を通るため)。実測でも \linespread{2} のあとに \large を置くだけで 28.0pt になりました。ただし局所的に変えるときは、段落を閉じる \par をグループの内側に置く ことを忘れないでください。\par がグループの外に落ちると、その段落は古い行送りで組まれてしまいます——この落とし穴そのものは「文字サイズを変える命令」のページが詳しく扱っています。
% In the preamble: applies to the whole document.
\linespread{1.3} % measured: baselineskip 12.0pt -> 15.6pt
% In the body: nothing happens until the font is re-selected.
\linespread{1.6} % baselineskip is STILL 12.0pt here
\selectfont % now it becomes 19.2pt
% One paragraph only. Note the \par INSIDE the braces.
{\linespread{1.6}\selectfont
This paragraph is set with wider leading.\par}setspace の使い方——三つの宣言と spacing 環境
\usepackage{setspace} を読み込んで \onehalfspacing か \doublespacing をプリアンブルに一行書く——実務ではこれで終わりです。setspace を勧める理由は三つあります。第一に、\setstretch{1.6} のような任意倍率の指定が その場で効く(内部で現在のサイズ命令を呼び直しているので、\selectfont を書き忘れる事故が起きません)。第二に、\onehalfspacing/\doublespacing の倍率が 本文サイズごとに調整 されている。第三に、脚注や図表のキャプションは広げないでくれる——これは次の次の節で実測します。
| 命令・環境 | 働き |
|---|---|
\singlespacing | 既定の行送りに戻す宣言。以降の本文に効きます |
\onehalfspacing | 行送りを文字サイズの 1.5 倍にする宣言 |
\doublespacing | 行送りを文字サイズの 2 倍にする宣言。投稿規定の「ダブルスペース」はこれ |
\setstretch | \setstretch{1.6} のように任意の倍率を指定。\baselineskip に掛かります |
spacing | 環境。\begin{spacing}{2.5} … \end{spacing} の範囲だけ倍率を変え、あとで元に戻ります |
singlespace | 環境。ダブルスペースの本文の中で、この範囲だけ既定の行送りに戻します |
onehalfspace | 環境。\onehalfspacing の局所版(doublespace 環境も同様)。行送りを 広げる 用途に限られます |
\SetSinglespace | 「単独」とみなす倍率そのものを変える(既定 1)。設計サイズが大きめの欧文書体で微調整するとき用 |
\documentclass[12pt]{article}
\usepackage{setspace}
\doublespacing % whole document: leading 24.0pt at 12pt
% \onehalfspacing % or 18.0pt
% \setstretch{1.6} % or any factor you like
\begin{document}
The body is set double spaced.
\begin{spacing}{1} % one region back to the normal leading
A long quotation, set tight.
\end{spacing}
Back to double spacing here.
\end{document}「ダブルスペース」は何ポイントなのか——\doublespacing の実測値
答えは 文字サイズのちょうど 2 倍 です。10pt なら 20pt、11pt なら 22pt、12pt なら 24pt。\doublespacing は \baselineskip を 2 倍にするのではなく、この目標値になるよう倍率を逆算しています。だからクラスオプションごとに倍率が違い、しかも 1.667・1.618・1.655 という中途半端な数になるわけです。実測値を並べると意図が透けて見えます。
| クラスオプション | 既定の行送り | onehalfspacing | doublespacing |
|---|---|---|---|
10pt | 12.0pt | 1.25 → 15.00pt | 1.667 → 20.00pt |
11pt | 13.6pt | 1.213 → 16.50pt | 1.618 → 22.00pt |
12pt | 14.5pt | 1.241 → 17.99pt | 1.655 → 24.00pt |
推測ではありません。setspace.sty のソースには、それぞれの定義のすぐ上に「one and a half spacing is 1.5 x pt size」「double spacing is 2 x pt size」と書かれています。実測値もぴたりと一致します。ここから実務上の重要な帰結が出ます——\setstretch{2} は \doublespacing ではありません。\setstretch{2} は \baselineskip を 2 倍にするので、10pt 本文では 24.0pt。\doublespacing の 20.0pt より 2 割広くなります。規定に「ダブルスペース」とだけ書いてある原稿では、素直に \doublespacing を使ってください。
ついでに、setspace そのものの来歴も一段落だけ。ファイル冒頭のクレジットによれば、原作者は Erica M. S. Harris、それを GDG が 1992〜1994 年に改修し、Geoffrey Tobin が 1996 年 2 月 6 日に LaTeX2e のパッケージへ書き換え、その後 Robin Fairbairns が長く保守し、いまは LaTeX Team の著作権表示が付いています(TeX Live 2024 同梱は v6.7b、2022 年 12 月)。行間を 1 行変えるだけの機能に、30 年分の名前が積み重なっているわけです。
脚注とキャプションは広がらない——setspace が守ってくれるもの
本文をダブルスペースにしても、脚注と図表の中身は既定の行送りのままになります。12pt の article で \doublespacing を掛けて実測すると、本文は 23.99pt、脚注の中は 12.0pt、フロート(figure/table)の中は 14.5pt でした。setspace が \@footnotetext・\@mpfootnotetext・\@xfloat に手を入れ、それらの内側で倍率を単独に戻しているためです。生の \linespread にはこの配慮がないので、脚注もキャプションもいっしょに伸びてしまいます——投稿原稿では、これがそのまま体裁違反になります。
一方で、引用の quote 環境は自動では詰まりません。\doublespacing を掛けた 12pt 文書で quote の中を測ると、本文と同じ 23.99pt のままでした。setspace の作者は最初からそのつもりで、ソースにも「単独スペースの引用は singlespace を quote で囲んで作る」と注記しています。長い引用を詰めたいなら、次のように自分で入れ子にしてください。ちなみに setspace は別行立て数式の前後の空きにも倍率を掛けます(\setdisplayskipstretch で調整、nodisplayskipstretch オプションで無効化)。
% quote is NOT single-spaced by setspace; nest it yourself.
\begin{quote}
\begin{singlespace}
A long quotation, set tight inside a double-spaced document.
\end{singlespace}
\end{quote}\parskip と \baselineskip の違い——段落の間隔は行間ではありません
\parskip は 段落と段落のあいだに追加で入る縦の空き で、行の送り量とは別勘定です。標準クラスでの既定値は 0.0pt plus 1.0pt——つまり段落間には基本的に何も足さず、ページを均すために最大 1pt だけ伸びる余地がある、という設定です。段落の区切りは空き幅ではなく 一字下げ で示すのが標準クラスの流儀だからです。重要なのは、setspace は \parskip に一切触らない こと。実測でも \doublespacing 適用後の \parskip は 0.0pt plus 1.0pt のままでした。行間を倍にしても段落の切れ目がはっきりしないと感じたら、それは \parskip の話であって行送りの話ではありません。
最後に、やってはいけないことを一つ。\baselineskip そのものを \setlength で書き換えないでください。 この長さはフォントを選び直すたびに再設定されるので、指定はあっけなく消えます。実測してみると、\setlength{\baselineskip}{20pt} としたあと \large を通っただけで 14.0pt、\normalsize に戻ると 12.0pt——20pt はどこにも残りません。行送りは必ず 倍率 の側(\linespread/\setstretch/setspace の宣言)から操作してください。倍率ならサイズ変更に追従しますし、脚注やフロートの例外処理も効いたままになります。