LaTeX で「2cm 空ける」「ここに 1 行ぶんの余白を足す」と指示するには、長さ(length) を書きます。このページでは、まず長さの 単位 とその正確な換算を押さえ、次に伸び縮みする ラバー長、空白を実際に出力する \hspace/\vspace などの命令、そして長さを変数のように 定義して使う 方法までを順にたどります。
長さの単位
長さは 数値 + 単位 で書きます(12pt、2.5cm、-3mm のように、小数や負の値も可)。単位は大きく二つに分かれます。フォントによらず固定の 絶対単位(pt・mm・in など)と、いま使っているフォントの大きさに連動する フォント相対単位(em・ex)です。本文の余白を「フォントが大きくなれば自然に広がってほしい」場面では後者が便利です。
中心になるのが **pt(TeX ポイント) です。TeX では 1 インチ = 72.27pt と定義されており、これがすべての換算の基準になります。紛らわしいのが bp(big point、ビッグポイント)** で、こちらは PostScript/PDF が使う「1 インチ = 72bp」のポイント。pt と bp は約 0.4% ずれるので、図版を bp 基準のツールとやり取りするときは取り違えに注意します。
| 単位 | 正体・換算 | 備考 |
|---|---|---|
pt | TeX ポイント。1in = 72.27pt | 長さ全体の基準 |
bp | ビッグポイント。1in = 72bp | PostScript/PDF のポイント |
mm | ミリメートル。1mm ≈ 2.845pt | メートル法 |
cm | センチメートル。1cm = 10mm | メートル法 |
in | インチ。1in = 72.27pt | ヤード・ポンド法 |
pc | パイカ。1pc = 12pt | 欧文組版の伝統単位 |
sp | スケールドポイント。1pt = 65536sp | TeX の最小単位(内部用) |
em | 現在のフォントサイズ ≒ 大文字 M の幅 | フォント相対。水平方向に |
ex | 現在のフォントの x ハイト(小文字 x の高さ) | フォント相対。垂直方向に |
dd | ディドーポイント。1dd ≈ 1.07pt | ヨーロッパ伝統。cc = 12dd |
sp(scaled point)は TeX が内部で長さを表す 最小単位 で、1pt = 65536sp。手で書くことはまずありませんが、TeX が「これ以上細かくは扱えない」精度がここにあります。ヨーロッパの活版に由来する **dd(ディド点) と cc(シセロ、cc = 12dd)** も使えますが、現代の文書ではほとんど登場しません。
フォント相対の **em は、おおよそ現在のフォントサイズ(伝統的には大文字 M の幅)に等しく、字下げや横方向の空きに向きます。ex** は小文字 x の高さ(x ハイト)で、縦方向の微調整に使います。10pt のフォントなら 1em ≈ 10pt。なお数式モードには、em の 1/18 にあたる **mu(math unit)** という専用単位があり、\quad などの数式の空きはこの単位で定義されています。
ラバー長(伸び縮みする長さ)
12pt のように固定の長さを リジッド長(rigid length) と呼びます。これに対し、状況に応じて 伸び縮みする 長さが ラバー長(rubber length、ゴム長) です。plus で伸びしろ、minus で縮みしろを与えます。たとえば 1cm plus 2mm minus 1mm は「ふだんは 1cm、必要なら 1.2cm まで伸び、0.9cm まで縮む」という意味。LaTeX が行や段落の幅をそろえるとき、この遊びを使って自然に調整します。
% 通常 1cm、最大 1.2cm まで伸び、最小 0.9cm まで縮む縦アキ
\vspace{1cm plus 2mm minus 1mm}伸びしろを 無限大 にした特別なラバー長が **\fill** です。自然な長さは 0 ですが、必要なだけいくらでも伸びるため、「残りの空間をすべて押し広げる」用途に使います。複数の \fill が同じ行や段にあれば、空間を等分します。比率を付けたいときは **\stretch{n}**(= n 倍の \fill)を使い、\hspace{\stretch{2}}…\hspace{\stretch{1}} のように 2:1 で配分できます。
横方向の空白
行内に水平の空きを入れる基本命令が **\hspace{長さ}** です。\hspace{2cm} で 2cm の空白が入ります。ただし、行頭・行末に来た \hspace は 改行処理で捨てられます(行の端に余分な空きが残らないように)。端でも空きを残したいときは、星付きの **\hspace*{長さ}** を使います。
\hfill** は \hspace{\fill} の短縮形で、左右のものを目いっぱい引き離します。行の左端と右端に語を置きたいときの定番です(これも行端では捨てられるので、確実に残したいなら \hspace*{\fill})。空きの代わりに **罫線で埋める \hrulefill、ドットで埋める \dotfill** もあり、目次の見出しとページ番号の間などに使います。
Name:\hspace{2cm}Date:\par
\noindent 第1章 はじめに\dotfill 1\par
\noindent 左\hfill 右小さく決まった量の空きには、フォントサイズ基準の命令が便利です。**\quad** は 1em(= 18mu)、**\qquad** はその倍の 2em。ごく細い空きには **\,**(thin space、3mu)を使います。これらはフォントに連動するので、文字サイズが変わっても見た目のバランスが保たれます。
縦方向の空白
段落と段落のあいだなど、垂直の空きを入れるのが **\vspace{長さ}** です。\hspace と同じく、ページの 境目に来た空きは捨てられます(ページ頭に余分な空きが出ないように)。改ページ位置でも空きを残したいときは **\vspace*{長さ}** を使います。\vfill は \vspace{\fill} にあたり、縦方向に残りを目いっぱい押し広げます(1 行だけのページを縦中央に置く、などに便利)。
よく使う縦アキには、あらかじめ用意された三段階の命令があります。**\smallskip・\medskip・\bigskip で、標準クラスでの既定値はそれぞれ 3pt plus 1pt minus 1pt、6pt plus 2pt minus 2pt、12pt plus 4pt minus 4pt**。いずれもラバー長なので、ページの収まりに応じて少し伸び縮みします。固定値を直接書くより、これらを使うほうが文書全体の見た目がそろいます。
長さを定義して使う
同じ長さを文書のあちこちで使うなら、変数のように 長さレジスタ を作ると保守が楽です。**\newlength{\mylen}** で新しい長さ \mylen を用意し、**\setlength{\mylen}{2em} で値を代入、\addtolength{\mylen}{1pt}** で増減します。値を 1 か所で直せば、参照しているすべての箇所に反映されます。
\textwidth(本文の横幅)・\linewidth(現在の行の幅)・\baselineskip(行送り)といった 既存の長さ も、そのまま計算に使えます。係数を前に付けるだけで 0.8\textwidth(本文幅の 8 割)のように倍率指定ができます。さらに複雑な四則演算が必要なら **calc パッケージ** を読み込むと、+ - * / を使った式が書けます。
\usepackage{calc}
% ...
\newlength{\halfcol}
\setlength{\halfcol}{(\textwidth - 2em) / 2}
\noindent\hspace*{0.8\textwidth}右寄せの見出しこのように、既存の幅を基準に相対的な長さを組み立てておくと、用紙サイズや余白を変えても比率が崩れません。固定値(8cm など)を直書きするより、\textwidth を基準にした式のほうが、レイアウト変更に強い文書になります。