【LaTeXプログラミング】行間を操る!\baselineskipと\baselinestretchの実践コード例

2025-05-31

LaTeXで文書を作成する際、行と行の間のスペース(行間)は非常に重要な要素です。この行間を制御するために使われるのが、\baselineskip\baselinestretch という2つのコマンドです。

\baselineskip

\baselineskip は、ベースライン間の距離 を直接指定するものです。ベースラインとは、文字の下端が揃う仮想的な線のことです。通常、段落内の各行のベースラインは、この \baselineskip で指定された距離だけ離れて配置されます。

  • 注意点
    \baselineskip は、その時点で有効なフォントサイズに基づいて自動的に調整されるのが一般的 です。そのため、通常は明示的に設定することはあまりありません。もし設定すると、フォントサイズが変わっても同じ\baselineskipが適用されてしまうため、行間の見た目が不自然になる可能性があります。\baselineskipは、基本的にLaTeXが自動的に計算する値を尊重し、必要に応じて\baselinestretchで相対的に調整するのがより良い方法とされています。
  • 具体例
    例えば、\setlength{\baselineskip}{18pt} と設定すると、行間が18ポイントになります。
  • 設定方法
    \setlength{\baselineskip}{距離}
    
    または、
    {\baselineskip=距離 文章}
    
    のように使います。
  • 単位
    任意のLaTeXの長さ単位(例: pt, mm, cm, in など)で指定します。

\baselinestretch

\baselinestretch は、現在のフォントサイズに対する行間の相対的な倍率 を指定するものです。これは、\baselineskip の値を直接変更するのではなく、既存の \baselineskip に乗算される「伸縮率」のようなものです。

  • 一般的な使い方
    文書全体や特定のセクションの行間を簡単に調整したい場合に非常に便利です。例えば、提出書類でダブルスペースが求められる場合などに利用されます。
  • 注意点
    \renewcommand{\baselinestretch}{倍率} を実行した後、必ず \selectfont を呼び出す必要があります。これは、LaTeXがフォント関連のパラメータを再計算し、新しい \baselinestretch の値を反映させるためです。\selectfont を忘れると、行間が変更されません。
  • 具体例
    • \renewcommand{\baselinestretch}{1.0} と設定すると、標準の行間になります(デフォルト)。
    • \renewcommand{\baselinestretch}{1.5} と設定すると、標準の1.5倍の行間になります(1.5行送り)。
    • \renewcommand{\baselinestretch}{2.0} と設定すると、標準の2倍の行間になります(ダブルスペース)。
  • 設定方法
    \renewcommand{\baselinestretch}{倍率}
    \selectfont % 必ずこれとセットで使います
    
    または、\setstretch{倍率}setspace パッケージ使用時)のように使います。
  • 単位
    単位のない数値(倍率)を指定します。
  • \baselinestretch: 標準の行間に対する倍率 を指定します。文書全体の行間を調整する際に、より柔軟で推奨される方法です。\selectfont と合わせて使用します。
  • \baselineskip: 絶対的な行間距離 を指定します。特定の状況を除き、通常はLaTeXに任せるか、\baselinestretch で調整するのが良いとされています。


\baselineskip\baselinestretch を使用する際に、意図しない結果になることがあります。ここでは、その一般的なエラーと、それらを解決するための方法を説明します。

行間が変化しない(最も一般的なエラー)

\baselinestretch を設定したのに、行間がまったく変わらないという状況は非常によく発生します。

エラーの原因
\renewcommand{\baselinestretch}{倍率} を実行した後、\selectfont を呼び出していない

LaTeXは、フォント関連のパラメータ(\baselineskip など)を、\selectfont が呼び出された時点で再計算します。\baselinestretch の値を変更しただけでは、その変更が実際にフォント選択に反映されず、既存の \baselineskip がそのまま使われてしまいます。

トラブルシューティング
\renewcommand{\baselinestretch}{倍率} の直後に、必ず \selectfont を追加してください。


% 悪い例 (行間が変わらない可能性が高い)
\renewcommand{\baselinestretch}{1.5}
文章...

% 良い例 (行間が1.5倍になる)
\renewcommand{\baselinestretch}{1.5}
\selectfont % これが重要!
文章...

また、プリアンブル(\documentclass\begin{document} の間)で設定する場合も、同様に \selectfont が必要です。ただし、通常はプリアンブルで設定する際は \normalsize\small などのフォントサイズ指定コマンドが自動的に \selectfont を呼び出すため、意識する必要がない場合もあります。しかし、より確実にするためには明示的に記述するのが安全です。

特定の部分だけ行間を変えたいのに全体に影響してしまう

\baselinestretch の変更が、意図せず文書全体に適用されてしまうことがあります。

エラーの原因
\baselinestretch の変更が、グループ化されていないか、適切なスコープで適用されていないため。\baselinestretch はグローバルな設定になりがちです。

トラブルシューティング

  • setspace パッケージを使う
    setspace パッケージは、行間調整を非常に簡単にするための便利なパッケージです。これを使用すると、\baselinestretch を直接操作する必要がなくなります。

    使用例

    \usepackage{setspace}
    
    \begin{document}
    \begin{singlespace} % 1行送り
    これは1行送りのテキストです。
    \end{singlespace}
    
    \begin{onehalfspacing} % 1.5行送り
    これは1.5行送りのテキストです。
    \end{onehalfspacing}
    
    \begin{doublespace} % 2行送り
    これは2行送りのテキストです。
    \end{doublespace}
    
    % 特定の箇所の行間を変える
    \begin{spacing}{0.8} % 0.8倍の行間
    この部分は行間が狭くなります。
    \end{spacing}
    \end{document}
    

    setspace パッケージは、\selectfont の呼び出しなども内部で処理してくれるため、非常に便利です。

  • \begin{环境} と \end{环境} で囲む
    環境内で \baselinestretch を変更し、その環境の終了時に元の値に戻すのが最も一般的で確実な方法です。


    \begin{document}
    標準の行間です。
    
    \begin{quote} % 例えば引用環境
    \renewcommand{\baselinestretch}{0.9} % 引用部分だけ行間を狭くする
    \selectfont
    これは引用部分のテキストです。行間が狭くなっているはずです。
    \end{quote}
    
    元の行間に戻ります。
    
    \end{document}
    

    quote 環境のように、環境の開始と終了で自動的に状態が保存・復元されるものを使用すると便利です。

行間が広すぎる、または狭すぎる(見た目の調整)

特に \baselineskip を直接設定した場合に、フォントサイズとのバランスが悪く、行間が不自然に見えることがあります。

エラーの原因
\baselineskip を固定値で設定していると、使用するフォントサイズが変わった場合に、その固定値が適切でなくなるため。例えば、フォントサイズが小さくなったのに \baselineskip が大きいままだと、行間が広すぎると感じられます。

トラブルシューティング

  • \baselinestretch で調整する
    現在のフォントサイズに対する相対的な倍率である \baselinestretch を使用して、行間の「広がり具合」を調整します。


    • もう少し行間を広くしたい場合: \renewcommand{\baselinestretch}{1.1}\selectfont
    • もう少し行間を狭くしたい場合: \renewcommand{\baselinestretch}{0.9}\selectfont

    何度か試行錯誤して、最も読みやすい倍率を見つけてください。

  • \baselineskip の直接指定を避ける
    通常、\baselineskip を直接 \setlength で設定することは避けるべきです。LaTeXは、現在のフォントサイズに基づいて適切な \baselineskip を自動的に計算してくれます。行間を調整したい場合は、\baselinestretch を使うのが正しい方法です。

数式内の行間がおかしい

数式環境(特に align, gather など)では、テキストの行間設定が直接適用されないことがあります。

エラーの原因
数式環境は独自の行間調整メカニズムを持っているため、\baselineskip\baselinestretch が直接影響しないことがあります。また、数式自体の高さ(例えば、分数や添字など)が大きくなると、自動的に行間が広がるようになっています。

トラブルシューティング

  • 数式環境自体の設定を確認する: amsmath パッケージなど、数式環境を提供するパッケージには、数式行間の調整に関するオプションが提供されている場合があります。ドキュメントを参照してください。通常は、LaTeXが自動で最適な行間を設定してくれるので、あまり変更する必要はありません。

  • \\[距離] で行送りを調整する: 数式環境内の行の間に、明示的に \\[距離] を挿入することで、その行間の距離を調整できます。ただし、これは緊急時の調整であり、乱用は避けるべきです。


    \begin{align*}
    E &= mc^2 \\[1em] % 1行分スペースを追加
    F &= ma
    \end{align*}
    
  • \intertext を使用する(amsmath パッケージ): 数式と数式の間に説明文を入れる場合、\intertext を使うと、そのテキスト部分だけ適切な行間になります。

全体的なアドバイス

  • 必要に応じて \vspace や \addlinespace を使う
    特定の段落や要素の前後に行間ではなく垂直方向のスペースを追加したい場合は、\vspace{距離}\addlinespace[距離]booktabs パッケージなど)を使用することも検討してください。
  • コンパイルとプレビューの繰り返し
    行間調整は視覚的な要素が大きいため、変更を加えるたびにコンパイルしてPDFなどでプレビューし、見た目を確認することが重要です。
  • setspace パッケージの活用
    行間調整のほとんどのケースで、setspace パッケージを使うのが最も簡単で推奨される方法です。


ここでは、一般的な文書での使用例と、より「プログラミング」的な観点からスタイルファイルなどでの設定例を挙げます。

\baselineskip の設定例

\baselineskip は、ベースライン間の絶対距離を設定するもので、通常はLaTeXが自動的に計算する値を尊重します。しかし、非常に特殊なレイアウトが必要な場合に、明示的に設定することがあります。

例1: 文書内で一時的に \baselineskip を固定値で設定する

これはあまり推奨されない使い方ですが、特定の狭いスペースにテキストを収めたい場合などに、一時的に行間を固定したい場合に考えられます。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\begin{document}

\section*{通常の行間}
これは通常の行間を持つテキストです。デフォルトの \texttt{\textbackslash baselineskip} は、現在のフォントサイズに基づいて自動的に計算されます。

\bigskip % 少しスペースを開ける

\section*{固定された \texttt{\textbackslash baselineskip} の例}
\begin{center}
\textbf{注意: この方法は推奨されません。フォントサイズが変わると不自然になります。}
\end{center}

{\setlength{\baselineskip}{10pt}% ここで \baselineskip を10ptに固定
\noindent このテキストは、\texttt{\textbackslash baselineskip} を10ptに設定して表示されています。行間がかなり狭くなっていることがわかります。\par% \par で段落を閉じる
この2行目も同様に10ptの行間です。\par
これはあくまで例であり、通常は \texttt{\textbackslash baselineskip} を固定値で直接設定するよりも、\texttt{\textbackslash baselinestretch} を使う方が柔軟性があります。\par
} % ここでスコープが閉じられ、元の \baselineskip に戻る

\bigskip

\section*{元の行間への復帰}
このテキストは、再び元の(自動計算された)行間を持っています。

\end{document}

解説

  • この例は、\baselineskip を直接変更することの不自然さを示すためのものです。特に、フォントサイズを変更すると、この固定された行間が適切でなくなる可能性があります。
  • \par は、明示的に段落の終わりを示し、次の行への改行と行間の挿入を促します。
  • \noindent は、段落の字下げをなくすコマンドです。
  • {\setlength{\baselineskip}{10pt} ... } のように波括弧 {} で囲むことで、\baselineskip の変更がそのブロック内にのみ適用され、ブロックを抜けると元の値に戻ります。これはLaTeXの「グループ化」の機能です。

\baselinestretch の設定例

\baselinestretch は、標準の行間に対する倍率を設定するもので、行間を調整する際に最も推奨される方法です。

例2: 文書全体で行間を1.5倍にする(ダブルスペースの少し手前)

これは、論文やレポートなどで指定される行間設定でよく使われます。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

% プリアンブルで設定する
\renewcommand{\baselinestretch}{1.5} % 行間を1.5倍に設定
\selectfont % これが重要!baselinestretchの変更を反映させる

\begin{document}

\section*{1.5倍行間の文書}

これは1.5倍の行間を持つテキストの最初の段落です。
このように設定することで、文書全体の行間を統一的に調整することができます。
この設定は \texttt{\textbackslash begin\{document\}} が始まる前にプリアンブルで行われているため、文書全体に適用されます。

\clearpage % ページを強制的に改ページ

これは新しいページのテキストです。前のページと同様に、1.5倍の行間が適用されています。
\texttt{\textbackslash baselinestretch} は、現在のフォントサイズに基づいて計算される \texttt{\textbackslash baselineskip} に乗算される倍率なので、フォントサイズが変わっても、そのフォントサイズに応じた適切な行間になります。

\end{document}

解説

  • \selectfont は、\baselinestretch の変更をTeXエンジンに反映させるために不可欠です。
  • プリアンブル(\documentclass\begin{document} の間)で \renewcommand{\baselinestretch}{1.5}\selectfont を記述することで、文書全体の行間が1.5倍になります。

例3: 特定の環境内で行間を2倍にする(ダブルスペース)

これは、引用部分や特定の注釈などで一時的に行間を変えたい場合に役立ちます。

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}

\begin{document}

\section*{通常の行間}
これは通常の行間を持つテキストです。
この段落は、デフォルトの行間で表示されます。

\bigskip

\section*{ダブルスペースの例}
% 特定のブロック(グループ)内でbaselinestretchを変更
{\renewcommand{\baselinestretch}{2.0}% ここでbaselinestretchを2.0に設定
\selectfont % 必ず selectfont を呼び出す

このテキストはダブルスペース(2倍行間)で表示されています。
特に長い引用文や、特定の注釈など、通常のテキストとは異なる行間を設定したい場合に便利です。
このブロックが終わると、行間は元の状態に戻ります。

} % ここでグループが閉じられ、baselinestretchが元の値に戻る

\bigskip

\section*{元の行間への復帰}
このテキストは、再び元の(標準の)行間を持っています。

\end{document}

解説

  • 波括弧 {} で囲むことで、\renewcommand{\baselinestretch}{2.0}\selectfont の効果がそのブロック内に限定されます。ブロックを抜けると、以前の \baselinestretch の値に戻ります。

setspace パッケージを使ったプログラミング例

行間調整の「プログラミング」において、setspace パッケージは非常に強力で推奨されるツールです。これは内部で \baselinestretch をうまく扱ってくれます。

例4: setspace パッケージを使った行間設定

\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{setspace} % setspace パッケージを読み込む

\begin{document}

\section*{通常の行間 (デフォルト)}
これは \texttt{setspace} パッケージを読み込んだ後のデフォルト行間です。通常はシングルスペースです。

\bigskip

\section*{1.5行送り環境}
\begin{onehalfspacing} % 1.5行送り環境の開始
これは \texttt{onehalfspacing} 環境内のテキストです。行間が1.5倍になっています。
この環境は、内部で自動的に \texttt{\textbackslash baselinestretch} と \texttt{\textbackslash selectfont} を処理してくれます。
\end{onehalfspacing} % 1.5行送り環境の終了

\bigskip

\section*{ダブルスペース環境}
\begin{doublespace} % ダブルスペース環境の開始
これは \texttt{doublespace} 環境内のテキストです。行間が2倍になっています。
\end{doublespace} % ダブルスペース環境の終了

\bigskip

\section*{カスタム倍率の行間}
\begin{spacing}{0.8} % 0.8倍の行間
このテキストは、\texttt{spacing} 環境を使って行間を0.8倍に設定しています。
特定の目的のために、細かい行間調整を行いたい場合に便利です。
\end{spacing}

\bigskip

\section*{文書全体での設定}
\clearpage % 新しいページへ

\doublespacing % 文書全体をダブルスペースにするコマンド
\section*{文書全体をダブルスペースに}
このセクション以降のテキストは、\texttt{\textbackslash doublespacing} コマンドによって全てダブルスペースになります。
これはプリアンブルで \texttt{\textbackslash renewcommand\{\textbackslash baselinestretch\}\{2.0\}\textbackslash selectfont} を行うのと同等の効果があります。

\end{document}
  • \singlespacing, \onehalfspacing, \doublespacing といったコマンドは、そのコマンドが呼び出された以降の文書全体の行間を変更します。プリアンブルでこれらを設定することも可能です。
  • \begin{spacing}{倍率} ... \end{spacing} は、任意の倍率で行間を設定できる汎用的な環境です。
  • \begin{onehalfspacing} ... \end{onehalfspacing}\begin{doublespace} ... \end{doublespace} は、それぞれ1.5行送り、ダブルスペースを簡単に実現する環境です。
  • \usepackage{setspace} でパッケージを読み込みます。


setspace パッケージの活用

最も一般的で推奨される代替方法が、setspaceパッケージの使用です。これは内部的に\baselinestretchを操作しますが、より直感的で使いやすいインターフェイズを提供します。

主な利点

  • 自動的な\selectfont
    ユーザーが\selectfontを明示的に呼び出す必要がなく、行間変更が確実に反映されます。
  • 柔軟なカスタム設定
    \setstretch{倍率}コマンドや\begin{spacing}{倍率}...\end{spacing}環境を使えば、任意の倍率で行間を設定できます。
  • 環境によるスコープ
    \begin{onehalfspacing}...\end{onehalfspacing}のように、特定の範囲に行間を適用する環境が用意されています。
  • 直感的なコマンド
    \singlespacing\onehalfspacing\doublespacingといったコマンドで簡単に設定できます。

プログラミング例

\documentclass{article}
\usepackage{setspace} % setspaceパッケージを読み込む

\begin{document}

\section*{setspaceパッケージによる行間調整}

標準の行間(シングルスペース)です。

\begin{onehalfspacing} % 1.5行送り環境の開始
これは1.5行送りのテキストです。
論文などでよく使われる行間設定ですね。
\end{onehalfspacing}

\begin{doublespace} % ダブルスペース環境の開始
これはダブルスペース(2行送り)のテキストです。
引用や特定の草稿で求められることがあります。
\end{doublespace}

\begin{spacing}{0.9} % 0.9倍のカスタム行間
このテキストは行間を0.9倍に設定しています。
特定のレイアウトに合わせて、行間を微調整したい場合に便利です。
\end{spacing}

% 文書全体に行間を適用するコマンド
\doublespacing % ここから文書の残りがダブルスペースになる
これは\texttt{\textbackslash doublespacing}コマンドによって、文書全体にダブルスペースが適用された部分です。

\end{document}

setspaceパッケージは、ほとんどの行間調整のニーズを満たすため、個人的な文書から学術論文まで幅広く推奨されます。

linespread パッケージ (古い方法、非推奨)

linespreadパッケージも行間を調整する目的で使われることがありますが、現在ではsetspaceパッケージの方が機能が豊富で管理もしやすいため、一般的には非推奨です。

主な特徴

  • 文書全体に設定を適用します。
  • \usepackage{linespread}{倍率} のように、パッケージオプションで行間倍率を指定します。

プログラミング例 (非推奨)

\documentclass{article}
% \usepackage{linespread}{1.5} % パッケージオプションで行間を設定(非推奨)

\begin{document}

% linespreadパッケージを使用した場合の効果(記述は推奨されません)
これはlinespreadパッケージによって行間が調整されたテキストです。
現在ではsetspaceパッケージの方がより柔軟で推奨されています。

\end{document}

linespread\baselinestretchを内部で変更しているだけなので、特別な理由がない限りsetspaceを使うべきです。

leading パッケージ (詳細な行送り制御)

leadingパッケージは、より専門的で、テキストのベースライン間のスペース(leading)を詳細に制御したい場合に有用です。これは\baselineskipを直接操作するような低レベルな制御を提供しますが、フォントの高さやデプスの影響も考慮に入れます。

主な利点

  • 段落スタイルの定義
    特定の段落スタイルに対して異なるleadingを適用できます。
  • 精密な制御
    ベースライン間の距離をポイント単位などで厳密に指定できます。

プログラミング例

\documentclass{article}
\usepackage{leading} % leadingパッケージを読み込む

\begin{document}

\section*{leadingパッケージによる行間制御}

これは通常の行間を持つテキストです。

\bigskip

{\leading{18pt}% 18ptのleadingを適用
このテキストは、\texttt{leading}パッケージを使って18ptの行送り(leading)で表示されています。
通常のフォントサイズが10ptの場合、これはかなり広い行間になりますね。
これは主に、プロフェッショナルな組版で、特定のデザイン要件に合わせて行間を厳密に制御したい場合に利用されます。
\par} % \parで段落を閉じるのを忘れない

\bigskip

\section*{leadingをリセット}
\leading{normal} % 通常のleadingに戻す
このテキストは、再び通常の行間に戻っています。

\end{document}

leadingパッケージは、\baselineskipを直接いじるのと似ていますが、より体系的に管理できます。ただし、setspaceパッケージほどユーザーフレンドリーではないため、特定のニーズがない限りはsetspaceが優先されます。

\lineskip と \lineskiplimit (低レベルな制御)

これらはTeXの非常に低レベルなプリミティブで、\baselineskipと並んで行間を制御します。通常は直接操作することは稀で、LaTeXの内部処理で使用されます。

  • \lineskiplimit: 2つの行のベースライン間の距離がこの値より小さくなった場合に、\baselineskipの代わりに\lineskipが使用されます。
  • \lineskip: 2つの行が非常に接近しすぎた場合に、それらの間に挿入される最小の垂直スペースを指定します。

用途

  • 通常は、LaTeXのクラスファイルやパッケージがこれらの値を適切に設定しており、ユーザーが直接変更する必要はありません。
  • ごくまれに、非常に窮屈なレイアウトで、\baselineskipが適用できないほど行が接近してしまう場合の「最後の砦」として機能します。

プログラミング例 (推奨されない)

\documentclass{article}
\begin{document}

\section*{lineskipとlineskiplimit (低レベルな制御)}

% これは非常に低レベルな制御であり、通常は直接変更すべきではありません。
% LaTeXのデフォルト設定がほとんどの場合で最適です。
% {\lineskip=1pt % 行が非常に接近した場合の最小スペース
% \lineskiplimit=0pt % これより近ければlineskipを使う

通常のテキストです。
\texttt{\textbackslash lineskip} と \texttt{\textbackslash lineskiplimit} は、通常LaTeXの内部で処理され、
ユーザーが直接調整することはほとんどありません。
これらの値を変更すると、予期せぬレイアウトの問題を引き起こす可能性があります。
\par}

\end{document}

これらのコマンドは、LaTeXの組版エンジンの挙動を深く理解している上級者向けであり、一般的な文書作成では触れるべきではありません。

方法説明主な用途推奨度
setspace パッケージ\baselinestretchをラップし、直感的なコマンド(\onehalfspacing, \doublespacingなど)と環境(spacing)を提供する。\selectfontも自動処理。文書全体の行間調整、特定のセクションや環境での行間変更。最も一般的で柔軟。
leading パッケージベースライン間の絶対距離(leading)を精密に制御する。\baselineskipのより体系的な代替。特定の組版要件、厳密なデザインガイドラインに沿ったレイアウト。
linespread パッケージ\baselinestretchをパッケージオプションで設定する(古い方法)。現在ではsetspaceに置き換えられているため、新規プロジェクトでは使用しない。低 (非推奨)
\lineskip & \lineskiplimitTeXの低レベルなプリミティブ。行が異常に接近した場合の最小スペースを定義。LaTeXの内部処理、非常に特殊な組版。通常のユーザーは触れない。低 (非推奨)