改行・改段落の扱い

LaTeX の段落を作るのは空行です。ただし「空行は段落の区切りのようなもの」ではありません。TeX の入力処理装置は空行を読むと、そこに \par という命令そのものを差し込みます。だから空行と \par は似ているのではなく、同じものです。試しに \let\par\relax としてから空行を書いてみると、段落は一切変わらなくなります——空行が投げていた命令を無効にしたのだから当然です。この一点を握ると、\\ で段落を分けてはいけない理由も、\parindent\parskip の役割も、見出し直後の段落だけ字下げされない理由も、すべて同じ話の続きとして見えてきます。

空行は \par そのもの

ソースの改行そのものは、出力ではただの空白 1 つになります。3 行に分けて書いた文はつながったまま組まれ、どこで行を折るかは TeX が決めます。ところが空白しか含まない行に出会った瞬間だけ、入力処理装置は空白ではなく \par を送り込みます。ここから二つの帰結が出ます。ひとつめ——空行を 2 行にしても 5 行にしても結果は変わりません。\par が二度目に届いたとき TeX はすでに垂直モードにいて、垂直モードの \par は何もしない命令だからです。空行を重ねて空きを稼ごうとしても 1 ミリも動きません。ふたつめ——空行と \par は互いに置き換えられます。

latex
These three lines are broken
in the source, but they come out
as a single paragraph.

The blank line above started a new one.
Extra blank lines add nothing.



Still just one paragraph break.

\par を明示的に書きたくなる場面は、空行が使えない場所です。自作命令の定義の中や、引数の内側では空行が禁じられていることが多く、たとえば \section{...} の引数に空行を入れると ! Paragraph ended before \@sect was complete. で止まります。数式モードでも同じく空行は許されず、! Missing $ inserted. になります。逆に、ふつうの本文で \par を並べるのは可読性を下げるだけなので、原稿では空行を使うのが定石です。

\\ が段落を終えない理由

\\ は「ここでを終える」と言っているだけで、段落を終えるとは一言も言っていません。中身は「行末を \hfil で埋め、そこで強制的に折る」という手続きで、\par はどこにも現れません。結果として、段落はそのまま続きます。実測すると差ははっきり出ます。article(10pt)で新しい段落の 1 行目は左マージンから 15pt 内側から始まりますが、\\ の次の行は左マージンちょうどから始まります——字下げが付かないのです。加えて段落間の空き \parskip も入りません。「なんとなく改行はされたが、見た目が段落になっていない」あの中途半端さの正体はこれです。

もっと分かりやすい証拠がログに出ます。段落の最後の行の末尾に \\ を置くと、TeX は Underfull \hbox (badness 10000) in paragraph at lines 3--4 と警告します。何が起きているかというと、\\ が「ここで折れ」と命じた直後に段落が終わってしまい、中身のない行が 1 本残るのです。\showboxdepth を上げて中を覗くと、その箱は \hbox(0.0+0.0)x345.0——高さゼロ、幅は本文の幅いっぱいの空箱です。逆に、折るべき行がまだ始まっていない場所(段落の先頭など)で \\ を使うと ! LaTeX Error: There's no line here to end. になります。どちらの症状も、\\ が行の道具であって段落の道具ではないことを裏側から示しています。

とはいえ \\ 自体は有用な道具です。角括弧で長さを足した \\[2ex] はその行のあとに余分な縦の空きを入れ(負の値も可)、表や別行立ての数式で行間を開けるときの定番です。\\* はその改行位置での改ページを禁じ、二行を同じページに留めます。段落モードでは \newline\\ とまったく同じ働きをし、\linebreak だけは性格が違って、その位置で折ると同時に行内の空白を引き伸ばして右マージンまで両端揃えします——単語間が間延びするのはこのためです。\linebreak[n](n は 0〜4)で強さを指定でき、4 が強制、1 は「できれば」程度の要望です。表の中では \\ が行全体を終え、\newline はセル内だけを折る、という違いも覚えておくと役に立ちます。

latex
% wrong: the second block is still the same paragraph
First thought about the topic.\\
Second thought about the topic.

% right: a blank line ends the paragraph
First thought about the topic.

Second thought about the topic.

% \\ is for lines that belong together
\begin{tabular}{ll}
  Ada Lovelace & 1815 \\[2pt]
  Alan Turing  & 1912 \\
\end{tabular}

\parindent\parskip の既定値

段落の見た目を決める長さは二つだけです。\parindent が 1 行目の字下げ幅、\parskip が段落と段落のあいだに入る縦の空き。標準クラス(1 段組)の \parindent は本文 10pt で 15pt、11pt で 17pt、12pt で 1.5em(約 17.6pt)、2 段組では 1em。一方 \parskip の既定は 0pt plus 1pt です。ゼロではなく「ゼロだが 1pt までなら伸びてよい」というゴム長で、この 1pt の遊びが積み重なることで、TeX はページ下端を揃えるためのわずかな余地を得ています。つまり標準の LaTeX は「段落の切れ目を字下げだけで示し、空きは実質ゼロにする」という書籍組版の流儀を採っているわけです。

個々の段落だけ字下げを切り替えるには \noindent\indent を使います。段落の先頭に \noindent を置けばその段落の字下げが消え、\indent は逆に字下げを強制します(内部では \parindent 幅の空の箱をひとつ置いているだけです)。どちらも段落の途中で書いても効きません。字下げするかどうかは 1 行目を組み始めた瞬間に決着しており、あとから撤回できないからです。引用や図表で中断した文章を再開するときに \noindent を置く、というのがいちばん多い使い道です。

見出し直後の段落だけ字下げされない理由

これはバグではなく、意図された組版の作法です。字下げは本来「ここから新しい段落だ」という区切りの合図で、直前に別の段落があってはじめて意味を持ちます。見出しの直後には区切るべき前の段落がないので、字下げは無意味な字下げになってしまう——だから省くのが伝統的な約束です。実測でも、\section の次の段落だけが左マージンぴったりから始まり、その次の段落からは 15pt の字下げが戻ります。

実装がまた面白いところです。LaTeX は「字下げを組まない」のではありません。TeX は段落の頭でいつもどおり \parindent 幅の空箱を置き、そのあとで LaTeX が \everypar の中から {\setbox\z@\lastbox} を実行して、置かれたばかりのその箱を取り上げてしまうのです。どの見出しがそれをやるかは、見出し命令に書かれた「見出し前の空き」の符号で決まります。\section の定義にある -3.5ex の負号がそれで、カーネルは負号を読んだら「次の段落を字下げするな」と解釈します。そして字下げを復活させる indentfirst パッケージは、実質的にたった一行——\let\@afterindentfalse\@afterindenttrue。「偽」を「真」の別名にしてしまうことで、字下げを止めるスイッチを永久に押せなくする、という切り方です。

latex
\usepackage{indentfirst}   % indent the first paragraph after a heading too
\setlength{\parindent}{2em} % a wider first-line indent

\section{A heading}
With indentfirst loaded, this paragraph is indented like the others.

字下げをやめてブロック段落にする——parskip パッケージ

仕様書や社内文書、Web 由来の資料では、字下げをやめて段落を空きで区切る「ブロック段落」がしばしば好まれます。素朴にやるなら、プリアンブルで \parindent を 0 にし、\parskip に空きを与えるだけです。ところがこれは、思ったより広い範囲を巻き添えにします。目次の各行、箇条書きの項目間、図表まわり——LaTeX のあちこちが \parskip を土台の空きとして流用しているため、本文の段落だけでなくそれらすべてが同時に間延びするのです。

これを引き受けてくれるのが parskip パッケージで、\usepackage{parskip} の一行で済みます。TeX Live 2024 同梱の版(v2)は \parindent を 0pt に、\parskip.5\baselineskip plus 2pt に設定したうえで、見出し前後の空き・目次・箇条書きの各定義に手を入れ、増えたぶんの \parskip を差し引いて元の設計値に戻します。手作業でこれを全部追いかけるのは現実的ではありません。plus 2pt の伸縮が残っているのも意図的で、TeX がより良い改ページ位置を探す余地になります。字下げは残したままブロック段落にしたい場合は \usepackage[indent]{parskip}、空きの量を指定したい場合は \usepackage[skip=10pt]{parskip} のようにオプションで渡せます。

latex
% the naive version: also stretches the TOC, lists and float spacing
\setlength{\parindent}{0pt}
\setlength{\parskip}{\baselineskip}

% the maintained version: same look, without the collateral damage
\usepackage{parskip}
% \usepackage[indent]{parskip}     % keep the first-line indent
% \usepackage[skip=10pt]{parskip}  % choose the gap yourself

段落と改ページ・非分割スペースの違い

段落を変えることと、ページを変えることは別の操作です。\newpage はその場でページを終えて次に移りますが、段落を分けはしません。\clearpage はさらに、保留中の図表(フロート)をすべて出力してからページを変えます。「段落を変えたい」という目的でこれらを使うと、意図しない改ページと空白の残った下端が付いてきます。逆に「折ってほしくない」ための道具もあります。チルダ ~ は改行されない空白で、Fig.~3Dr.~Smith のように前後を必ず同じ行に保ちたいときに使います。\, は数値と単位のあいだなどに入れる細い空きです。どちらも行や段落を折る命令ではなく、空白の性質を指定するだけの道具だと考えると混乱しません。

原稿を書くときの段落の扱い

ソースの改行は出力を変えないので、そのぶんを丸ごと編集のしやすさに振り向けられます。実務でよく使われるのは「1 文 1 行」、あるいは節や句の切れ目で折る書き方です。行が短いほど版管理の差分が読みやすくなり、共著者のレビューでも「どの文を直したか」が一目で分かります。そして空行は、段落が本当に変わるところにだけ置きます。ソースの改行を紙面の改行の代わりに使い始めると、フォントや余白を変えた瞬間にすべて破綻します。

締切前の推敲では、空きの見た目だけを見て空行や \vspace を足したくなります。ですが LaTeX において段落は文書構造そのものです。1 段落に主張が二つ入っていないか、図表の説明は前の段落と後ろの段落のどちらに属するか、見出し直後に短い導入が要るか——判断すべきはそちらが先です。そのうえで「段落境界は空行、同一段落内の視覚的な折り返しだけ \\」という規則を守れば、校正を何周しても構造は崩れません。

  • 本文の段落 — 主張が変わったら空行を入れ、見た目のためだけに空行を増やさない。
  • 表紙・住所・詩形 — 意味のうえで一つの項目を複数行に見せたいときだけ \\ を使う。
  • 段落の空きが気になる — 局所的な \vspace ではなく、parskip パッケージで文書全体の方針を決める。
  • 字下げが気になる\parindent をプリアンブルで一度だけ設定し、見出し直後も字下げしたいなら indentfirst を読み込む。
  • 改ページが気になる — 段落命令ではなく、改ページ調整の命令やフロート配置を検討する。